Ayuda a la codificación - página 95

 

Queridos todos, que mi primer paso en un post sobre forex, así que por favor, trate de ser amable si digo algo demasiado malo ...

Este sitio web es uno de los mejores lugares para aprender sobre forex y estoy leyendo desde un par de años. Me gustaría poner atención en este enlace:codebase.mql4.com/5900

El ea es RUBBERBANDS_2 EA por el autor: StJojo (2009.08.17 11:30). Es bastante interesante la forma en que funciona, (después de un trabajo mínimo de optimización) en cualquier par de divisas. Básicamente podría ser utilizado como un (permítanme la expresión..) startegy automatizado semiautomático. De hecho, ya que funciona muy bien en el mercado lateral, descubrí que podría ser activado en intervalos de noticias cuando la probabilidad de mercado lateral son más altos. Como creo que el código es opensource por parte del autor, me gustaría, si a alguien le gusta la idea, añadir la variable para que funcione a partir de una determinada hora/minutos para que se "apague" a una determinada hora/hora/minutos (es decir :que se apague este EA cuando termine la sesión actual). Esto facilitaría mucho más el tiempo de trabajo de "preprogramación" del ea para el día siguiente, relativamente los próximos días Noticias. He adjuntado el archivo como desde el enlace anterior.

Adjunté también los indicadores "forex_ news_market_clock" que es el que uso para leer las novedades en el gráfico.

Gracias a todos por el trabajo realizado en este sitio (y en toda la red... por supuesto). Espero que alguien me ayude, muchas gracias.

Archivos adjuntos:
 
vitoingletto:
Queridos todos, que mi primer paso en un post sobre forex, así que por favor trate de ser amable si digo algo muy equivocado ...

Este sitio web es uno de los mejores lugares para aprender sobre forex y estoy leyendo desde un par de años. Me gustaría poner la atención en este enlace: codebase.mql4.com/5900

El ea es RUBBERBANDS_2 EA por el autor: StJojo (2009.08.17 11:30). Es bastante interesante la forma en que funciona, (después de un trabajo mínimo de optimización) en cualquier par de divisas. Básicamente podría ser utilizado como un (permítanme la expresión..) startegy automatizado semiautomático. De hecho, ya que funciona muy bien en el mercado de lado, descubrí que podría ser activado en los intervalos de noticias cuando la probabilidad de mercado de lado son más altos. Como creo que el código es opensource por parte del autor, me gustaría, si a alguien le gusta la idea, añadir la variable para que funcione a partir de una determinada hora/minutos para que se "apague" a una determinada hora/hora/minutos (es decir :que se apague este EA cuando termine la sesión actual). Esto facilitaría mucho más el tiempo de trabajo de "preprogramación" del ea para el día siguiente, relativamente los próximos días Noticias. He adjuntado el archivo como desde el enlace anterior.

Adjunté también los indicadores "forex_ news_market_clock" que es el que uso para leer las novedades en el gráfico.

Gracias a todos por el trabajo realizado en este sitio (y en toda la red... por supuesto). Espero que alguien me ayude, muchas gracias.

Hola Vitoingletto,

Gracias por el EA,he añadido un filtro de tiempo y una función de cierre en viernes y también un número mágico para ayudar al EA a diferenciar un poco las órdenes.

Archivos adjuntos:
 

hola ...

maneras se pregunta si se puede poner en el código de la función que exporta los datos directamente todos a la vez (m1, m5, m30, m15, h1, h4, d1 ...), obviamente, en archivos separados. Actualmente el y tienes que iniciarlo tantas veces ... (para cada tmeframe).

Tendría un ahorro sustancial de tiempo para exportar los datos.

Usted puede insertar esta función en su código? una idea puede ser similar a esta secuencia de comandos adjunta(Period_converter_auto - MQL4 Code Base), que transforma los datos todos en un volta.Si puede jugar en el experto?

gracias

Archivos adjuntos:
 
dr.feelgood1989:
hola ...

maneras se pregunta si se puede poner en el código de la función que exporta los datos directamente todos a la vez (m1, m5, m30, m15, h1, h4, d1 ...), obviamente, en archivos separados. Actualmente el y hay que iniciarlo tantas veces ... (para cada tmeframe).

Tendría un ahorro sustancial de tiempo para exportar los datos.

Usted puede insertar esta función en su código? una idea puede ser similar a esta secuencia de comandos adjunta(Period_converter_auto - MQL4 Code Base), que transforma los datos todos en un volta.Si puede jugar en el experto?

gracias

dr.feelgood1989

Utilice este y simplemente adjuntarlo a todos los marcos de tiempo que desea haber exportado. Hará un archivo con el nombre de símbolo+"_"+marco de tiempo para cada marco de tiempo que mire. Puedes usarlo como plantilla para tus exportaciones de indicadores personalizados

Archivos adjuntos:
 

gracias por la respuesta .. Mladen

en realidad ya estaba así. La secuencia de comandos (ejemplo de referencia) que he publicado consigue el trabajo una vez para todos los marcos de tiempo (conversión).

el experto de su modificado "reescribir" un solo marco de tiempo (para distinguir el archivo) cuando se utiliza para el tiempo único

Me preguntaba si a partir de un solo experto se reescribe todos los otros marcos de tiempo (ejemplo:ea1m comenzó en el probador y también los archivos se escriben en otros marcos de tiempo m5, m15 ...)

gracias : )

 
mladen:
pgtips,

¿Qué aspecto tiene tu bucle principal (o publica un código en el que intentes hacerlo)?

PD: Tienes que cambiar el último parámetro de iOpen() y iClose() para que apunte al día correcto para una barra elegida

Hola Mladen,

Me quedé bastante atascado con esto así que busqué probar otra manera de hacer lo mismo.

Encontré este indicador adjunto después de varios días de búsqueda que está cerca de lo que necesito, pero se ha hecho diferente.

Muestra la vela actual (del día) pero no hay ninguna variable iopen/close para seleccionar la visualización de un día atrás, es decir, el turno -1

Me podría decir cómo puedo hacer que esto tenga un desplazamiento para atrás x días. ? Así que si la barra del día anterior era roja, la caja actual es roja, si es verde, la caja actual es verde.

Puedo superponer el indicador de la caja de ruptura en la parte superior de esto, pero sería muy bueno si éste podría ser limitado por el tiempo.

Entiendo que estáis ocupados y dais vuestro tiempo gratuitamente pero si pudierais ayudarme os lo agradecería mucho.

Muchas gracias

PG

Archivos adjuntos:
 

Hola,

Todavía estoy picando lejos en esto.

En el archivo adjunto he conseguido utilizar el indicador pivote para conseguir el cambio de color por día basado en el cierre del día anterior, es decir, el día anterior verde o rojo.

Ahora tengo que hacer rectángulo y llenarlo basado en el período que quiero ver que muestra el tiempo de 11.00 am a decir 17.00pm, la alta y baja de ser lo que resulta ser durante ese tiempo.

Pongo //

ObjectCreate("Rectangle", OBJ_RECTANGLE, 0, Time[periodBegin], Low[1], Time[periodEnd], High[1]);

pero tiene error, no se muestra nada en absoluto.

extern int periodBegin = 11; //11:00 am

extern int periodEnd = 17; // 17:00 pm

He puesto extern bool Plot_rectangles=true; así que 'debería' trazar algo para cada día.

¿Qué me falta aquí?

Gracias

PG

Archivos adjuntos:
 

Creo que sé la respuesta a mi pregunta, pero... todavía quiero confirmar

a. el indicador es el marco de tiempo superior

b. es el marco de tiempo actual.

como me gustaría usar a como tendencia basada b. como entrada ¿se puede hacer esto?

 
mtuppers:
Creo que sé la respuesta a mi pregunta, pero ... todavía quiero confirmar

a. el indicador es el marco de tiempo superior

b. es el marco de tiempo actual.

como me gustaría usar a como tendencia basada b. como entrada ¿se puede hacer esto?

Sí se puede.

Simplemente llame a con un marco de tiempo más alto en el parámetro timeFrame y eso es todo. Para evitar las trampas de backtesting de los EA de múltiples marcos de tiempo, utilice la barra cerrada en el indicador de múltiples marcos de tiempo (índice 1 en lugar de 0), de lo contrario obtendrá un resultado poco realista debido a la forma en que metatrader llama a otros marcos de tiempo diferentes al actual en el backtesting

 

Hola,

Espero que me puedan ayudar con esto. Quiero que los puntos (flechas; aqua y amarillo) del indi en la ventana dos se muestren como puntos (flechas) en el cierre (o alto para la señal de compra/bajo para la señal de venta) en la ventana uno (la ventana del gráfico principal). Lo he intentado durante horas, pero nunca seré un codificador ;-)

#property indicador_separar_ventana

#property indicador_mínimo -100.0

#property indicador_máximo 100.0

#property indicator_levelcolor SlateGray

#propiedad indicator_levelstyle 1

#propiedad indicator_buffers 8

#property indicator_color1 Lime

#propiedad indicator_color2 Rojo

#Propiedad indicator_color3 Negro

#propiedad indicador_color4 Negro

#Propiedad indicador_color5 Negro

#Indicador de propiedad_color6 Negro

#Indicador de propiedad_color7 Aqua

#Indicador de propiedad_color8 Amarillo

#Propiedad indicator_width1 1

#propiedad indicador_nivel1 60.0

#propiedad indicator_width2 1

#propiedad indicador_nivel2 50.0

#propiedad indicador_nivel3 -50.0

#propiedad indicador_nivel4 -60.0

extern int WavePeriod = 10;

extern int AvgPeriod = 21;

extern bool SoundAlert = FALSE;

extern bool EmailAlert = FALSE;

double g_ibuf_92[];

double g_ibuf_96[];

double g_ibuf_100[];

double g_ibuf_104[];

double g_ibuf_108[];

double g_ibuf_112[];

double g_ibuf_116[];

double g_ibuf_120[];

int gi_124 = -50;

int gi_128 = 50

int gi_132;

int init() {

IndicatorShortName("TrendWave");

SetIndexBuffer(0, g_ibuf_100);

SetIndexLabel(0, "ESA");

SetIndexStyle(0, DRAW_NONE);

SetIndexDrawBegin(0, 0);

SetIndexBuffer(1, g_ibuf_112);

SetIndexLabel(1, "Valores DD");

SetIndexStyle(1, DRAW_NONE);

SetIndexDrawBegin(1, 0);

SetIndexBuffer(2, g_ibuf_104);

SetIndexLabel(2, "DD");

SetIndexStyle(2, DRAW_NONE);

SetIndexDrawBegin(2, 0);

SetIndexBuffer(3, g_ibuf_108);

SetIndexLabel(3, "CI");

SetIndexStyle(3, DRAW_NONE);

SetIndexDrawBegin(3, 0);

SetIndexBuffer(4, g_ibuf_92);

SetIndexLabel(4, "Bull");

SetIndexStyle(4, DRAW_LINE, STYLE_SOLID, 1, Lime);

SetIndexDrawBegin(4, 0);

SetIndexBuffer(5, g_ibuf_96);

SetIndexLabel(5, "Oso");

SetIndexStyle(5, DRAW_LINE, STYLE_SOLID, 1, Rojo);

SetIndexDrawBegin(5, 0);

SetIndexBuffer(6, g_ibuf_116);

SetIndexLabel(6, "Comprar punto");

SetIndexStyle(6, DRAW_ARROW, STYLE_SOLID, 2, Aqua);

SetIndexArrow(6, 108);

SetIndexDrawBegin(6, 0);

SetIndexBuffer(7, g_ibuf_120);

SetIndexLabel(7, "Sell Dot");

SetIndexStyle(7, DRAW_ARROW, STYLE_SOLID, 2, Yellow);

SetIndexArrow(7, 108);

SetIndexDrawBegin(7, 0);

ArrayResize(g_ibuf_100, Bars);

ArrayResize(g_ibuf_112, Bars);

ArrayResize(g_ibuf_104, Bars);

ArrayResize(g_ibuf_108, Bars);

ArrayResize(g_ibuf_92, Bars);

ArrayResize(g_ibuf_96, Bars);

ArrayResize(g_ibuf_116, Bars);

ArrayResize(g_ibuf_120, Bars);

return (0);

}

int inicio() {

double l_ima_on_arr_0;

int li_12 = IndicadorContado();

si (li_12 < 0) devuelve (-1);

si (li_12 > 0) li_12--;

int li_8 = Bares - li_12;

for (int li_16 = li_8; li_16 > 0; li_16--) {

g_ibuf_100[li_16] = iMA(NULL, 0, WavePeriod, 0, MODE_EMA, PRICE_TYPICAL, li_16);

ArraySetAsSeries(g_ibuf_100, TRUE);

}

for (li_16 = li_8; li_16 > 0; li_16--) {

g_ibuf_112[li_16] = MathAbs((iHigh(NULL, 0, li_16) + iClose(NULL, 0, li_16) + iLow(NULL, 0, li_16)) / 3,0 - g_ibuf_100[li_16]);

ArraySetAsSeries(g_ibuf_112, TRUE);

}

for (li_16 = li_8; li_16 > 0; li_16--) {

l_ima_on_arr_0 = iMAOnArray(g_ibuf_112, 0, WavePeriod, 0, MODE_EMA, li_16);

g_ibuf_104[li_16] = l_ima_on_arr_0;

ArraySetAsSeries(g_ibuf_104, TRUE);

}

for (li_16 = li_8; li_16 > 0; li_16--) {

if (g_ibuf_104[li_16] > 0.0) g_ibuf_108[li_16] = ((iHigh(NULL, 0, li_16) + iClose(NULL, 0, li_16) + iLow(NULL, 0, li_16)) / 3,0 - g_ibuf_100[li_16]) / (0,015 * g_ibuf_104[li_16]);

else g_ibuf_108[li_16] = 0;

ArraySetAsSeries(g_ibuf_108, TRUE);

}

for (li_16 = li_8; li_16 > 0; li_16--) {

l_ima_on_arr_0 = iMAOnArray(g_ibuf_108, 0, AvgPeriod, 0, MODE_EMA, li_16);

g_ibuf_92[li_16] = l_ima_on_arr_0;

ArraySetAsSeries(g_ibuf_92, TRUE);

}

for (li_16 = li_8; li_16 > 0; li_16--) {

l_ima_on_arr_0 = iMAOnArray(g_ibuf_92, 0, 4, 0, MODE_SMA, li_16);

g_ibuf_96[li_16] = l_ima_on_arr_0;

ArraySetAsSeries(g_ibuf_96, TRUE);

}

for (li_16 = li_8; li_16 > 0; li_16--) {

if (g_ibuf_92[li_16] >= g_ibuf_96[li_16] && g_ibuf_92[li_16 + 1] <= g_ibuf_96[li_16 + 1] && g_ibuf_92[li_16] < gi_124) {

g_ibuf_116[li_16] = g_ibuf_92[li_16];

SendAlert("comprar");

} else g_ibuf_116[li_16] = -1000;

if (g_ibuf_92[li_16] = g_ibuf_96[li_16 + 1] && g_ibuf_92[li_16] > gi_128) {

g_ibuf_120[li_16] = g_ibuf_96[li_16];

SendAlert("vender");

} else g_ibuf_120[li_16] = -1000;

}

return (0);

}

void SendAlert(string as_0) {

if (Time[0] != gi_132) {

if (SoundAlert) {

if (as_0 == "buy") Alert(Symbol() + " => " + TimeToStr(TimeCurrent()) + " comprar");

if (as_0 == "sell") Alert(Symbol() + " => " + TimeToStr(TimeCurrent()) + " vender");

}

if (EmailAlert) {

if (as_0 == "buy") SendMail("TrendWave Alert", Symbol() + " => " + TimeToStr(TimeCurrent()) + " comprar");

if (as_0 == "sell") SendMail("TrendWave Alert", Symbol() + " => " + TimeToStr(TimeCurrent()) + " vender");

}

gi_132 = Time[0];

}

}