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

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

mehanizator1

New member
теперь там в настройках нужно указывать название тикера и номер. можно сделать несколько индикаторов для каждого тикера с разными номерами и они будут одновременно работать и мешаться друг другу не будут.
и если случайно подключить индикатор не к тому тикеру ничего страшного не произойдет потому что он просто работать не будет на чужом.
 

antuan

New member
привет
имею раю 1 мин запускаю твою систему жму бэк тест ( я так понял она уже оптимизирована) получаю резальт и график переключается на 1 мин почему
 

antuan

New member
кпировать все или отсюда надо вытащить токо индикатор
////////// Правила системы ///////////////

bars=20;
HLine=Ref(HHV(H,bars),-1);
LLine=Ref(LLV(L,bars),-1);
Buy=H>Hline;
Sell=L<LLine;
Buy=ExRem(Buy,Sell);
Sell=ExRem(Sell,Buy);
Short=0;
Cover=0;

///////////// Рисуем всякое ///////////////

Plot(C,"price",1,128);
Plot(HLine,"high_line",5);
Plot(LLine,"low_line",4);
PlotShapes(IIf(Buy,shapeDownArrow,0),5,0,Graph1,-15);
PlotShapes(IIf(Sell,shapeUpArrow,0),4,0,Graph2,-15);
PlotShapes(IIf(Cover,shapeHollowDownArrow,0),5,0,Graph1,-15);
PlotShapes(IIf(Short,shapeHollowUpArrow,0),4,0,Graph2,-15);


//////////// Формируем транзакцию.//////////////
////////////////////////////////////////////////
//////// !!!!СЮДА РУКАМИ НЕ ЛАЗИТЬ!!!! /////////
////////////////////////////////////////////////

if ((BarCount>1)AND(Name()==Ticker)AND((Buy[BarCount-1]==1)OR(Sell[BarCount-1]==1)OR(Buy[BarCount-1]==1)OR(Cover[BarCount-1]==1))) {
ifbuy=IIf((Buy[BarCount-1]==1)OR(Cover[BarCount-1]==1),1,0);
k=IIf(ifbuy,Buy[BarCount-1]+Cover[BarCount-1],Short[BarCount-1]+Sell[BarCount-1]);
if (ifbuy) { Oper="B"; } else { Oper="S"; }
price=IIf(ifbuy,(1+Otstup/100)*Close[BarCount-1],(1-Otstup/100)*Close[BarCount-1]);
transid=StrFormat("TRANS_ID=%g%g;",TickerID,BarIndex());
str=StrFormat(transid+"PRICE=%1.3f;OPERATION="+Oper+";CLASSCODE="+Classcode+"; ACTION=NEW_ORDER; TYPE=L; SECCODE="+Seccode+"; ACCOUNT="+Account+";QUANTITY=%g;",price,Lots*k);
f=fopen(FileName,"r");
found=0;
if (f) {
while (!feof(f)) {
s=fgets(f);
if (StrFind(s,transid)>0) {
found=1;
}
}
fclose(f);
}
if (found==0) {
f=fopen(FileName,"a");
if (f) {
fputs(str+"\n",f);
fclose(f);
}
}
}

//// mehanizator (c) 2004, http://www.russian-trader.ru
 

antuan

New member
// Оптимизируемые параметры.
t1 = Optimize("Полупериод", 18, 18, 90, 3);
/* первая цифра- по умолчанию, Min, Max, step. Значение по умолчанию используется при Back Test'e*/
t3 = Optimize("период стоп", 16, 1, 30, 3);
pu = Optimize("добавить сверху", 10, 0, 10, 3);
/* дробное число принимать нехочет, придется потом делить на 1000 */
pd = Optimize("добавить снизу", 10, 0, 10, 3);

// Длинный TS
Ad = IIf(Ref(L, -t1) == LLV(L,t1*2+1), 1, 0);
bd = ValueWhen(Ad == 1,Ref(L,-t1), 1); // везде использую только первый фрактал
bd = IIf(bd < LLV(L, t1), bd, LLV(L, t1));
a1d = IIf(Ref(H, -t1) == HHV(H, t1*2+1), 1, 0);
b1d = ValueWhen(a1d == 1, Ref(H, -t1), 1);
b1d = IIf(b1d > HHV(H, t1), b1d, HHV(H, t1));
tsd = (bd+b1d)/2;
FloatTS2 = IIf(tsd > Ref(tsd, -1), 1, IIf(tsd < Ref(tsd,-1),-1, Ref(Ad, -1)));

// Короткий TS
t2 = t1/3;
A = IIf(Ref(L, -t2) == LLV(L,t2 * 2+1), 1, 0);
b = ValueWhen(A == 1,Ref(L,-t2), 1);
b = IIf(b < LLV(L, t2), b, LLV(L, t2));
a1= IIf(Ref(H, -t2) == HHV(H, t2*2+1), 1, 0);
b1 = ValueWhen(a1 == 1, Ref(H, -t2), 1);
b1 = IIf(b1 > HHV(H, t2), b1, HHV(H, t2));
ts = (b+b1)/2;
FloatTS1 = IIf(ts>Ref(ts,-1), 1, IIf(ts<Ref(ts,-1),-1, Ref(A, -1)));

// Плавающие уровни
/* на свой страх и риск используб их как уровень S/L, чтобы показать, что это тоже можно. Выход будет точно по цене уровня стопа!!!*/
A = IIf(Ref(L, -t3) == LLV(L, t3 * 2+1), 1, 0);
b = ValueWhen( A == 1, Ref(L, -t3), 1);
bb = ValueWhen(A == 1, Ref(L, -t3), 1);
bbb = Min(LLV(L, t3), bb);
A1 = IIf(Ref(H, -t3) == LLV(H, t3 * 2+1), 1, 0);
b1 = ValueWhen(a1 == 1, Ref(H, -t3), 1);
bb1 = ValueWhen(a1 == 1, Ref(H, -t3), 1);
bbb1 = Max(HHV(H,t3), bb1);
Coverstop = Ref(IIf(b1>bbb1, b1, bbb1), -1) + pu/1000; // стоп уровень выхода из Short
Sellstop = Ref(IIf(b < bbb, b, bbb), -1) - pd/1000; // стоп уровень выхода из Long
SellPrice = Sellstop; // Цена выхода из Long
CoverPrice = Coverstop; // Цена выхода из Short

// Вход и выход long
Buy = FloatTS1 + FloatTS2 == 2 AND Ref(FloatTS2 + FloatTS1, -1) < 2; // Условие входа
Sell = L < Sellstop; // Условие выхода

// Вход и выход Short
Short = FloatTS2 +FloatTS1 == -2 AND Ref(FloatTS2 + FloatTS1, -1) > - 2; // Условие входа
Cover = H > Coverstop; // Условие выхода



а вот это система или тоже индикатор я как понимаю что система
 

antuan

New member
вставил систему туда где написано правила системы
ругается
Line 111, Column 26:
///////////// Рисуем всякое ///////////////



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

Plot(HLine,"high_line",5);
-------------------------^

Variable 'hline' used without having been initialized.
что бы это зачило
 

mehanizator1

New member
оптимизируешь систему ты до того как ее в автомат забьешь. в автомат надо ставить уже готовую систему с уже конкретными числовыми параметрами.
 

antuan

New member
удалил теперь пишет
Line 112, Column 39:
///////////// Рисуем всякое ///////////////



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

PlotShapes(IIf(Buy,shapeDownArrow,0),5,0,Graph1,-15);
----------------------------------------------------^

Variable 'graph1' used without having been initialized.
 

mehanizator1

New member
Graph1 и Graph2 замени на Graph0 :)

там где Рисуем всякое должно получиться вот это:

Plot(C,"price",1,128);
PlotShapes(IIf(Buy,shapeDownArrow,0),5,0,Graph0,-15);
PlotShapes(IIf(Sell,shapeUpArrow,0),4,0,Graph0,-15);
PlotShapes(IIf(Cover,shapeHollowDownArrow,0),5,0,Graph0,-15);
PlotShapes(IIf(Short,shapeHollowUpArrow,0),4,0,Graph0,-15);


здесь только цена рисуется и стрелочьки.
 

antuan

New member
ок рисует график и стрелы
чтоб лишнии стрелы убрать надо в конце написать
Buy=ExRem(Buy,Sell);
Sell=ExRem(Sell,Buy);
 

mehanizator1

New member
А если в шорты играешь то еще вот это надо:

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

В общем я сейчас убрал все лишнее из графиков посмотри на сайте код автомата. Там и стрелочьки правильно стоят, зеленые внизу красные вверху :)
 
Your email address will not be publicly visible. We will only use it to contact you to confirm your post.
Сверху