Preguntas de los principiantes MQL4 MT4 MetaTrader 4 - página 122

 
Mickey Moose: Terminado lo que quería puedo enviarlo para su revisión. Es genial. Pero está prohibido publicarlo aquí.

en persona... Me encantan los filtradores... Lo hice a propósito. Cuando la demo aumente el depósito 15 veces en un día, entonces lo volveré a drenar. Quiero tener resultados comparables mañana.

 
STARIJ:
¿Requotes en el probador? Es la primera vez que oigo...

Aquí está la prueba. Comienza:


y el final:

y el final:




"Así que pon en el EA que si es así, salga y en el siguiente tick continúe."Esto está en el código.

 
novichok2018:

Aquí está la prueba. El comienzo:


y el final:

y el final:




"Así que pon en el EA que si es así, salga y en el siguiente tick continúe." - Esto está en el código.

Bien y escribe If(tester) if(January 25 or 26) return

 
STARIJ:

Bien y escribe If(tester) if(January 25 or 26) return

No entiendo por qué. ¿Qué, ayudará a evitar que se repita el fracaso? Lo principal es que las posiciones se cierren, y si el motivo de la ejecución del comando difuso es un fallo del probador, entonces todo está bien. Para estar seguro de que la causa de la otra, probablemente tienen que esperar a que la repetición de la situación, cuando con una venta abierta (BAY) se abrirá BAY (SEL), y ver cómo van a cerrar.

 
novichok2018:

Esto es exactamente lo que necesito, o mejor dicho, sólo para laCompra y Venta. Para mi sencilla estrategia, lo más importante es que las posiciones abiertas no interfieran con las condiciones de cierre de las demás. ¿Tal vez podamos prescindir de las matrices? No los entiendo: cómo crearlos, cómo abordarlos... estoy a oscuras. Tal vez mi situación te resulte más clara en la captura de pantalla:

Todo parece sencillo y claro en el código, pero es el único caso de confusión.

Si necesitamos dividir la contabilidad de las órdenes de venta y de compra, declararemos dos matrices y dos contadores para cada una de ellas:

int g_nBuyOrdersCnt, g_nSellOrdersCnt;
OrderInfo  arrstBuyOrderInfo[MAX_ORDERS_CNT], arrstSellOrderInfo[MAX_ORDERS_CNT];

En consecuencia, el ciclo de recogida de datos será el siguiente:

g_nBuyOrderCnt = 0;
g_nSellOrdersCnt = 0;
for (int i = OrdersTotal() - 1; i >= 0; --i)
{
   if (!OrderSelect(i, SELECT_BY_POS))
      continue;

   if (OrderSymbol() != Symbol())   // Если нужны ордера только по текущему символу, к графику которого прикреплен советник
      continue;

   if (OrderMagicNumber != i_nMagicNumber)  // Если имеется входной параметр советника i_nMagicNumber, в котором указан ID ордеров советника
      continue;

   if (OrderType() == OP_BUY)
      SaveOrderInfo(g_arrstBuyOrderInfo, g_nBuyOrdersCnt);
   if (OrderType() == OP_SELL)
      SaveOrderInfo(g_arrstSellOrderInfo, g_nSellOrdersCnt);
}

void SaveOrderInfo(OrderInfo &arrstOrderInfo[], int &nOrdersCnt)
{
   if (nOrderCnt >= MAX_ORDERS_CNT)
      return;

   arrstOrderInfo[nOrdersCnt].nTicket = OrderTicket();
   arrstOrderInfo[nOrdersCnt].nType = OrderType();
   arrstOrderInfo[nOrdersCnt].fOpenPrice = OrderOpenPrice();
   arrstOrderInfo[nOrdersCnt].fSL = OrderStopLoss();
   arrstOrderInfo[nOrdersCnt].fTP = OrderTakeProfit();

   ++nOrdersCnt;
}

Entonces sólo tenemos que hacer lo siguiente en el Asesor Experto para determinar si hay una orden de compra o de venta:

if (g_nBuyOrdersCnt > 0)
{
   // Есть ордера Buy
}
 
novichok2018:

¿Podemos prescindir de las matrices después de todo?

Sólo se puede prescindir de las matrices si no se espera que exista más de un pedido de cada tipo en un momento dado. Entonces el array degenera en una variable del tipo de estructura OrderInfo (o un array de tamaño 1).

Pero como veo en la figura anterior, no es así. Puede tener más de un pedido de cada tipo a la vez.
 
novichok2018:

Aquí está la prueba. Comienza:

Esto demuestra que cuando se cierra una orden, no es el precio de mercado. Por ejemplo, la compra se cierra a la demanda, mientras que la venta se cierra a la oferta. Si miras tu código, es muy posible que sea así, porque no se comprueba el tipo de orden antes de la operación de cierre.

 

Buenas noches de nuevo. La esencia de la pregunta.

Estoy poniendo un EA (funcionando) en el Mercado. Plataforma MT4. Puedo mostrar un solo archivo. Un archivo del Asesor Experto. Debería pasar la validez, pero no puede porque es un EA sin indicadores. Están en archivos separados. El Asesor Experto trabaja con cuatro indicadores. Tienen que estar unidos de alguna manera al Asesor Experto. Tiene que especificar la ruta, es decir, escribirlas en el Asesor Experto. ¿Qué? y ¿Dónde? Por favor, indique qué forma y cómo hacerlo.

Por lo que tengo entendido, hay que utilizar los "Recursos" . No sé cómo registrarlo correctamente en el Expert Advisor. Quizá conozcas otras soluciones.

Gracias.

Esto es lo que dice cuando no pasa la validez

 2016.04.01 00:00:00 no se puede abrir el archivo 'MQL4\indicators\Heiken_Ashi_Smoothed1lime.ex4' [2] 2016.04.01 00:00:00 no se puede abrir el archivo 'MQL4\indicators\Heiken_Ashi_Smoothed1lime.ex4' [2]01 00:00:00 no puede abrir el archivo 'MQL4\indicators\MA en Color_wAppliedPrice.ex4' [2] 2016.04.01 00:00:00 no puede abrir el archivo 'MQL4\indicators\MA en Color_wAppliedPrice.ex4' [2] 2016.04.01 00:00:00 no puede abrir el archivo 'MQL4\indicators\HA_Smooth.ex4' [2] 2016.04.01 00:00:00 no puede abrir el archivo 'MQL4\indicators\HA_Smooth.ex4' [2] 2016.04.01 00:00:00 no puede abrir el archivo 'MQL4\indicators\TrendLord.ex4' [2] 2016.04.01 00:00:00 no puede abrir el archivo 'MQL4\indicators\TrendLord.ex4' [2] 2016.04.01 00:00:05 no se puede abrir el archivo 'MQL4\indicators\Heiken_Ashi_Smoothed1lime.ex4' [2] 2016.04.01 00:00:05 no se puede abrir el archivo 'MQL4\indicators\Heiken_Ashi_Smoothed1lime.ex4' [2] 2016.04.01 00:00:0504.01 00:00:05 no se puede abrir el archivo 'MQL4\indicators\MA en Color_wAppliedPrice.ex4' [2] 2016.04.01 00:00:05 no se puede abrir el archivo 'MQL4\indicators\MA en Color_wAppliedPrice.ex4' [2] 2016.04.0101 00:00:05 no puede abrir el archivo 'MQL4\indicators\HA_Smooth.ex4' [2] 2016.04.01 00:00:05 no puede abrir el archivo 'MQL4\indicators\HA_Smooth.ex4' [2] 2016.04.01 00:00:05 no puede abrir el archivo 'MQL4\indicators\TrendLord.ex4' [2] 2016.04.0101 00:00:05 no puede abrir el archivo 'MQL4\indicators\TrendLord.ex4' [2] 2016.04.01 00:00:10 no puede abrir el archivo 'MQL4\indicators\Heiken_Ashi_Smoothed1lime.ex4' [2] 2016.04.01 00:00:10 no puede abrir el archivo 'MQL4\indicators\Heiken_Ashi_Smoothed1lime.ex4' [2] 2016.04.01 00:00:10 no se puede abrir el archivo 'MQL4\indicators\MA en Color_wAppliedPrice.ex4' [2] 2016.04.01 00:00:10 no se puede abrir el archivo 'MQL4\indicators\MA en Color_wAppliedPrice.ex4' [2]

 
Ihor Herasko:


Muchas gracias por sus respuestas completas y muy claras.

 
Ihor Herasko:

Si necesitamos dividir la contabilidad de las órdenes en Compra y Venta, declaramos dos matrices y dos contadores para cada una de ellas:

En consecuencia, el ciclo de recogida de datos será el siguiente:

Entonces sólo tenemos que hacer lo siguiente en el Asesor Experto para determinar si hay una orden de compra o de venta:

¿Podría explicar esta línea de su código:OrderInfo arrstBuyOrderInfo[MAX_ORDERS_CNT], arrstSellOrderInfo[MAX_ORDERS_CNT];¿Por quéOrderInfo no tiene paréntesis y no se especifica el tipo? y todo esto se declara a nivel global?

¿Y la determinación de la disponibilidad de la orden se inserta en la función de cierre de la posición? ¿Dónde? ¿Y tal vez la función de cierre de posiciones con arrays debería ser diferente? Es un poco complicado para mí. Gracias.


Intenté usar tu ejemplo, pero el compilador me jura...

Y también jura los ejemplos del tutorial.