Позиция реальная и виртуальная
Подскажите пожалуйста, как решить проблему по поводу позиции ..
Алгоритм
С помощью AmiSharpa анализирует в какой позиции мы находимся.
Дальше от реальной позиции принимаем решение.
Допустим мы в лонге, и если выполнятся все условия и Amibroker показывает сигнал на шорт открываем шорт. Все аналогично для лонга.
Пример:
Допустим 15 мин на фьюче RTS, мы в лонге.
На 2 минуте алгоритм Amibokera дает сигнал на продажу )) рисует стрелочки . AmiSharpa - сразу продает. Все отлично))
Вся система в шорте.))
Но на 9 минуте в Amiboker пропадает сигнал на шорт, и стрелочки пропадают без следа((, Amiboker как был так и остался в лонге.
А мы в реальной позиции в шорте.
Как выйти из этой ситуации?
Подскажите пожалуйста.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Очевидный. Входить в сделки по факту закрытия свечи на начале следующей. Не всегда это возможно
Если необходимо входить в позицию внутри несформированной свечи, нужно всегда быть готовым к тому, что сигнал может пропасть, как Вы написали, а робот в позицию уже вошел и позиции рассогласовались. В этом случае нужно либо немедленно позицию закрыть, обнаружив несоответствие позиции расчетной и реальной, либо держать позицию до появления соответствующего расчетного закрывающего сигнала.
Например такая последовательность:
1 минута - сигнал лонг - робот купил
2 минута - сигнал лонг пропал - робот в позиции лонг по прежнему
3 минута - появился снова расчетный сигнал лонг. Робот ничего не делает, зная свою реальную позицию
далее может происходить все что угодно - робот будет все расчетные сигналы игнорировать до появления сигнала sell
Таким образом, при входе в позицию на незваершенной свече всегда имеется риск получить сделку, отличную от расчетной либо "нащелкать" лишние комиссионные.
Есть и третий путь, но он не всегда возможен. Рассчитывать формулой Амиброкера сигнал только в текущем моменте, опираясь на реальную историю позиций робота. Но это сложный путь и (повторюсь) далеко не всегда имеет смысл.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Алгоритм получается не сложный но проблема с тестом.
Если опустится на более низкий интервал 1 мин, то наверно будет меньше спорных моментов.
Или из AmiSharpa принудительно подавать сигнал (обратная связь на покупку/продажу). Тем самым синхронизировать работу.
Только как все это тестировать?


С уважением, Александр.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Александр, надо разделять работу с непрерывным потоком котировок в реалтайме и нарезку этого потока в истории.
На истории нет никакой достоверной информации о том, что происходило между моментами open и close. Поэтому анализ истории можно производить лишь этим моментам и high + low дополнительно.
Все алгоритмы, принимающие решения в реалтайме по текущей незакрытой свече не могут быть адекватно проанализированы на истории.
Поэтому
- или по закрытию + анализ истории
- или в моменте, но историю анализировать незачем
Какой вариант выбрать - дело вкуса. В результате тягостных раздумий в конце концов все приходят к первому

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Какие прописать установки, что бы Amibroker работал по закрытию свечки? В тесте и в реале.
Решил перевести рабочий тайм на 1 мин. и работать по закрытию свечки.
Все равно решение принимается на часовом тайфрейме
прочитал описания SetOption( field, value ) но не нашел как это сделать.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
myMA = MA(что-то)
теперь
Buy = Cross(Close,myMA) - это тест пересечения на текущей свече. Close меняется, сигнал прыгает
а
Buy = Ref(Cross(Close,myMA),-1) проверяет пересечение на предыдущей ЗАКРЫТОЙ свече
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Buy = Ref(Cross(Close,myMA),-1) проверяет пересечение на предыдущей ЗАКРЫТОЙ свече[/quote]
Классное решение !!!!! )))
и простое
Сейчас попробую.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
admin пишет: Buy = Ref(Cross(Close,myMA),-1) проверяет пересечение на предыдущей ЗАКРЫТОЙ свече
Вопрос. Какая настройка в бэктестере соответсвует вышеприведенному коду для открытия и закрытия позиции?
Close, задержка - "0" или Open, задержка "1" или Close, "1" ?
Чтобы результаты бэктеста совпадали с реальной торговлей.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Эти параметры бектестера относятся к другим вещам (ApplyStop). Они никак не влияют на сигналы, вычисленные в формуле явно, как это сделано в цитате
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Спасибо за подсказку. Реализовал Вашу идею. Только добавил еще одно условие по H/L . Если H>уровень+порог то вход сразу. Если сильное движение. Робот отработал неделю как часы.
Спасибо.

Михаил, подскажите пожалуйста, как можно сформировать набор линий поддержки/сопротивления заданной длинны.
Допустим робот работает на 5 мин, а линии остаются функциональные да протяжении от часа до дня.
И как организовать массив допустим из 10 линий поддержек и сопротивлений.
С уважением, Александр.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Например, если Вы хотите поставить стоп для лонговой позиции, на расстоянии 5 р от входа, то
StopLevel = ValueWhen(Buy,BuyPrice) - 5;
Если хочется ограничить этот стоп каким-то количеством свечей, то на помощь дополнительно приходит BarIndex()
Если каким-то временем, то TimeNum() и так далее.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
А как это выглядит?
"Если хочется ограничить этот стоп каким-то количеством свечей, то на помощь дополнительно приходит BarIndex()"
допустим линия на 10 свечей в перед.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Candles_Left = Barindex() - ValueWhen(Buy,Barindex());
StopLevel = iif (Candles_Left <= 10,StopLlevel,Null);
Можно использовать BarsSince - еще проще получится
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Спасибо.
А второй вопрос. Как создать массив с такими линиями?
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
admin пишет: Эти параметры бектестера относятся к другим вещам (ApplyStop). Они никак не влияют на сигналы, вычисленные в формуле явно, как это сделано в цитате
Закладка -> Trades, вот что пишут в документации
Trades tab
prices buy/sell/short/cover price fields - allows the user to define at which price to buy/sell/short sell/buy to cover during system test
delays buy/sell/short/cover delay - allows to define custom delay between signal and trade
Так что видимо это относится к Открытию(закрытию) позиции. Поэтому предыдущий мой вопрос остается актуальным
Из документации
Stop tab
max. loss stop
profit target stop
trailing stop
N-bar stop
See APPLYSTOP function for more details on different stop settings
Поэтому вопрос такой:"Какие настройки в бэктестере для Trades tab и Stop tab
ближе всего к реальной торговли или необходимо выходить не в моменте а на закрытиях баров?
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
for (i=0 ; i < 10 ; i++)
StaticVarSet("Array"+i, <какой-то массив>)
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Если Вы сами в своей программе рассчитали сигналы (buy,sell...) и их цены (BuyPrice,SellPrice...) то они никогда никуда не двинутся, чтобы Вы не указали в настройках залержек.
Если Вы используете ApplyStop и проч, то вот тогда бектестеру нужно рассказать, КУДА он должен поставить сигнал при срабатывании ApplyStop и на какую цену
Я этими функциями (ApplyStop) не пользуюсь именно по причине необходимости дополнительных настроек и непрозрачности происходящего. Мне проще рассчитать все уровни в формуле, нарисовать их, вывести метки сделок и убедиться, что все как надо.
С ApplyStop постоянно какая-то морока. По крайней мере у меня.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Ее задаёте Вы сами.Например, если все ваши позиции по алгоритму открываются в начале свечи, значит BuyPrice = Open
BuyPrice - это зарезервированная переменная. Есть еще sellprice, shortprice, coverprice
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Например у меня входит в позицию, когда RSI НАХОДИТСЯ ниже 30, соответственно, позиция открыта а RSI может там и остаться, может из-за этого BuyPrice постоянно меняется? Вообщем видимо AFL не отслеживает отрыта позиция или нет а просто по сигналам Buy изменяет BuyPrice. Я всё правильно понимаю? И тогда надо обрабатывать на бэктетсте, что позиция открылась и перестать отслеживать сигналы Buy? например через глобальную переменную?
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
2. Какие параметры во вкладке Trade ближе к реальной торговле в моменте или необходимо програмировать открытие(закрытие) позиций как в бектестере? Например на закрытии текущей свечи?
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Если используете ApplyStop:
Во вкладке Trade указываются параметры, необходимые для работы функции ApplyStop. Исходя из этих настроек в результате выполнения ApplyStop будет сгенерирован сигнал на требуемой свече и для этого сигнала самой функций ApplyStop будет установлен Buyprice. Настройка параметров на этой вкладке полностью зависит от того алгоритма, который Вы программируете.(по какой цене Open или Close или иной открываются или закрываются сделки)
Чтобы понять работу ApplyStop, нужно внимательно прочесть хелп по ней и внимательно разобрать те примеры, которые в нем имеются.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
admin пишет: Настройка параметров на этой вкладке полностью зависит от того алгоритма, который Вы программируете.(по какой цене Open или Close или иной открываются или закрываются сделки)
А если у меня алгоритм работает в "моменте" а не по ценам Open и Close. То тогда бэктестер мне не поможет?
Или если бэктестер работает только по ценам свечей(O,C,H,L), то мне и алгоритм надо переписать под данные цены на свечах, а не в "моменте" ?
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Как AFL в бэктетсте можно выудить текущуу цену? Например, Через амишарп я считываю данные с ячеек таблицы из столбцов "Bid" или "Offer". Это можно какнибудь реализовать в бэктесте или это в принципе невозможно?
Если невозможно, то какой наиболее оптимальный способ существует, чтобы это реализовать?
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Чтобы получить этот дополнительный тикер в AFL в виде обычного массива, используйте функцию Foreign
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Вообщем вопрос в следующем.
Есть ли какая нибудь переменная, кот. указывает текущую цену актива в бэктестере. Bid или Ask и с ними уже сверять цену открытия сделки?
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Тогда получится 2-а разных символа и объёмы отдельно?
Я правильно понял? Если да, то тогда тестирование надо будет проводить по -2м инструментам?
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.