Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 907

Vladimir Karputov:

Пример: код OHLC Check. Если выставить параметр Risk отличный от нуля - это и будет процент риска (не забываем при этом параметр Lot ставить в ноль).


Добавлено: заменил ссылку - первая ссылка была ошибочная. Извините.

Немного не то спросил, как закрыть процент от позиции всей позиции в данном символе?

ISL:

Немного не то спросил, как закрыть процент от позиции всей позиции в данном символе?

PositionClosePartial

Закрывает часть позиции по указанному символу или с указанным тикетом

Vladimir Karputov:

PositionClosePartial

Закрывает часть позиции по указанному символу или с указанным тикетом

Спасибо!

Вечер добрый!

Советник совершает операции. Только необходимо, чтобы у меня уже имелась позиция, разбить все средства поровну на 5 символов.

В части

void OnTick()

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

Каким образом мне сразу быть в позиции?

Заранее спасибо.

 Всем привет!

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

ребят подскажите пожалуста как сделать автоматический выбор request.type_filling =      //  ORDER_FILLING_FOK ORDER_FILLING_IOC ORDER_FILLING_RETURN не соображу а постоянно менять не есть хорошо 
TYRBO:
ребят подскажите пожалуста как сделать автоматический выбор request.type_filling =      //  ORDER_FILLING_FOK ORDER_FILLING_IOC ORDER_FILLING_RETURN не соображу а постоянно менять не есть хорошо 

Вот здесь поиском в коде можете найти:

https://www.mql5.com/ru/code/16006

MT4Orders
MT4Orders
  • www.mql5.com
Данная библиотека позволяет работать с ордерами в MQL5 (MT5-hedge) точно так же, как в MQL4. Т.е. ордерная языковая система (ОЯС) становится идентичной MQL4. При этом сохраняется возможность параллельно использовать MQL5-ордерную систему. В частности, стандартная MQL5-библиотека будет продолжать полноценно работать. Выбор между ордерными...
TYRBO:
ребят подскажите пожалуста как сделать автоматический выбор request.type_filling =      //  ORDER_FILLING_FOK ORDER_FILLING_IOC ORDER_FILLING_RETURN не соображу а постоянно менять не есть хорошо 

Подключите стандартный торговый класс CTrade
 
(он идёт в стандартной поставке вместе с терминалом)

//+------------------------------------------------------------------+
//|                                                          XXX.mq5 |
//+------------------------------------------------------------------+
#property version   "1.000"
//---
#include <Trade\Trade.mqh>  
CTrade         m_trade;                      // trading object
input ulong    m_magic        = 228364430;   // magic number
//---
ulong          m_slippage=10;                // slippage
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   m_trade.SetExpertMagicNumber(m_magic);
   m_trade.SetMarginMode();
   m_trade.SetTypeFillingBySymbol(Symbol());
   m_trade.SetDeviationInPoints(m_slippage);

и вызовете два метода:

SetTypeFillingBySymbol

Устанавливает тип ордера по исполнению согласно настройкам указанного символа

SetMarginMode

Устанавливает режим расчета маржи в соответствии с настройками текущего счета

ребят спасибо 
A.Vakutin:

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

// Оставанивливает работу всех советников, если сработал SL.

#include <MT4Orders.mqh>      // https://www.mql5.com/ru/code/16006
#include <fxsaber\Expert.mqh> // https://www.mql5.com/ru/code/19003

void OnTrade()
{
  static int PrevTotal = OrdersHistoryTotal();
  const int Total = OrdersHistoryTotal();
  
  for (int i = Total - 1; i >= PrevTotal; i--)
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && (OrderCloseReason() == DEAL_REASON_SL))
    {
      long Chart = ChartFirst();
  
      while (Chart != -1)
      {
        if ((Chart != ChartID()) && EXPERT::Is(Chart))
          EXPERT::Remove(Chart);
  
        Chart = ChartNext(Chart);
      }

      break;
    }        
    
  PrevTotal = Total;
}