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

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

Ermon

New member
Попробуй обратиться по адресу, но вначале почитай форум, не надо напрягать людей вопросами если на них уже отвечали раз 10. http://amisite.ru/phpBB2/index.php?sid=6d027acdac08005caa08c43c5056005d
Спасибо! Начну изучать форум по второму кругу, только теперь буду конспектировать, а то все в голове перемешалось!
 

Ermon

New member
Добрый День! Спешу высказать благодарность данному форуму и Меху за робота. Все работает велеколепно. С уважением!
 

Ermon

New member
Попробуй обратиться по адресу, но вначале почитай форум, не надо напрягать людей вопросами если на них уже отвечали раз 10. http://amisite.ru/phpBB2/index.php?sid=6d027acdac08005caa08c43c5056005d
Спасибо за ссылку! Много интересного! Буду вникать дальше!
 

Ermon

New member
Подскажите, пожалуйста!


////////// Правила системы ///////////////

SetBarsRequired(100000, 0);

Days=Optimize("days",15,1,100,1);
b[0]=0;

for(i = 1; i < BarCount; i++)
{
if(Open > Close)
{
b = b[i-1] - Volume;
}
else
{
b = b[i-1] + Volume;
}
}

Plot(b,"4e tam",4,1);

am = MA(b,Days);

Buy = Cover = Cross(b,am);
Sell = Short = Cross(am,b);

//PositionSize = -25;
////// Убираем лишние сигналы /////////////

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

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

Plot(C,"price",1,128);
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);


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

procedure savetrifile(stransid,sstr) {
f=fopen(FileName,"r");
found=0;
if (f) {
while (!feof(f)) {
s=fgets(f);
if (StrFind(s,stransid)>0) {
found=1;
}
}
fclose(f);
}
if (found==0) {
f=fopen(FileName,"a");
if (f) {
fputs(sstr+"\n",f);
fclose(f);
}
}
}

function makeandsave(sOper,sOperID,sprice) {


CCS="";
if (Client!="") { CCS=" CLIENT_CODE="+Client+";"; }
transid=StrFormat("TRANS_ID=%g%g%g%g;",TickerID,sOperID,LastValue(Ref(DayOfYear(),-1)),LastValue(Ref(TimeNum(),-1)));
str=StrFormat(transid+"PRICE=%1."+Point+"f;QUANTITY=%g;OPERATION="+sOper+";CLASSCODE="+Classcode+"; ACTION=NEW_ORDER; TYPE=L; SECCODE="+Seccode+"; ACCOUNT="+Account+";"+CCS,sprice,Lots);
savetrifile(transid,str);
}

if ((Now(3)==LastValue(DateNum()))AND(BarCount>1)AND(Name()==Ticker)AND(TimeFrame==Interval()/60)AND((Buy[BarCount-1]==1)OR(Sell[BarCount-1]==1)OR(Short[BarCount-1]==1)OR(Cover[BarCount-1]==1))) {
ifbuy=IIf(Buy[BarCount-1]==1,1,0);
ifsell=IIf(Sell[BarCount-1]==1,1,0);
ifshort=IIf(Short[BarCount-1]==1,1,0);
ifcover=IIf(Cover[BarCount-1]==1,1,0);
if (ifbuy) {
price=(1+Otstup/100)*Close[BarCount-1];
makeandsave("B",1,price);
}
if (ifsell) {
price=(1-Otstup/100)*Close[BarCount-1];
makeandsave("S",2,price);
}
if (ifshort) {
price=(1-Otstup/100)*Close[BarCount-1];
makeandsave("S",3,price);
}
if (ifcover) {
price=(1+Otstup/100)*Close[BarCount-1];
makeandsave("B",4,price);
}
}

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

Заяыку выстовляет и сразу вырубается график индикатора. Ругается на этом месте:
if (Client!="") { CCS=" CLIENT_CODE="+Client+";"; }
Спасибо!
 

000

New member
Вот это место
Код:
for(i = 1; i < BarCount; i++) 
{ 
if(Open > Close) 
{ 
b = b[i-1] - Volume; 
} 
else 
{ 
b = b[i-1] + Volume; 
} 
}
Не может работать в принципе.
Надо или так
Код:
for(i = 1; i < BarCount; i++) 
{ 
if(Open > Close) 
{ 
b = b[i-1] - Volume[i]; 
} 
else 
{ 
b = b[i-1] + Volume[i]; 
} 
}
или так
Код:
b = Cum(IIf(O>C, -V, V));
Или так
Код:
b = OBV();
 

Commenced

New member
Господа любители ами, не встречал здесь этого, но думаю будет полезно знать, очень редко робот амишный (за робота Меха ничего сказать не могу, у него другие недостатки) на основе сканера пропускает отправку сигналов, сперва относился к сообщениям об этом скептически, потом у меня не прошла покупка, а вот следующая продажа прошла и оказался в шорте в 2 раза большим объемом плюс потеря от пропуска лонга, короче хреновый недостаток. Сделал так вывел на график цифровые значения уровней по которым нужно входить или выходить, в начале часа смотрю чего там система насчитала и ставлю стоп-заявку, в начале следующего меняю на новую и т.д. Писать нового робота пока не вижу смысла, сигналы грубо 1 в день и тайм 1 час, а 1 раз в час так и так нужно заглядывать в квик.
 

Ermon

New member
Господа любители ами, не встречал здесь этого, но думаю будет полезно знать, очень редко робот амишный (за робота Меха ничего сказать не могу, у него другие недостатки) на основе сканера пропускает отправку сигналов, сперва относился к сообщениям об этом скептически, потом у меня не прошла покупка, а вот следующая продажа прошла и оказался в шорте в 2 раза большим объемом плюс потеря от пропуска лонга, короче хреновый недостаток. Сделал так вывел на график цифровые значения уровней по которым нужно входить или выходить, в начале часа смотрю чего там система насчитала и ставлю стоп-заявку, в начале следующего меняю на новую и т.д. Писать нового робота пока не вижу смысла, сигналы грубо 1 в день и тайм 1 час, а 1 раз в час так и так нужно заглядывать в квик.
А как быть с 5-ти минутным таймфремом? У меня то-же самое. Цена в сканере прыгает и робот все время совершает сделки .
 

Commenced

New member
А как быть с 5-ти минутным таймфремом? У меня то-же самое. Цена в сканере прыгает и робот все время совершает сделки .
Ты скорее всего пользуешся С, а не H L, и заходиш по условию на текущем баре, а не на закрытом. Наличие сигнала и не отправка его это не тоже самое что плавающие сигналы.
 

Ermon

New member
Ты скорее всего пользуешся С, а не H L, и заходиш по условию на текущем баре, а не на закрытом. Наличие сигнала и не отправка его это не тоже самое что плавающие сигналы.
Есть такое дело. Я пытался переписать для робота Меха, ну не получается проставить стоп и профит в 500 пунктов и все... Сделал, что бы система переворачивалась, но для меня это не подходит. Помогите, плиз!!!


Buy = Cross(Close, SAR( 0.02, 0.2));
Short = Cross(SAR( 0.02, 0.2), C);
Sell = Cover = 0;
ApplyStop(0, 2, 500*TickSize, 1);
ApplyStop(1, 2, 500*TickSize, 1);
Equity( 1 );
 

Commenced

New member
Есть такое дело. Я пытался переписать для робота Меха, ну не получается проставить стоп и профит в 500 пунктов и все... Сделал, что бы система переворачивалась, но для меня это не подходит. Помогите, плиз!!!


Buy = Cross(Close, SAR( 0.02, 0.2));
Short = Cross(SAR( 0.02, 0.2), C);
Sell = Cover = 0;
ApplyStop(0, 2, 500*TickSize, 1);
ApplyStop(1, 2, 500*TickSize, 1);
Equity( 1 );
Посмотри здесь, гдето обсуждалось уже, условие правельнее Buy = Ref(условие,-1); SAR( 0.02, 0.2)-не имеет стабильного состояния на текущем баре.
http://amisite.ru/phpBB2/viewtopic.php?t=30&postdays=0&postorder=asc&start=30
 

Ermon

New member
Вставил код в робота Меха. На истории в тестере две сделки, а на графике робота появляются еще. На пример: в тестере последняя сделка Open Long, а на графике после бай нарисовался ковер и еще три сделки шорт. В чем дело, не подскажите?

Код:

ATRL = EMA( ATR(1), 22);
ATRS = EMA( ATR(1), 4);
ATR0 = Max( ATRL, ATRS);
coef = Optimize("ATR stop coef", 3, 1.5, 4, 0.5);
per = Optimize("stop lookback", 22, 14, 50, 2);
BuyPrice = CoverPrice = SellPrice = ShortPrice = Ref(Open,1);
Buy = HHV(Close, per) - coef * ATR0;
Short = LLV(Close, per) + coef * ATR0;

Sell = Cross( Buy, Close);
Cover = Cross ( Close, Short);
[/code]
 

Commenced

New member
Вставил код в робота Меха. На истории в тестере две сделки, а на графике робота появляются еще. На пример: в тестере последняя сделка Open Long, а на графике после бай нарисовался ковер и еще три сделки шорт. В чем дело, не подскажите?

Код:

ATRL = EMA( ATR(1), 22);
ATRS = EMA( ATR(1), 4);
ATR0 = Max( ATRL, ATRS);
coef = Optimize("ATR stop coef", 3, 1.5, 4, 0.5);
per = Optimize("stop lookback", 22, 14, 50, 2);
BuyPrice = CoverPrice = SellPrice = ShortPrice = Ref(Open,1);
Buy = HHV(Close, per) - coef * ATR0;
Short = LLV(Close, per) + coef * ATR0;

Sell = Cross( Buy, Close);
Cover = Cross ( Close, Short);
[/code]
В системе разбираться не буду, по сигналам могу сказать следующее, в тестере встроен фильтр отбрасывающий левые сигналы, а в коде его нет. В конце кода добавь Equity(1); И еще сигнал задается к исполнению по
Код:
условию
, т.е. Buy = условие, а не выражением.
 

Ermon

New member
В системе разбираться не буду, по сигналам могу сказать следующее, в тестере встроен фильтр отбрасывающий левые сигналы, а в коде его нет. В конце кода добавь Equity(1); И еще сигнал задается к исполнению по
Код:
условию
, т.е. Buy = условие, а не выражением.
Спасибо за помощь. Разобрался.
 

KULER

New member
В системе разбираться не буду, по сигналам могу сказать следующее, в тестере встроен фильтр отбрасывающий левые сигналы, а в коде его нет. В конце кода добавь Equity(1); И еще сигнал задается к исполнению по
Код:
условию
, т.е. Buy = условие, а не выражением.
Если в конце кода ставить Equity( 1 ); ,то Buy=ExRem(Buy,Sell);
Sell=ExRem(Sell,Buy);
Short=ExRem(Short,Cover);
Cover=ExRem(Cover,Short);
можно не писать?
 

stee1

New member
Здравствуйте...подскажите пожалуйста, что нужно дописать в код меха, чтобы квик не ругался при импорте на
1) "не указан идентификатор транзакции"
2) "не указан тип транзакции"
 

Ermon

New member
Здравствуйте...подскажите пожалуйста, что нужно дописать в код меха, чтобы квик не ругался при импорте на
1) "не указан идентификатор транзакции"
2) "не указан тип транзакции"
Я сам еще учусь. Код Меха работает, по крайней мере у меня. Нужно только добавить sprice=sprice-(sprice % 5); после function makeandsave(sOper,sOperID,sprice) { если работаешь с фьючем. Ты выложи код и знающие люди тебе подскажут и помогут...
 
Your email address will not be publicly visible. We will only use it to contact you to confirm your post.
Сверху