¿Cómo codificar? - página 77

 

¡Ichimoku Kinko Hyo Cross sólo abre compras!

Hola a todos,

He estado programando durante las últimas semanas y viene a lo largo razonablemente bien. Pero he llegado a un punto en el que mi último sistema bastante simple que estoy tratando de código no funciona para mí. Lo he reescrito unas cinco veces, utilizando un código diferente, probando con los constructores de Asesores Expertos y alterando otras estrategias cruzadas, etc., pero el sistema sólo abre operaciones de compra. (Entre otros problemas que tengo) cualquier ayuda sería muy apreciada ya que parece que podría ser un sistema rentable. (Ok todo el mundo parece pensar esto al programarlos, pero los backtests manuales barra por barra muestran un resultado positivo).

EL SISTEMA: Configuración de los gráficos

El indicador Ichimoku Kinko Hyo con la configuración por defecto 9,26,52. Sólo muestra las líneas Tenkan-Sen y Kijun-Sen, oculta las líneas Senkou y Chikou.

PRIMERA ENTRADA (explicada para largo/compra - lo mismo se aplica para vender en dirección op.)

El Tenkan-Sen cruza el Kijun-Sen y el precio está por encima del KIJUN-Sen. Stop loss la cantidad del spread de los pares por debajo del Tenkan-Sen. Seguimiento con stop en el Kijun-Sen - spread pips a menos que se produzca la señal de reversión (donde se cierra).

RE-ENTRADA (a veces algunas operaciones se paran antes de coger el "gran paseo"

Si se alcanza el stop loss, antes de que se crucen el Tenkan-Sen y el Kijun-Sen se puede reabrir la posición si el precio cierra por encima del TENKAN-Sen y el Tenkan-Sen sigue por encima del Kijun-Sen. Stop loss como antes.

RESUMEN

Entrar en largo cuando el Tenkan-Sen cruza por encima del Kijun-Sen. Stop loss a una distancia de spreads por debajo del Kijun-Sen. Si se detiene antes de cruzar y se produce la inversión, puede volver a entrar en una posición larga si el precio sube por encima del Tenkan-Sen. No hay Take Profit, sólo sigue el stop loss en el Kijun-Sen.

Este sistema tiende a gustar de las tendencias, pero las pérdidas no deberían ser demasiado grandes en los mercados de rango limitado. Planeo operar en TF's diarios pero posiblemente otros cuando tenga el Expert funcionando. De hecho, en algunos mercados que he probado, el EA es rentable por el momento, ¡incluso antes de que funcione correctamente!

Adjunto el MQ4 por si alguien puede descifrar en qué me estoy equivocando.

Gracias,

Howard

P.D. Sería estupendo recibir algo de ayuda en esto ya que mañana es mi cumpleaños y sería muy agradable recibir algo de ayuda.

También pido disculpas a todos los practicantes de Ichimoku que creen que no debería ser automatizado, ya que está destinado a operar el mercado "de un vistazo". Sin embargo, creo que el indicador es tan maravilloso, especialmente el Kijun-Sen, que opera justo fuera de los retrocesos en muchas tendencias largas, que es perfecto para la automatización.

Archivos adjuntos:
ikh_pro.mq4  5 kb
 
gmax111:
estoy escribiendo un EA que compra y vende los cruces de la EMA.. Quiero filtrarlo comprobando si los últimos 10 cierres de barras estuvieron por encima de la EMA antes de comprar... ¿alguien me puede ayudar?

bool OkToBuy()

{

for(int j = 1, j < 11, j ++) if(Close[j] < EMA) return(false);

return(true);

}

 
Michel:

bool OkToBuy()

{

for(int j = 1, j < 11, j ++) if(Close[j] < EMA) return(false);

return(true);

}

Muchas gracias por esto Michel..

Esta era una de esas cosas que me dejaban perplejo pero ahora me siento como un tonto por pensar demasiado.. jaja. ¡¡¡GRACIAS DE NUEVO!!!

 

¡¡Como Codificar!!

Creo Que Esta Ea Es Muy Buena...

Pero Solo Abre Un Pedido En Un Par...¿Por Qué?

 

A adria

adria

Me he interesado por tu problema y he jugado con él.

Parece que tienes que hacer algo así:

Primero, declarar globalmente Var1, Var2.

Luego prueba esto

if (Hour() == 12) Var1 = iHigh(NULL,0,1);

if (Hour() == 12) Var2 = iLow(NULL,0,1);

El Navegador del Metaeditor da una explicación de Hour().

Busque en TSD "horas de negociación" para más ejemplos.

Si tu EA promete, ¿podrías enviarme una copia?

Big Be

 

A Big Be

He creado un EA similar. Usted tiene que cambiar el valor de TIEMPO de acuerdo a su

tiempo del gráfico.

Archivos adjuntos:
 

necesito ayuda con esta función closealltrades

Me he dado cuenta de que el broker a veces vuelve a cotizar el precio haciendo que el EA no cierre

la orden. ¿Cómo puedo evitar que el EA continúe hasta que todas las órdenes de acuerdo a su número mágico se cierren?

de acuerdo a su número mágico, tal vez poner una función de sueño durante 5 segundos y

un bucle while para comprobar y cerrar las órdenes antes de continuar. Abajo está la función

función closealltrades. Aprecio la ayuda y gracias de antemano.

void CloseAllTrades()

{

int rc

int cnt;

for(cnt=OrdersTotal()-1;cnt>=0;cnt--)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if (OrderMagicNumber()==GetMagicNumber())

{

rc= OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), MarketInfo(OrderSymbol(), MODE_SPREAD), Yellow);

if(!rc)

Log("Error de cierre="+GetLastError());

}

}

}

 
hedge4x:
Me doy cuenta de que el broker a veces vuelve a cotizar el precio haciendo que el EA no se cierre

la orden. ¿Cómo puedo evitar que el EA continúe hasta que todas las órdenes según su número mágico se cierren?

según su número mágico, tal vez poner una función de sueño durante 5 segundos y

un bucle while para comprobar y cerrar las órdenes antes de continuar. Abajo está la función

función closealltrades. Aprecio la ayuda y gracias de antemano.

void CloseAllTrades()

{

int rc

int cnt;

for(cnt=OrdersTotal()-1;cnt>=0;cnt--)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if (OrderMagicNumber()==GetMagicNumber())

{

rc= OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), MarketInfo(OrderSymbol(), MODE_SPREAD), Yellow);

if(!rc)

Log("Error de cierre="+GetLastError());

}

}

}

bool IsAllClosed ; //Global variable

void CloseAllTrades()

{

int cnt;

IsAllClosed = true;

for(cnt=OrdersTotal()-1;cnt>=0;cnt--)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if (OrderMagicNumber()==GetMagicNumber())

IsAllClosed = IsAllClosed && OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), MarketInfo(OrderSymbol(), MODE_SPREAD), Yellow);

}

}

void start()

{

while(!IsAllClosed) {CloseAllTrades(); return;}

...

 

gracias

Gracias Michel por tu ayuda.

Lo probaré.

 

Esta línea while(!IsAllClosed) {CloseAllTrades(); return;}

en el inicio principal cerrará todas las posiciones abiertas si MT cae

y lo vuelvo a iniciar. ¿Hay alguna manera de poner esta línea

en la función closealltrades para que no cierre todas las posiciones abiertas

después de reiniciar MT4?

Gracias.