Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1281

 
Vladimir Karputov:

Esempio di conteggio di quattro tipi di ordini pendenti nel codice Min Max per N Bars Martingal

Vladimir Karputov:

Esempio di conteggio di quattro tipi di ordini pendenti nel codice Min Max per N Bars Martingale 2

Vladimir Karputov:

Un esempio di conteggio di quattro tipi di ordini pendenti nel codice Min Max per N Bars Martingale 2




Vladimir, per qualche motivo non conta per gli ordini ????

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 Фергерт:


Vladimir, per qualche motivo non conta per gli ordini ????

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. Inserisci il codice correttamente
2. Mostra tutto il codice.
4. Schermata della finestra con le posizioni e gli ordini pendenti
 
Vladimir Karputov:
1. Inserire correttamente il codice
2. Mostra tutto il codice
4. Schermata della finestra con le posizioni e gli ordini pendenti

Non ci sono errori di compilazione.

ECCO IL CODICE:

#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();
         }
  }
//+------------------------------------------------------------------+
File:
001.jpg  173 kb
 
Fergert Фергерт:

Non ci sono errori di compilazione...

ECCO IL CODICE:

Rivedi attentamente il mio e il tuo esempio. Non si può copiare senza pensare. Bisogna pensare un po'. Cercate un errore nel vostro codice.

Inserisci il codice correttamente (usando il pulsante Codice- ho corretto il tuo messaggio la prima volta)

 
Vladimir Karputov:

Guarda attentamente il mio e il tuo esempio. Non si può copiare senza pensare. Devi pensare un po'. Cercate un errore nel vostro codice.

Inserisci il codice correttamente (usando il pulsante - ho corretto il tuo messaggio per la prima volta)

Sì, capito...
 
Fergert Фергерт:
Sì, ho tutto...

Sì, hai dimenticato che se bypassi il ciclo, devi fare il BREAK ad ogni iterazione:

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

Riferimento:

SelectByIndex

Seleziona un ordine per un ulteriore accesso tramite l'indice specificato

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

Sì, hai dimenticato che se bypassi il ciclo, devi BREAK ad ogni iterazione:

Riferimento:

SelectByIndex

Seleziona un ordine per un ulteriore accesso tramite l'indice specificato

Sì. Il mio male..... GRAZIE MILLE VLADIMIR!!!!)))) Buona fortuna a voi......
 
Buon pomeriggio a tutti i membri del forum. Non riesco a capire come usare i cursori. Ho letto la guida, ma ancora non riesco a capirlo. Ho letto l'aiuto, ma ancora non lo capisco. Voglio prendere le letture della MA veloce su 10 e 15 barre. Voglio ottenere un MA lento su 10 e 15 barre, ma la mia testa si sta confondendo. Sono confuso, ho usato il codice standard e l'aiuto. Aiuta chi sa come implementare questo codice. Grazie in anticipo.
 

Buon pomeriggio.

Nessuna migrazione a"hosting condiviso" quando le transazioni sono aperte?

O un'altra ragione?


Ho chiuso gli scambi, non sta migrando comunque.

L'esperto funziona e carica ovunque, quale potrebbe essere il problema?

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

Buon pomeriggio.

Nessuna migrazione all'"hosting condiviso" quando le transazioni sono aperte?

O un'altra ragione?


Ho chiuso gli scambi, non sta migrando comunque.

Expert Advisor funziona e viene caricato ovunque, quale potrebbe essere il problema?

Il problema è nell'EA. A proposito, le regole dell'hosting condiviso vietano le DLL.

Motivazione: