¿Cómo codificar? - página 20

 

Acumulación de variables estáticas en la apertura

Quiero acumular una variable estática pero sólo una vez por barra. Si alguien puede sugerir una forma de hacerlo se lo agradecería. Mi problema es que se vuelve a acumular en cada tick cuando sólo quiero ejecutar el cálculo una vez por barra en el primer tick.

 

static datetime myTime = 0;

if(myTime != Time[0])

{

//hacer lo que se quiere hacer una vez abierta la nueva barra

myTime = Tiempo[0];

}

 
timbobo:
static datetime myTime = 0;

if(myTime != Time[0])

{

//haz lo que quieras que se haga una vez después de abrir la nueva barra

myTime = Tiempo[0];

}

¡Gracias timbobo!

 

Por favor, ayúdame estoy usando el código de la publicación anterior y su no trabajo 100%. Si obtengo 1 señal no va a comerciar, pero si va a obtener la segunda señal que el comercio. Su muy extraño por qué en el segundo comercio de la señal, pero en primera no?

 

Es necesario ver su EA para corregir.

 

necesito ayuda para codificar - trailing profit

¿alguien puede ayudarme a hacer el código o EA para trailing profit?

creo que es muy buena idea

 
yossi1177:
¿alguien puede ayudarme a hacer un código o EA para trailing profit? creo que es muy buena idea

exactamente lo contrario de trailing stop

 
yossi1177:
alguien puede ayudarme a hacer código o EA para trailing profit? creo que es muy buena idea

Bueno, llamarlo "trailing profit" es un poco equivocado porque no seguiría la acción del precio. Pero voy a ver lo que puedo hacer.

 
yossi1177:
alguien puede ayudarme a hacer código o EA para trailing profit? creo que es muy buena idea

Este es un simple código de trailing profit (PT) de 3 velas o más bien un trailing stop. Se activa por GapPT=número de pips en beneficio. Se adjunta un ejemplo de gráfico del método de 3 velas.

Wackena

extern int GapPT=10;

int c, n, p;

double LongPT, ShortPT;

c=0; p=0;

for(n=0;n<=6;n++)

{

if(High[c+1]Low[c+2]) {n--;}

c++;

p++;

if(n==3) break;

}

ShortPT=NormalizeDouble(High,Digits);

LongPT=NormalizeDouble(Low,Digits);

int total = OrdersTotal();

for(int cnt=0;cnt<total;cnt++) {

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderType()==OP_BUY && OrderClosePrice()-OrderOpenPrice() >= GapPT*Point)

{

OrderModify(OrderTicket(),OrderOpenPrice(),LongPT,OrderTakeProfit(),0,GreenYellow);

}

if(OrderType()==OP_SELL && OrderOpenPrice()-OrderClosePrice() >= GapPT*Point)

{

OrderModify(OrderTicket(),OrderOpenPrice(),ShortPT,OrderTakeProfit(),0,Red);

}

}
Archivos adjuntos: