¿Cómo codificar? - página 39

 

mish

He tenido un momento de tiempo libre y he intentado captar tu intención tal y como la he entendido.

Archivos adjuntos:
advicerr.txt  2 kb
 

Gracias

Gracias ralph.ronnquist

estas funciones son exactamente lo que necesito y serán de utilidad para otros que busquen la misma función

Estaba atrapado de lo contrario habría dado las gracias antes sobre todo porque tomó el esfuerzo

¿Hay una forma sencilla de cambiar la función para que funcione en el probador de estrategias? ¡Sé que los resultados de trabajar con una sola moneda en el probador es casi inútil, excepto que imita muy aproximadamente lo que necesito con el fin de obtener el derecho de matemáticas, cualquier ayuda es apreciada y nunca habría trabajado el código en poco tiempo así que una vez más gracias!

 

EA basado en DT_ZZ.mq4

Estoy teniendo un poco de problemas con este.

Tengo el indicador DT_ZZ.mq4 y por lo que veo es muy prometedor. Sé que este indicador redibuja y así es como veo que funciona.

Si una flecha y una sección son iguales, entonces espera a que se cierre la barra y luego compra/vende en consecuencia.

¿Alguien cree que puede ayudar con eso? (El código se publica a continuación)

//+------------------------------------------------------------------+

//| DT_ZZ.mq4 |

//+------------------------------------------------------------------+

// optimizado por Rosh

#property indicator_chart_window

#property indicator_buffers 3

#property indicador_color1 Verde

#propiedad indicador_color2 Azul

#property indicador_color3 Rojo

//---- parámetros del indicador

extern int ExtDepth=12;

extern int calculateLevel=2;

//---- búferes del indicador

double zzL[];

double zzH[];

double zz[];

//+------------------------------------------------------------------+

//| Función de inicialización de los indicadores personalizada ||.

//+------------------------------------------------------------------+

int init()

{

//IndicatorBuffers(3);

//---- ajustes de dibujo

SetIndexStyle(0,DRAW_SECTION);

SetIndexStyle(1,DRAW_ARROW);

SetIndexStyle(2,DRAW_ARROW);

SetIndexArrow(1,159);

SetIndexArrow(2,159);

//---- mapeo de los buffers de los indicadores

SetIndexBuffer(0,zz);

SetIndexBuffer(1,zzH);

SetIndexBuffer(2,zzL);

SetIndexEmptyValue(0,0.0);

SetIndexEmptyValue(1,0.0);

SetIndexEmptyValue(2,0.0);

//---- nombre corto del indicador

IndicatorShortName("DT_ZZ("+ExtDepth+")";

//---- inicialización realizada

return(0);

}

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

int inicio()

{

int i,shift,pos,lasthighpos,lastlowpos,curhighpos,curlowpos;

double curlow,curhigh,lasthigh,lastlow;

double min, max;

int barras_contadas=IndicadorContado();

if (counted_bars==0)

{

ArrayInitialize(zz,0.0);

ArrayInitialize(zzL,0.0);

ArrayInitialize(zzH,0.0);

lasthighpos=Bar; lastlowpos=Bar;

lastlow=Low;lasthigh=High;

Print("limit=",Bares-ProfundidadExterna);

for(shift=Barras-ProfundidadExterna; shift>=0; shift--)

{

curlowpos=Lowest(NULL,0,MODE_LOW,ExtDepth,shift);

curlow=Low[curlowpos];

curhighpos=Más alto(NULL,0,MODE_HIGH,ExtDepth,shift);

curhigh=Alto[curhighpos];

//------------------------------------------------

if( curlow>=lastlow ) { lastlow=curlow; }

else

{

//???? ????

if( lasthighpos>curlowpos )

{

zzL[curlowpos]=curlow;

///*

min=100000; pos=lasthighpos;

for(i=lasthighpos; i>=curlowpos; i--)

{

si (zzL==0,0) continúa;

si (zzL<min) { min=zzL; pos=i; }

zz=0,0;

}

zz[pos]=min;

//*/

}

lastlowpos=curlowpos;

lastlow=curlow;

}

//--- alto

if( curhigh<=lasthigh ) { lasthigh=curhigh;}

else

{

// ???? ?????

if( lastlowpos>curhighpos )

{

zzH[curhighpos]=curhigh;

///*

max=-100000; pos=lastlowpos;

for(i=lastlowpos; i>=curhighpos; i--)

{

si (zzH==0,0) continuar;

si (zzH>max) { max=zzH; pos=i; }

zz=0,0;

}

zz[pos]=max;

//*/

}

lasthighpos=curhighpos;

lasthigh=curhigh;

}

zz[0]=Cerrar[0];

}

//----------------------------------------------------------------------

}

else

{

int pos2;

i=0;

while (pos2<calculateLevel && i<Bars-1)

{

if (zz!=0 && (zzH!=0||zzL!=0)) pos2++;

i++;

}

pos2=i-1;

for (i=pos2-1;i>=0;i--)

{

zzH=0;

zzL=0;

zz=0;

}

si (zzH[pos2]!=0)

{

lasthighpos=pos2;

lasthigh=High[pos2];

lastlowpos=Lowest(NULL,0,MODE_LOW,ExtDepth,pos2);

lastlow=Low[lastlowpos];

}

else

{

lastlowpos=pos2;

lastlow=Low[pos2];

lasthighpos=Highest(NULL,0,MODE_HIGH,ExtDepth,pos2);

lasthigh=High[lasthighpos];

}

//------------------------- ????????? ??????

Print("limit=",pos2-1);

for(shift=pos2-1; shift>=0; shift--)

{

curlowpos=Lowest(NULL,0,MODE_LOW,ExtDepth,shift);

curlow=Low[curlowpos];

curhighpos=Más alto(NULL,0,MODE_HIGH,ExtDepth,shift);

curhigh=Alto[curhighpos];

//------------------------------------------------

if( curlow>=lastlow ) { lastlow=curlow; }

else

{

//???? ????

if( lasthighpos>curlowpos )

{

zzL[curlowpos]=curlow;

///*

min=100000; pos=lasthighpos;

for(i=lasthighpos; i>=curlowpos; i--)

{

si (zzL==0,0) continúa;

si (zzL<min) { min=zzL; pos=i; }

zz=0,0;

}

zz[pos]=min;

//*/

}

lastlowpos=curlowpos;

lastlow=curlow;

}

//--- alto

if( curhigh<=lasthigh ) { lasthigh=curhigh;}

else

{

// ???? ?????

if( lastlowpos>curhighpos )

{

zzH[curhighpos]=curhigh;

///*

max=-100000; pos=lastlowpos;

for(i=lastlowpos; i>=curhighpos; i--)

{

si (zzH==0,0) continuar;

si (zzH>max) { max=zzH; pos=i; }

zz=0,0;

}

zz[pos]=max;

//*/

}

lasthighpos=curhighpos;

lasthigh=curhigh;

}

}

//------------------------- ????????? ??????

zz[0]=Cerrar[0];

}

return(0);

}

//+------------------------------------------------------------------+
 

¿se puede alterar esto en 4 strategy tester?

ralph.ronnquist

me ha proporcionado generosamente una gran función que muchos pueden beneficiarse de que requieren su uso.

Mi problema es porque soy tan pésimo actualmente en la programación que parece que no puede alterar lo suficiente 4 probador de la estrategia.

Para propósitos de prueba sólo una moneda es satisfactoria sólo para trabajar las matemáticas de los oficios en diferentes circunstancias con diferentes monedas.

¿Es posible cambiar el trabajo de Ralph para adaptarse a esta necesidad.

Gracias

Archivos adjuntos:
ralph.txt  2 kb
 

En principio sólo habría que cambiar la cadena "EURCHF" por "EURUSD". Es decir, para trabajar con "EURUSD" largo frente a "EURUSD" corto.

 

Lo he intentado

Gracias por tu respuesta pero lo he intentado sin éxito. El código que has proporcionado nos ha enseñado a mi novia y a mí lo poco que sabemos de programación.

Muchas gracias.

 

Hmm. La única "maldad" que puedo ver por adelantado es la prueba "v == cut", que compara dos números dobles para la igualdad. Tal vez funcione mejor mirar sólo las cantidades completas de $, y así cambiar "euprofit", "ecprofit", "cut" y "v" para ser de tipo "int"?

 
NTrader:
Pregunta trivial: Estoy escribiendo un nuevo Indicador Personal por primera vez. No puedo ver los registros que hago con el comando Print ( "...") en el método start{}. ¿Dónde puedo verlos en MetaTrader 4?

Ok, uso el comando Comment()..

 

Aquí Dumbo

Hola a todos

Este es un gran hilo para alguien como yo que no sabe nada de programación. Tiene mucha información útil y muchos pedacitos de código que podría copiar y jugar.

Espero que alguien me pueda ayudar con este pedazo.Quiero hacer un EA basado en el precio. Que debo introducir en el código para decir lo siguiente:

1) Quiero que el EA mire el precio a las 20:00 en el gráfico horario y vea cuál es su relación con la 100sma.

2) Si el precio está por encima de la 100sma, quiero que abra 2 órdenes de compra a un nivel determinado.

3) Estos niveles se basan en el precio de cierre de la vela de las 16:00, así que si la vela de las 16:00 es 1.2000, quiero que abra una compra en 1.1120 y 1.2080

Tengo los stops y los trailing stops y los niveles de ganancia elaborados y demás, todos los códigos sacados de este thred. Así que agradezco a los que los publicaron. I

Estaré eternamente en deuda si alguien puede ayudarme en esto.

Saludos cordiales

Susan

 

Ayuda

Hola a todos

He intentado crear un EA y me ha aparecido el siguiente mensaje de error

'\ fin_del_programa' - paréntesis de finalización '}' esperado C:\...\Mi_primer_EA.mq4(96,1)

He hecho doble clic, he llegado a la línea, luego la he comprobado con los corchetes de finalización de apertura anteriores, y todavía no sé dónde me he equivocado.

Este es el segundo EA que pruebo, con el mismo mensaje de error, basado en el mismo indicador.

Gracias.