Какой реальный процент ГО доступен для лимиток (Si, RTS)?

 
Добрый день, уважаемые форумчане!

Подскажите из реального опыта какой максимальный процент свободных денег доступен для сценария, чтобы не получать сообщение о нехватке средств:

1. Свободно X денег. Без позиции.
2. Купил N контрактов
3. Перевернулся (2*N) контрактов
4. В позиции на N контрактов

Торговля лимитным ордерами. Si, RTS. Брокер Открытие. Если есть пример кода проверки достаточности средств - буду очень признателен, было бы полезно многим.
 
ProfitTraderRU:
Добрый день, уважаемые форумчане!

Подскажите из реального опыта какой максимальный процент свободных денег доступен для сценария, чтобы не получать сообщение о нехватке средств:

1. Свободно X денег. Без позиции.
2. Купил N контрактов
3. Перевернулся (2*N) контрактов
4. В позиции на N контрактов

Торговля лимитным ордерами. Si, RTS. Брокер Открытие. Если есть пример кода проверки достаточности средств - буду очень признателен, было бы полезно многим.

#property script_show_inputs

input ENUM_ORDER_TYPE typ = ORDER_TYPE_BUY_LIMIT;
input double volum = 1.0;
input double price = 0.0; // price (если=0.0 то по цене Ask)
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   MqlTick tick;
   SymbolInfoTick(_Symbol,tick);
   double iprice=price;
   if(price==0.0) iprice=tick.ask;
   bool res;
   double margin=0.0;
   res=OrderCalcMargin(typ,_Symbol,volum,iprice,margin);
  
   MqlTradeRequest request={0};
   MqlTradeCheckResult result={0};

   request.action=TRADE_ACTION_PENDING;
   request.symbol=_Symbol;
   request.volume=volum;
   request.price=iprice;
   request.type=typ;
   request.type_filling=ORDER_FILLING_RETURN;
   request.type_time=ORDER_TIME_DAY;
  
   ResetLastError();
  
   res=OrderCheck(request,result);
  
   Comment(
   "\n Размер маржи, необходимой для указанного типа ордера  = ",margin,
   "\n Размер маржи (средств) необходимый для требуемой торговой операции = ",result.margin,
   "\n Размер свободных собственных средств, которые останутся после выполнения требуемой торговой операции = ",result.margin_free,
   "\n res=",res,
   "\n retcod=",result.retcode,
   "\n retcod comment=",result.comment,
   "\n error=",GetLastError(),
   "");
  
  }
//+------------------------------------------------------------------+


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

Правда для рыночных ордеров ORDER_TYPE_BUY и ORDER_TYPE_SELL, неправильно вычисляется, или у брокера неправильно настроено.


 
Sergey Chalyshev:

#property script_show_inputs

input ENUM_ORDER_TYPE typ = ORDER_TYPE_BUY_LIMIT;
input double volum = 1.0;
input double price = 0.0; // price (если=0.0 то по цене Ask)
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   MqlTick tick;
   SymbolInfoTick(_Symbol,tick);
   double iprice=price;
   if(price==0.0) iprice=tick.ask;
   bool res;
   double margin=0.0;
   res=OrderCalcMargin(typ,_Symbol,volum,iprice,margin);
  
   MqlTradeRequest request={0};
   MqlTradeCheckResult result={0};

   request.action=TRADE_ACTION_PENDING;
   request.symbol=_Symbol;
   request.volume=volum;
   request.price=iprice;
   request.type=typ;
   request.type_filling=ORDER_FILLING_RETURN;
   request.type_time=ORDER_TIME_DAY;
  
   ResetLastError();
  
   res=OrderCheck(request,result);
  
   Comment(
   "\n Размер маржи, необходимой для указанного типа ордера  = ",margin,
   "\n Размер маржи (средств) необходимый для требуемой торговой операции = ",result.margin,
   "\n Размер свободных собственных средств, которые останутся после выполнения требуемой торговой операции = ",result.margin_free,
   "\n res=",res,
   "\n retcod=",result.retcode,
   "\n retcod comment=",result.comment,
   "\n error=",GetLastError(),
   "");
  
  }
//+------------------------------------------------------------------+


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

Правда для рыночных ордеров ORDER_TYPE_BUY и ORDER_TYPE_SELL, неправильно вычисляется, или у брокера неправильно настроено.


Благодарю Вас, Сергей!
 
ProfitTraderRU:
Добрый день, уважаемые форумчане!

Подскажите из реального опыта какой максимальный процент свободных денег доступен для сценария, чтобы не получать сообщение о нехватке средств:

1. Свободно X денег. Без позиции.
2. Купил N контрактов
3. Перевернулся (2*N) контрактов
4. В позиции на N контрактов

Торговля лимитным ордерами. Si, RTS. Брокер Открытие. Если есть пример кода проверки достаточности средств - буду очень признателен, было бы полезно многим.

https://www.mql5.com/ru/forum/94396/page4#comment_2783728

Money Management и отложенные ордера
Money Management и отложенные ордера
  • www.mql5.com
При установке отложенного ордера, проверяются свободные средства...
 
ProfitTraderRU:
Добрый день, уважаемые форумчане!

Подскажите из реального опыта какой максимальный процент свободных денег доступен для сценария, чтобы не получать сообщение о нехватке средств:

1. Свободно X денег. Без позиции.
2. Купил N контрактов
3. Перевернулся (2*N) контрактов
4. В позиции на N контрактов

Торговля лимитным ордерами. Si, RTS. Брокер Открытие. Если есть пример кода проверки достаточности средств - буду очень признателен, было бы полезно многим.

на mql4:

...
   if (AccountFreeMarginCheck(Symbol(), OP_BUY, bl) >= 0) {
      if (CountBuyTrades() == 0) b = Ask;
      if (b >= Ask) {
         RefreshRates();
         OrderSend(Symbol(), OP_BUY, bl, Ask, In, 0, 0, "Martin ("+In+")", In, 0, Blue);
         b = FindLastBuyPrice() - In * Point;
      }
   }
...


 

 
Aleksey Altukhov:

на mql4:

...
   if (AccountFreeMarginCheck(Symbol(), OP_BUY, bl) >= 0) {
      if (CountBuyTrades() == 0) b = Ask;
      if (b >= Ask) {
         RefreshRates();
         OrderSend(Symbol(), OP_BUY, bl, Ask, In, 0, 0, "Martin ("+In+")", In, 0, Blue);
         b = FindLastBuyPrice() - In * Point;
      }
   }
...


 

Здесь нет MQL4, только MQL5
 
prostotrader:
Здесь нет MQL4, только MQL5
https://www.mql5.com/ru/search#!keyword=AccountFreeMarginCheck%20mql5
 
Aleksey Altukhov:
https://www.mql5.com/ru/search#!keyword=AccountFreeMarginCheck%20mql5

Здесь обсуждают только биржевую торговлю на МТ5

А для МТ4 сюда

https://www.mql5.com/ru/forum/mql4 

Причина обращения: