Preguntas básicas ... - página 2

 

Intentaré explicarme:

Supongamos que tengo 3 sistemas diferentes:

el sistema 1 funciona mejor en el gráfico EUR/USD 1M.

el sistema 2 funciona mejor en el gráfico EUR/USD 5M.

El sistema 3 funciona mejor en el gráfico EUR/USD 1H.

Ahora quiero que mi asesor experto abra 1 posición por gráfico y no más. En otras palabras, quiero abrir 1 posición sólo para el sistema 1, 1 posición para el sistema 2, y 1 para el sistema 3.

La solución anterior que escribió limitar 1 posición por símbolo, y ahora quiero limitar 1 posición por tipo de gráfico...

 

. En otras palabras, quiero abrir 1 posición sólo para el sistema 1, 1 posición para el sistema 2 y 1 para el sistema 3.

OK

entonces trabajas con el número MAGIC por sistema

#property copyright "system 1"

#property link ""

#define MAGIC 01901

.

.

.

if ( ExistPosition() == False) {

OrderSend(Symbol(),op,Lots,pp,SLIPPAGE,ldStop,ldTake,lsComm,MAGIC,0,clOpen); // MAGIC = system 1

}

// if open 1 position only for system 1 MAGIC ?

bool ExistPosition() {

bool Exist=False;

for (int i=0; i<OrdersTotal(); i++) {

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

if (OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC) Exist=True;

}

}

return(Exist);

}

¿puede publicar sus sistemas?

 

¡10x!

No tengo un sistema específico. Era sólo un ejemplo.

Soy nuevo en metaTrader y que era una pregunta básica que tenía ...

Tan pronto como voy a escribir algo bueno' Voy a subir aquí para los comentarios ...

 

¿Cómo hacer que un EA opere una vez por vela?

Me preguntaba si hay un trozo de código que pueda añadir a un EA para que sólo opere una vez por vela.

Gracias de antemano

 
basza:
Me preguntaba si hay un trozo de código que pueda añadir a un EA para que solo opere una vez por vela.Gracias de antemano

static datetime timeprev;

if(timeprev==Time[0]) {

return(0); //sólo se ejecuta en la nueva barra

} else if (timeprev==0) {

timeprev=Time[0]; //no hace nada si se acaba de añadir al gráfico

return(0);

} else {

timeprev=Time[0];

// procesamiento de la barra aquí

}

 
ra300z:
static datetime timeprev;

if(timeprev==Time[0]) {

return(0); //sólo se ejecuta en una nueva barra

} else if (timeprev==0) {

timeprev=Time[0]; //no hace nada si se acaba de añadir al gráfico

return(0);

} else {

timeprev=Time[0];

// procesamiento de la barra aquí

}

Gracias ra300z

 

¿Mostrar el objetivo de porcentaje?

Hola

Estoy intentando mostrar un objetivo de porcentaje en forma de comentario dentro de un ea.

Tengo este trozo de código que muestra el saldo actual como un comentario:

"Objetivo porcentual : " + AccountBalance()"\n"

Al inicio del ea tengo lo siguiente:

extern int PorcentajeDeGanancia=25;

Ahora lo que quiero hacer es : AccountBalance * ProfitPercentage y mostrar los resultados. eg. $5675.69 * 25% = $1418.92 y mostrar solo $1418.69.

Gracias de antemano

 

hola guyss....

1:cómo hacer que el EA para el comercio sólo una vez persignal..( lo que quiero decir es el código)

por ejemplo el ma cross EA... cuando el ma cruza hacia arriba y con el objetivo de 20 pip se cerrara pero cuando la tendencia es continuar tratara de abrir otro comercio ya que el ma rapido todavia esta por encima del ma lento.solo tiene que abrir otro comercio cuando el ma cruza hacia abajo.

fast ma > slow ma = sólo necesita una señal de trading

fast ma < slow ma = también necesita una sola señal de trading

2:¿hay alguna manera de poner un tiempo de retraso en el cruce? Sólo sé que la separación de pips (como sea que lo llamen) significa que esperará tal vez 10-15 pips después del cruce y sólo abrirá una operación.

Sólo un novato tratando de aprender el lenguaje mq4:)

 

una forma sería hacer que el EA se fije en las lecturas históricas de la MA y no en las actuales. En principio así sería:

// Recognise past crossing (up or down)

if ( fast( past+1 ) slow( past ) )

then cmd = OP_BUY;

else if ( fast( past+1 ) >= slow( past+1 ) && fast( past ) < slow( past ) )

then cmd = OP_SELL;

else return;

// If processing reaches this point, then a trade decision of either OP_BUY

// or OP_SELL has been made, due to recognising a supporting MA crossing

// at "past" number of bars in history.

// Limit to only one trade in a direction

static int last_trade = -1;

if ( last_trade == cmd ) return;

last_trade = cmd;

// If processing reaches this point, then this processing is the first time

// that the supporting MA crossing is recognised.

Que tomara una decisión en el número "pasado" de barras siguientes a la barra donde se produce el cruce, y sólo permitiera una operación la primera vez que se detecta el cruce.

 

gracias hermano por el código...

Razón de la queja: