para esta última EA)). En realidad, funcionó. Fue el último)). Este EA es para probar... Por lo tanto, el trabajo para varias monedas y el comercio manual (juntos) no está previsto todavía...
Me puedes dar algunos consejos para el futuro, sería bueno saber cómo hacerlo bien...
Gracias de nuevo.
Si lo necesitas, debes distinguir una orden de mercado de una pendiente. La primera que te encuentres, por todos los criterios (símbolo, mago, tipo) suele ser la más fresca, pero sería mejor mirar también la hora de apertura para que seguramente no fuera más joven.
En el probador puede elegir de una vez
OrderSelect(OrdersTotal()-1,SELECT_BY_POS))
para trabajar con la última orden abierta. Si el sistema no tiene órdenes pendientes, todo funcionará bien. Pero si hay órdenes pendientes y de mercado, esto no funcionará, por no hablar del trabajo real.
para esta última EA)). En realidad, funcionó. Fue el último)). El Asesor Experto es para probar... Por lo tanto, el trabajo para varias monedas y el comercio manual (juntos) no está previsto todavía...
Me puedes dar algunos consejos para el futuro, sería bueno saber cómo hacerlo bien...
Gracias de nuevo.
Es más correcto no escribir cosas innecesarias. ¿Por qué has puesto bucles anidados? Al fin y al cabo, todo lo que necesita se puede hacer en un solo bucle con una selección de pedidos.
if(New_Bar)
{
OrderSend(Symbol(),OP_BUYSTOP,Lotpers,Ask+step,100,0,0,NULL,MagicNumber,0,DarkTurquoise);
OrderSend(Symbol(),OP_SELLSTOP,Lotpers,Bid-step,100,0,0,NULL,MagicNumber,0,Yellow);
}
for(int b=0; b<OrdersTotal(); b++)
{
if(OrderSelect(b, SELECT_BY_POS) && OrderSymbol() == _Symbol && OrderMagicNumber() == MagicNumber)
{
lastlot = OrderLots();
// Здесь надо в переменную засунуть тикет выбранного ордераif(OrderType() == OP_BUYSTOP||OrderType() == OP_BUY)
orderprisebuy = OrderOpenPrice();
if(OrderType() == OP_SELLSTOP||OrderType() == OP_SELL)
orderprisecell = OrderOpenPrice();
SL_VirtualCell = orderprisecell+step1*Point;
SL_VirtualBuy = orderprisebuy-step1*Point;
/* if(Mas_Tip[0] >0|| Mas_Tip[1] >0)
{
if (New_Bar&&/*valsar1<Ask && osma0>0&&osma1<0 /*&& Volume[1]>VolumeFiltr)
OrderSend(Symbol(),OP_BUY,NormalizeDouble( lastlot*Marti,2),Ask,100,0,0,NULL,MagicNumber,0,DarkTurquoise);
if (New_Bar&& /*valsar1>Bid && osma0<0&&osma1>0 /* && Volume[1]>VolumeFiltr)
OrderSend(Symbol(),OP_SELL,NormalizeDouble( lastlot*Marti,2),Bid,100,0,0,NULL,MagicNumber,0,Yellow);
}*/
CheckEvents(MagicNumber); // Вот здесь теряется выбранный ордер при переборе ордеров в вызванной функции/*if ( eventSellClosed_SL >0|| eventBuyClosed_SL >0)
{ as();
}
/* /// if ( eventBuyClosed_TP > 0 )
// Alert( Symbol(), ": Buy-позиция закрыта по ТейкПрофиту!" );
*/if(eventBuyStopOpened > 0)
{
OrderSend(Symbol(),OP_SELLSTOP,NormalizeDouble( Lotpers,5),orderprisecell,0,0,0,NULL,MagicNumber,0,clrKhaki);
if (OrderType() == OP_SELL)
OrderClose(OrderTicket(),OrderLots(), Ask, 3,clrIvory ); // Здесь может быть чужой OrderTicket() Возможны и другие аналогичные потери
}//завершение блока if(eventBuyStopOpened > 0)///if(eventSellStopOpened > 0)
{
OrderSend(Symbol(),OP_BUYSTOP,NormalizeDouble( Lotpers,5),orderprisebuy,0,0,0,NULL,MagicNumber,0,clrPlum);
if (OrderType() == OP_BUY)
OrderClose(OrderTicket(),OrderLots(), Bid, 3,clrIvory );
}//завершение блока if(eventSellStopOpened > 0)
}//завершение блока if(OrderSelect(b
}//завершение блока for(int b=0
No logré entrar en ese lugar donde se tienen comentarios de varias líneas. Algo me pareció que podría haber un error de compilación allí... Presta atención a mis comentarios en el código.
No escribas cosas innecesarias. ¿Por qué has puesto bucles anidados? Porque todo lo que necesita se puede hacer en un solo bucle con una selección de pedidos.
No he conseguido entender ese lugar donde tienes comentarios de varias líneas. Algo me pareció que podría haber un error de compilación allí... Presta atención a mis comentarios en el código.
No hay errores, pero se sugiere comprobar las funcionesOrderSend.OrderClose. yOrderDelete
El valor de retorno de 'OrderSend' debe ser comprobado.
¿Cómo encontramos la corrección más profunda entre el máximo y el mínimo? El máximo y el mínimo son conocidos por nosotros, no es un problema encontrarlos usando iHighest y
Si utilizamos iHighest y iLowest, a veces encontraremos extremos cercanos, ya que no siempre es así, como se muestra en la imagen. En general, necesitamos la identificación de la formación ABC.
Intenté aplicarle ZigZag pero no trae aciertos exactos.
¿Cómo encontramos la corrección más profunda entre el máximo y el mínimo? El máximo y el mínimo son conocidos por nosotros, no es un problema encontrarlos usando iHighest y
Si utilizamos iHighest y iLowest, a veces encontraremos extremos cercanos, ya que no siempre es así, como se muestra en la imagen. En general, necesitamos la identificación de la formación ABC.
Intenté aplicar ZigZag para eso pero no trae aciertos exactos.
Todo será fácil si se determina en qué profundidad se debe buscar. En lugar de iLowest puede utilizarCopyLow y ArrayMinimum()
para esta última EA)). En realidad, funcionó. Fue el último)). Este EA es para probar... Por lo tanto, el trabajo para varias monedas y el comercio manual (juntos) no está previsto todavía...
Me puedes dar algunos consejos para el futuro, sería bueno saber cómo hacerlo bien...
Gracias de nuevo.
Si lo necesitas, debes distinguir una orden de mercado de una pendiente. La primera que te encuentres, por todos los criterios (símbolo, mago, tipo) suele ser la más fresca, pero sería mejor mirar también la hora de apertura para que seguramente no fuera más joven.
En el probador puede elegir de una vez
para trabajar con la última orden abierta. Si el sistema no tiene órdenes pendientes, todo funcionará bien. Pero si hay órdenes pendientes y de mercado, esto no funcionará, por no hablar del trabajo real.
para esta última EA)). En realidad, funcionó. Fue el último)). El Asesor Experto es para probar... Por lo tanto, el trabajo para varias monedas y el comercio manual (juntos) no está previsto todavía...
Me puedes dar algunos consejos para el futuro, sería bueno saber cómo hacerlo bien...
Gracias de nuevo.
Es más correcto no escribir cosas innecesarias. ¿Por qué has puesto bucles anidados? Al fin y al cabo, todo lo que necesita se puede hacer en un solo bucle con una selección de pedidos.
No logré entrar en ese lugar donde se tienen comentarios de varias líneas. Algo me pareció que podría haber un error de compilación allí... Presta atención a mis comentarios en el código.
¿Qué sentido tiene?
No escribas cosas innecesarias. ¿Por qué has puesto bucles anidados? Porque todo lo que necesita se puede hacer en un solo bucle con una selección de pedidos.
No he conseguido entender ese lugar donde tienes comentarios de varias líneas. Algo me pareció que podría haber un error de compilación allí... Presta atención a mis comentarios en el código.
No hay errores, pero se sugiere comprobar las funcionesOrderSend.OrderClose. yOrderDelete
El valor de retorno de 'OrderSend' debe ser comprobado .
Gracias por sus comentarios.
Buscando el mínimo del indicador "ZigZag" en el array usando"ArrayMinimum".
¿Puedo configurar la búsqueda para que ignore los valores nulos o tendré que utilizar un bucle para encontrarlos?
Buscando el mínimo del indicador "ZigZag" en el array usando"ArrayMinimum".
¿Puedo configurar la búsqueda para que ignore los valores nulos o tendré que utilizar un bucle para encontrarlos?
Probablemente tenga que utilizar un bucle
¿Cómo encontramos la corrección más profunda entre el máximo y el mínimo? El máximo y el mínimo son conocidos por nosotros, no es un problema encontrarlos usando iHighest y
Si utilizamos iHighest y iLowest, a veces encontraremos extremos cercanos, ya que no siempre es así, como se muestra en la imagen. En general, necesitamos la identificación de la formación ABC.
Intenté aplicarle ZigZag pero no trae aciertos exactos.
е.
Forexman77:
¿Cómo encontramos la corrección más profunda entre el máximo y el mínimo? El máximo y el mínimo son conocidos por nosotros, no es un problema encontrarlos usando iHighest y
Si utilizamos iHighest y iLowest, a veces encontraremos extremos cercanos, ya que no siempre es así, como se muestra en la imagen. En general, necesitamos la identificación de la formación ABC.
Intenté aplicar ZigZag para eso pero no trae aciertos exactos.
Todo será fácil si se determina en qué profundidad se debe buscar. En lugar de iLowest puede utilizar CopyLow y ArrayMinimum()