Ayuda a la codificación - página 135

 

gracias mladen .....

pero no funciona ....

//+------------------------------------------------------------------+

//| text.mq4 |

//| Copyright 2013, MetaQuotes Software Corp. |

//| http://www.metaquotes.net |

//+------------------------------------------------------------------+

#property copyright "Copyright 2013, MetaQuotes Software Corp."

#property link "http://www.metaquotes.net"

#property indicator_chart_window

extern int timeframe1 = PERIOD_H1;

extern int timeframe2 = PERIOD_D1;

//+------------------------------------------------------------------+

//| Custom indicator initialization function |

//+------------------------------------------------------------------+

int init()

{

return(0);

}

//+------------------------------------------------------------------+

//| Custom indicator deinitialization function |

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| Custom indicator iteration function |

//+------------------------------------------------------------------+

int start()

{

int counted_bars=IndicatorCounted();

//----

string name1="";

string name2="";

color color1;

color color2;

double H1 = iClose(NULL,timeframe1,0);

double D1H = iHigh(NULL,timeframe2,1);

double D1L = iLow(NULL,timeframe2,1);

if(H1>D1H)

{

name1 = "up"; color1 = Blue;

}

if(H1<D1L)

{

name2 = "down"; color2 = Red;

}

ObjectCreate("signal",OBJ_LABEL,0,0,0,0,0);

ObjectSet("signal",OBJPROP_XDISTANCE,3);

ObjectSet("signal",OBJPROP_YDISTANCE,12);

ObjectSetText("signal",name1,12,"Tahoma",color1);

ObjectCreate("signal2",OBJ_LABEL,0,0,0,0,0);

ObjectSet("signal2",OBJPROP_XDISTANCE,59);

ObjectSet("signal2",OBJPROP_YDISTANCE,12);

ObjectSetText("signal2",name2,12,"Tahoma",color2);

//----

return(0);

}

//+------------------------------------------------------------------+

Archivos adjuntos:
1223123.png  22 kb
 
rizkyd:

gracias mladen .....

pero no funciona ....

Creo que esta paz de código puede interesarte.

En vez de usar objeto gráfico he usado buffers normales.

Este indi compara SIEMPRE H1 y D1

Así, no marcará precios por encima del timeframe H1, pero sí

marcará en timeframes iguales o inferiores a H1. A veces

veces se ve extraño, en los marcos de tiempo más bajos (como marcar las barras

demasiado temprano), pero si usted mira más de cerca el cambio de hora, entonces es

bien.

dhl_e.mq4

Archivos adjuntos:
dhl_e.mq4  3 kb
gbpusdh1.png  30 kb
 
Kalenzo:
Creo que esta paz de código podría interesarte.

En lugar de utilizar el objeto gráfico he utilizado los buffers normales.

Este indi compara SIEMPRE H1 y D1

Así, no marcará los precios por encima del timeframe H1, pero sí

marcará en marcos de tiempo iguales o inferiores a H1. A veces

a veces se ve extraño, en los marcos de tiempo más bajos (como marcar las barras

demasiado temprano), pero si usted mira más de cerca el cambio de hora, entonces es

bien.

dhl_e.mq4

gracias kalenzo ... probará este indi

 
rizkyd:

gracias mladen .....

pero no funciona ....

//+------------------------------------------------------------------+

//| text.mq4 |

//| Copyright 2013, MetaQuotes Software Corp. |

//| http://www.metaquotes.net |

//+------------------------------------------------------------------+

#property copyright "Copyright 2013, MetaQuotes Software Corp."

#property link "http://www.metaquotes.net"

#property indicator_chart_window

extern int timeframe1 = PERIOD_H1;

extern int timeframe2 = PERIOD_D1;

//+------------------------------------------------------------------+

//| Custom indicator initialization function |

//+------------------------------------------------------------------+

int init()

{

return(0);

}

//+------------------------------------------------------------------+

//| Custom indicator deinitialization function |

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| Custom indicator iteration function |

//+------------------------------------------------------------------+

int start()

{

int counted_bars=IndicatorCounted();

//----

string name1="";

string name2="";

color color1;

color color2;

double H1 = iClose(NULL,timeframe1,0);

double D1H = iHigh(NULL,timeframe2,1);

double D1L = iLow(NULL,timeframe2,1);

if(H1>D1H)

{

name1 = "up"; color1 = Blue;

}

if(H1<D1L)

{

name2 = "down"; color2 = Red;

}

ObjectCreate("signal",OBJ_LABEL,0,0,0,0,0);

ObjectSet("signal",OBJPROP_XDISTANCE,3);

ObjectSet("signal",OBJPROP_YDISTANCE,12);

ObjectSetText("signal",name1,12,"Tahoma",color1);

ObjectCreate("signal2",OBJ_LABEL,0,0,0,0,0);

ObjectSet("signal2",OBJPROP_XDISTANCE,59);

ObjectSet("signal2",OBJPROP_YDISTANCE,12);

ObjectSetText("signal2",name2,12,"Tahoma",color2);

//----

return(0);

}

//+------------------------------------------------------------------+

Estás comparando dos marcos de tiempo diferentes

Si la barra actual del marco de tiempo 1 es mayor o menor que la primera barra cerrada del marco de tiempo 2, entonces el mensaje se mostrará. Si la barra actual del marco de tiempo 1 no es mayor o menor que el máximo y el mínimo anteriores del marco de tiempo 2, entonces no se mostrará nada. Por el código que has puesto parece que esa era tu intención (en mis pruebas ha funcionado bien)

___________________

PD: no se mostrará el texto en los datos históricos (datos anteriores). Si quieres que se muestre en los datos históricos entonces todo tiene que ser escrito completamente diferente como un indicador clásico

 

EA para colocar automáticamente stoploss y Take profit en función de la línea de Fibo

Hola

Quiero crear un EA que pueda colocar stop loss y take profit en cada orden.

El EA debe ver el precio de venta o precio de compra y por ejemplo para el precio de compra:

si el precio de la orden de apertura está entre la línea 38.2 y 50, el EA automáticamente coloca el stop loss en una línea antes del fibo=23.6 y coloca el take profit en una línea después del fibo=61.8

¡con este procedimiento EA hace para la posición de venta, por ejemplo si la posición es Sell stop@ X precio y 38.2 fibo<x<50 fibo! ¡¡EA automáticamente coloca el take profit en 23.6 fibo y el stop loss en 61.8 fibo line!!

¡Cualquiera puede ayudarme con el código de este EA o decirme un código similar de este EA!

****note:

¡¡¡¡la línea de fibo se calcula automáticamente por el mínimo y el máximo del último día!!!!

Tnx

 
mladen:
Usted está comparando dos marcos de tiempo diferentes

Si la barra actual del marco de tiempo 1 es mayor o menor que la primera barra cerrada del marco de tiempo 2, entonces se mostrará el mensaje. Si la barra actual del marco de tiempo 1 no es superior o inferior a la anterior alta y baja del marco de tiempo 2, entonces no se mostrará nada. Por el código que has puesto parece que esa era tu intención (en mis pruebas ha funcionado bien)

___________________

PD: no mostrará el texto en los datos históricos (datos anteriores). Si quieres que muestre los datos históricos entonces todo tiene que ser escrito completamente diferente como un indicador clásico

gracias por ti mladen ... si tienes tiempo por favor hazlo para mostrar los datos históricos ....

PS : este indi puede ayudarme a mostrar la tendencia hacia arriba o hacia abajo

 
rizkyd:
gracias por ti mladen ... si tienes tiempo por favor hazlo para mostrar los datos históricos .... PS : este indi puede ayudarme a mostrar la tendencia hacia arriba o hacia abajo

rizkyd

Intentaste usar el canal don chiano de múltiples marcos de tiempo para eso (por ejemplo poner el marco de tiempo del canal donchiano a diario y el período a 1 y obtendrías casi exactamente lo mismo que estás buscando)

 

Un recién llegado quiere consejo/ayuda

Hola a todos,

Soy nuevo en el mercado de divisas, y por el momento interesado en los indicadores y EAs. Tengo algunos conocimientos sobre el código mq4, pero eso no es suficiente todavía para conseguir lo que quiero. Así que me gustaría pedir consejo / ayuda de expertos o personas que sabe lo suficiente sobre la codificación mq4.

Mi tarea actual es agregar un indicador personalizado al EA, y por cierto tengo una buena plantilla de EA (creo) voy a compartirla con ustedes

Ok, mis señales finales de compra/venta del indicador son estas: g_ibuf_BUY[1] y g_ibuf_SELL[1]

aquí parte del código cuando el indicador de reproducción de sonido, pop up, el envío de correo electrónico.

void Alert_PlaySound_SendMail() {

string ls_ms = "MS PRO";

if (g_ibuf_BUY[1] == Low[1] - Arrow_Distance * Point && gi_flag_alert != Time[0]) {

if (Alert_PopUp_On) Alert(ls_ms + ": BUY | " + Symbol() + " " + TfToStr(Period()) + " | ", TimeToStr(TimeLocal(), TIME_SECONDS), " | " + DoubleToStr(Ask, 4));

PlaySound(ProcessBuySound(Buy_Sound));

gi_flag_alert = Time[0];

if (Send_Email) {

SendMail(ls_ms + " Alert! ", Symbol() + " " + TfToStr(Period()) + " - BUY signal issued at " + TimeToStr(TimeLocal(), TIME_SECONDS) + " on " + TimeToStr(TimeCurrent(),

TIME_DATE) + " (Last price: " + DoubleToStr(Ask, 4) + ")" + "\r\n \r\n Scalper PRO");

}

}

if (g_ibuf_SELL[1] == High[1] + Arrow_Distance * Point && gi_flag_alert != Time[0]) {

if (Alert_PopUp_On) Alert(ls_ms + ": SELL | " + Symbol() + " " + TfToStr(Period()) + " | ", TimeToStr(TimeLocal(), TIME_SECONDS), " | " + DoubleToStr(Ask, 4));

PlaySound(ProcessSellSound(Sell_Sound));

gi_flag_alert = Time[0];

if (Send_Email) {

SendMail(ls_ms + " Alert! ", Symbol() + " " + TfToStr(Period()) + " - SELL signal issued at " + TimeToStr(TimeLocal(), TIME_SECONDS) + " on " + TimeToStr(TimeCurrent(),

TIME_DATE) + " (Last price: " + DoubleToStr(Ask, 4) + ")" + "\r\n \r\n Scalper PRO");

}

}

}

El siguiente paso sería añadir estas señales a la plantilla de EA? Mhm cómo ... ¿tengo que usar la función iCustom o algo más necesario añadir al indicador antes de que pueda usarlo? Cualquier ayuda será apreciada. Gracias.

Archivos adjuntos:
 
otnepx:
Hola,

Soy nuevo en forex, y por el momento interesado en indicadores y EAs. Tengo algunos conocimientos sobre el código mq4, pero eso no es suficiente todavía para conseguir lo que quiero. Así que me gustaría pedir consejo / ayuda de expertos o personas que sabe lo suficiente sobre la codificación mq4.

Mi tarea actual es agregar un indicador personalizado al EA, y por cierto tengo una buena plantilla de EA (creo) voy a compartirla con ustedes Ok, mis señales finales de compra/venta del indicador son estas: g_ibuf_BUY[1] y g_ibuf_SELL[1]

aquí parte del código cuando el indicador de reproducción de sonido, pop up, el envío de correo electrónico.

void Alert_PlaySound_SendMail() {

string ls_ms = "MS PRO";

if (g_ibuf_BUY[1] == Low[1] - Arrow_Distance * Point && gi_flag_alert != Time[0]) {

if (Alert_PopUp_On) Alert(ls_ms + ": BUY | " + Symbol() + " " + TfToStr(Period()) + " | ", TimeToStr(TimeLocal(), TIME_SECONDS), " | " + DoubleToStr(Ask, 4));

PlaySound(ProcessBuySound(Buy_Sound));

gi_flag_alert = Time[0];

if (Send_Email) {

SendMail(ls_ms + " Alert! ", Symbol() + " " + TfToStr(Period()) + " - BUY signal issued at " + TimeToStr(TimeLocal(), TIME_SECONDS) + " on " + TimeToStr(TimeCurrent(),

TIME_DATE) + " (Last price: " + DoubleToStr(Ask, 4) + ")" + "\r\n \r\n Scalper PRO");

}

}

if (g_ibuf_SELL[1] == High[1] + Arrow_Distance * Point && gi_flag_alert != Time[0]) {

if (Alert_PopUp_On) Alert(ls_ms + ": SELL | " + Symbol() + " " + TfToStr(Period()) + " | ", TimeToStr(TimeLocal(), TIME_SECONDS), " | " + DoubleToStr(Ask, 4));

PlaySound(ProcessSellSound(Sell_Sound));

gi_flag_alert = Time[0];

if (Send_Email) {

SendMail(ls_ms + " Alert! ", Symbol() + " " + TfToStr(Period()) + " - SELL signal issued at " + TimeToStr(TimeLocal(), TIME_SECONDS) + " on " + TimeToStr(TimeCurrent(),

TIME_DATE) + " (Last price: " + DoubleToStr(Ask, 4) + ")" + "\r\n \r\n Scalper PRO");

}

}

}
El siguiente paso sería añadir estas señales a la plantilla de EA? Mhm cómo ... ¿tengo que usar la función iCustom o algo más necesario añadir al indicador antes de que pueda usarlo? Cualquier ayuda será apreciada. Gracias.

No se puede importar alertas en otra paz de código (indicador, EA).

La forma más limpia de hacer lo que quieres es usar iCustom()

 

Estimado Mladen/MrTools,

Solicitud amable para hacer un indicador basado en la lógica de abajo para el gráfico de 1 minuto ... También debe alertar con flechas de compra / venta en el gráfico ..

logica para la entrada de compra :

un minuto EMA(90) cruzando sobre un minuto EMA(390) (lo que significa que el minuto anterior ema 90 es menos que ema 390) y el ema(90) también debe ser mayor que ema(150)

lógica para la salida de compra:

un minuto EMA(90) > EMA(390) y la ema(90) < ema(150).

lógica para la entrada de venta :

un minuto EMA(90) cortando un minuto EMA(390) ( lo que significa que el minuto anterior ema 90 es mayor que ema 390) y el ema(90) también debe ser menor que ema(150)

logica para la salida de venta :

un minuto EMA(90) ema(150).

*******************************************************

El código del nido para la misma lógica también se comparte a continuación :

expresión de alerta de compra

EMA(CLOSE,90) > EMA(CLOSE,390) y REF(EMA(CLOSE,90),1) EMA(CLOSE,150)

expresión de salida de compra

EMA(CIERRE,90) > EMA(CIERRE,390) y EMA(CIERRE,90) < EMA(CIERRE,150)

expresión de alerta de venta

EMA(CIERRE,90) REF(EMA(CIERRE,390),1) y EMA(CIERRE,90) < EMA(CIERRE,150)

expresión de salida de venta

EMA(CIERRE,90) EMA(CIERRE,150)

Gracias

Muchas gracias

Razón de la queja: