Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 1281

 
Vladimir Karputov:

Ejemplo de recuento de cuatro tipos de órdenes pendientes en código Min Max para N Bares Martingal

Vladimir Karputov:

Ejemplo de recuento de cuatro tipos de órdenes pendientes en código Min Max para N Bares Martingale 2

Vladimir Karputov:

Un ejemplo de recuento de cuatro tipos de órdenes pendientes en el código Min Max for N Bars Martingale 2




Vladimir, por alguna razón no cuenta por órdenes de límite????

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, por alguna razón no cuenta por órdenes de límite????

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. Insertar el código correctamente
2. Mostrar todo el código.
4. Captura de pantalla de la ventana con posiciones y órdenes pendientes
 
Vladimir Karputov:
1. Insertar el código correctamente
2. Mostrar todo el código
4. Captura de pantalla de la ventana con posiciones y órdenes pendientes

No hay errores de compilación.

AQUÍ ESTÁ EL CÓDIGO:

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

No hay errores de compilación...

AQUÍ ESTÁ EL CÓDIGO:

Revisa cuidadosamente mi ejemplo y el tuyo. No se puede copiar sin sentido. Hay que pensar un poco. Busque un error en su código.

Inserte el código correctamente (usando el botón Código- corregí su mensaje la primera vez)

 
Vladimir Karputov:

Fíjate bien en mi ejemplo y en el tuyo. No se puede copiar sin sentido. Tienes que pensar un poco. Busque un error en su código.

Inserte el código correctamente (usando el botón - corregí su mensaje por primera vez)

Sí, lo tengo...
 
Fergert Фергерт:
Sí, lo tengo todo...

Sí, olvidaste que si pasas por alto el bucle, tienes que hacer un BREAK en cada iteración:

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

Referencia:

SelectByIndex

Selecciona una orden para su posterior acceso por el índice especificado

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

Sí, olvidaste que si pasas por alto el bucle, tienes que hacer un BREAK en cada iteración:

Referencia:

SelectByIndex

Selecciona una orden para su posterior acceso por el índice especificado

Sí. Mi mal..... MUCHAS GRACIAS VLADIMIR!!!!)))) Buena suerte ......
 
Buenas tardes a todos los miembros del foro. No sé cómo usar los deslizadores. He leído la ayuda, pero todavía no puedo entenderlo. He leído la ayuda, pero sigo sin entenderla. Quiero tomar lecturas de MA rápidas en 10 y 15 barras. Quiero conseguir un MA lento en 10 y 15 bares, pero mi cabeza se confunde. Estoy confundido. He utilizado el código estándar y la ayuda. Ayuda a quien sepa cómo implementar este código. Gracias de antemano.
 

Buenas tardes.

¿No hay migración al"alojamiento compartido" cuando las transacciones están abiertas?

¿O otra razón?


He cerrado las operaciones, de todas formas no está migrando.

El experto trabaja y carga en todas partes, ¿cuál podría ser el problema?

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

Buenas tardes.

¿No hay migración al"alojamiento compartido" cuando las transacciones están abiertas?

¿O otra razón?


He cerrado las operaciones, de todas formas no está migrando.

El Asesor Experto funciona y se carga en todas partes, ¿cuál podría ser el problema?

El problema está en el EA. Por cierto, las normas del alojamiento compartido prohíben las dlls.

Razón de la queja: