Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 963

 

atztek, me disculpo por la inexactitud de la descripción:

1. Porque antes de la intersección con la MA, éstas eran órdenes de compra y Ur1 Ur2 Ur3 se identifican sólo después de que el precio cruza la MA.

2. y respectivamente las búsquedas de ciclos mencionados entre todas las órdenes de compra (ya que hay 3 órdenes más de venta-parada y se arrastran sobre una MA diferente en cada vela)

 
vadimvborisov:


atztek, me disculpo por la inexactitud de la descripción:

1. Porque antes de la intersección con la MA, éstas eran órdenes de compra y Ur1 Ur2 Ur3 se identifican sólo después de que el precio cruza la MA.

2. y respectivamente las búsquedas de ciclos mencionados entre todas las órdenes de compra (ya que hay 3 órdenes más de venta-parada y se arrastran sobre una MA diferente en cada vela)

1. Tú lo has dicho:
Советник открывает (на основании пересечения с MA ) несколько (3) рыночных ордеров

Las órdenes stop se convierten en negociables en el momento en que son cruzadas por el precio, la MA no tiene nada que ver.
Bien, tú decides cómo funciona tu EA.

2. ¿Cuál es el objetivo - ?
 bool mod_Buy1 = OrderModify ( OrderTicket(???),OrderOpenPrice (), NULL,Ur1,0,clrNONE);
 bool mod_Buy2 = OrderModify ( OrderTicket(???),OrderOpenPrice (), NULL,Ur2,0,clrNONE);
 bool mod_Buy3 = OrderModify (OrderTicket(???),OrderOpenPrice (), NULL,Ur3,0,clrNONE);

Es decir, para cada ciclo en el "para" se ve una orden, no las tres a la vez.
 

atztek, 1. Ya he corregido mi primer post.

2. Asignación debool mod_Buy1 = Modificar orden (OrderTicket (la primera orden de COMPRA de las anteriores), no cambiar el precio de apertura, no cambiar el Stop Loss, el TakeProfit se toma de Ur1,0,clrNONE);

"En otras palabras, en cada bucle del "for" se ve una orden, pero no las tres al mismo tiempo.

Esa es la cuestión, no consigo averiguar cómo recorrer estos 3 pedidos por billete y establecer los niveles de Takeprofit adecuados para cada uno de ellos(Ur1 Ur2 Ur3).

 
vadimvborisov:

atztek, 1. Ya he corregido mi primer post.

2. Asignación debool mod_Buy1 = Modificar orden (OrderTicket (la primera orden de COMPRA de las anteriores), no cambiar el precio de apertura, no cambiar el StopLoss, el TakeProfit se toma de Ur1,0,clrNONE);

"En otras palabras, en cada bucle del "for" se ve una orden, pero no las tres al mismo tiempo.

Esa es la cuestión, no consigo averiguar cómo recorrer estas 3 órdenes por entrada y establecer los niveles de TakeProfit adecuados para cada una de ellas(Ur1 Ur2 Ur3).


1. O no te entiendo, o no sabes lo que quieres hacer (o cómo funciona).
Tú incluso después de corregir hablas de que tenías órdenes de stop y luego "después de cruzar la MA" se convirtieron en órdenes de mercado.
- Se abren órdenes de mercado inmediatamente (por ejemplo, "después de cruzar la MA") o se abren órdenes de stop que se convierten automáticamente en órdenes de mercado en el momento en que el precio las cruza.

2. Veo que no se trata de una cuestión de corrección, sino de la lógica de su EA
(hay muchas preguntas, por ejemplo, si tiene otras órdenes abiertas en este momento, por qué se seleccionan las órdenes en función del ticket y no de las posiciones, etc.)
No empiece con 3 órdenes a la vez, empiece con un ejemplo sencillo con una sola orden, y asegúrese de que el Asesor Experto funciona sin errores. Entonces complícalo añadiendo 3 órdenes.
 

1) sí exactamente -"usted abre órdenes de stop que se convierten automáticamente en órdenes de mercado en el momento en que el precio las cruza. "

2) No hay otras órdenes (de mercado) en el momento en que las órdenes limitadas se convierten en órdenes de mercado, sólo órdenes limitadas. Quizá también se pueda seleccionar por posición y no por billete, no me importa. Ok. Vamos a considerar la situación con dos órdenes. porque puedo tratar con uno mismo....

 
vadimvborisov:

1) sí exactamente -"usted abre órdenes de stop que se convierten automáticamente en órdenes de mercado en el momento en que el precio las cruza. "

2) No hay otras órdenes (de mercado) en el momento en que las órdenes limitadas se convierten en órdenes de mercado, sólo órdenes limitadas. Quizás también se pueda seleccionar por posición y no por billete, no me importa. Ok. Vamos a considerar la situación con dos órdenes. porque puedo tratar con uno mismo....

¿Han llegado ya los del límite?
Muy bien, hagámoslo. Cuando tengas uno, el resto se aclarará.
 
vadimvborisov:

1) Sí, exactamente:"se abren órdenes de stop que se convierten automáticamente en órdenes de mercado en el momento en que el precio las cruza". "

2) No hay otras órdenes (de mercado) en el momento en que las órdenes limitadas se convierten en órdenes de mercado, sólo órdenes limitadas. Quizá también se pueda seleccionar por posición y no por billete, no me importa. Ok. Vamos a considerar la situación con dos órdenes. porque puedo tratar con uno mismo....

Eso es exactamente lo que necesitamos.

int i, total = OrdersTotal();
for(i = 0; i < total; i++)
{
 if(OrderSelect(i, SELECT_BY_POS) && OrderType() == OP_BUY)
  {
   bool mod_Buy1 = Модифицировать ордер ( OrderTicket(i-тый BUY из перебранных )
  }
}
 

1. lo siento, me refería a las órdenes de parada.

2. con 1 todo funciona. pero con dos o más no puedo averiguar....

 

Saludos,AlexeyVik

bool mod_Buy1 = Modificar Pedido ( OrderTicket(el i-ésimo BUY de los traídos )

y para los otros dos BUY's ¿cómo? ¿De la misma manera?

////////////////////////////
 int i, total = OrdersTotal();
for(i = 0; i < total; i++)
{
 if(OrderSelect(i, SELECT_BY_POS) && OrderType() == OP_BUY)
  {
   bool mod_Buy1 = Модифицировать ордер ( OrderTicket(i-тый BUY из перебранных )
   bool mod_Buy2 = Модифицировать ордер ( OrderTicket(i-тый BUY из перебранных )
   bool mod_Buy3 = Модифицировать ордер ( OrderTicket(i-тый BUY из перебранных )
  }
}
 
vadimvborisov:

Saludos,AlexeyVik

bool mod_Buy1 = Modificar Pedido ( OrderTicket(el i-ésimo BUY de los traídos )

y para los otros dos BUY's ¿cómo? ¿De la misma manera?

Fíjate en el bucle de mi ejemplo. En el bucle se comprueban todas las órdenes por tipo, también se comprueban por símbolos y por magia y estaría bien comprobar OrderStopLoss == 0 o OrderTakeProfit == 0 dependiendo de lo que sea importante, si la orden sin stop o sin orden de retirada, para no intentar modificar la orden innecesariamente y no obtener el error 1.

En este bucle, los pedidos se seleccionan uno tras otro y, si se cumplen todas las condiciones, se envían a modificar. Esto modificará todas las órdenes necesarias.

La segunda variante: Si sólo se han previsto 3 órdenes, podemos declarar, por ejemplo, int tick_buy_1, tick_buy_2, tick_buy_3 a nivel de variables globales y registrar los ticks en estas variables al abrir la orden. Entonces podemos seleccionar la orden por ticket, comprobar su tipo, si la orden está cerrada o no, y sólo entonces, sin el bucle.

   bool mod_Buy1 = Модифицировать ордер ( tick_buy_1 );
   bool mod_Buy2 = Модифицировать ордер ( tick_buy_2 );
   bool mod_Buy3 = Модифицировать ордер ( tick_buy_3 );
Razón de la queja: