Торговый автомат Амиброкер+Квик

  • Автор темы mehanizator1
  • Дата начала

GH05

New member
bars=20;
HLine=Ref(HHV(H,bars),-1);
Buy=H>Hline;

Прогоняю через симулятор и вижу, что стрелка рисуется не в начале следующего бара, а в середине, ну или когда H>Hline становится, но до конца бара сигнал может и пропасть...значит теоретически к концу бара стрелка тоже может пропасть.....я не прав?
Неправ, H если он был то он и остается и может быть только выше
Да, точно. Как сам не дотумкал. И пофиг когда он стал больше Hline в начале или в середине бара. А надо ли делать ref для RSI(x)>y и ADX(x)>y ? Почему вообще пропадают сигналы? Т.е. есть какое-то выражение :
Buy = H>Hline AND RSI(x)>y AND ADX(x)>y.
И когда H>Hline и RSI за X больше Y и ADX за X > Y , то поступает сигнал, потом один из параметров уменьшается в середине бара условие И не соблюдается , и стрелка пропадает. Так я понимаю?
Да, эти индикаторы формируются исходя из C, т.е. текущей цены которая постоянно меняется, вообще на мойвзгляд система на мувингах и с Cross будет в большинстве случаев убыточна, здесь нужно как то подругому думать.
 

mehanizator1

New member
Уважаемый mechanizator! Не могли бы Вы поделиться мыслями относительно возможности автоматизации подачи заявок из амиброкера в квик посредством API, выложенного недавно на сайте квика. Интересует, очевидно, возможность вызова функций Trans2Quik.dll непосредственно из ами без написания дополнительных программ. Или все-же без этого не обойтись. Спасибо.
я даже не знал что у квика появился АПИ. так что мыслями поделиться пока не могу.
 

Commenced

New member
А почему по идее ты сигнал на 1 бар сместил, доходность конечно должна упасть, а какое роскальзыание задаеш, я ГП в тестере задаю 0,2-0,25, но в реале комисия и проскальзывание гдето 0,1.
хмм..у меня 0,1 стоит. и чего-то, как-то не очень радостно стало после смещения на один бар. Тестю на GAZP, EESR, LKOH, SBER. И всё никак не подберу нужный букет индикаторов, чтоб доходность более-менее была.

Когда пользуюсь симулятором я не только пропадания смотрю (их может и не быть), а смотрю чтоб сигнал появлялся одновременно с появлением бара, а не в течение бара.
Но тогда вопрос. Вот система образец которой на сайте. Там такое правило на покупку:
bars=20;
HLine=Ref(HHV(H,bars),-1);
Buy=H>Hline;

Прогоняю через симулятор и вижу, что стрелка рисуется не в начале следующего бара, а в середине, ну или когда H>Hline становится, но до конца бара сигнал может и пропасть...значит теоретически к концу бара стрелка тоже может пропасть.....я не прав?
Неправ, H если он был то он и остается и может быть только выше
Решается легко Buy=ref(H>Hline,-1); Поза откроется по O следующего бара, т.е. сразу как закроется бар на котором условие появилось. :)
 

Commenced

New member
Короче система определяет уровни поддержки сопротивлений не по цене, а по средней, почему просто не углу наклона средней объесняю, чтоб не учитывать мелкие всплески, может кому прогодится.

SetTradeDelays(0, 0, 0, 0);

t1 = Optimize("t1", 9, 3, 36, 3);
x = Optimize("x", 10, 3, 10, 1);
y = Optimize("y", 20, 1, 25, 1);

acc = Param("Acceleration", 0.02, 0, 1, 0.001 );
accm = Param("Max. acceleration", 0.2, 0, 1, 0.001 );

U=MA(MA((H+L+O+C)/4,T1),3);

upbar=U>Ref(U,-1) ;
downbar=U<Ref(U,-1) ;
barcolor=IIf(downbar,4, IIf(upbar,5,7));
Graph1BarColor=ValueWhen(barcolor != 0,barcolor);
Plot(U,"U",Graph1BarColor,ParamStyle("Style", styleDots | styleNoLine, maskDefault | styleDots | styleNoLine ) );

_SECTION_BEGIN("сопротив и поддержки");

// Линии Ишимоку (Исходные)
Tenkan = (HHV(U,X) + LLV(Ref(U,-1),X))/2;
Kijun = (HHV(U,Y) + LLV(Ref(U,-1),Y))/2;

T0 = Tenkan - Kijun;
SkatTenkan = Tenkan - Ref(tenkan,-1);


// Верхние границы

LineUp = U>Tenkan & T0>=0 & SkatTenkan>0;

SignalUp = ExRem(LineUp, T0<0 & U<Tenkan );

KeyUp = HighestSince(SignalUp,U,1);

PlotKeyUp = IIf(KeyUp>=Ref(KeyUp,-1),4,2);

MarkerKeyUp=IIf(KeyUp<Ref(KeyUp,-1),shapeStar,shapeNone);

Plot(KeyUp," KeyUp", PlotKeyUp,1);

// Нижние границы

LineUq = U<Tenkan & T0<=0 & SkatTenkan<0;

SignalUq = ExRem(LineUp, T0>0 & U>Tenkan );

KeyUq = LowestSince(SignalUp,U,1);

PlotKeyUq = IIf(KeyUq<=Ref(KeyUq,-1),4,2);

MarkerKeyUq=IIf(KeyUq>Ref(KeyUq,-1),shapeStar,shapeNone);

Plot(KeyUq," KeyUq", PlotKeyUq,1);
_SECTION_END();

Plot(C,"price",1,128);

Cond1 = KeyUp>Ref(KeyUp,-1);
Cond2 = KeyUq<Ref(KeyUq,-1);

Cond4 = KeyUp<=Ref(KeyUp,-1);
Cond5 = KeyUq>=Ref(KeyUq,-1);

Buy = Cond1;
Short = Cond2;



Sell = Cond4;
Cover = Cond5;

Buy=ExRem(Buy,Sell);
Sell=ExRem(Sell,Buy);
Short=ExRem(Short,Cover);
Cover=ExRem(Cover,Short);



PlotShapes(IIf(Buy,shapeUpArrow,0),5,0,Graph0,-15);
PlotShapes(IIf(Sell,shapeDownArrow,0),4,0,Graph0,-15);
PlotShapes(IIf(Cover,shapeHollowUpArrow,0),5,0,Graph0,-15);
PlotShapes(IIf(Short,shapeHollowDownArrow,0),4,0,Graph0,-15);

SetChartOptions(0,chartShowArrows|chartShowDates);
_N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) ));
Plot( C, "Close", ParamColor("Color", colorBlack ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() );

_SECTION_END();
 

ds

New member
Решается легко Buy=ref(H>Hline,-1); Поза откроется по O следующего бара, т.е. сразу как закроется бар на котором условие появилось. :)
Да. Это я всё уже понял.)).спасиба.
на сайте амиброкера есть примеры всяких систем. Я вот оттуда брал , выдирал, то что наиболее любопытно было и тестил. Так там никто этого не учитывает, что сигнал пропасть может и его по закрытию бара ставить. Я пока как новичёк составляю систему из разных кусочков, везде натырю и смотрю что и как работает. Помоему лучший способ для обучения. Потом меняешь понемногу, добавляешь и получается новое.
А с H>HLine я ref() делал. просто у меня на бай там условие было ещё с индикаторами разными и логические И и ИЛИ между ними, и это уловие за бар могло и не быть истинным.
 

empenoso

New member
Уважаемый mehanizator, подскажите - можно ли при помощи данного скрипта отправлять транзакции по разным бумагам?
То есть открываешь несколько бумаг в Amibroker'e в разных окнах, и для каждой свое правило, добавляешь в каждую индикатор, пишущий tri файл - это нормально будет работать?
 

mehanizator1

New member
Уважаемый mehanizator, подскажите - можно ли при помощи данного скрипта отправлять транзакции по разным бумагам?
То есть открываешь несколько бумаг в Amibroker'e в разных окнах, и для каждой свое правило, добавляешь в каждую индикатор, пишущий tri файл - это нормально будет работать?
должно нормально работать
 

Commenced

New member
Уважаемый mehanizator, подскажите - можно ли при помощи данного скрипта отправлять транзакции по разным бумагам?
То есть открываешь несколько бумаг в Amibroker'e в разных окнах, и для каждой свое правило, добавляешь в каждую индикатор, пишущий tri файл - это нормально будет работать?
должно нормально работать
Когда проходит одновременно 2 и более сигналов пишется один. Из практики.
 

Commenced

New member
Который раньше прошел?
А как ты определиш который раньше или позже, ставил робота на 3 бумаги при резком всплеске ну там новости все 3 резко начинают рости, соответственно по трем должен пройти сигнал, в ами отрисован у всех в три файл записан один. :( Можно думаю решить посадив бумаги на разный тайм, чтоб появление сигнала было в разное время, но это сработает только в случае с ref если система работает сразу по условию возможны случаи одновременных сигналов. Мнение
 
Который раньше прошел?
А как ты определиш который раньше или позже, ставил робота на 3 бумаги при резком всплеске ну там новости все 3 резко начинают рости, соответственно по трем должен пройти сигнал, в ами отрисован у всех в три файл записан один. :( Можно думаю решить посадив бумаги на разный тайм, чтоб появление сигнала было в разное время, но это сработает только в случае с ref если система работает сразу по условию возможны случаи одновременных сигналов. Мнение
Чтобы такого не было, нужно у каждого индикатора устанавливать уникальный идентификатор. Тогда проверка на повторную заявку будет работать корректно.
 

Commenced

New member
Который раньше прошел?
А как ты определиш который раньше или позже, ставил робота на 3 бумаги при резком всплеске ну там новости все 3 резко начинают рости, соответственно по трем должен пройти сигнал, в ами отрисован у всех в три файл записан один. :( Можно думаю решить посадив бумаги на разный тайм, чтоб появление сигнала было в разное время, но это сработает только в случае с ref если система работает сразу по условию возможны случаи одновременных сигналов. Мнение
Чтобы такого не было, нужно у каждого индикатора устанавливать уникальный идентификатор. Тогда проверка на повторную заявку будет работать корректно.
Это ты типа меня оскорбить пытаешся, читать я вроде не разучился, пост меха по этому поводу видел.
 
Это ты типа меня оскорбить пытаешся, читать я вроде не разучился, пост меха по этому поводу видел.
Ну почему сразу оскорбить? Я вообще то помочь хотел ...
Ведь механизм работы там такой. Если есть сигнал в текущем баре, то выполняется процедура выставления заявки. В начале этой процедуры происходит поиск в файле заявок по идентификатору транзакции, который генериться на основе временной метки и идентификатора, задаваемого в коде системы. Т.е. система пытается выставить заявку каждую минуту (если экспорт идет с интервалом 1 мин.).
Иногда заявка может не выставится, если произошла задержка с экспортом котировок.
У меня еще такое бывало, что сигнал поступал уже под закрытие и заявка не успевала исполниться. В итоге я просто поставил фильтр по времени и больше этого не наблюдаю.
 

Commenced

New member
Это ты типа меня оскорбить пытаешся, читать я вроде не разучился, пост меха по этому поводу видел.
Ну почему сразу оскорбить? Я вообще то помочь хотел ...
Ведь механизм работы там такой. Если есть сигнал в текущем баре, то выполняется процедура выставления заявки. В начале этой процедуры происходит поиск в файле заявок по идентификатору транзакции, который генериться на основе временной метки и идентификатора, задаваемого в коде системы. Т.е. система пытается выставить заявку каждую минуту (если экспорт идет с интервалом 1 мин.).
Иногда заявка может не выставится, если произошла задержка с экспортом котировок.
У меня еще такое бывало, что сигнал поступал уже под закрытие и заявка не успевала исполниться. В итоге я просто поставил фильтр по времени и больше этого не наблюдаю.
Какой код фильтра? И куда вставил, ну всмылсе по отправке фильтр работает или в системе ограничивает появление сигнала типа этого:
Cond3 = Hour() < 17 AND Minute() < 35;
Buy = Cond1 AND Cond3;
 

Commenced

New member
Hour() < 17 AND Minute() < 35;
а у тебя это условие корректно работает? я пробывал с Now() нефига не работает.
Я им не пользуюсь, просто из ранних систем выдернул, но работало хорошо. Функцию тестил на оборотной параболика.
 

noise

New member
Hour() < 17 AND Minute() < 35;
а у тебя это условие корректно работает? я пробывал с Now() нефига не работает.
Я им не пользуюсь, просто из ранних систем выдернул, но работало хорошо. Функцию тестил на оборотной параболика.
просто для проверки условий, я по каждому условию строю график. если условие работает нормально, то график меняется. с Now() получается просто прямая линия, те для АМИ условие всегда выполнено или не выполнено, а динамики нет.
 
Какой код фильтра? И куда вставил, ну всмылсе по отправке фильтр работает или в системе ограничивает появление сигнала типа этого:
Cond3 = Hour() < 17 AND Minute() < 35;
Buy = Cond1 AND Cond3;
t = TimeNum()/100;
Buy = <условие входа> AND t < 1740;
 

Commenced

New member
Какой код фильтра? И куда вставил, ну всмылсе по отправке фильтр работает или в системе ограничивает появление сигнала типа этого:
Cond3 = Hour() < 17 AND Minute() < 35;
Buy = Cond1 AND Cond3;
t = TimeNum()/100;
Buy = <условие входа> AND t < 1740;
Понял ты ограничил генерацию сигналов, а я подумал что ты систему транзакции правил. :)
 
Your email address will not be publicly visible. We will only use it to contact you to confirm your post.
Сверху