Ayuda a la codificación - página 109

 

modificación deórdenes pendientes

Hola a todos, he intentado programar una modificación del precio de las órdenes pendientes. Es uno de mis primeros EAs. Quiero escribir tantos EAs para poder escribir otros complejos más adelante. Con mi orden modificar tengo el problema de que no está funcionando cuando lo pongo en un gráfico en mi cuenta de demostración. ¿Puede alguien encontrar el error y ayudarme a corregirlo? Gracias. Realmente no tengo más pistas. Saludos

{ RefreshRates(); double ppoint=MarketInfo(OrderSymbol(), MODE_POINT); int total=OrdersTotal(); double pBid=MarketInfo(OrderSymbol(), MODE_BID); double pAsk=MarketInfo(OrderSymbol(), MODE_ASK); double priceNew; //---- for(int i=0; i50*ppoint) { priceNew=(pBid-50*ppoint); OrderModify(OrderTicket(),priceNew,0,OrderStopLoss(),OrderTakeProfit()); Print("Modified Order"); } } } if (OrderType()==OP_SELLSTOP) { if (OrderOpenPrice()-pAsk>50*ppoint) { priceNew=(pAsk+50*ppoint); OrderModify(OrderTicket(),priceNew,0,OrderStopLoss(),OrderTakeProfit()); Print("Modified Order"); } } } } }
 

Hola Robert, gracias por tu ayuda hasta ahora. ¿Cómo puedo publicar correctamente el código aquí? Gracias y saludos.

 
fabian103:
Hola Robert, gracias por tu ayuda hasta ahora. ¿Cómo puedo publicar correctamente el código aquí? Gracias y saludos.

fabian103

Deberías hacer un simple copiar y pegar en esa caja de código php

Por alguna razón tu código está "por todos lados". Inténtalo. Si no funciona prueba a adjuntar la parte del código que quieres que se revise como un archivo separado (usando la herramienta de adjuntar - la que se señala en la imagen)

Archivos adjuntos:
attach.gif  36 kb
 

Hola,

He estado intentando calcular el valor de las bandas de bollinger dentro del indicador estocástico pero no lo he conseguido.

Me sale el valor referido al par, pero necesito el valor que debe estar entre 0 y 100.

¿Alguna indicación?

Gracias

 
metcalfe:
Hola,

He estado intentando calcular el valor de las bandas de bollinger dentro del indicador estocástico pero no he podido hacerlo.

Me sale el valor referido al par, pero necesito el valor que debe estar entre 0 y 100.

¿Alguna indicación?

Gracias

Supongo que te refieres a calcular las bandas de Bollinger de un estocástico (utilizando los valores del estocástico en lugar de los precios de los símbolos). Usted no puede hacer eso con un construido en iBands() porque siempre utiliza los precios del gráfico principal.

Podrías usar iBandsOnArray() pero con él tienes un eterno problema de metatrader: las desviaciones sólo pueden ser multiplicadores enteros. No puedes establecer desviaciones a valores fraccionarios. Así que lo mejor es utilizar las funciones iStdDevOnArray() y iMaOnArry() para calcular tus propias bandas de Bollinger de cualquier valor y con cualquier ancho de las bandas. En el caso del estocástico el código que hace eso se vería así :

for(int i=limit; i>=0; i--) stoch = iStochastic(NULL,0,StochPeriod,1,StochSlowing,MODE_SMA,StochPrice,MODE_MAIN,i);

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

{

double dev = iStdDevOnArray(stoch,0,BollingerPeriod,0,MODE_SMA,i);

bollmi = iMAOnArray(stoch,0,BollingerPeriod,0,MODE_SMA,i);

bollup = bollmi+BollingerDeviations*dev;

bolldn = bollmi-BollingerDeviations*dev;

}

Adjuntando también el propio indicador para que puedas seguir experimentando con él. Se ve así en el gráfico :

____________________

PD: los valores de las bandas pueden sobrepasar los límites 0 y 100 (en los casos en que el estocástico esté rondando el 0 o el 100) dependiendo de qué multiplicador de bandas utilices para las desviaciones y de cuál sea la longitud del propio cálculo de las bandas de Bollinger

Archivos adjuntos:
 
mladen:
Supongo que te refieres a calcular las bandas de Bollinger de un estocástico (utilizando los valores del estocástico en lugar de los precios de los símbolos). No puedes hacer eso con el iBands() incorporado porque siempre usa los precios del gráfico principal.

Podrías usar iBandsOnArray() pero con ello tienes un eterno problema de metatrader : las desviaciones sólo pueden ser multiplicadores enteros. No puedes establecer desviaciones a valores fraccionarios. Así que lo mejor es utilizar las funciones iStdDevOnArray() y iMaOnArry() para calcular tus propias bandas de Bollinger de cualquier valor y con cualquier ancho de las bandas. En el caso del estocástico el código que hace eso se vería así :

¡¡¡¡¡Eso es SUPER ASIENTO!!!!!

Muchas gracias, llevo mucho tiempo intentándolo.

Y gracias por la respuesta super rápida.

Una pregunta más stupi.

El indi funciona muy bien pero no consigo que en el ea aparezca el número correcto sobre el valor de las bandas.

Por ejemplo, como en la imagen que has adjuntado los números 81...67..54....

 
metcalfe:
¡¡¡¡¡Eso es SUPER AWESOME!!!!!

Muchas gracias, llevo mucho tiempo intentándolo.

Y gracias por la respuesta súper rápida.

Una pregunta más stupi.

El indi funciona muy bien pero no consigo que el ea tenga el número correcto sobre el valor de las bandas.

Por ejemplo como en la foto que has adjuntado los números 81...67..54....

:):)

La longituddel estocástico en ese ejemplo se establece en 32. Esa es la única diferencia en comparación con los parámetros por defecto

 
mladen:
:):):) La longitud del estocástico en ese ejemplo se establece en 32. Esa es la única diferencia en comparación con los parámetros por defecto

Lo siento... no he explicado muy bien lo que quería preguntar.

En mi ea estoy tratando de obtener el número por ejemplo de banda superior o inferior en la ventana de stoch como en la imagen. Por ejemplo quiero en el ea recuperar la banda superior que es 81.8116 y codifiqué como

Comment(iCustom(NULL,0, "name",24,0,MODE_UPPER,0)); \Npara renombrar el indi

pero no tengo el número correcto.

¿En qué me equivoco?

Gracias

 
metcalfe:
Lo siento... no he explicado muy bien lo que quería preguntar.

En mi ea estoy tratando de obtener el número por ejemplo de banda superior o inferior en la ventana de stoch como en la imagen. Por ejemplo quiero en el ea recuperar la banda superior que es 81.8116 y codifiqué como

Comment(iCustom(NULL,0, "name",24,0,MODE_UPPER,0)); \Npara renombrar el indi

pero no tengo el número correcto.

¿En qué me equivoco?

Gracias

Hazlo así :

double upperBand = iCustom(NULL,0,"name",24,1,0,0);[/PHP]

The problem was that you can not put 0 in place of the slowing parameter since in that case metatrader will cause an error when calculating stochastic, and you will always get 0 as a return value, so use 1 instead (it is equivalent to no smoothing of the stochastic value). Also, better to use buffer numbers (MODE_MAIN is a reserved word in MQL - it 0 but in some cases they are not what you expect them to be). To get the rest of the values you would then have to write something similar to this :

[PHP]double middleBand = iCustom(NULL,0,"name",24,1,1,0);

double lowerBand = iCustom(NULL,0,"name",24,1,2,0);
 

Bien...

Súper gracias.

Me has salvado....

Razón de la queja: