Проблема с валидацией советника на маркете - страница 7

 
Sergey Gritsay:

Всем привет! Кто смог обойти проверку с балансом в 1$, у меня в коде стоит проверка если не достаточно средств торговые операции не совершать. Соответственно получаю такой лог валидации

test on EURUSD,H1
there are no trading operations
test on NZDUSD,H1
there are no trading operations
test on GBPUSDcheck,M30
there are no trading operations
test on XAUUSDcheck,Daily
there are no trading operations


 

А если на этапе инициализации проверить баланс, проверить мин. необходимую маржу для мин. лота и, если не хватает - просто не запускать эксперт?
 
Alexey Kozitsyn:
А если на этапе инициализации проверить баланс, проверить мин. необходимую маржу для мин. лота и, если не хватает - просто не запускать эксперт?
пробовал не помогает
 
Sergey Gritsay:
пробовал не помогает

Гм. Интересно, с учетом того, что, по сути, выход на этапе инициализации означает некорректность входных параметров, к которым, в данном случае, можно отнести и баланс...

Ошибку эксперт выдает в этом случае? Или молча "отчаливает"? 

 
Alexey Kozitsyn:

Гм. Интересно, с учетом того, что, по сути, выход на этапе инициализации означает некорректность входных параметров, к которым, в данном случае, можно отнести и баланс...

Ошибку эксперт выдает в этом случае? Или молча "отчаливает"? 

добавляю такой код

 

   if(IsTesting())
     {
     if(AccountFreeMarginCheck(_Symbol,OP_BUY,SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN))<=0.0)
     {
      return(INIT_PARAMETERS_INCORRECT);
     }

 получаю такой ответ

test on EURUSD,H1
there are no trading operations
test on NZDUSD,H1
2016.02.01 00:00  exp_martin_new NZDUSD,H1: initialization failed (32767)
there are no trading operations


 валидация опять не пройдена.

 
Sergey Gritsay:

добавляю такой код

MT5? Видимо, МТ4. А почему только в тестере проверка? 
 

Вообще, есть статья на эту тему. А там код:

bool CheckMoneyForTrade(string symb, double lots,int type)
  {
   double free_margin=AccountFreeMarginCheck(symb,type,lots);
   //-- если денег не хватает
   if(free_margin<0)
     {
      string oper=(type==OP_BUY)? "Buy":"Sell";
      Print("Not enough money for ", oper," ",lots, " ", symb, " Error code=",GetLastError());
      return(false);
     }
   //-- проверка прошла успешно
   return(true);
  }

Так что, если кому-то что-то не нравится - ссылку на эту статью.

 
Alexey Kozitsyn:
MT5? Видимо, МТ4. А почему только в тестере проверка? 
в смысле в тестере? При торговле у меня проверка организована в функции открытия ордеров
 
Sergey Gritsay:
в смысле в тестере? При торговле у меня проверка организована в функции открытия ордеров
if(IsTesting())
Не совсем понятно тогда зачем это условие?
 
Alexey Kozitsyn:

Вообще, есть статья на эту тему. А там код:

bool CheckMoneyForTrade(string symb, double lots,int type)
  {
   double free_margin=AccountFreeMarginCheck(symb,type,lots);
   //-- если денег не хватает
   if(free_margin<0)
     {
      string oper=(type==OP_BUY)? "Buy":"Sell";
      Print("Not enough money for ", oper," ",lots, " ", symb, " Error code=",GetLastError());
      return(false);
     }
   //-- проверка прошла успешно
   return(true);
  }

Так что, если кому-то что-то не нравится - ссылку на эту статью.

если пользоваться данной функцией нарываешься на ошибку валидации there are no trading operations и как это правильно обойти не понятно
 
Sergey Gritsay:
если пользоваться данной функцией нарываешься на ошибку валидации there are no trading operations и как это правильно обойти не понятно
Задайте вопрос модератору маркета...