Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 492

 
Ihor Herasko:

Véase la función SymbolSelect.

Gracias.

 
Por favor, indíqueme cómo desplazar el gráfico más a la izquierda mediante programación.
 

Foro sobre trading, sistemas de trading automatizados y comprobación de estrategias

Cualquier pregunta para los novatos en MQL4, ayuda y discusión sobre algoritmos y códigos

labvic, 2018.03.12 14:43

Hola a todos, me encuentro con un problema de este tipo:

Abro una operación sin stoploss y takeprofit:

OrderSend("EURUSD",OP_BUY,0.1,Ask,0,0,0,"",Magic,0,Red);

Quiero cerrar esta orden.

OrderClose(Magic,OrderOpenPrice(),Ask,0,Red);

Me sale este error: OrderClose error 131

Si en lugar deOrderOpenPrice() apunto 0.1 o OrderLots() hay un error: OrderClose error 138

¿Cuál es el problema?

A juzgar por la documentación, es muy difícil escribir un cierre mucho más loco.

bool  OrderClose(
   int        ticket,      // номер ордера
   double     lots,        // количество лотов
   double     price,       // цена закрытия
   int        slippage,    // максимальное проскальзывание
   color      arrow_color  // цвет
   );
En lugar de billete se escribe magik, en lugar de volumen se escribe precio abierto. Lee la documentación y no dudes en consultarla más a menudo cuando escribas código.


 
Nikolay Gaylis:
Por favor, indíqueme cómo desplazar el gráfico aún más a la izquierda mediante programación.

Necesito desactivar el autodesplazamiento y el desplazamiento (propiedades del gráfico CHART_AUTOSCROLL y CHART_SHIFT respectivamente) y luego utilizar ChartNavigate().

 
Ihor Herasko:

Es necesario desactivar el autodesplazamiento y el desplazamiento (propiedades del gráfico CHART_AUTOSCROLL y CHART_SHIFT respectivamente) y luego utilizar ChartNavigate().

Gracias.

 

Saludos a todos! Soy un novato, tratando de crear un EA. Escribí uno sencillo para ver cómo funcionaba. Cuando aparece una señal, la alerta no funciona. No sé cuál es el error. No sé cuál es exactamente el error.

//+------------------------------------------------------------------+
//|                                             тенк больше кидж.mq4 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
 double tenkan=iIchimoku(NULL,0,9,26,52,MODE_TENKANSEN,1);       //ЗНАЧЕНИЕ ТЕНКАН
 double kijun=iIchimoku(NULL,0,9,26,52,MODE_KIJUNSEN,1);         // ЗНАЧЕНИЕ КИДЖУН
 //-------------------------------------------------------------------+
  if(tenkan>kijun)                                               //"ЗОЛОТОЙ КРЕСТ"
  Alert("ЗОЛОТОЙ КРЕСТ");                                       // ОПОВЕЩЕНИЕ
  return;
  }

Sinceramente Andrei.

Archivos adjuntos:
 
Andrey Ilinykh:

Saludos a todos! Soy un novato, tratando de crear un EA. Escribí uno sencillo para ver cómo funcionaba. Cuando aparece una señal, la alerta no funciona. No sé cuál es el error. No sé cuál es exactamente el error.

Saludos Andrew.

¡Funciona! ¿Lo compruebas en el probador?

 
Nikolay Gaylis:

¡Funciona! ¿Lo compruebas con un probador?

Eso es lo que pensé, por alguna razón.

No, aún no he descubierto el probador.

He compilado el Asesor Experto y lo estoy usando en un gráfico de minutos. La nube cambia de color pero la ventana de alerta no se abre. ¿Podría ser un error de software?

Gracias.

 
void Laguerr::  deleteOrders()   //  (int otype)
{
   int k = OrdersTotal();
   datetime mDateOrderOp; 
   
   
   for(int i=k-1;i>=0;i--)
   {
      if (OrderSelect(i,SELECT_BY_POS, MODE_TRADES))
      {
         if (OrderSymbol()==nameSym && OrderMagicNumber()== Magic && OrderCloseTime()==0)  // && OrderType() == otype)
         {
            if(OrderType()== OP_BUYSTOP || OrderType()== OP_SELLSTOP) 
            {
               mDateOrderOp = OrderOpenTime();
               int  mTick = OrderTicket();
               //if (OrderType()== OP_BUYSTOP) mOpType = OP_SELL;
               bool flag= false;
               for(int pos=k-1;pos>=0;pos--)
               {
                  if (OrderSelect(pos,SELECT_BY_POS, MODE_TRADES))
                  {
                     if (OrderSymbol()==nameSym && OrderMagicNumber()== Magic && OrderCloseTime()==0)  // && OrderType() == otype)
                     {
                        if(OrderOpenTime() == mDateOrderOp && (OrderType()== OP_BUY || OrderType()== OP_SELL)  ) 
                        {
                            flag = true;   
                            break;
                        } 
                     }
                  }
               }
               if (!flag)
               {
                  if (!OrderDelete(mTick))
                  Print("Ошибка delete ордера . Код ошибки=",GetLastError()); 
                  break;
               }
             } 
         }
      }
   }
}
Hola a todos, esta es la situación: abro una orden con un determinado TP y OD. pero el OD se dispara y una segunda orden se abre al precio OD de la primera orden en la dirección opuesta (el OD es igual al número de pips perdidos en la primera orden). En el caso de un SL secundario, la tercera orden debe abrirse en la dirección opuesta a la segunda orden con el precio igual al valor de la segunda orden (Stop loss). Pregunta: ¿Cómo hacer esta cascada de apertura de estos tres pedidos?
 
¿Me pueden decir si la función de cerrar todas las órdenes abiertas por el EA en el símbolo es correcta?
void OrderCloseAll(double close_price)
{
   for(int i=OrdersTotal(); i>-1; i--)
      {
         OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) OrderClose(OrderTicket(),lot,close_price,slippage,clrWhite);
      }

}