¿Cómo codificar? - página 320

 

Hola a todos, me gustaría comprobar si hay una manera de seguir el precio actual?

Por ejemplo, cuando el precio cruza un punto preestablecido, se activa inmediatamente una operación. Los que he encontrado en internet se refieren principalmente al cierre, al máximo, al mínimo, etc. de la barra. ¿Puede alguien ayudarme, por favor? Gracias.

Saludos

Terrance

 

Si te entiendo bien, debes usar Ask y Bid. Ask para una nueva orden de compra y Bid para una nueva orden de venta.

tkuan77:
Hola a todos, me gustaría comprobar si hay una manera de seguir el precio actual?

Por ejemplo, cuando el precio cruza un punto preestablecido, se activará inmediatamente una operación. Los que he encontrado en internet se refieren principalmente al cierre, al máximo, al mínimo, etc. de la barra. ¿Puede alguien ayudarme, por favor? Gracias.

Saludos

Terrance
 

Sí Mladen, eso es lo que estoy usando ahora. Tal vez mi pregunta no se explica claramente. Lo que estoy tratando de lograr es decir ejemplo, yo preestablezco un punto, ejemplo anterior vela D1 cerrar más y menos 20pips, y si el precio actual golpeó el punto preestablecido de cualquiera (D1 + 20pips) o (D1 - 20pips), se activará ya sea una compra o venta sin importar si la vela actual es que cerca o ahora.

Así que lo que estoy tratando de lograr ahora es cómo hacer que mi sistema desencadena el comercio cuando el precio llegó a la llamada (D1 + 20pips) o (D1 - 20pips). Gracias de antemano por el consejo.

Saludos

Terrance

mladen:
Si te entiendo bien, debes usar Ask y Bid. Ask para una nueva orden de compra y Bid para una nueva orden de venta
 

Ahora no estoy seguro de entenderlo, pero lo intentaré. Es algo como esto (esto no es un código real, pero sólo un ejemplo de cómo comprobar - en la mayoría de los casos de cierre y la oferta son los mismos)

if (close[1](D1+20pips)) trigger up action

if (close[1]>(D1-20pips) && close[0]<(D1-20pips)) trigger down action

tkuan77:
Sí Mladen, eso es lo que estoy usando ahora. Tal vez mi pregunta no se explica claramente. Lo que estoy tratando de lograr es decir ejemplo, yo preestablezco un punto, ejemplo anterior vela D1 cierre más y menos 20pips, y si el precio actual golpeó el punto preestablecido de cualquiera (D1 + 20pips) o (D1 - 20pips), se activará una compra o venta, independientemente de si la vela actual es que cerca o ahora.

Así que lo que estoy tratando de lograr ahora es cómo hacer que mi sistema desencadena el comercio cuando el precio llegó a la llamada (D1 + 20pips) o (D1 - 20pips). Gracias de antemano por el consejo.

Saludos

Terrance
 

Hola Mladen,

Sí, he conseguido resolver bastantes de los errores que me he encontrado, sin embargo 1 me sigue molestando. ¿Cómo puedo desencadenar:

1) Operación larga cuando FastMA1 cruza SlowMA1 por 10pips hacia arriba

2) Operación corta cuando FastMA1 cruza SlowMA1 por 10pips hacia abajo

Lo que no sé es cómo añadir en la MA para reaccionar a los 10pips en el código.

/*--------------------------------------------------------------------------------*/

FastMA1 = iMA(NULL,PERIOD_M30,10,0,MODE_SMA,PRICE_CLOSE,0);

SlowMA1= iMA(NULL,PERIOD_M30,20,0,MODE_SMA,PRICE_CLOSE,1);

if(FastMA1 > SlowMA1)

{Largo}

if(FastMA1 < SlowMA1)

{Corto}

/*--------------------------------------------------------------------------------*/

Gracias y agradezco la ayuda.

Saludos

Terrance

mladen:
Ahora no estoy seguro de entenderlo, pero lo intentaré. Es algo como esto (no es un código real sino un ejemplo de cómo comprobar - en la mayoría de los casos close y bid son lo mismo)
if (close[1](D1+20pips)) trigger up action

if (close[1]>(D1-20pips) && close[0]<(D1-20pips)) trigger down action

 

Pruebe algo como esto :

double pipMultiplier=1; if (Digits==3 | Digits==5) pipMultiplier=10;

double diff = 10*Punto*pipMultiplier;

if(FastMA1 > SlowMA1+diff)

{Largo}

if(FastMA1 < SlowMA1-diff)

{Corto}

tkuan77:
Hola Mladen,

Sí, he conseguido solucionar bastantes de los errores que me he encontrado, sin embargo 1 me sigue fastidiando. ¿Cómo puedo desencadenar:

1) Operación larga cuando FastMA1 cruza SlowMA1 por 10pips hacia arriba

2) Operación corta cuando FastMA1 cruza SlowMA1 por 10pips hacia abajo

Lo que no sé es cómo añadir en la MA para reaccionar a los 10pips en el código.

/*--------------------------------------------------------------------------------*/

FastMA1 = iMA(NULL,PERIOD_M30,10,0,MODE_SMA,PRICE_CLOSE,0);

SlowMA1= iMA(NULL,PERIOD_M30,20,0,MODE_SMA,PRICE_CLOSE,1);

if(FastMA1 > SlowMA1)

{Largo}

if(FastMA1 < SlowMA1)

{Corto}

/*--------------------------------------------------------------------------------*/

Gracias y agradezco la ayuda.

Saludos

Terrance
 

Malden trato de codificar el indicador como su respuesta con respecto a la vela h1 día anterior. Pero no pude hacerlo.

Tengo un ejemplo.

Tengo un indicador con un solo buffer en ventanas separadas. Dibuja una línea como rsi, atr etc etc.

Ahora necesito añadir una línea (horizontal) en las mismas ventanas separadas que se calcula a partir de la media del valor del indicador de los últimos 24 días (es sólo para 1 hora por esta razón dije 24). ¿Cómo puedo hacerlo? ¿Es posible dibujar esta línea para cada día en el pasado?

Sé que debo añadir otro buffer.

¿Cómo puedo dar a este buffer lo que necesito?

Gracias

 

...

dasio

Lo que describes parece una combinación de un indicador normal (el rsi, el atr, ...) y una media multitemporal de ese mismo indicador. ¿Lo has probado así?

dasio:
Malden intento codificar el indicador como su respuesta en relación con el día de la vela h1 anterior. Pero no pude hacerlo.

Tengo un ejemplo.

Tengo un indicador con un solo buffer en ventanas separadas. Dibuja una línea como rsi, atr etc etc.

Ahora necesito añadir una línea (horizontal) en las mismas ventanas separadas que se calcula a partir de la media del valor del indicador de los últimos 24 días (es sólo para 1 hora por esta razón dije 24). ¿Cómo puedo hacerlo? ¿Es posible dibujar esta línea para cada día en el pasado?

Sé que debo añadir otro buffer.

¿Cómo puedo dar a este búfer lo que necesito?

Gracias.
 
mladen:
dasio Lo que describes parece una combinación de un indicador normal (el rsi, el atr, ...) y una media multitemporal de ese mismo indicador. ¿Lo has probado así?

Hola, gracias por su respuesta,

Quizás no me he explicado bien.

He creado un indicador que dibuja una línea en una ventana separada del gráfico con mi propio cálculo basado en las barras anteriores.

Ahora necesito añadir una línea en el indicador donde el valor de esta línea es igual al evarage del último valor de 24 calculado en el último día y necesito dibujar esta línea en el día anterior. Adjunto una imagen. Sin embargo esta línea debe ser calculada al final del día porque debe ser calculada para el valor de la 24 del indicador para el mismo día donde lo calculo.

Por el momento este indicador debe ser utilizado sólo en el marco de tiempo de 1 hora por lo que no es un indicador MTF.

Gracias.

ps. Las líneas blancas se calculan para el mismo valor de 24 del periodo de 1 día donde se imprimen.

Archivos adjuntos:
example_1.gif  7 kb
 

...

dasio

Prueba algo así:

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color1 OrangeRed

#property indicator_color2 Silver

#property indicator_width1 2

extern int RsiPeriod = 50;

extern int RsiPrice = PRICE_CLOSE;

double work[];

double avg[];

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

//

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

//

//

//

//

//

int init()

{

SetIndexBuffer(0,work);

SetIndexBuffer(1,avg);

return(0);

}

int start()

{

int i,countedBars = IndicatorCounted();

if (countedBars<0) return(-1);

if (countedBars>0) countedBars--;

int limit = MathMin(Bars-countedBars,Bars-1);

for(i=limit; i>=0; i--)

{

work = iRSI(NULL,0,RsiPeriod,RsiPrice,i);

int y = iBarShift(NULL,PERIOD_D1,Time);

int x = iBarShift(NULL,PERIOD_D1,Time);

if (x!=y)

{

int k = iBarShift(NULL,0,iTime(NULL,PERIOD_D1,y));

double average = work[k];

int c = 1;

for (int j=k-1; j>=i; j--,c++) average += work[j]; average /= c;

for ( j=k ; j>=i; j--) avg[j] = average;

}

}

return(0);

}

dasio:
Hola, gracias por su respuesta,

Quizás no me he explicado bien.

He creado un indicador que dibuja una línea en una ventana del gráfico separada con mi propio cálculo basado en las barras anteriores.

Ahora necesito añadir una línea en el indicador donde el valor de esta línea es igual al evarage del último valor de 24 calculado en el último día y necesito dibujar esta línea en el día anterior. Adjunto una imagen. Sin embargo esta línea debe ser calculada al final del día porque debe ser calculada para el valor de la 24 del indicador para el mismo día donde lo calculo.

Por el momento este indicador debe ser utilizado sólo en el marco de tiempo de 1 hora por lo que no es un indicador MTF.

Gracias.

ps. Las líneas blancas se calculan para el mismo valor de 24 del período de 1 día donde se imprimen.

Archivos adjuntos:
test.gif  34 kb