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

 
Vladimir Karputov:

Пример подсчета четырех типов отложенных ордеров в коде Min Max for N Bars Martingal

Vladimir Karputov:

Пример подсчета четырех типов отложенных ордеров в коде Min Max for N Bars Martingale 2

Vladimir Karputov:

Пример подсчета четырех типов отложенных ордеров в коде Min Max for N Bars Martingale 2




Владимир, почему-то не подсчитывает байлимитные ордера????

int count_buy_limits = 0;
for(int i=OrdersTotal()-1; i>=0; i--)
        {
            if(o_orderInfo.OrderType()==ORDER_TYPE_BUY_LIMIT)
               {
                  count_buy_limits++;
               }    
        }

 
Fergert Фергерт:


Владимир, почему-то не подсчитывает байлимитные ордера????

int count_buy_limits = 0;
for(int i=OrdersTotal()-1; i>=0; i--)
        {
            if(o_orderInfo.OrderType()==ORDER_TYPE_BUY_LIMIT)
               {
                  count_buy_limits++;
               }    
        }

1. Вставьте код правильно
2. Покажите весь код
4. Скриншот окна с позициями и отложенными ордерами 
 
Vladimir Karputov:
1. Вставьте код правильно
2. Покажите весь код
4. Скриншот окна с позициями и отложенными ордерами 

Ошибок компиляции нет..

ВОТ КОД:

#include <Trade\Trade.mqh>
#include <Trade\OrderInfo.mqh>
#include <Trade\SymbolInfo.mqh>

CTrade      o_trade;
COrderInfo  o_orderInfo;
CSymbolInfo o_symbolInfo;

MqlTradeRequest   order_req={0}, buylimit_req1={0}, buylimit_req2={0}, sellstop_req3={0};
MqlTradeResult    order_res={0}, buylimit_res1={0}, buylimit_res2={0}, sellstop_res3={0};

//double   lot_r    = GlobalVariableGet("glot"); // Глобальная переменная
//double   lot_r    = 0.33;
double   lot_r    = NormalizeDouble(AccountInfoDouble(ACCOUNT_BALANCE)/15000,2);

int      tp_r     = 125;

double   lot_bl1  = 2.5;
double   lot_bl2  = 3;

double   lot_v    = NormalizeDouble(lot_r + (lot_r * lot_bl1) + (lot_r * lot_bl2), 2);

int      set_bl1  = 500;   
int      set_bl2  = 1000;
int      set_v    = 1100;

int      tp_bl1   = 70;
int      tp_bl2   = 480;

int OnInit()
  {
      order_req.action           = TRADE_ACTION_DEAL;
      order_req.symbol           = _Symbol;
      order_req.price            = SymbolInfoDouble(order_req.symbol, SYMBOL_ASK);
      order_req.volume           = lot_r;
      order_req.tp               = order_req.price+tp_r*_Point;
      order_req.type             = ORDER_TYPE_BUY;
      order_req.type_filling     = ORDER_FILLING_FOK;
      
      buylimit_req1.action       = TRADE_ACTION_PENDING;
      buylimit_req1.symbol       = _Symbol;
      buylimit_req1.volume       = NormalizeDouble(lot_r*lot_bl1, 2);
      buylimit_req1.price        = SymbolInfoDouble(buylimit_req1.symbol, SYMBOL_ASK)-set_bl1*_Point;
      buylimit_req1.tp           = order_req.price-tp_bl1*_Point;
      buylimit_req1.type         = ORDER_TYPE_BUY_LIMIT;
      buylimit_req1.type_filling = ORDER_FILLING_RETURN;
      buylimit_req1.expiration   = ORDER_TIME_GTC;
      buylimit_req1.magic        = 01;
      
      buylimit_req2.action       = TRADE_ACTION_PENDING;
      buylimit_req2.symbol       = _Symbol;
      buylimit_req2.volume       = NormalizeDouble(lot_r*lot_bl2, 2);
      buylimit_req2.price        = SymbolInfoDouble(buylimit_req2.symbol, SYMBOL_ASK)-set_bl2*_Point;
      buylimit_req2.tp           = order_req.price-tp_bl2*_Point;
      buylimit_req2.type         = ORDER_TYPE_BUY_LIMIT;
      buylimit_req2.type_filling = ORDER_FILLING_RETURN;
      buylimit_req2.expiration   = ORDER_TIME_GTC;
      buylimit_req1.magic        = 02;
      
      sellstop_req3.action       = TRADE_ACTION_PENDING;
      sellstop_req3.symbol       = _Symbol;
      sellstop_req3.volume       = NormalizeDouble(lot_v, 2);
      sellstop_req3.price        = SymbolInfoDouble(sellstop_req3.symbol, SYMBOL_ASK)-set_v*_Point;
      sellstop_req3.sl           = buylimit_req2.price + 10*_Point;
      sellstop_req3.type         = ORDER_TYPE_SELL_STOP;
      sellstop_req3.type_filling = ORDER_FILLING_RETURN;
      sellstop_req3.expiration   = ORDER_TIME_GTC;
      
   
   if(OrdersTotal()==0 && PositionsTotal() == 0)
      {
         OrderSend(order_req, order_res);
         OrderSend(buylimit_req1, buylimit_res1);
         OrderSend(buylimit_req2, buylimit_res2);
         OrderSend(sellstop_req3, sellstop_res3);
      }
   return(INIT_SUCCEEDED);
  }
void OnDeinit(const int reason)
  {

  
  }
 
 void OnTick()
  {
       int count_buy_limits = 0;
       for(int i=OrdersTotal()-1; i>=0; i--)
        {
          if(o_orderInfo.OrderType()==ORDER_TYPE_BUY_LIMIT)
               {
                  count_buy_limits++;
               }
        }   
      if(count_buy_limits < 2 || PositionsTotal() == 0)
         {
            for(int r=PositionsTotal()-1; r>=0; r--)
               {
                  ulong ticket=PositionGetTicket(r);
                  o_trade.PositionClose(ticket);   
               }  
      
            for(int o=OrdersTotal()-1; o>=0; o--)
               {
                  ulong ticket1=OrderGetTicket(o);
                  o_trade.OrderDelete(ticket1);
               }
      ExpertRemove();
         }
  }
//+------------------------------------------------------------------+
Файлы:
001.jpg  173 kb
 
Fergert Фергерт:

Ошибок компиляции нет..

ВОТ КОД:

Внимательно просмотрите мой пример и Ваш пример. Нельзя бездумно копировать. Нужно немножко думать. Ищите ошибку в своём коде. 

Правильно вставляйте код (при помощи кнопки  Code - я на первый раз исправил Ваша сообщение)

 
Vladimir Karputov:

Внимательно просмотрите мой пример и Ваш пример. Нельзя бездумно копировать. Нужно немножко думать. Ищите ошибку в своём коде. 

Правильно вставляйте код (при помощи кнопки   - я на первый раз исправил Ваша сообщение)

Ага, все понял...
 
Fergert Фергерт:
Ага, все понял...

Да, Вы забыли, что если обходить цикл, то на каждой итерации нужно БРАТЬ:

      if(m_order.SelectByIndex(i))     // selects the pending order by index for further access to its properties

Справка:

SelectByIndex

Выбирает ордер для дальнейшего доступа по указанному индексу

Документация по MQL5: Стандартная библиотека / Торговые классы / COrderInfo / SelectByIndex
Документация по MQL5: Стандартная библиотека / Торговые классы / COrderInfo / SelectByIndex
  • www.mql5.com
SelectByIndex(int) - COrderInfo - Торговые классы - Стандартная библиотека - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Vladimir Karputov:

Да, Вы забыли, что если обходить цикл, то на каждой итерации нужно БРАТЬ:

Справка:

SelectByIndex

Выбирает ордер для дальнейшего доступа по указанному индексу

Дааа. Мой косяк..... СПАСИБО ВЛАДИМИР ОГРОМНОЕ!!!!)))) Удачи тебе......
 
Доброго времени суток всем форумчанам. Никак не могу разобраться со скользящими. А точнее,как взять показания двух скользящих в mql5 ? Прочитал справку, но пока не могу разобраться. Хочу взять показания быстрой MA на 10 и 15 барах. И так же медленную MA на 10 и 15 барах, но чето уже голова не соображает,совсем запутался. За основу брал стандартный код и справки. Подскажите кто занет,как реализовать данный код. Всем заранее спасибо.
 

  День добрый. 

При открытых сделках миграция на "виртуальный хостинг" не происходит? 

Или другая причина?


Сделки закрыл, не мигрирует все равно.

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

Виртуальный хостинг для MetaTrader 5
Виртуальный хостинг для MetaTrader 5
  • www.mql5.com
Самый быстрый виртуальный выделенный сервер (VPS) для трейдинга на форексе от производителей терминала MetaTrader 4/5
 
Aleksandr Prishenko:

  День добрый. 

При открытых сделках миграция на "виртуальный хостинг" не происходит? 

Или другая причина?


Сделки закрыл, не мигрирует все равно.

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

Проблема в советнике. Кстати, правилами на виртуальном хостинге dll запрещены.

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