¿Cómo codificar? - página 120

 
denis68:
matrixebiz ¿qué quieres decir con rem'ing a cabo estas dos líneas, y cómo lo hago, i can;t conseguir en el código del indicador de CA que he intentado,

Usted abre Accelerator.mq4 en MetaEditor (está en su carpeta de Indicadores) y poner // delante de esas dos líneas y luego guardar como un nuevo nombre AcceleratorMod.mq4 luego haga clic en compilar.

Archivos adjuntos:
 
hiachiever:
No, eso no es correcto.

En el bucle for está comenzando en 6 y disminuyendo hasta 1. Esto significa que en el bucle final que ejecuta el bucle for lleva a cabo la comprobación "si (i == 1) qqeacross = True;". El resultado final es que la salida será verdadera si qqeacross ha ocurrido.

El único problema que esto puede presentar es si qqeacross fue establecido como verdadero en un looop anterior. Para superar esto debe tener qqeacross = false; antes del bucle for. De esta forma te aseguras que si qqeacross = true, entonces fue establecido por el bucle que acaba de terminar.

Saludos,

hiachiever

Así que incluso si dice "si (i == 1) qqeacross = True;" y luego i=4 (debido a la cuenta atrás) , qqeacross seguirá siendo = True?

 

¡Gracias hiachiever!

hiachiever:
La forma de hacerlo es crear un vriable en el ámbito global (es decir, antes de init)

por ejemplo

int CuentaBar;

int init ()

Entonces en su código de stop loss utilice lo siguiente:

if (BarCount<Bars)

{

SL=iLow(Symbol(),Period(),iLowest(Symbol(),Period(),MODE_LOW,StopLossBars,0));

StopLossBars++;

BarCount=Bares;

}

Esto incrementará StopLossBars en 1 en cada nueva barra.

La única otra adición a su código sería restablecer 'StopLossBars' a su valor original por defecto cuando se abre una nueva operación.

Saludos,

Hiachiever

Gracias, hiachiever, ha sido muy amable por tu ayuda aunque me gustaría pedirte otro pequeño favor.

Creo que entiendo cómo funciona tu código y estoy seguro de que puedo copiarlo en mi EA . Sin embargo, no estoy seguro de cómo restablecer las StopLossBars a su valor predeterminado. Este es el código al final del EA para ir en largo o en corto:

void goLong()

{

int ticket = OrderSend(Symbol(),OP_BUY,GetLots(100),Ask,maxSlippage,0,0,"Long",MagicNumber,0,Green);

if (screenshots) WindowScreenShot(Symbol()+Period()+"_"+Hour()+Minute()+"_.gif",1024,768);

if (showAlerts) Alert(Symbol()+" "+Period()+" TrendLevel at "+DoubleToStr(Level,0)+": Going Long");

Print(Symbol()+" "+Period()+" TrendLevel at "+DoubleToStr(Level,0)+": Going Long");

}

void goShort()

{

int ticket = OrderSend(Symbol(),OP_SELL,GetLots(100),Bid,maxSlippage,0,0,"Short",MagicNumber,0,Red);

if (screenshots) WindowScreenShot(Symbol()+Period()+"_"+Hour()+Minute()+"_.gif",1024,768);

if (showAlerts) Alert(Symbol()+" "+Period()+" TrendLevel at "+DoubleToStr(Level,0)+": Going Short");

Print(Symbol()+" "+Period()+" TrendLevel at "+DoubleToStr(Level,0)+": Going Short");

}

double stopLoss(int ordertype)

¿Podría ser tan amable de ayudar con algún código para restablecer el StopLossBars por favor?

Gracias de nuevo.

 

matrixebiz lo he hecho ahora no puedo compilar mi ea cuando he añadido las siguientes líneas a mi ea

double ac1 = iCustom(NULL, 0, "AcceleratorMod", 1, 1);

double ac2 = iCustom(NULL, 0, "AcceleratorMod", 2, 1);

double ac11 = iCustom(NULL, 0, "AcceleratorMod", 1, 2);

double ac22 = iCustom(NULL, 0, "AcceleratorMod", 2, 2);

bool acbuy = ac2==0 && ac11==0; // El rojo cambia a Cal

bool acsell = ac1==0 && ac22==0; // El color lima cambia a rojo

Me da 12 errores: AC variable no definida :

y me gustaría agradecer la ayuda

 

Supongo que StopLossBars es una variable global que se establece a través de las entradas del usuario ¿verdad?

Bueno, lo que yo haría es algo como esto.

Haga que la variable de entrada del usuario sea algo así como gStopLossBars y luego en su función init asignarla a su variable local como...

StopLossBars = gStopLossBars;

Luego simplemente use la misma asignación en sus funciones de compra y venta para restablecer StopLossBars.

¿Tiene sentido?

Espero que esto ayude.

Lux

 

Ac+ao+psar

Hola a todos,

¿Alguien puede combinar AC+AO+PSAR para convertirse en un nuevo indicador con alerta/correo electrónico? Por favor, pónganse en contacto conmigo. Gracias

 
luxinterior:
Supongo que StopLossBars es una variable global que se establece a través de las entradas del usuario, ¿verdad?

Bueno, lo que yo haría es algo como esto.

Haz que la variable de entrada del usuario sea algo así como gStopLossBars y luego en tu función init asígnala a tu variable local como...

StopLossBars = gStopLossBars;

Luego simplemente use la misma asignación en sus funciones de compra y venta para restablecer StopLossBars.

¿Tiene sentido?

Espero que eso ayude.

Lux

Eso tiene mucho sentido. Muchas gracias.

 

¿Cómo puedo detectar el inicio de una nueva vela?

Por favor, alguien me aconseja cómo puedo crear un EA que haga una orden pendiente cuando la nueva barra de inicio (TF diario)?

gracias

 
:: ¡hola! comprueba el código dentro de este indicador... (solo para su tiempo de apertura, no es un EA)
tcl:
por favor alguien me aconseja como puedo crear un EA que haga una orden pendiente cuando la nueva barra comience (TF diario) ? gracias
 

¿Puede alguien evitar que esto se repita y se repita?

void BEM ()

{

int pips;

for (int k=0; k<OrdersTotal ();k++)

{

OrderSelect(k, SELECT_BY_POS, MODE_TRADES);

if(OrderType()==OP_BUY && OrderSymbol()== Symbol () && OrderMagicNumber()== Magic)

{

pips = (Bid - OrderOpenPrice())/Punto;

if ((pips >= BE) && (OrderStopLoss() < OrderOpenPrice()))

{

OrderModify (OrderTicket (), OrderOpenPrice (),OrderOpenPrice ()+ 12*Point, OrderTakeProfit (), 0, LightBlue);

}

}

if(OrderType()==OP_SELL && OrderSymbol()== Symbol () && OrderMagicNumber()== Magic)

{

pips = (OrderOpenPrice() - Ask)/Punto;

si ((pips >= BE) && (OrderStopLoss() > OrderOpenPrice()))

{

OrderModify (OrderTicket (), OrderOpenPrice (),OrderOpenPrice ()- 12*Point, OrderTakeProfit (), 0, Pink);

}

}

}

}

Razón de la queja: