"¿Cómo lo escribo?" - donde dice 0,01 lote, hay que calcular el mínimo disponible.
Ya lo veo. Si lo pones a 0,02, se seleccionará la orden con el lote 0,02. He preguntado cómo configurarlo para que mire primero el lote 0,01, luego el 0,02 y así sucesivamente.
Sergey Gridnev #: Se necesitan 2 ciclos: se averigua el volumen mínimo en el primero, y se cierra en el segundo. Y ten en cuenta que cuando cierras las órdenes se desplazan 1 posición, por lo que tienes que hacer el ciclo desde la posición máxima hasta la 0.
Ya lo veo. Si lo pones a 0,02, seleccionará las órdenes con lote 0,02. Pregunto cómo configurarlo para que mire primero a 0,01, luego a 0,02 y así sucesivamente.
Agregue la matriz en una bidimensional, con los lotes en la primera dimensión y los billetes en la segunda. Ordena el array, y cierra mientras la primera dimensión tiene el lote más pequeño. O si necesita cerrar todo, pero a medida que aumenta el lote, cerrar hasta el final...
Sergey Gridnev #: Se necesitan 2 ciclos: se averigua el volumen mínimo en el primero y se cierra en el segundo. Y ten en cuenta que cuando cierras las órdenes se desplazan 1 posición, por lo que tienes que hacer el ciclo desde la posición máxima hasta la 0.
Por favor, ayúdame a entender una cosa. Estoy escribiendo el principio de una función y he decidido comprobar alguna parte de su código con un script:
//+------------------------------------------------------------------+//| 3.mq5 |//| Copyright 2021, MetaQuotes Ltd. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2021, MetaQuotes Ltd."#property link"https://www.mql5.com"#property version"1.00"//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
/* Создадим запрос на сервер и получим ответ с результатом */MqlTradeRequest request= {};
MqlTradeResult result= {0};
/* запустим цикл для перебора всех установленных отложенных ордеров */for(int i=OrdersTotal()-1; i>=0; i--)
{
/* определим параметры установленного ордера */string symbol=OrderGetString(ORDER_SYMBOL); // символ ордераint digits=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS); // количество знаков после запятойdouble point=SymbolInfoDouble(symbol,SYMBOL_POINT); // значение одного пунктаulong ticket=OrderGetTicket(i); // тикет ордераENUM_ORDER_TYPE type=(ENUM_ORDER_TYPE)OrderGetInteger(ORDER_TYPE); // тип ордераdouble volume=OrderGetDouble(ORDER_VOLUME_INITIAL); // объём ордераulong magic=OrderGetInteger(ORDER_MAGIC); // MagicNumber ордераdouble price_current=OrderGetDouble(ORDER_PRICE_CURRENT); // текущая цена по символу ордераdouble price_order_open=OrderGetDouble(ORDER_PRICE_OPEN); // цена открытия указанная в ордереdouble sl=OrderGetDouble(ORDER_SL); // стоп лосс ордераdouble tp=OrderGetDouble(ORDER_TP); // тейк профит ордера/* выведем информацию об установленных отложенных ордерах */PrintFormat("#%I64u %s %s %.2f price_current: %.5f price_order_open: %.5f sl: %.5f tp: %.5f magic: %d",
ticket,symbol,EnumToString(type),volume,price_current,price_order_open,sl,tp,magic);
}
}
//+------------------------------------------------------------------+
Pero el resultado que se imprime en la pestaña de Expertos es un poco desconcertante. La orden pendiente ORDER_TYPE_BUY_STOP tiene el símbolo, pero la ORDER_TYPE_SELL_STOP no lo tiene por alguna razón.
Por favor, ayúdame a entender una cosa. Estoy escribiendo el principio de una función y he decidido comprobar alguna parte de su código con un script:
Sin embargo, el resultado que se imprime en la pestaña de Expertos es un poco desconcertante. La orden pendiente ORDER_TYPE_BUY_STOP tiene el símbolo, pero la ORDER_TYPE_SELL_STOP no lo tiene por alguna razón.
¿Con qué se puede relacionar? Saludos, Vladimir.
Esto se debe a que no ha seleccionado un billete, sino que está tratando de obtener sus características.
Sergey Gridnev #: Tiene que ver con el hecho de que usted no ha seleccionado un billete, sino que está tratando de obtener sus características.
Gracias, Sergey, por tu respuesta. Su respuesta me dejó aún más perplejo. ¿Cómo puede ser? Cuando ejecuto el script, se interrogan todas las órdenes pendientes establecidas. Como podemos ver en la imagen, hay dos en el gráfico, y al mismo tiempo, un billete está seleccionado y el otro no? No está del todo claro.
¿Puede explicarlo con más detalle?
La pregunta no la hago por curiosidad, sino para continuar con el autoestudio.
¿Realmente no lo ves?
"¿Cómo lo escribo?" - donde dice 0,01 lote, hay que calcular el mínimo disponible.
Ya lo veo. Si lo pones a 0,02, se seleccionará la orden con el lote 0,02. He preguntado cómo configurarlo para que mire primero el lote 0,01, luego el 0,02 y así sucesivamente.
Se necesitan 2 ciclos: se averigua el volumen mínimo en el primero, y se cierra en el segundo. Y ten en cuenta que cuando cierras las órdenes se desplazan 1 posición, por lo que tienes que hacer el ciclo desde la posición máxima hasta la 0.
¿Cómo se pasa del máximo al 0?
Pregunto cómo hacer que se vea primero a 0,01, luego a 0,02 y así sucesivamente.
Ya se le ha dicho cómo dos veces.
Ya lo veo. Si lo pones a 0,02, seleccionará las órdenes con lote 0,02. Pregunto cómo configurarlo para que mire primero a 0,01, luego a 0,02 y así sucesivamente.
Agregue la matriz en una bidimensional, con los lotes en la primera dimensión y los billetes en la segunda. Ordena el array, y cierra mientras la primera dimensión tiene el lote más pequeño. O si necesita cerrar todo, pero a medida que aumenta el lote, cerrar hasta el final...
Se necesitan 2 ciclos: se averigua el volumen mínimo en el primero y se cierra en el segundo. Y ten en cuenta que cuando cierras las órdenes se desplazan 1 posición, por lo que tienes que hacer el ciclo desde la posición máxima hasta la 0.
no. Desde el más antiguo hasta el más reciente.
Sabía lo que decían. Bueno, tendré que aprender por ensayo y error como siempre.
Sabía lo que decían. Bueno, tendré que aprender por ensayo y error como siempre.
¡Buenas noches, queridos expertos!
Por favor, ayúdame a entender una cosa. Estoy escribiendo el principio de una función y he decidido comprobar alguna parte de su código con un script:
Pero el resultado que se imprime en la pestaña de Expertos es un poco desconcertante. La orden pendiente ORDER_TYPE_BUY_STOP tiene el símbolo, pero la ORDER_TYPE_SELL_STOP no lo tiene por alguna razón.
¿Con qué se puede relacionar? Saludos, Vladimir.
¡Buenas noches, queridos expertos!
Por favor, ayúdame a entender una cosa. Estoy escribiendo el principio de una función y he decidido comprobar alguna parte de su código con un script:
Sin embargo, el resultado que se imprime en la pestaña de Expertos es un poco desconcertante. La orden pendiente ORDER_TYPE_BUY_STOP tiene el símbolo, pero la ORDER_TYPE_SELL_STOP no lo tiene por alguna razón.
¿Con qué se puede relacionar? Saludos, Vladimir.
Tiene que ver con el hecho de que usted no ha seleccionado un billete, sino que está tratando de obtener sus características.
Gracias, Sergey, por tu respuesta. Su respuesta me dejó aún más perplejo. ¿Cómo puede ser? Cuando ejecuto el script, se interrogan todas las órdenes pendientes establecidas. Como podemos ver en la imagen, hay dos en el gráfico, y al mismo tiempo, un billete está seleccionado y el otro no? No está del todo claro.
¿Puede explicarlo con más detalle?
La pregunta no la hago por curiosidad, sino para continuar con el autoestudio.
Saludos, Vladimir.