134 Ошибка OrderSend () - Как от нее избавиться?

 

Я пытаюсь открыть сделку, используя определенный лот, рассчитанный по моей формуле.

Когда я пытался купить, он говорит, что я не могу из-за ошибки 134 = Недостаточно денег.

Пожалуйста, дайте мне знать, как я могу рассчитать деньги, необходимые для покупки много. Если этот предмет можно купить за те деньги, которые у меня есть.

Это на MQL4. Пожалуйста, примите это к сведению.

Документация по MQL5: Константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки компиляции
Документация по MQL5: Константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки компиляции
  • www.mql5.com
Импортируемая функция не может иметь такого параметра (нельзя передавать указатель, класс или структуру, содержащую динамический массив, указатель, класс и т.д.) Недопустимый возвращаемый тип. Например, такая ошибка будет...
 
jaffer wilson:

Я пытаюсь открыть сделку, используя определенный лот, рассчитанный по моей формуле.
Когда я пытался купить, он говорит, что я не могу из-за ошибки 134 = Недостаточно денег.
Пожалуйста, дайте мне знать, как я могу рассчитать деньги, необходимые для покупки много. Если этот предмет можно купить за те деньги, которые у меня есть.

Можно перед открытием ордера рассчитать максимальный лот
и если значение по собственной формуле превышает максимальный лот, то присвоить не своё значение а возможно допустимый лот.

 
FXwin :

Можно перед открытием ордера рассчитать максимальный лот
и если значение по собственной формуле превышает максимальный лот, то присвоить не своё значение а возможно допустимый лот.

Но как это сделать?

 
jaffer wilson:

Но как это сделать?

Используйте готовые проверки, которые тут: https://www.mql5.com/en/articles/2555

 
jaffer wilson:

Но как это сделать?

Вот расчёт максимального лота

//+------------------------------------------------------------------+
//| Расчет лота по риску в процентах                                 |
//+------------------------------------------------------------------+
double LotMax(double PercentRisk=100){
   double Free   = AccountFreeMargin(),
          OneLT  = MarketInfo(Symbol(),MODE_MARGINREQUIRED),
          MinLT  = MarketInfo(Symbol(),MODE_MINLOT),
          MaxLT  = MarketInfo(Symbol(),MODE_MAXLOT),
          LTstep = MarketInfo(Symbol(),MODE_LOTSTEP),
          MaxLots=0.0;

       MaxLots = MathFloor(Free*PercentRisk/100/OneLT/LTstep)*LTstep;
   if (MaxLots>MaxLT) MaxLots=MaxLT;
   if (MaxLots<=0.0 || MaxLots<MinLT || (MaxLots*OneLT)>Free) MaxLots=0.0;
return(NormalizeDouble(MaxLots,2));}
 
Спасибо всем за помощь.