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

 
Arsen_Syharev:
Por favor, aconseje qué comando escribir para abrir los fractales Sell1 y Sell2 al mismo tiempo
No hay nada en el foro.
 
Hola amigos, ¿podríais sugerir una función sencilla, que, si se cumple alguna condición... (SigPF==1 o SigPF==2) y OrdersTotal>0, es decir, sólo se deben procesar las órdenes que están actualmente en el mercado si se da una de las condiciones SigPF.

Esta es la variable externa que comprueba la condición dentro de la función
extern int Precio_en_pips=70;
La función debe:
1.definir qué tipo de órdenes estamos tratando... si SigPF==1, entonces es una orden de Compra, si SigPF==2, entonces es una orden de Venta
2. comprobar el precio actual y si
hay una orden de compra y SigPF==1 está presente en el mercado, entonces

la diferencia entre el precio actual al que se va a abrir la orden de compra y cualquiera de los precios abiertos de las órdenes que ya están en el mercado es superior a PF_price_in_pips, la función debe devolver valid_signal=true


ahora hay órdenes de venta en el mercado, y se ha establecido SigPF==2, entonces

la diferencia entre cualquier precio de orden abierta ya presente en el mercado y el precio actual, al que se abrirá la orden de venta, es mayor que PF_price_in_pips, entonces la función debe devolver el indicador valid_signal=true

si la distancia entre el precio de apertura de la nueva orden al producirse las señales de compra/venta es inferior a PF_price_in_pips, la función debe devolver valid_signal=false

Básicamente, en pocas palabras, la función debería comprobar la distancia entre el precio de apertura de la nueva orden en las señales de compra y venta (SigPF==1, SigPF==2) y cualquiera de los precios de apertura de la orden que ya están en el mercado... y si esa distancia es mayor que PF_price_in_pips entonces se debería devolver valid_signal=true. Esto es para evitar que se abran pedidos a precios muy cercanos entre sí. Y otra cosa... mi EA sólo opera en la apertura de una nueva barra... no en todos los ticks... pero no creo que importe... Tengo que considerar los precios de compra o venta de todos modos ...

ayuda con esta función... ¡! Si algo no está claro, trataré de explicarlo... ¡o de poner fotos! Sólo ayúdame) ¡Gracias!
 

No estoy seguro de haber entendido bien los términos, pero...

   int PF_price_in_pips=70;
   int OrdTotal=OrdersTotal();
   bool valid_signal=false;
   int SigFF;
   
   if(OrdersTotal()>0)
   {
   for(int i=OrdTotal-1; i>=0; i --)
     {
      if(!OrderSelect(i,SELECT_BY_POS))
         continue;

      if(OrderType()==OP_BUY && SigFF==1 && Ask+OrderOpenPrice()>PF_price_in_pips)
         valid_signal=true;
         else
         valid_signal=false;
      if(OrderType()==OP_SELL && SigFF==2 && OrderOpenPrice()-Bid>PF_price_in_pips)
         valid_signal=true;
         else
         valid_signal=false;

     }
     }
 
Arsen_Syharev:
Puedes decirme qué comando escribir para que cuando los fractales Vender1 y Vender2 abran al mismo tiempo una orden
Qué valor de Sell1 y Sell2 le convendría para abrir una orden. //No puedo ver más tu angustia....
 
Arsen_Syharev:
Me puedes decir que comando escribir para que cuando se abran los fractales Sell1 y Sell2 al mismo tiempo se abra una orden
if (Sell1 !=0 && Sell2 != 0){

/* Если по текущей цене */ 

OrderSend(Symbol1, OP_SELL, Lots, Bid, 1, 0, 0, 0, Magik, 0, Red);

OrderSend(Symbol2, OP_SELL, Lots, Bid, 1, 0,0, 0, Magik, 0, Red); 

/*Если по пробитию фракталов отложенными ордерами */

 OrderSend(Symbol1, OP_SELLSTOP, Lots, Sell1, 1, 0, 0, 0, Magik, 0, Red);

OrderSend(Symbol2, OP_SELLSTOP, Lots, Sell2, 1, 0,0, 0, Magik, 0, Red);  

} 

Pero esto debe ser un ejemplo MUY MUY burdo

 
¿Sabes si es posible firmar más de una señal en una cuenta?
 

Hola Colegas, recientemente me he unido a sus filas :). Estoy harto de las órdenes pendientes y decidí utilizar un script que he descargado de Internet, pero no me satisfizo: tenía errores en una sola dirección, y el otro script sólo colocaba una orden en cada dirección. Consiste esencialmente en la apertura de una cierta cantidad de órdenes pendientes en ambas direcciones. Pregunta: ¿Cómo puedo establecer un trailing stop en cada orden? Esto es un script, no un Asesor Experto. Las órdenes se abrieron, el trailing stop se adjuntó a ellas, y eso es todo, el script ha hecho su trabajo. ¿Cómo puedo utilizar la secuencia de comandos para activar un trailing stop normal que se ejecuta al hacer clic con el botón derecho en una orden? 4ª edición de MetaTrader 765.

 
entitie:

Hola Colegas, recientemente me he unido a sus filas :). Estoy harto de las órdenes pendientes y decidí utilizar un script que he descargado de Internet, pero no me satisfizo: tenía errores en una sola dirección, y el otro script sólo colocaba una orden en cada dirección. Consiste esencialmente en la apertura de una cierta cantidad de órdenes pendientes en ambas direcciones. Pregunta: ¿Cómo puedo establecer un trailing stop en cada orden? Esto es un script, no un Asesor Experto. Las órdenes se abrieron, el trailing stop se adjuntó a ellas, y eso es todo, el script ha hecho su trabajo. ¿Cómo puedo utilizar la secuencia de comandos para activar un trailing stop normal que se ejecuta al hacer clic con el botón derecho en una orden? 4ª edición de MetaTrader 765.

Los autónomos lo hacen todo).
 

Hola a todos.

La tarea es la siguiente: necesito abrir órdenes después de una determinada distancia Paso en EURUSD.m para comprar y en EURUSD.m1 para vender. Este problema se resuelve en el siguiente código.

Sin embargo, si el precio ha ido en nuestra contra, también deberíamos abrir órdenes de compra para EURUSD.m, siempre que el precio haya ido desde la última orden de venta a EURUSD.m1 a una distancia de Paso*2. Esta condición funcionará bajo la condición de que este precio de apertura sea menor que el precio de la última orden de compra de EURUSD.m.

No sé cómo hacerlo. Estaré encantado de ayudar.

// бай евро доллар
if (rates[1].open < rates[1].close && !PositionSelect(Symbol1)) 
   {
      LastPriceBuy = OpenBuy(Symbol1,Lot); // если бычья свеча и нет открытой позиции по этому символу
   }
if (GlobalVariableCheck ("bb_1")) GlobalVariableGet("bb_1", bb_1);  // цифровая переменная внутренняя и ее проверка

if (PositionSelect(Symbol1) && LastPriceBuy > 0) //открытие второго и последующих ордеров
  {
   if(LastPriceBuy+Step*_Point < SymbolInfoDouble(Symbol1,SYMBOL_ASK)) 
   {LastPriceBuy = OpenBuy(Symbol1,Lot);} // открытие позиции в бай по евро доллару всех последующих ордеров 
  }    

// сел евро доллар
if (rates[1].open > rates[1].close && !PositionSelect(Symbol3)) {LastPriceSell = OpenSell(Symbol3,Lot);} // если бычья свеча и нет открытой позиции по этому символу
if (GlobalVariableCheck ("ss_1")) GlobalVariableGet("ss1_", ss_1);  // цифровая переменная внутренняя и ее проверка

if (PositionSelect(Symbol3) && LastPriceSell > 0) //открытие второго и последующих ордеров
  {
   if(LastPriceSell-Step*_Point > SymbolInfoDouble(Symbol3,SYMBOL_BID))
   {LastPriceSell = OpenSell(Symbol3,Lot);} // открытие позиции в селл по евро доллару всех последующих ордеров 
  } 
 
zfs:
Los autónomos lo hacen todo).

Una respuesta-comentario muy valiosa e informativa, le sugiero que la utilice también...

De hecho - no hay un comando simple que, después de abrir una orden, cuelgue un trailing stop estándar encima de ella?