[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 1127

 
drknn:
Muchas gracias por su ayuda =)
 
Alexandr24:
Muchas gracias por su ayuda =)


No olvides que en el probador el indicador no tira la ventana de alerta, sino que escribe los mensajes de alerta en los registros. Es mejor depurar estos trozos de código con scripts, es más rápido.

Además, los mensajes del indicador, curiosamente, no se escriben en el probador en los registros del probador, sino en los registros en tiempo real.

 
¿Cómo considero la comisión cuando pruebo un EA en el probador?
 
Parece que se tiene en cuenta como el probador utiliza todos los ajustes de un corredor en particular. Una búsqueda le dirá con más precisión.
http://www.google.ru/search?as_sitesearch=mql4.com&as_q=%EA%EE%EC%E8%F1%F1%E8%FF+%E2+%F2%E5%F1%F2%E5%F0%E5
 
Abzasc:

"No es una tarea sencilla.

Puedes hacerlo así.

O también encontré esto


Gracias.
 

No entiendo muy bien cómo funcionan las condiciones.

Decidí averiguar cómo funciona un indicador fractal, qué diferencia hay entre MODE_UPPER y MODE_LOWER, y escribí el siguiente código

int start()
{int y;
y= WindowFirstVisibleBar();Alert ("y",y);
for (;y>=0;y--)
{ double up=iFractals(Symbol(),PERIOD_M15,MODE_UPPER,y);
double down=iFractals(Symbol(),PERIOD_M15,MODE_LOWER,y);
if (up>=1|down>=1){
Alert("El fractal superior anterior es:", up, " El fractal inferior anterior es:", down);Alert ("y",y);}}

WindowFirstVisibleBar() da el número de barras en el gráfico, esto funciona si se tacha si (up>=1||down>=1) del EA, da una bonita serie de barras contadas, solo que hay tantas.

Es como un signo || o, el operador parece hacer los paréntesis {} si al menos una de las condiciones es verdadera, o ambas son verdaderas a la vez, ¿verdad?

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Nada ha cambiado para mí !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Creo que lo he hecho bien. Ayúdame !!!!!!!

 
Dimka-novitsek:

No entiendo muy bien cómo funcionan las condiciones.

He decidido entender cómo funciona un indicador fractal, cuál es la diferencia entre MODE_UPPER y MODE_LOWER.

int inicio()
{int y;
y= WindowFirstVisibleBar();Alert ("y",y);
for (;y>=0;y--)
{ double up=iFractals(Symbol(),PERIOD_M15,MODE_UPPER,y);
double down=iFractals(Symbol(),PERIOD_M15,MODE_LOWER,y);
si (arriba>=1||abajo>=1){
Alert("El fractal superior anterior es:", arriba, " El fractal inferior anterior es:", abajo);Alert ("y",y);}}

WindowFirstVisibleBar() da el número de barras en el gráfico, esta cosa funciona si se cruza si (up>=1|down>=1), da una bonita serie de barras calculadas, pero hay muchas.

Es como un signo || o, el operador parece hacer los paréntesis {} si al menos una de las condiciones es verdadera, o ambas son verdaderas a la vez, ¿verdad?

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Nada ha cambiado para mí !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Creo que todo es correcto. Ayúdame!!!!!!!



código normal lugar a través de contra-alt - M - respuesta más rápida ... sin exclamaciones.
 
vía contra-alt - M - ¿Y más detalles?
 
Dimka-novitsek:

Es como ||

https://docs.mql4.com/ru/basis/operations/bool

Una operación lógica OR.

Zy contra-alt - M es como el botón de empuje SRC y el código a través de él.

 
drknn:

He probado el código que has sugerido. El resultado es siempre el mismo: sigue abriendo operaciones durante el día. De nuevo, me gustaría mantener la opción de encendido/apagado.

Aquí están las variantes probadas:

extern bool WaitForNewDay = true;

void init()

{

SMB=Símbolo();

volver;

}

void start()

{

bool Trade=true;

if(WaitForNewDay){if(HistoryBuy(MAGICMA)+HistorySell(MAGICMA)!=0) Trade=false;}

if(CalculateCurrentOrders(Symbol())==0 && Trade)

{CheckForOpen(); return;}

}

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

int HistoriaCompra(int MAGICMA)

{int BuyOrders=0;

for (int i=OrdersHistoryTotal()-1;i>=0;i--) {

if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){

Print(",GetLastError()," ",i);

}

si no {

if(OrderSymbol()!= SMB || OrderMagicNumber()!= MAGICMA){ continue;}

if(OrderType()==OP_BUY){

if(OrderOpenTime()>=iTime(SMB,PERIOD_D1,0)){

BuyOrders++;

}

}

}

}

return(BuyOrders);

}

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

int HistoriaVenta(int MAGICMA){

int Órdenes de venta=0;

for (int i=OrdersHistoryTotal()-1;i>=0;i--){

if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){

Print(",GetLastError()," ",i);

}

si no {

if(OrderSymbol()!=SMB | OrderMagicNumber()!=MAGICMA){ continue;}

if(OrderType()==OP_SELL){

if(OrderOpenTime()>=iTime(SMB,PERIOD_D1,0)){

SellOrders++;

}

}

}

}

return(SellOrders);

}

//////////////Otra opción/////////////////////

extern bool WaitForNewDay = true;

Comercio=verdadero;

void init()

{

SMB=Símbolo();

if(WaitForNewDay) {Trade=false;}

volver;

}

void start()

{

if(WaitForNewDay) {if(HistoryBuy(MAGICMA)+HistorySell(MAGICMA)==0) Trade=true;}

if(CalculateCurrentOrders(Symbol())==0 && Trade)

{CheckForOpen(); Trade=false; return;}

}