Валидация эксперта mql4 - страница 3

 
Структура действует по принципу OnInit(), OnDeinit(),  и т.д, а у меня массивы прописаны и в структуре и в OnTick() по старинке и на всякий пожарный и по ходу сейчас методом тыка надо будет что-то предпринять по этому поводу, по ходу таким образом они могут мешать и сбивать друг друга. И по принципу мне иногда попадались в тестере какие-то непонятные явления, можно сказать что они стоят в OnInit(). у меня из структуры в OnTick() передается только одна функция которая унаследовала все и вот в нее можно попробовать разместить массивы и тогда не надо будет их прописывать в OnTick. Методом тыка все. А куда денешься?!
 
Елки все работает. Как до утки доходит.
 

Зачем столько текста писать ?

Давно известно если Тик(), Инит() или Старт() взяли команду, они её не отдадут пока не выполнят.

 
Перепутал немного, не структура а классы. Во елки. Мне можно у меня энцефалопатия и вот тут с памятью труба полная иногда. И интересное кино, чем больше пишу на клавишах, тем больше запоминаю. По ходу таким образом концетрирую внимание на чем-то?! А там кто знает, как это все происходит?!
 
И по ходу я сильно залез  сверх понимания, надо еще в малом все отточить до совершенства. 
 
Сплошной поток сознания. И ни одной мысли.
На каких плантациях, простите, сигаретки собираете?
 

Вероятнее всего в вашем советнике используется проверка маржи торговых ордеров а не отложенных. Поэтому нужно произвести расчет маржи по ЦЕНЕ и ОБЪЁМЕ открываемого отложенного ордера. И если маржи не хватает в тестер то обязательно об этом должно быть выдано сообщение, например такое как рекомендует МетаКвотс. Вот моя функция решения этой проблемы которая работает для подсчета маржи как отложенных ордеров так и торговых. Сразу уточню 5 пипсов для расчета добавил от себя, так сказать запас...

bool CheckMoneyForTrade(string symb, double lots,int type,double prize)
  {
int Plecho= AccountLeverage();
double ContraktSize=SymbolInfoDouble(Symbol(),SYMBOL_TRADE_CONTRACT_SIZE);
double freemargin= ((ContraktSize*(prize+(5*Point())))/Plecho)*lots;
if(AccountFreeMargin()<freemargin)
  {
      string oper=(type==OP_BUY)? "Buy":"Sell";
      Print("Not enough money for ", oper," ",lots, " ", symb, " Error code=",GetLastError());
      return(false);
     }
   return(true);
  }
Причина обращения: