¿función de cálculo automático del tamaño del lote? - página 4

 

¿Están los archivos de inclusión en la carpeta correcta?

 
Antonsan:

¿Es un error que sólo me ha ocurrido a mí?
No puedo compilar ningún archivo con el MetaEditor mq4 si pongo una línea con # include.
Tampoco he podido compilar archivos mq4 que tengan una línea # include en el código.
Sólo permite las líneas
# Include <stderror.mqh>
# Include <stdlib.mqh>
# Include <WinUser32.mqh>

Además del post de phillip:

Si lo anterior es lo que tienes en el código... por favor considera una lectura cuidadosa de los documentos del lenguaje.

NO hay espacios en blanco entre # e include

NO hay que poner la I en mayúsculas... hay que poner la i en minúsculas

 

En el archivo Analyze Currency, parece que tengo un problema con el método SymbolType().

Estoy operando con CADJPY, mi accountcurrency() es USD, pero siempre devuelve SymbolType = 6.

La razón es que MarketInfo("USDJPY", MODE_LOTSIZE) siempre devuelve 0.

Por ejemplo, MarketInfo("CADJPY", MODE_LOTSIZE) funciona bien.

¿Es esto un problema con MetaTrader, cómo es que no puedo obtener las propiedades de otros pares?

 

¿Qué corredor está utilizando Ricotter? ¿Ofrecen USDJPY para que usted pueda operar?

Sólo para confirmar que tu código está implementado correctamente deberías descargar FXDD y abrir una cuenta demo y probar tu código en CADJPY. Debería funcionar si tienes los archivos de inclusión configurados correctamente.

 
1005phillip:

¿Qué corredor está utilizando Ricotter? ¿Ofrecen USDJPY para que usted pueda operar?

Sólo para confirmar que tu código está implementado correctamente deberías descargar FXDD y abrir una cuenta demo y probar tu código en CADJPY. Debería funcionar si tienes los archivos de inclusión configurados correctamente.

Acabo de hacer más pruebas. He quitado todo, y en la función start() sólo he añadido la llamada a MarketInfo. En el comercio en vivo, funciona bien, pero cuando uso el probador, devuelve 0 para cualquier cosa que no sea el símbolo que estoy ejecutando la prueba.

Lo probaré con FXDD, gracias.

 
Ricotter:

Acabo de hacer más pruebas. He quitado todo, y en la función start() sólo he añadido la llamada a MarketInfo. En el comercio en vivo, funciona bien, pero cuando uso el probador, devuelve 0 para cualquier cosa que no sea el símbolo que estoy ejecutando la prueba.

Lo probaré con FXDD, gracias.

Lo mismo con FXDD. Si intento llamar a MarketInfo("USDJPY", MODE_LOTSIZE) mientras ejecuto el probador contra el par CADJPY, devuelve 0. Incluso he descargado el historial para USDCAD y USDJPY.

 
Ricotter:

Lo mismo ocurre con FXDD. Si intento llamar a MarketInfo("USDJPY", MODE_LOTSIZE) mientras ejecuto el probador contra el par CADJPY, devuelve 0. Incluso he descargado el historial para USDCAD y USDJPY.

MarketInfo() sólo funciona para el símbolo probado en el Probador. Vea todas las limitaciones del Probador aquí -> https://www.mql5.com/en/articles/1512.
 
gordon:
MarketInfo() sólo funciona para el símbolo probado en el Probador. Vea todas las limitaciones del Probador aquí -> https://www.mql5.com/en/articles/1512.

Gracias.

 

El código hará varias cosas por usted, es agnóstico al símbolo(), y calculará el tamaño máximo del lote a tomar para una posición basada en la equidad que usted está dispuesto a arriesgar y el precio de stoploss. Una vez que tenga ese valor de tamaño de lote, también puede calcular para usted el potencial de ganancias basado en su precio de toma de ganancias.

También calcula los cruces correctamente, que es lo que usted buscaba... sin embargo, debe tener en cuenta que no puede realizar un backtest correcto sobre los cruces debido a una limitación de diseño fundamental del backtester de MT4 que impide que su EA acceda a los datos de precios históricos de otros pares de divisas durante el backtest. En la práctica lo que esto significa es que todas las valoraciones monetarias que provienen de operar con pares cruzados en un backtest son fundamentalmente erróneas, lo que significa que las ganancias/pérdidas de las propias operaciones cuando se convierten a la moneda de la cuenta por el backtester son simplemente erróneas.

El código que he enlazado los calcula correctamente, analíticamente, sin tomar atajos. Pero no se puede utilizar en el backtesting sobre cruces porque el código tratará de calcular las valoraciones del mercado correctamente y el backtester lo impedirá y, como tal, el código simplemente devolverá alertas de error (como lo haría en la vida real de pruebas a plazo si el corredor de alguna manera rompió sus definiciones de divisas).

 
1005phillip:

El código hará varias cosas por ti, es agnóstico al símbolo(), y calculará el tamaño máximo del lote a tomar para una posición basada en la equidad que estás dispuesto a arriesgar y el precio de stoploss. Una vez que tenga ese valor de tamaño de lote, también puede calcular para usted el potencial de ganancias basado en su precio de toma de ganancias.

También calcula los cruces correctamente, que es lo que usted buscaba... sin embargo, debe tener en cuenta que no puede realizar un backtest correcto sobre los cruces debido a una limitación de diseño fundamental del backtester de MT4 que impide que su EA acceda a los datos de precios históricos de otros pares de divisas durante el backtest. En la práctica lo que esto significa es que todas las valoraciones monetarias que provienen de operar con pares cruzados en un backtest son fundamentalmente erróneas, lo que significa que las ganancias/pérdidas de las propias operaciones cuando se convierten a la moneda de la cuenta por el backtester son simplemente erróneas.

El código que he enlazado los calcula correctamente, analíticamente, sin tomar atajos. Pero no se puede utilizar en el backtesting sobre cruces porque el código tratará de calcular las valoraciones del mercado correctamente y el backtester lo impedirá y, como tal, el código simplemente devolverá alertas de error (como lo haría en las pruebas a plazo de la vida real si el corredor de alguna manera rompió sus definiciones de divisas).

Este tipo lo hace utilizando el historial de archivos.

https://www.mql5.com/en/articles/1493

Razón de la queja: