Ayuda a la codificación - página 36

 

Necesito ayuda con el STOPLOSS

mladen:
kemal44

Aquí hay un enlace a un hilo donde se explica cómo utilizar las funciones en el código : https://www.mql5.com/en/forum/173005

Ahí se explica muy bien (y más de lo que puedo explicar en un post) cómo usarlos

Estimado Mladen ,

cuando backtesting ,BreakEven-Stoplos parece trabajar pero cuando la cuenta real , por lo que veo que no funciona correctamente ,

¿te importaría echar un vistazo a un archivo experto, y luego decirme lo que está mal con él?

gracias de antemano

Archivos adjuntos:
xpexpert.txt  24 kb
 

...

kemal

Comprueba en la pestaña de expertos del terminal qué error se escribe.

No puedo comprobarlo ya que falta la lógica de entrada (nunca pone BuyCondition o SellCondition a true como está escrito)

kemal44:
Estimado Mladen ,

en el backtesting ,el BreakEven-Stoplos parece funcionar pero en la cuenta real , por lo que veo no funciona correctamente ,

¿le importaría echar un vistazo a un archivo experto, y luego decirme qué es lo que está mal?

Gracias de antemano
 
mladen:
kemal

Comprueba en la pestaña de expertos del terminal qué error se escribe.

No puedo comprobarlo ya que falta la lógica de entrada (nunca pone BuyCondition o SellCondition a true tal y como está escrito)

aquí está el experto con la lógica de compra y venta,

el problema es el stop-loss de breakeven.

Lo que quiero hacer por breakeven es que si la ganancia salta 5 pip desde el punto de entrada, el stop-loss debe establecerse en el punto de entrada con el fin de proteger la cartera,

Gracias de antemano

Archivos adjuntos:
xpexpert_1.txt  24 kb
 

...

Dado que la distancia mínima del stop loss depende de símbolo a símbolo, de broker a broker y puede variar de un momento a otro, antes de establecer el break even, añada una comprobación que sería algo así (esto es un ejemplo genérico cuando una orden es de compra, se puede escribir de forma muy similar a la orden de venta) :

double minimalDistance = MarketInfo(Symbol(),MODE_STOPLEVEL)*Point;

if (OrderType()=OP_BUY && (Bid-OrderOpenPrice())>=minimalDistance)

... your code for setting stop loss

PD: todo esto es válido (según los últimos cambios - a partir de la build 419) en los casos en que tu broker no es un broker ECN. Si su broker es un broker ECN en ese caso MarketInfo(Symbol(),MODE_STOPLEVEL) devolverá 0 en las últimas builds y tendrá que hacer algunos experimentos para ajustar la distancia mínima (si la hay) del stop loss

kemal44:
aqui esta el experto con la logica de compra y venta,

el problema es el stop-loss de equilibrio.

Lo que quiero hacer por breakeven es que si la ganancia salta 5 pip desde el punto de entrada, el stop-loss debe ser ajustado al punto de entrada para proteger la cartera,

Gracias de antemano
 
mladen:
Dado que la distancia mínima del stop loss depende de símbolo a símbolo, de broker a broker y puede variar de un momento a otro, antes de poner el break even, añade una comprobación que sería algo así (esto es un ejemplo genérico cuando una orden es de compra, puedes escribirlo muy parecido a la orden de venta) :
double minimalDistance = MarketInfo(Symbol(),MODE_STOPLEVEL)*Point;

if (OrderType()=OP_BUY && (Bid-OrderOpenPrice())>=minimalDistance)

... your code for setting stop loss

PD: todo esto es válido (según los últimos cambios - a partir de la build 419) en los casos en que tu broker no es un broker ECN. Si su broker es un broker ECN en ese caso MarketInfo(Symbol(),MODE_STOPLEVEL) devolverá 0 en las últimas builds y tendrá que hacer algunos experimentos para ajustar la distancia mínima (si la hay) del stop loss

Gracias;

La distancia es una buena idea,

No tengo ni idea de las reglas de los brokers ECN, mi broker es una empresa local

 

...

kemal44

De su corredor - intente lo siguiente: una forma sencilla de comprobar es tratar de abrir una orden manualmente, pero cuando usted hace que tratar de establecer la pérdida de la parada y / o tomar ganancias. Si esos campos están desactivados (como en la imagen de abajo) en el diálogo de la orden abierta o cualquier valor excepto 0 que se establece en los que se obtiene un error, entonces su corredor es un "ECN / STP" tipo de corredor

kemal44:
Gracias;

La distancia es una buena idea,

No tengo ni idea de las reglas del broker ECN, mi broker es una empresa local
Archivos adjuntos:
order_open.gif  22 kb
 
mladen:
kemal44

De su broker - intente lo siguiente: una forma sencilla de comprobarlo es intentar abrir una orden manualmente pero cuando lo haga intente establecer el stop loss y/o el take profit. Si esos campos están desactivados (como en la imagen de abajo) en el diálogo de la orden abierta o cualquier valor excepto 0 que se establece en los que se obtiene un error, entonces su corredor es un "ECN / STP" tipo de corredor

Mi ventana de operaciones es exactamente la misma que la de la imagen de arriba, y entendí que mi broker es del tipo "ECN / STP".

Gracias

Mientras tanto, ¿podemos obtener los canales (StdDev, etc.) proporcionados por MT4 automáticamente en nuestro gráfico por el indicador o código basado en ea, no tengo idea de cómo codificarlo, le importaría ayudarme a obtener un código de muestra para eso?

Gracias de antemano

 

...

kemal44

No estoy seguro de si entiendo la pregunta sobre los "canales", pero déjame intentar :

Usted puede utilizar cualquier indicador construido en metatrader utilizando las funciones que proporcionaron. Para la desviación estándar por ejemplo la sintaxis es la siguiente:

][/TD][[/TD] - [ frame frame. TD] TR[/TD] - [ MA[TD=

[TR]

[TD]ma_method

[TD] - [TD="width: 100%"]Método de la MA. Puede ser cualquier móvil. TR]][TD] - [TD="width: 100%"]Precio aplicado. Puede ser cualquiera de los valores de la enumeración precio aplicado

[

TR]][TD] - [TD="width: 100%"]Índice del valor tomado del buffer del indicador (desplazamiento relativo a la barra actual la cantidad dada de períodos atrás).
double iStdDev(

[/TD]

string symbol, int timeframe, int ma_period, int ma_shift, int ma_method, int applied_price, int shift)[/TD]

[

/TR

[/TABLE]

Calcula el indicador de Desviación Estándar y devuelve su valor.

Parámetros:

[TABLE="class: docparams"

]
symbol
-
/TD]Símbolo cuyos datos deben utilizarse para calcular el indicador. NULL significa el símbolo actual.[/TD] [

/TR

]
timeframe
/TD] Time
. Puede ser cualquiera de los valores de la enumeración Time 0 significa el marco de tiempo del gráfico actual.[/

[/

]
ma_period
/TD]Período de la
.

[/TR]

[TR]

ma_shift
-
"width: 100%"]Desplazamiento de la MA.
valor de la enumeración del método de media

[

[TD applied_price
del
.
[TD shift

Ejemplo:

double val=iStdDev(NULL,0,10,0,MODE_EMA,PRICE_CLOSE,0);

_________________________________________

Lo mismo ocurre con otros indicadores incorporados (estos :

Así que puedes usar cualquiera de ellos como una llamada a la función desde otro indicador, script o EA

Si quiere mostrar algunos de los valores de los indicadores incorporados en el gráfico, entonces tiene que utilizar un buffer de dibujo (como en los indicadores regulares) asignar los valores de algunas de las funciones anteriores al buffer de dibujo y se mostrará en el gráfico. Los EAs no tienen buffers de dibujo, así que no puedes hacer eso usando buffers de dibujo desde un EA (necesitarías usar objetos, pero eso es una historia completamente diferente)

kemal44:
Mi ventana de operaciones es exactamente la misma que la de la foto de arriba, entendí que mi borker es del tipo "ECN / STP".

gracias

Mientras tanto, ¿podemos obtener los canales (StdDev etc.) proporcionados por MT4 automáticamente en nuestro gráfico por el indicador o código basado en EA, no tengo idea de cómo codificarlo, te importaría ayudarme a obtener un código de ejemplo para eso?

Gracias de antemano
 
mladen:
kemal44

No estoy seguro de entender la pregunta sobre los "canales", pero déjame intentarlo:

Usted puede utilizar cualquier indicador incorporado en Metatrader utilizando las funciones que ellos proporcionan. Para la desviación estándar por ejemplo la sintaxis es la siguiente:

[/TD] -] frame. TD][/TD] - MA

[TR]

[TD]ma_method[TD] - [TD="width: 100%"]Método de la MA. Puede ser cualquier móvil. TR]][TD] - [TD="width: 100%"]Precio aplicado. Puede ser cualquiera de los valores de la enumeración precio aplicado

[

TR]][TD] - [TD="width: 100%"]Índice del valor tomado del buffer del indicador (desplazamiento relativo a la barra actual la cantidad dada de períodos atrás).
double iStdDev([/TD]string symbol, int timeframe, int ma_period, int ma_shift, int ma_method, int applied_price, int shift)[/TD]

[

/TABLE]

Calcula el indicador de desviación estándar y devuelve su valor.

Parámetros:

[TABLE="class: docparams"

]
symbol[/TD] -[/TD]Símbolo cuyos datos deben utilizarse para calcular el indicador. NULL significa el símbolo actual.[/TD]

[/TR

]
timeframe
[/TD
Timeframe. Puede ser cualquiera de los valores de la enumeración Time0 significa el marco de tiempo del gráfico actual.[/

[/TR

]
ma_period
[/TD]Período de la
.

[/TR]

[TR]

ma_shift
-
[TD="width: 100%"]Desplazamiento de la MA.
valor de la enumeración del método de media

[

[TDapplied_price
del
.
[TDshift

Ejemplo:

double val=iStdDev(NULL,0,10,0,MODE_EMA,PRICE_CLOSE,0);

_________________________________________

Lo mismo ocurre con otros indicadores incorporados (estos :

Así que usted puede utilizar cualquiera de los que como una llamada a la función de otro indicador, script o EA

Si quiere mostrar algunos de los valores de los indicadores incorporados en el gráfico, entonces tiene que utilizar un buffer de dibujo (como en los indicadores regulares) asignar los valores de algunas de las funciones anteriores al buffer de dibujo y se mostrará en el gráfico. Los EAs no tienen búferes de dibujo, por lo que no se puede hacer eso usando búferes de dibujo de un EA (tendría que usar objetos, pero eso es una historia completamente diferente)

Lo que quiero decir con Sdv Channel es el canal como el de abajo,

por cierto, gracias por la respuesta promp.

Archivos adjuntos:
xxx.gif  13 kb
 

EA con SAR Parabólico

Tengo una idea de comercio con el SAR parabólico. Quiero hacer EA con SAR parabólico, pero hasta ahora no consigo un buen resultado. Así que si usted tiene la idea con el SAR parabólico voy a hacer mejor. El último que hago puede hacer que el beneficio. pero la equidad nunca mismo con el equilibrio.

Archivos adjuntos: