Автор |
Сообщение |
Sergg
Зарегистрирован: 04.03.2012
Сообщения: 24
|
Столкнулся с такой проблемой - если цена достигает stop loss или take profit на баре входа, то робот зацикливается (выставление заявок через amisharp в quik).
При этом в коде ставлю
SetOption("AllowSameBarExit", true);
SetOption("ActivateStopsImmediately", true);
Чтобы разрешить выход на баре входа.
Если этого не ставить, то все нормально и не каких зацикливаний не происходит, но за 1 бар может много разного произойти и из малого стопа может получить большой т.к закроется позиция только через бар.
Cлучаи зацикливания были редкостью либо я думал что я исправил их. Но вчера роботу быстро дали профита и он стал его фиксировать. Получилось что откупал шорт, потом снова продавал в шорт, потом снова откупал и так пока я не заметил. Нагенировал комиссии и убытка (вместо прибыли).
Для stop loss и take profit использую ApplyStop и equity(1,0);
Что можно сделать чтобы и стопы с профитом можно было ставить на баре входа сделку и чтобы не было таких зацикливаний когда short и cover (или buy и sell)? |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
000
Site Admin
![](images/avatars/183029264847fb5337d4ea4.gif)
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
![](images/spacer.gif) |
Sergg
Зарегистрирован: 04.03.2012
Сообщения: 24
|
000 писал(а): |
http://www.amisite.ru/afl/exp/0003.htm
В конце вариант решения. |
Если честно, то не особо получается пока применить.
Взял для примера простую систему чтобы сигналов было много и быстро увидеть глюк
SetBarsRequired(sbrAll, sbrAll);
SetChartOptions(0,chartShowArrows|chartShowDates);
InitialEquity = 30000; //Начальная сумма
SetOption("InitialEquity", InitialEquity);
SetOption("AllowPositionShrinking", True);
SetOption("MaxOpenPositions",1);
SetOption("AllowSameBarExit", true);
SetOption("ActivateStopsImmediately", true);
SetOption("CommissionMode", 3);
SetOption("CommissionAmount",2.45);
SetPositionSize(1,spsShares);
RoundLotSize = 1;
slip=0;
//Стоп
st=0.1;
//Профит
prof=0.1;
BuyPrice = Min(H,open+slip);
SellPrice = Max(L,open-slip);
ShortPrice = Max(L,open-slip);
CoverPrice = Min(H,open+slip);
Sell = 0;
Cover = 0;
Buy = ref(open,-1)<ref(close,-1);
Short= ref(open,-1)>ref(close,-1);
ApplyStop(stopTypeloss,stopModePercent,st, True);
ApplyStop(stopTypeprofit,stopModePercent,prof, True);
equity(1,0);
Plot(C,"Close",paramcolor("Color",colorblack),stylenotitle | paramstyle("Style") | getpricestyle() );
plotshapes(IIf(Cover,shapeuparrow,0),6,0,CoverPrice,-20);
plotshapes(IIf(Buy,shapeuparrow,0),5,0,BuyPrice,-20);
plotshapes(IIf(Sell,shapedownarrow,0),6,0,SellPrice,-20);
plotshapes(IIf(Short,shapedownarrow,0),4,0,ShortPrice,-20); |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
Sergg
Зарегистрирован: 04.03.2012
Сообщения: 24
|
Добавлял еще что-то типа этого и все-равно его ключит. Может не правильно понимаю смысл. Это для стопа, для take profit тоже добавлял.
Buy = Buy[BarCount - 1] AND L[BarCount - 1] > O[BarCount - 1]*(1 - st/100);
Sell = Sell[BarCount - 1];
Short = Short[BarCount - 1] AND H[BarCount - 1] < O[BarCount - 1]*(1 + st/100);
Cover = Cover[BarCount - 1]; |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
000
Site Admin
![](images/avatars/183029264847fb5337d4ea4.gif)
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Не понял. В начале вроде речь шла о роботе, а теперь вижу код для теста... Все таки это разные задачи...
Я правда совсем не знаю как работает робот на amisharp... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
![](images/spacer.gif) |
000
Site Admin
![](images/avatars/183029264847fb5337d4ea4.gif)
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Хм.
Попробуй так.
Ниже Equity(1, 0);
Напиши типа
Buy = Buy AND Sell == 0;
... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
![](images/spacer.gif) |
Sergg
Зарегистрирован: 04.03.2012
Сообщения: 24
|
000 писал(а): |
Хм.
Попробуй так.
Ниже Equity(1, 0);
Напиши типа
Buy = Buy AND Sell == 0;
... |
У меня до этого стояла такая же конструкция, но до Equity(1, 0);
И я думал что она работает, до того момента как не заметил зацикливание.
Сейчас по вашему совету поставил после Equity. Вроде зацикливаний не происходит. Правда сейчас на графике не поймешь где какой сигнал, т.е как только вошли в сделку то я вижу допустим "красную стрелочку" в Short, а если наступил Cover на этом же баре, то красная стрелочка от шорта уже изчезает и я вижу только стрелочку от Cover.
Т.е чисто визуальные неудобства.
А в Quik сделки идут нормально. |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
Виталий
Зарегистрирован: 23.03.2021
Сообщения: 48
|
Я правильно понимаю, что случай выбивания по стопу на баре входа нереализуем в одной формуле и для тестера и для робота? Если мы снимаем сигнал после отстопа и до закрытия бара, идущего за сигнальным, то на этом баре сигнала не будет совсем. Или есть какое то решение? Я для тестера реализовал и маркеры расставляются верно и сделки в тестере считаются правильно. А под робота допилить не соображу как, чтоб тестерный код не пострадал. |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
000
Site Admin
![](images/avatars/183029264847fb5337d4ea4.gif)
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Только переходить на меньший фрейм. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
![](images/spacer.gif) |
Виталий
Зарегистрирован: 23.03.2021
Сообщения: 48
|
Я, видимо, еще никак философию Амиброкера не вкурю. Пошел прогуляться, чтоб мозг не вскипел. Иду и думаю, а зачем мне вообще в роботе все эти циклы, массивы, прогоны... Маркеры на чарте у меня рисуются от реальных сделок, они все в файле лежат. Рассчитанные маркеры на истории мне не нужны на работающем роботе. Мне нужны сигналы в моменте и цены открытия/закрытия позы, все равно заявка маркетом уходит. Т.е. робот мой простой как три копейки выходит в сравнении с тестером. Никаких циклов, а только сигнал в моменте. Пральна?
Отвечаю сам себе - нипральна ))
т.е. в большинстве нипральна
пральна для реверсивных безстоповых роботов.
Но я развил твою идею сдвига сигналов (по ссылке выше). И должно получиться без смены фрейма |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
|
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|