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

 
haron312:

Hola, por favor, ayúdenme con el error que se produce en el probador cuando intento modificar una orden (transferir a Breakeven): pongo la función OrderOpenPrice() en lugar de SL, pero el probador muestra el error1 (según la documentación significa que hay un intento de pasarvalores no modificados como parámetros a la función). ¡Adjunto el código! Gracias de antemano.

void DeleteOrderFunction2() //función que borra la segunda orden pendiente y guarda la segunda orden en Breakeven en una noche determinada

{

bool flag = false;

if (FlagDeleteSecondOrder2 == true)

{

if(DayOfWeek() == DAYOFWEEK && //si se selecciona un día de la semana

Hora() == 22 //si es de noche

)

{

if(BuyCount() == 1 && if(hay una orden de compra abierta

SellStopCount() == 1 //y hay una orden de venta pendiente

)

{

for( int i = 0; i < OrdersTotal(); i++) //crear pedidos

{

OrderSelectX(i, SELECT_BY_POS, MODE_TRADES;)

switch(Tipo de pedido())

{

case OP_BUY: if(OrderProfit() > 0 &&

Oferta > OrderOpenPrice()

)

{

OrderModifyX(OrderTicket(),OrderOpenPrice(),OrderTakeProfit(),0,Arrow_Color);

flag =true;

}

romper;

case OP_SELLSTOP: if(flag==true)

{

OrderDeleteX(OrderTicket(), Arrow_Color);

}

romper;

}

}

}

if(SellCount() == 1 && // si hay una orden de venta abierta

BuyStopCount() == 1 //y hay una orden de compra pendiente

)

{ Print("IS!!!!");

for( int i = 0; i < OrdersTotal(); i++) //crear pedidos

{

OrderSelectX(i, SELECT_BY_POS, MODE_TRADES;)

switch(Tipo de pedido())

{

case OP_SELL: if (OrderProfit() > 0 &&

Ask < OrderOpenPrice()

)

{

OrderModifyX(OrderTicket(), OrderOpenPrice(),OrderTakeProfit(),0, Arrow_Color);

flag = true;Print("flag =", flag);

}

romper;

case OP_BUYSTOP: if(flag == true)

{

Print("bandera =", bandera);

OrderDeleteX(OrderTicket(), Arrow_Color);

}

romper;

}

}

}


}


}

}

Supongamos que la orden OP_BUY es la primera que se encuentra entre las órdenes, la modificas y pones el flag =true y cuando se encuentre la orden pendiente se borrará. Y ver qué pasa si la orden pendiente se encuentra primero...
 

¡Ayúdame a convertir el indicador en un script!

double buf_1[];
double buf_2[];
//+------------------------------------------------------------------+
//| Функция инициализации, запускается один раз                      |
//+------------------------------------------------------------------+
int init() 
  {
   SetIndexBuffer(0,buf_1);
   SetIndexBuffer(1,buf_2);

   SetIndexStyle (0,DRAW_ARROW, STYLE_SOLID, 1);
   SetIndexStyle (1,DRAW_ARROW, STYLE_SOLID, 1);
   SetIndexArrow (0,233);
   SetIndexArrow (1,234);

   SetIndexEmptyValue(0,0.0);
   SetIndexEmptyValue(1,0.0);
   
   return(0);
  }
//+------------------------------------------------------------------+
//| Основная Функция, запускается на каждом тике                     |
//+------------------------------------------------------------------+
int start() 
  {
   if (Bars <= 100) return(0);
   int ExtCountedBars = IndicatorCounted();
   if (ExtCountedBars < 0) return(-1);
   if (ExtCountedBars > 0) ExtCountedBars--;
   for (int i=Bars-ExtCountedBars-1; i>=0; i--)
     { 
      if (High [i+2] == High[i+3])
      bool DOWN   = High[i+1]== High[i+2]; 
                                               
                    
      if (Low [i+2] == Low [i+3])             
     bool UP =  Low[i+1]==Low[i+2] ;
      
       
      if (UP)   buf_1[i+1] = Low[i+1]-3*Point;
      if (DOWN) buf_2[i+1] = High[i+1]+3*Point;
     }
   return(0);
 }
  //  ---- end

Si se escribe iHigh(NULL,PERIOD_H1,[i+2]) y iLow(NULL,PERIOD_H1,[i+2]) en lugar deHigh [i+2] yLow[i+1], entonces se puede controlar el timeframe?

¡Si Hai coincidió VENDER, si Loh COMPRAR!

 
Rewerpool:

¡Ayúdame a convertir el indicador en un script!

¿Si se escribe iHigh(NULL,PERIOD_H1,[i+2]) y iLow(NULL,PERIOD_H1,[i+2]) en lugar deHigh [i+2] yLow[i+1], se puede controlar el timeframe?

¡Si Hai coincidió VENDER, si Loh COMPRAR!

tres coincidencias tendrán que esperar mucho tiempo

 
STARIJ:

tres golpes tendrá que esperar mucho tiempo.

No soy un revendedor, voy a esperar. Podemos normalizar en los 4 dígitos.

 

en mql5 tenemos posiciones abiertas, busco todas las operaciones en esta posición y determino si fueron abiertas por órdenes de mercado o pendientes

en mql4, ¿cómo puedo saber si una posición abierta fue abierta por órdenes de mercado o pendientes y sus tickers cambian cuando se dispara una orden pendiente?

 
Rewerpool: No soy un revendedor, voy a esperar. Podemos normalizar en los 4 dígitos.

Sí y el resultado es débil ...

5 hai coincidido y el precio ha subido.

 
Pavel Kolchin:

en mql5 tenemos posiciones abiertas, busco todas las operaciones en esta posición y determino si fueron abiertas por órdenes de mercado o pendientes

en mql4, ¿cómo puedo saber si una posición abierta fue abierta por órdenes de mercado o pendientes y sus tickers cambian cuando se dispara una orden pendiente?

darles diferentes magias

 
STARIJ:

darles diferentes magias

Los pedidos son abiertos por un usuario, necesito definir su tipo cuando se abren

 
La pregunta es qué "cargará más": ¿en cada InChartEvent definido redefinir la manija del indicador o definir todas las posibles manijas como una matriz de antemano en OnInit?
 
Roman Sharanov:
La pregunta es qué "cargará más": ¿en cada InChartEvent definido redefinir la manija del indicador o definir todas las posibles manijas como una matriz de antemano en OnInit?
Diferente.
Razón de la queja: