Перейти к содержимому


Фото
* * * * - 9 голосов

Конструктор роботов TradeSсript


1123 ответов в этой теме

#21 Сигурд

Сигурд

    Участник

  • Трейдеры
  • PipPip
  • 153 сообщений

Отправлено 18 May 2012 - 06:03 AM

Недокументированная бага. Исправить нет возможности. Проще задокументировать

А можете подсказать структуру скрипта, при которой возможно использование более чем двух выражений с логическим умножением "И". К примеру в том же Экселе тоже для одного "И" есть ограничение в два выражения, но можно сделать вложенные "И", то есть написать формулу структуры И(И(выражение, выражение), И(выражение, выражение)) используя таким образом 4 выражения. Есть ли возможность написать скрипт в конструкторе?

#22 richest

richest

    Гуру нашего муравейника

  • Трейдеры
  • PipPipPipPip
  • 1385 сообщений

Отправлено 18 May 2012 - 07:08 AM

1. мы пока не видим в трейдсрипте возможности работать с физическим временем. Если кто видит или понимает как это сделать - пусть пишет в форум

А так разве нельзя: if time = 10:00 then .....
Я написал на Бейсике, а не на языке трейдскрипта, но смысл понятен. Что может быть проще?
Мне нужны фильтры, привязанные ко времени или диапазону времени. Например, если сейчас больше 11 часов но меньше 12ти, и выполняется условие икс, то открыть позицию.
Разве так не получится?
Patience seems to be the one commodity that commodity traders have in short supply. Larry Williams

#23 Sidor

Sidor

    Гуру нашего муравейника

  • Moderators
  • 3794 сообщений

Отправлено 18 May 2012 - 09:21 AM

А так разве нельзя: if time = 10:00 then .....
Я написал на Бейсике, а не на языке трейдскрипта, но смысл понятен. Что может быть проще?
Мне нужны фильтры, привязанные ко времени или диапазону времени. Например, если сейчас больше 11 часов но меньше 12ти, и выполняется условие икс, то открыть позицию.
Разве так не получится?

Простите, вы мануал по TradeScript раскрывали?

#24 Sidor

Sidor

    Гуру нашего муравейника

  • Moderators
  • 3794 сообщений

Отправлено 18 May 2012 - 09:22 AM

Так как проблема с набором лишних позиций возникла не только у меня, думаю, что введение дополнительных настроек во вкладке Торговля, запрещающих роботу набирать позиции больше выставленного лимита, была бы очень полезна.

Взяли в работу.

#25 richest

richest

    Гуру нашего муравейника

  • Трейдеры
  • PipPipPipPip
  • 1385 сообщений

Отправлено 18 May 2012 - 09:44 AM

Простите, вы мануал по TradeScript раскрывали?

Пока читаю 15ю страницу. По содержанию на первых страницах не нашел ничего, что похоже было бы на работу со временем. Я извиняюсь, конечно, если я глупость какую написал, видимо, мой вопрос должен отпасть после прочтения всего мануала.
Я забеспокоился после поста spb:
1. мы пока не видим в трейдсрипте возможности работать с физическим временем. Если кто видит или понимает как это сделать - пусть пишет в форум
Какого рода должно быть предложение, чтобы оно было рассмотрено?
Patience seems to be the one commodity that commodity traders have in short supply. Larry Williams

#26 SPb

SPb

    Гуру психологии и торговли

  • Трейдеры
  • PipPipPip
  • 440 сообщений

Отправлено 18 May 2012 - 11:38 AM

Спасибо за понимание!
Действительно, скорее всего риск-менеджмент не поспевает за выставляющимися заявками.
Выход вижу только один - переписать скрипт таким образом, чтобы робот реагировал только на первую заявку и не действовал до момента продажи.
Не знаю только пока, удастся ли это осуществить :(

Убедиться наверняка можно посмотрев время выставленного приказа, если оно одинаково для нескольких заявок то причина в этом. Но только это не риск-менеджмент не успевает, а ответ с биржи приходит позже чем выставляется следующая заявка, ( что согласитесь логично т.к. заявки посылаются кучей) Здесь вы абсолютно правы надо переписать скрипт.

#27 SPb

SPb

    Гуру психологии и торговли

  • Трейдеры
  • PipPipPip
  • 440 сообщений

Отправлено 18 May 2012 - 12:24 PM

то есть сравниваются не разности величин, а ближние к знаку "<" величины. А как сделать так, чтобы в сравнении участвовали именно разности?
И, кстати, нет, не генерит во-втором случае при дописании =true.

чтобы участвовали разности их нужно прописать как разности, и сравнить. А у вас к сожалению не про то.

#28 Сигурд

Сигурд

    Участник

  • Трейдеры
  • PipPip
  • 153 сообщений

Отправлено 18 May 2012 - 12:29 PM

чтобы участвовали разности их нужно прописать как разности, и сравнить. А у вас к сожалению не про то.

А где в мануале указано, как правильно прописывать разности?
второй вариант я писал, руководствуясь примером с 11 страницы мануала.
вот он
set a = last-ref(close,40)
чем по структуре мой скрипт от приведенного примера отличается?

#29 SPb

SPb

    Гуру психологии и торговли

  • Трейдеры
  • PipPipPip
  • 440 сообщений

Отправлено 18 May 2012 - 01:27 PM

А где в мануале указано, как правильно прописывать разности?
второй вариант я писал, руководствуясь примером с 11 страницы мануала.
вот он
set a = last-ref(close,40)
чем по структуре мой скрипт от приведенного примера отличается?

здеь все конкретно: изменение цены за последние 40 баров, а у вас?

#30 afasy

afasy

    Новичок

  • Трейдеры
  • Pip
  • 22 сообщений

Отправлено 18 May 2012 - 01:42 PM

Коллеги, сегодня мы выложили новую версию SmartX и решили начать новую ветку, поскольку большая часть багов старых версий пофиксена.
Сборка лежит тут:http://www.WsiFranchise....re/comp/smartx/
Там же и описание.
В последней версии мы по максимуму постарались задавить проблемы, вызванные некорректным использованием настроек риск-менеджмента, в частности частых срабатываний авто-стопов вызванных как тормозами в ядре одной из бирж (что не позволяло оперативно получать отчет о регистрации и исполнении заявок), так и текущим уровнем волатильности. Тем не менее, надо помнить, что на всякого мудреца довольно простоты и на всякую эпсилон найдется своя дельта. Всех рыночных ситуаций и действий пользователя в них мы предусмотреть не можем, да и не должны.
Каждый должен сам продумывать, к каким последствиям на рынке с данной волатильностью и степенью тормознутости приведет использование настроек автостопов, которые он выбрал. Но основные моменты, как я уже сказал, мы учли. Прошу тестировать.

Для тех, кто не внимательно следил за последними изменениями в функционале SmartX повторю их тут вкратце.

Итак, нововведения:
версия 2.3:

По РИСК-МЕНЕДЖМЕНТУ
• Реализация синхронной модели постановки заявок
• Внедрение ограничений и элементов механизма "защиты от дурака"

по ГРАФИКАМ
• Добавлена возможность отобразить открытую позицию на графике. Цвет линии настраивается в свойствах графика (свойства: цвет покупки и цвет продажи)
• Добавлена возможность отображать сделки на графике ввиде треугольных символов
• Добавлена возможность отображать на графике различных типов приказы.
• Сглажено горизонтальное масштабирование
• Сетка графика адаптирована к круглым значениям цены инструмента
• Доступно вертикальное масштабирование графика. Активировать эту функцию можно, сняв в контекстном меню графика галочку «Автомасштаб по Y». Перемещение графика вверх/вниз осуществляется «перетягиванием» вверх/вниз вертикальной шкалы. Растяжение/сжатие графика осуществляется «перетягиванием» вверх/вниз вертикальной шкалы с зажатой клавишей Ctrl.

по Таблицам:
- Добавлен расчет реализованной и нереализованной прибыли в таблицу «Состояние счета» для портфелей RF
- Добавлен расчет прибыли в % в таблице «открытые позиции»
- Добавлены дополнительные информативные поля в таблицу «Котировки»

Добавлены приятные мелочи вроде быстрого переключения между торговыми серверами, пофиксены баги.
Для того, чтобы снять приставку бета нам нужно лишь обкатать эту версию.
Поэтому, просьба сюда постить баги и замечания по работе.
Ветку по предложениям я открою позже, когда будет выпущен официальный релиз.


УВАЖАЕМЫЙ Sidor!
Может не совсем в тему, но позвольте задать несколько вопросов по менеджеру стратегий.
После не совсем удачных попыток реализации простейшей стратегии, в качестве примера, возмем следующие условия.
Вход в лонг по пересечению хая цены снизу SMA(21); Выход из лонга по пересечению SMA (12); Вход в шорт по пересечению лоу цены сверху SMA 21; Выход из шорта по пересечнию хай цены SMA(12)
Условия для менеджера записаны так:
Вкладка Bay
CROSSOVER (HIGH, SMA(close,21)= TRUE
Вкладка Sell
CROSSOVER (SMA(close,21), LOW) = TRUE
Вкладка EXIT BAY
CROSSOVER (SMA(close,12),low) = TRUE

Вкладка EXIT SELL
CROSSOVER (HIGH, SMA(CLOSE,12) = TRUE

Возможно при написание кода,я, что то напутал (есть подозрения, что может условия надо внести в другие вкладки), поэтому буду весьма признателен, если Вы меня поправите.
По результатам исполнения кода, система выдает сигналы EXIT BAY раньше вхождения в позицию, то есть она продает, тогда, когда мы еще не купили по сигналу bay. Сигнал, sell, тоже приходит раньше основного сигнала на продажу (по SMA старшего периода). Правильно ли, я понимаю, что реализация стратегий возможно только для разворотных стратегий. То есть из вкладки Bay мы получаем сигнал на покупку в лонг, а из вкладки Sell продажу той же лонговой позиции?
Следующий вопрос, как осуществляется контроль наличия позиции, например если включил менеджер стратегий, вошел в позицию, выключил его, потом через время опять включил и поступает сигнал в шорт, как будет реагировать система? Ведь у меня есть уже лонговая позиция?
В целом, то что Вы придумали реализацию МТС внутри терминала - это просто великолепно. Теперь бы разобраться с этим богатством :) А то, как в сказке, видит око, да зуб неймет :)
Буду Вам очень признателен за помощь и ответ на поставленные вопросы.
P.S. Может Вы знаете зарубежные ресурсы, где можно почитать о этом языке, форумы и тп. на сайте кроме двух инструкций нифига нет, да и wiki по языку дохлая, кроме тех же примеров из инструкции ничего нет.

#31 Sidor

Sidor

    Гуру нашего муравейника

  • Moderators
  • 3794 сообщений

Отправлено 18 May 2012 - 07:58 PM

УВАЖАЕМЫЙ Sidor!
Может не совсем в тему, но позвольте задать несколько вопросов
По результатам исполнения кода, система выдает сигналы EXIT BAY раньше вхождения в позицию, то есть она продает, тогда, когда мы еще не купили по сигналу bay. Сигнал, sell, тоже приходит раньше основного сигнала на продажу (по SMA старшего периода).

Такое возможно. Как написали скрипты, так сигналы и будут поступать. В какой вкладке поперед возникнет сигнал, тот торговая часть и начнет раньше обрабатывать.
Однако, есть разница между сигналами с вкладки sell и вкладки exit buy.
По сигналу с вкладки sell робот формирует заявку на продажу (на короткую продажу, если нет позиции) и при этом не важно, какая была у робота реальная позиция перед этим.
По сигналу с вкладки exit buy робот формирует заявку на закрытие длинной позиции. Если длинной позиции у робота нет, то заявку он в рынок отправлять не будет.

Правильно ли, я понимаю, что реализация стратегий возможно только для разворотных стратегий. То есть из вкладки Bay мы получаем сигнал на покупку в лонг, а из вкладки Sell продажу той же лонговой позиции?

Нет, не правильно.
Из вкладки buy мы получаем просто сигнал на покупку вне зависимости от текущей позиции Робота
Из вкладки Sell - соответственно сигнал на продажу. Опять же, роботу при этом плевать, сколько у вас было перед этим куплено или продано контрактов.
Перевороты можно реализовывать задавая одинаковые скрипты в двух вкладках (BUY + exit sell) и (sell + exit buy)

Следующий вопрос, как осуществляется контроль наличия позиции, например если включил менеджер стратегий, вошел в позицию, выключил его, потом через время опять включил и поступает сигнал в шорт, как будет реагировать система? Ведь у меня есть уже лонговая позиция?

Каждый робот ведет свою собственную позицию. Не зависимо от других роботов по этой же бумаге.
Можно закрывать все окна менеджеров стратегий. если при этом вы не выключаете СмартХ и не выключаете саму стратегию, она будет продолжать работать.

#32 richest

richest

    Гуру нашего муравейника

  • Трейдеры
  • PipPipPipPip
  • 1385 сообщений

Отправлено 18 May 2012 - 08:04 PM

Вопрос к разработчикам.
Бегло пробежал весь мануал по трейдскрипту, но так и не нашел функций и операторов работы со временем. Ожидал что-то типа такого "если время = чч:мм то...". Мне кажется это такой очевидно нужной вещью, что я даже до сих пор не верю, что в трейдскрипте нет таких возможностей, поэтому и задаю, видимо, кажущиеся странными вопросы. В связи с этим:
1) правильно ли я понимаю, что работать со временем в трейдскрипте невозможно?
2) если ответ на первый вопрос утвердительный, то будут ли реализованы эти функции когда-нибудь? Т.е. Начнется ли работа по данному направлению?
2Сидор. Из вашего комментария, прошу прощения за дотошность, непонятно ни первое ни второе:(
Может, я один такой, но Большинство из своих техник мне не удастся автоматизировать без привязки ко времени. У меня есть техники, которые ничего кроме времени не используют, типа "открыть длинную позицию в 11:34". Сейчас я вынужден, грубо говоря, открывать терминал в 11:34 и ручками вводить заявку, хотя способ автоматизации кажется очень простым.
Кому-нибудь ещё такое нужно?
Patience seems to be the one commodity that commodity traders have in short supply. Larry Williams

#33 Sidor

Sidor

    Гуру нашего муравейника

  • Moderators
  • 3794 сообщений

Отправлено 18 May 2012 - 09:28 PM

Вопрос к разработчикам.
Бегло пробежал весь мануал по трейдскрипту, но так и не нашел функций и операторов работы со временем. Ожидал что-то типа такого "если время = чч:мм то...". Мне кажется это такой очевидно нужной вещью, что я даже до сих пор не верю, что в трейдскрипте нет таких возможностей, поэтому и задаю, видимо, кажущиеся странными вопросы. В связи с этим:
1) правильно ли я понимаю, что работать со временем в трейдскрипте невозможно?
2) если ответ на первый вопрос утвердительный, то будут ли реализованы эти функции когда-нибудь? Т.е. Начнется ли работа по данному направлению?
2Сидор. Из вашего комментария, прошу общения за дотошность, непонятно ни первое ни второе:(
Может, я один такой, но Большинство из своих техник мне не удастся автоматизировать без привязки ко времени. У меня есть техники, которые ничего кроме времени не используют, типа "открыть длинную позицию в 11:34". Сейчас я вынужден, грубо говоря, открывать терминал в 11:34 и ручками вводить заявку, хотя способ автоматизации кажется очень простым.
Кому-нибудь ещё такое нужно?

1. тут нет ни одного разработчика TradeScript, :big_boss:
они все остались в корпорации Modulus в США
2. Я так же как и вы бегло пробежал по мануалу и так же как и вы не заметил функций работы со временем. Однако у меня не достаточно опыта и знаний (так же как и всех здесь присутствующих), чтобы однозначно ответить ДА или НЕТ на поставленный вопрос.
3. Планов вмешиваться в язык и интерпретатор у нас пока нет. Пока надо освоить то что есть и сделать модуль backtesting
4. Всем хороших выходных и до понедельника.

#34 Сигурд

Сигурд

    Участник

  • Трейдеры
  • PipPip
  • 153 сообщений

Отправлено 21 May 2012 - 06:22 AM

1. тут нет ни одного разработчика TradeScript, :big_boss:
они все остались в корпорации Modulus в США

В таком случае поясните пожалуйста, кому адресовать вопросы по синтаксису языка? Есть ли специализированный форум разработчиков? На сайте Modulus такового не обнаружилось, но может я просто плохо искал. В частности интересует, когда в конструкторе появится вторая часть сообщения об ошибке, имеющая ссылку на help? На примере - в мануале указано, что сообщение об ошибке имеет следующий вид "Error: argument of 'TREND' function not optional. Click here for help." При этом по факту сейчас такое сообщение не имеет ссылки на help, то есть из двух предложений сообщения появляется только первое.

#35 Sidor

Sidor

    Гуру нашего муравейника

  • Moderators
  • 3794 сообщений

Отправлено 21 May 2012 - 10:20 AM

Спасибо. Просто я услышал в этой ветке такие фразы как "возьмём в разработку", думал, можно что-то менять.

Доброе утро!
Если что-то можно менять - можем взять в разработку. Что касается языка, то он таков как есть. Мы не можем менять его синтаксис и правила. Мы можем изучить его и начать пользоваться.

#36 Agnostik

Agnostik

    Участник

  • Moderators
  • 152 сообщений

Отправлено 21 May 2012 - 01:52 PM

Здравствуйте
Оператор maxof работает правильно
выдает вектор максимальных значений
В частности, в вашем примере для последнего бара это будет либо open либо close
а не то и другое одновременно.
max(ref(open,1), ref(close,1)) - для предыдущего бара и т д
"вглубь" периода который вы рассматриваете

#37 Сигурд

Сигурд

    Участник

  • Трейдеры
  • PipPip
  • 153 сообщений

Отправлено 21 May 2012 - 01:58 PM

Здравствуйте
Оператор maxof работает правильно
выдает вектор максимальных значений
В частности, в вашем примере для последнего бара это будет либо open либо close
а не то и другое одновременно.
max(ref(open,1), ref(close,1)) - для предыдущего бара и т д
"вглубь" периода который вы рассматриваете

Очень рад увидеть квалифицированный ответ! Спасибо. То есть необходимо оперировать периодами, начиная с предыдущего бара, а не с текущего?

#38 Agnostik

Agnostik

    Участник

  • Moderators
  • 152 сообщений

Отправлено 21 May 2012 - 02:03 PM

Очень рад увидеть квалифицированный ответ! Спасибо. То есть необходимо оперировать периодами, начиная с предыдущего бара, а не с текущего?


Можете в моменте попробовать на срабатывание такой скрипт
set vvv = maxof(close,open)
ref(vvv,2)<141.22

Первая строка определяет вектор масимальных значений
Вторая условие срабатывания
Сработает когда буде больше 141.24

На текущем баре тоже функция работает проверьте

#39 Agnostik

Agnostik

    Участник

  • Moderators
  • 152 сообщений

Отправлено 21 May 2012 - 02:08 PM

Уже пошел новый час
Так что пример устарел но суть та же
Протестируйте внимательно опираясь на цены открытия и закрытия баров
текущего и предшествующих

#40 Сигурд

Сигурд

    Участник

  • Трейдеры
  • PipPip
  • 153 сообщений

Отправлено 21 May 2012 - 02:09 PM

Можете в моменте попробовать на срабатывание такой скрипт
set vvv = maxof(close,open)
ref(vvv,2)<141.22

Первая строка определяет вектор масимальных значений
Вторая условие срабатывания
Сработает когда буде больше 141.24

На текущем баре тоже функция работает проверьте

В том-то и дело, что не работает... В том числе на предыдущем периоде.
Я для проверки принадлежности возвращаемого значения вектору пишу следующую пару скриптов в Buy и Sell сигналы:
maxof(ref(open,1),ref(close,1))=ref(close,1)
maxof(ref(open,1),ref(close,1))=ref(open,1)
срабатывают оба одновременно.



Ответить



  


Яндекс.Метрика