Ошибки в автотестере

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Petr Voytenko
1856
Petr Voytenko  
Здравствуйте, уважаемые форумчане!

Написал советник (МТ4) хочу разместить на маркете, но не принимает автотестер.

Выдает ошибку 131 (неправильные объёмы).

Хотя у меня в терминале все работает без ошибок.

Помогите, пожалуйста, разобраться.
Denis Sartakov
1926
Denis Sartakov  
Petr Voytenko:
Здравствуйте, уважаемые форумчане!

Написал советник (МТ4) хочу разместить на маркете, но не принимает автотестер.

Выдает ошибку 131 (неправильные объёмы).

Хотя у меня в терминале все работает без ошибок.

Помогите, пожалуйста, разобраться.

допустим у вас брокер1, позволяющий объем 0.01,

а в автотестере брокер2, у которого минимальный объем 0.1,

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

Dmitiry Ananiev
9328
Dmitiry Ananiev  

так же надо учесть балланс 1, 2, 5 10, 20, 50 долларов. Т.е проверка на минимальный лот и проверка на маржу на открытие такого объема. 

так же нужна проверка на максимальный лот. Типа если максимальный лот брокер позволяет 100, а вас рассчитывается как 105. 

Petr Voytenko
1856
Petr Voytenko  

   minlot=MarketInfo(Symbol(),MODE_MINLOT);

   maxlot=MarketInfo(Symbol(),MODE_MAXLOT);

   lot=NormalizeDouble(MMlot*AccountBalance()/100000,2);
   if (lot<minlot){lot=minlot;}
   if (lot>maxlot){lot=maxlot;}
   
   Ask_=Ask+distance*Point;
   Bid_=Bid-distance*Point;
   buytik = OrderSend(Symbol(),OP_BUYSTOP, lot,Ask_,slippage,NormalizeDouble(Ask_-stoploss_and_trail*Point,Digits),0,"",magicnumber,0,clrNONE);

   selltik= OrderSend(Symbol(),OP_SELLSTOP,lot,Bid_,slippage,NormalizeDouble(Bid_+stoploss_and_trail*Point,Digits),0,"",magicnumber,0,clrNONE);



Вот кусок кода, вроде предусмотрел такую ситуацию... Может что не увидел...

Vitaly Muzichenko
14108
Vitaly Muzichenko  
Petr Voytenko:

   minlot=MarketInfo(Symbol(),MODE_MINLOT);

   maxlot=MarketInfo(Symbol(),MODE_MAXLOT);

   lot=NormalizeDouble(MMlot*AccountBalance()/100000,2);
   if (lot<minlot){lot=minlot;}
   if (lot>maxlot){lot=maxlot;}
   
   Ask_=Ask+distance*Point;
   Bid_=Bid-distance*Point;
   buytik = OrderSend(Symbol(),OP_BUYSTOP, lot,Ask_,slippage,NormalizeDouble(Ask_-stoploss_and_trail*Point,Digits),0,"",magicnumber,0,clrNONE);

   selltik= OrderSend(Symbol(),OP_SELLSTOP,lot,Bid_,slippage,NormalizeDouble(Bid_+stoploss_and_trail*Point,Digits),0,"",magicnumber,0,clrNONE);



Вот кусок кода, вроде предусмотрел такую ситуацию... Может что не увидел...

 lot=NormalizeDouble(MMlot*AccountBalance()/100000,2);

100000 с потолка взято?

Aleksey Semenov
3792
Aleksey Semenov  
Vitaly Muzichenko:

 lot=NormalizeDouble(MMlot*AccountBalance()/100000,2);

100000 с потолка взято?

это манименеджмент - расчёт лота от баланса, когда-то давным давно тоже так делал ибо лень было делать по нормальному ))
Andrei Fandeev
36127
Andrei Fandeev  

Ну и я 5 копеек вставлю )))
Обязательно надо проверять и такое :

         if(MarketInfo(NULL,MODE_MARGINREQUIRED)*iLots<AccountFreeMargin())

тогда разрешаем открывать
П.С. Упс... перечитал сообщения , у Дмитрия уже упоминалось это. Но ладно, пусть будет тут готовая строка.
Vitaly Muzichenko
14108
Vitaly Muzichenko  
Aleksey Semenov:
это манименеджмент - расчёт лота от баланса, когда-то давным давно тоже так делал ибо лень было делать по нормальному ))

Это расчёт лота от бабы клавы.

Не нужно себя обманывать


Petr Voytenko
1856
Petr Voytenko  
Andrei Fandeev:

Ну и я 5 копеек вставлю )))
Обязательно надо проверять и такое :

         if(MarketInfo(NULL,MODE_MARGINREQUIRED)*iLots<AccountFreeMargin())

тогда разрешаем открывать
П.С. Упс... перечитал сообщения , у Дмитрия уже упоминалось это. Но ладно, пусть будет тут готовая строка.

Спасибо большое - буду пробовать с вашей строчкой!

Petr Voytenko
1856
Petr Voytenko  

Нет, к сожалению такая картина:


err

Andrei Fandeev
36127
Andrei Fandeev  
Petr Voytenko:

Нет, к сожалению такая картина:

Попробуйте вывести в Журнал объём лота в открываемом ордере. Посмотрите что там "насчитал" ваш код.
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий