necesito ayuda con la codificación, por favor - página 2

 

deVries, si dejas de despotricar lo suficiente como para explicar por qué el código con el que empecé es tan "malo" podría entender qué puedo hacer para arreglarlo. Vuelve a leer tu respuesta y luego explica cómo tu respuesta puede ayudar a alguien.

Gracias, RaptorUK, finalmente una respuesta que puedo utilizar.

Para ayudar a explicar, sólo quiero esta EA para ejecutar un par, un comercio a la vez. Como he dicho antes '... y colocado uno en cada uno de los 5 gráficos de pares diferentes, todos en la misma plataforma MT4...' dando 5 gráficos separados (?) con ese EA en ellos. A estas alturas no quiero ni necesito comprobar los números mágicos, ¿verdad?

En cuanto al comentario sobre las barras, gracias.

En cuanto al deslizamiento, 4/5 corredores, etc, en esta etapa que no importa, ¿verdad? Estoy usando esto para mí, en el mismo corredor, etc.

 
y se me olvidó añadir, que no busco un atajo, sólo una ayuda para superar un problema.
 
Lo siento, de alguna manera me perdí las otras respuestas, así que me disculpo por el comentario "despotricar". y gracias por la ayuda real.

Y lo he probado, y funciona bien, sin errores, sin advertencias. Entonces, ¿por qué no funciona en un gráfico en vivo? (Todavía no he implementado las sugerencias anteriores)
 
unclebigpete:

1. En esta fase no quiero ni necesito comprobar los números mágicos, ¿verdad?

2. En cuanto al deslizamiento, 4/5 corredores, etc., en esta etapa no importa, ¿verdad? Estoy usando esto para mí, en el mismo corredor, etc.

1. Si nunca va a colocar una operación manual en cualquiera de los mismos pares... entonces puede trabajar sin Números Mágicos... si se olvida y pasa a colocar una operación manual en uno de los pares en los que tiene este EA corriendo, entonces el EA gestionará su operación manual también... si lo codifica correctamente entonces esto no será un problema.

2. Por ejemplo, el código que ha publicado tiene un deslizamiento de 3... en un corredor de 5 dígitos esto equivale a un deslizamiento de 0,3 pips... si lo codifica correctamente, 3 siempre significará 3 pips tanto en un corredor de 4 como de 5 dígitos y entonces tendrá menos margen de error. No codificarlo correctamente es un atajo que probablemente le costará tiempo a largo plazo...

 
unclebigpete:

Y lo he probado, y funciona bien, sin errores, sin advertencias. Entonces, ¿por qué no funciona en un gráfico en vivo? (Todavía no he implementado las sugerencias anteriores)
¿ Lo has probado en el Probador de Estrategias? ¿ Dónde has buscado los errores ?
 
Sí, lo he probado en el probador de estrategias, y lo he compilado, obteniendo larespuesta "sin errores, sin advertencias".
 

Al aquí está el mío :

Disciplínate con la codificación, el primer parámetro de iCustom es <string Symbol>, utiliza Symbol() o NULL en lugar de cero.

MetaEditor > Ventana del Navegador (Ctrl +D) > pestaña diccionario > Indicador técnico > iCustom

int QQE_4hr    = iCustom( Symbol(), 240, "c_QQEA",  SF,     RSI_Period,    DART_Factor,     0, 1 );
int QQE_4hr_2  = iCustom( Symbol(), 240, "c_QQEA",  SF,     RSI_Period,    DART_Factor,     0, 2 );

Si usas el turno 1 y 2 en un gráfico de 4 horas, será muy largo.

El order select que te comento antes, escríbelo así.

MetaEditor > Ventana del Navegador (Ctrl +D) > pestaña diccionario > Funciones comerciales > OrderSelect()

for(int i=0; i<Total; i++)
     {
      if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
      if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())
        {

Ya escribiré más sobre eso de OrderSelect().

Hay 2 cierres de órdenes, escríbalos así, los dos

MetaEditor > Ventana del Navegador (Ctrl +D) > pestaña diccionario > Funciones comerciales > OrderClose()

OrderClose(OrderTicket(),
           OrderLots(),
           OrderClosePrice(),//Bid,
           Slippage,
           MediumSeaGreen);

Y tengo un enfoque diferente al de RaptorUK, que da el mismo resultado sin embargo, hay 2 de estos, y tienes que cambiar ambos

if (Ticket > 0)
  {
  if(OrderSelect(Ticket,SELECT_BY_TICKET,MODE_TRADES))
     {
      Print("SELL order opened : ",
             OrderOpenPrice());
             if(SignalMail)
                SendMail("[Signal Alert]",
                         "["
                         +Symbol()
                         +"] "
                         +DoubleToStr(Bid,Digits)
                         +" Open Sell");
       } // if(Order... // ==>> moved from below 
     } // if(Ticket...   
     else
     {
     Print("Error opening SELL order : ",
           GetLastError());
     } // else
   } ==>> move this parenthesis up there

Que te diviertas

:)

 
unclebigpete:
Sí, lo probé en el probador de estrategias, y lo compilé, obteniendo larespuesta "sin errores, sin advertencias".
Bien, entonces no hay errores cuando se compila... ¿qué pasa con los errores cuando se ejecuta en el Probador de Estrategias? Ejecútelo de nuevo y mire en la pestaña Diario. . .
 

Lo he ejecutado ahora mismo en audnzd desde el 17/05 hasta el 22/05, y ha abierto 3 operaciones, 2 compras que se han detenido, y una venta que se ha cerrado al final de la prueba.

Aquí está la información del Diario, la línea superior primero.

2012.05.22 21:38:51 QQE-4hr_15min- testing-2205: cargado con éxito

2012.05.22 21:38:53 QQE-4hr_15min- testing-2205 inputs: MagicNumber=0; Lots=1; Slippage=3; StopLoss=300; TakeProfit=1000; TrailingStop=300; Nbr_Period=10; Multiplier=3;

2012.05.22 21:38:53 2012.05.17 00:00 c_QQEA AUDNZD,H4: cargado con éxito

2012.05.22 21:38:53 2012.05.17 00:00 c_QEA AUDNZD,M15: cargado con éxito

2012.05.22 21:39:13 2012.05.17 16:00 QQE-4hr_15min- testing-2205 AUDNZD,H4: open #1 buy 1.00 AUDNZD at 1.29960 sl: 1.29660 ok

2012.05.22 21:39:13 2012.05.17 16:00 QQE-4hr_15min- testing-2205 AUDNZD,H4: orden de COMPRA abierta : 1.2996

2012.05.22 21:39:13 2012.05.17 18:32 Tester: stop loss #1 en 1.29660 (1.29660 / 1.29698)

2012.05.22 21:39:15 2012.05.18 20:00 QQE-4hr_15min- testing-2205 AUDNZD,H4: open #2 buy 1.00 AUDNZD at 1.30386 sl: 1.30086 ok

2012.05.22 21:39:15 2012.05.18 20:00 QQE-4hr_15min- testing-2205 AUDNZD,H4: orden de COMPRA abierta : 1.3039

2012.05.22 21:39:15 2012.05.18 23:09 Tester: stop loss #2 en 1.30086 (1.30083 / 1.30121)

2012.05.22 21:39:16 2012.05.21 16:00 QQE-4hr_15min- testing-2205 AUDNZD,H4: open #3 sell 1.00 AUDNZD at 1.29739 sl: 1.30039 ok

2012.05.22 21:39:16 2012.05.21 16:00 QQE-4hr_15min- testing-2205 AUDNZD,H4: orden de VENTA abierta : 1.2974

2012.05.22 21:39:17 2012.05.21 23:59 Tester: la orden #3 está cerrada

2012.05.22 21:39:17 2012.05.21 23:59 c_QQEA AUDNZD,M15: eliminado

 
Su deslizamiento puede ser el problema. El backtesting nunca utiliza el slippage. Leer Características de las pruebas y el límite en MetaTrder4https://www.mql5.com/en/articles/1512
Razón de la queja: