Позиция реальная и виртуальная

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

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 11 мес. назад - 9 года 11 мес. назад #13 от admin
Александр, здесь возможны 2 пути.

Очевидный. Входить в сделки по факту закрытия свечи на начале следующей. Не всегда это возможно

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

Например такая последовательность:
1 минута - сигнал лонг - робот купил
2 минута - сигнал лонг пропал - робот в позиции лонг по прежнему
3 минута - появился снова расчетный сигнал лонг. Робот ничего не делает, зная свою реальную позицию
далее может происходить все что угодно - робот будет все расчетные сигналы игнорировать до появления сигнала sell

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

Есть и третий путь, но он не всегда возможен. Рассчитывать формулой Амиброкера сигнал только в текущем моменте, опираясь на реальную историю позиций робота. Но это сложный путь и (повторюсь) далеко не всегда имеет смысл.
Последнее редактирование: 9 года 11 мес. назад пользователем admin.
Спасибо сказали: AlexLan

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 11 мес. назад #14 от AlexLan
Михаил, спасибо.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 3 мес. назад #213 от AlexLan
Михаил, а если организовать Гистерезис (для тех кто не знает) ;) ru.wikipedia.org/wiki/%D0%93%D0%B8%D1%81...B5%D0%B7%D0%B8%D1%81
Алгоритм получается не сложный но проблема с тестом.
Если опустится на более низкий интервал 1 мин, то наверно будет меньше спорных моментов.
Или из AmiSharpa принудительно подавать сигнал (обратная связь на покупку/продажу). Тем самым синхронизировать работу.
Только как все это тестировать?
:unsure: Подскажи умный человек :)
С уважением, Александр.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 3 мес. назад - 9 года 3 мес. назад #214 от admin
Ну спасибо на добром слове )

Александр, надо разделять работу с непрерывным потоком котировок в реалтайме и нарезку этого потока в истории.

На истории нет никакой достоверной информации о том, что происходило между моментами open и close. Поэтому анализ истории можно производить лишь этим моментам и high + low дополнительно.

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

Поэтому
  • или по закрытию + анализ истории
  • или в моменте, но историю анализировать незачем

Какой вариант выбрать - дело вкуса. В результате тягостных раздумий в конце концов все приходят к первому B)
Последнее редактирование: 9 года 3 мес. назад пользователем admin.
Спасибо сказали: AlexLan

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 3 мес. назад #215 от AlexLan
Михаил, подскажите пожалуйста.
Какие прописать установки, что бы Amibroker работал по закрытию свечки? В тесте и в реале.
Решил перевести рабочий тайм на 1 мин. и работать по закрытию свечки.
Все равно решение принимается на часовом тайфрейме
прочитал описания SetOption( field, value ) но не нашел как это сделать.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 3 мес. назад #216 от admin
Александр, смотрите.

myMA = MA(что-то)

теперь

Buy = Cross(Close,myMA) - это тест пересечения на текущей свече. Close меняется, сигнал прыгает

а

Buy = Ref(Cross(Close,myMA),-1) проверяет пересечение на предыдущей ЗАКРЫТОЙ свече
Спасибо сказали: AlexLan

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 3 мес. назад #217 от AlexLan
:woohoo:
Buy = Ref(Cross(Close,myMA),-1) проверяет пересечение на предыдущей ЗАКРЫТОЙ свече[/quote]
Классное решение !!!!! )))
и простое
Сейчас попробую.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 3 мес. назад - 9 года 3 мес. назад #226 от RomaNick

admin пишет: Buy = Ref(Cross(Close,myMA),-1) проверяет пересечение на предыдущей ЗАКРЫТОЙ свече


Вопрос. Какая настройка в бэктестере соответсвует вышеприведенному коду для открытия и закрытия позиции?

Close, задержка - "0" или Open, задержка "1" или Close, "1" ?

Чтобы результаты бэктеста совпадали с реальной торговлей.
Последнее редактирование: 9 года 3 мес. назад пользователем RomaNick.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 3 мес. назад #227 от admin
RomaNic,

Эти параметры бектестера относятся к другим вещам (ApplyStop). Они никак не влияют на сигналы, вычисленные в формуле явно, как это сделано в цитате

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 3 мес. назад #228 от AlexLan
Михаил, добрый день.
Спасибо за подсказку. Реализовал Вашу идею. Только добавил еще одно условие по H/L . Если H>уровень+порог то вход сразу. Если сильное движение. Робот отработал неделю как часы.
Спасибо. :)
Михаил, подскажите пожалуйста, как можно сформировать набор линий поддержки/сопротивления заданной длинны.
Допустим робот работает на 5 мин, а линии остаются функциональные да протяжении от часа до дня.
И как организовать массив допустим из 10 линий поддержек и сопротивлений.
С уважением, Александр.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 3 мес. назад - 8 года 7 мес. назад #229 от admin
Александр, способов много, но все они зависят от алгоритма.


Например, если Вы хотите поставить стоп для лонговой позиции, на расстоянии 5 р от входа, то

StopLevel = ValueWhen(Buy,BuyPrice) - 5;

Если хочется ограничить этот стоп каким-то количеством свечей, то на помощь дополнительно приходит BarIndex()
Если каким-то временем, то TimeNum() и так далее.
Последнее редактирование: 8 года 7 мес. назад пользователем admin.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 3 мес. назад #230 от AlexLan
Михаил,
А как это выглядит?
"Если хочется ограничить этот стоп каким-то количеством свечей, то на помощь дополнительно приходит BarIndex()"
допустим линия на 10 свечей в перед.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 3 мес. назад - 8 года 7 мес. назад #231 от admin
StopLevel = ValueWhen(Buy,BuyPrice) - 5;

Candles_Left = Barindex() - ValueWhen(Buy,Barindex());

StopLevel = iif (Candles_Left <= 10,StopLlevel,Null);


Можно использовать BarsSince - еще проще получится
Последнее редактирование: 8 года 7 мес. назад пользователем admin.
Спасибо сказали: AlexLan

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 3 мес. назад - 9 года 3 мес. назад #232 от AlexLan
Отлично. Сейчас попробую.
Спасибо.
А второй вопрос. Как создать массив с такими линиями?
Последнее редактирование: 9 года 3 мес. назад пользователем AlexLan.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 3 мес. назад - 9 года 3 мес. назад #233 от RomaNick

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
Вот это как раз и относится к функции ApplyStop()!

Поэтому вопрос такой:"Какие настройки в бэктестере для Trades tab и Stop tab
ближе всего к реальной торговли или необходимо выходить не в моменте а на закрытиях баров?
Последнее редактирование: 9 года 3 мес. назад пользователем RomaNick.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 3 мес. назад - 9 года 3 мес. назад #234 от admin
Александр. Чтобы не вдаваться в разного рода сложности, заведите себе 10 (или 20 или сколько нужно) массивов. Можно и собрать массивы в массив:

for (i=0 ; i < 10 ; i++)
StaticVarSet("Array"+i, <какой-то массив>)
Последнее редактирование: 9 года 3 мес. назад пользователем admin.
Спасибо сказали: AlexLan

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 3 мес. назад - 9 года 3 мес. назад #235 от admin
Роман.

Если Вы сами в своей программе рассчитали сигналы (buy,sell...) и их цены (BuyPrice,SellPrice...) то они никогда никуда не двинутся, чтобы Вы не указали в настройках залержек.

Если Вы используете ApplyStop и проч, то вот тогда бектестеру нужно рассказать, КУДА он должен поставить сигнал при срабатывании ApplyStop и на какую цену

Я этими функциями (ApplyStop) не пользуюсь именно по причине необходимости дополнительных настроек и непрозрачности происходящего. Мне проще рассчитать все уровни в формуле, нарисовать их, вывести метки сделок и убедиться, что все как надо.

С ApplyStop постоянно какая-то морока. По крайней мере у меня.
Последнее редактирование: 9 года 3 мес. назад пользователем admin.
Спасибо сказали: AlexLan

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 3 мес. назад #236 от RomaNick
Тогда возникает вопрос: "Как узнать цену , по которой открылась позиция в бэктестере?" С помощью какой функции это можно сделать? Тогда, если знаешь цены открытия сделки, можно самому прибавить(вычесть) необходимый уровень стопов, не применяя ApplyStop(). Только как узнать цену открытия позиции?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 3 мес. назад #237 от admin
RomaNick, Цену открытия позиции не нужно узнавать.

Ее задаёте Вы сами.Например, если все ваши позиции по алгоритму открываются в начале свечи, значит BuyPrice = Open

BuyPrice - это зарезервированная переменная. Есть еще sellprice, shortprice, coverprice

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 3 мес. назад #238 от RomaNick
Да, я знаю, что есть эти переменные. Только при работе на демосчёте, (т.е. в реальной торговле), Когда позиция открыта, например по Buy, BuyPrice постоянно меняется!! Откуда он берёт эти велечины, мне не совсем ясно. Или при бэктесте амиброкер как то по другому обрабатывает? Или зависит от алгоритма?

Например у меня входит в позицию, когда RSI НАХОДИТСЯ ниже 30, соответственно, позиция открыта а RSI может там и остаться, может из-за этого BuyPrice постоянно меняется? Вообщем видимо AFL не отслеживает отрыта позиция или нет а просто по сигналам Buy изменяет BuyPrice. Я всё правильно понимаю? И тогда надо обрабатывать на бэктетсте, что позиция открылась и перестать отслеживать сигналы Buy? например через глобальную переменную?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 3 мес. назад #239 от admin
Если честно, я вообще ничего не понял

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 3 мес. назад #240 от RomaNick
1. Если позиция открыта , то почему BuyPrice меняется?
2. Какие параметры во вкладке Trade ближе к реальной торговле в моменте или необходимо програмировать открытие(закрытие) позиций как в бектестере? Например на закрытии текущей свечи?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 3 мес. назад - 9 года 3 мес. назад #241 от admin
BuyPrice должны заполнять Вы сами, если не используете ApplyStop. Это и есть указание амиброкеру из скрипта, где (на какой цене) совершится сделка. Настройка вкладки Trade при этом не играет никакой роли.

Если используете ApplyStop:
Во вкладке Trade указываются параметры, необходимые для работы функции ApplyStop. Исходя из этих настроек в результате выполнения ApplyStop будет сгенерирован сигнал на требуемой свече и для этого сигнала самой функций ApplyStop будет установлен Buyprice. Настройка параметров на этой вкладке полностью зависит от того алгоритма, который Вы программируете.(по какой цене Open или Close или иной открываются или закрываются сделки)

Чтобы понять работу ApplyStop, нужно внимательно прочесть хелп по ней и внимательно разобрать те примеры, которые в нем имеются.
Последнее редактирование: 9 года 3 мес. назад пользователем admin.
Спасибо сказали: AlexLan

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 3 мес. назад - 9 года 3 мес. назад #247 от RomaNick

admin пишет: Настройка параметров на этой вкладке полностью зависит от того алгоритма, который Вы программируете.(по какой цене Open или Close или иной открываются или закрываются сделки)


А если у меня алгоритм работает в "моменте" а не по ценам Open и Close. То тогда бэктестер мне не поможет?
Или если бэктестер работает только по ценам свечей(O,C,H,L), то мне и алгоритм надо переписать под данные цены на свечах, а не в "моменте" ?
Последнее редактирование: 9 года 3 мес. назад пользователем RomaNick.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 3 мес. назад #248 от admin
Роман, в этом случае бектестер покажет Вам другие результаты, которые не будут соотноситься с реальными. Это не проблема бектестера или амишарпа или еще кого-то - таково природное свойство всех исторических тестов.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 3 мес. назад #249 от RomaNick
Тогда такой вопрос.
Как AFL в бэктетсте можно выудить текущуу цену? Например, Через амишарп я считываю данные с ячеек таблицы из столбцов "Bid" или "Offer". Это можно какнибудь реализовать в бэктесте или это в принципе невозможно?
Если невозможно, то какой наиболее оптимальный способ существует, чтобы это реализовать?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 3 мес. назад #250 от admin
Роман, из Квика кроме цен сделок можно также экспортировать дополнительные параметры. Для Амиброкера это будет выглядеть как дополнительные тикеры, ничем не отличающиеся от обычных свечей.

Чтобы получить этот дополнительный тикер в AFL в виде обычного массива, используйте функцию Foreign

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 3 мес. назад #252 от RomaNick
Не совсем понял, что имелось ввиду. Я тестирую на истории и котировки загружаю не из Quik а с сайта финама.
Вообщем вопрос в следующем.
Есть ли какая нибудь переменная, кот. указывает текущую цену актива в бэктестере. Bid или Ask и с ними уже сверять цену открытия сделки?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 3 мес. назад #254 от RomaNick
Это "Источник данных для экспорта" , выбираем "Таблица истории значений параметров" и там Спрос или Предложение?
Тогда получится 2-а разных символа и объёмы отдельно?
Я правильно понял? Если да, то тогда тестирование надо будет проводить по -2м инструментам?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Модераторы: admin