fonction de calcul automatique de la taille des lots ? - page 4

 

Le fichier d'inclusion se trouve-t-il dans le bon dossier ?

 
Antonsan:

Est-ce un bug qui n'est arrivé qu'à moi ?
Je ne peux compiler aucun fichier avec MetaEditor mq4 si je mets une ligne avec # include.
Je n'ai pas non plus été capable de compiler des fichiers mq4 qui ont une ligne # include dans le code.
Seuls permettent les lignes
# Include <stderror.mqh>
# Include <stdlib.mqh>
# Include <WinUser32.mqh>

En complément du message de Phillip :

Si ce qui précède est ce que vous avez dans le code... pensez à lire attentivement la documentation du langage.

PAS d'espace entre # et include

PAS de I majuscule ... utilisez un i minuscule

 

Dans le fichier Analyze Currency, je semble avoir un problème avec la méthode SymbolType().

Je trade CADJPY, mon accountcurrency() est USD, mais il retourne toujours SymbolType = 6.

La raison est que MarketInfo("USDJPY", MODE_LOTSIZE) retourne toujours 0.

Je ne peux obtenir le LOT_SIZE que pour le graphique actuel. Par exemple, MarketInfo("CADJPY", MODE_LOTSIZE) fonctionne bien.

Est-ce un problème avec MetaTrader, comment se fait-il que je ne puisse pas obtenir les propriétés des autres paires ?

 

Quel courtier utilisez-vous, Ricotter ? Est-ce qu'il vous offre la possibilité de trader l'USDJPY ?

Juste pour confirmer que votre code est correctement implémenté, vous devriez télécharger FXDD et ouvrir un compte de démonstration et essayer votre code sur CADJPY. Il devrait fonctionner si les fichiers inclus sont correctement configurés.

 
1005phillip:

Quel courtier utilisez-vous, Ricotter ? Est-ce qu'il vous offre la possibilité de trader l'USDJPY ?

Juste pour confirmer que votre code est correctement implémenté, vous devriez télécharger FXDD et ouvrir un compte de démonstration et essayer votre code sur CADJPY. Il devrait fonctionner si les fichiers inclus sont correctement configurés.

Je viens de faire d'autres tests. J'ai tout supprimé, et dans la fonction start(), j'ai seulement ajouté l'appel MarketInfo. Sur le marché réel, cela fonctionne bien, mais lorsque j'utilise le testeur, il renvoie 0 pour tout ce qui n'est pas le symbole sur lequel je fais le test.

Je vais le tester avec FXDD, merci.

 
Ricotter:

Je viens de faire d'autres tests. J'ai tout supprimé, et dans la fonction start(), j'ai seulement ajouté l'appel MarketInfo. Sur le marché réel, cela fonctionne bien, mais lorsque j'utilise le testeur, il renvoie 0 pour tout ce qui n'est pas le symbole sur lequel je fais le test.

Je vais le tester avec FXDD, merci.

Même chose avec FXDD. Si j'essaie d'appeler MarketInfo("USDJPY", MODE_LOTSIZE) en exécutant le testeur sur la paire CADJPY, il renvoie 0. J'ai même téléchargé l'historique pour USDCAD et USDJPY.

 
Ricotter:

Même chose avec FXDD. Si j'essaie d'appeler MarketInfo("USDJPY", MODE_LOTSIZE) tout en exécutant le testeur contre la paire CADJPY, il renvoie 0. J'ai même téléchargé l'historique pour USDCAD et USDJPY.

MarketInfo() ne fonctionne que pour le symbole testé dans le testeur. Voir toutes les limitations du testeur ici -> https://www.mql5.com/en/articles/1512.
 
gordon:
MarketInfo() ne fonctionne que pour le symbole testé dans le Tester. Voir toutes les limitations du Testeur ici -> https://www.mql5.com/en/articles/1512.

Merci !

 

Le code fera plusieurs choses pour vous, il est agnostique par rapport aux symboles (), et il calculera la taille maximale de lot à prendre pour une position basée sur l'équité que vous êtes prêt à risquer et le prix stoploss. Une fois que vous avez cette taille de lot, il peut également calculer pour vous le potentiel de profit basé sur votre prix takeprofit.

Il calcule également les croisements correctement, ce qui est ce que vous recherchiez... Cependant, vous devez savoir que vous ne pouvez pas backtester correctement les croisements en raison d'une limitation de conception fondamentale du backtester de MT4 qui empêche votre EA d'accéder aux données de prix historiques pour d'autres paires de devises pendant le backtest. En pratique, cela signifie que toutes les évaluations monétaires résultant de la négociation de paires croisées dans un backtest sont fondamentalement fausses, ce qui signifie que les profits/pertes des transactions elles-mêmes, lorsqu'elles sont converties dans la devise du compte par le backtester, sont tout simplement fausses.

Le code dont j'ai donné le lien les calcule correctement, de manière analytique, sans prendre de raccourcis. Mais ils ne peuvent pas être utilisés dans le backtesting sur les crosses parce que le code essaiera de calculer les évaluations du marché correctement et le backtester l'empêchera de le faire et en tant que tel, le code renverra simplement des alertes d'erreur (comme il le ferait dans les tests à terme dans la vie réelle si le courtier a en quelque sorte cassé ses définitions de devises).

 
1005phillip:

Le code fera plusieurs choses pour vous, il est agnostique symbol(), et il calculera la taille maximale de lot à prendre pour une position basée sur l'équité que vous êtes prêt à risquer et le prix stoploss. Une fois que vous avez cette taille de lot, il peut également calculer pour vous le potentiel de profit basé sur votre prix takeprofit.

Il calcule également les croisements correctement, ce qui est ce que vous recherchiez... Cependant, vous devez savoir que vous ne pouvez pas backtester correctement les croisements en raison d'une limitation de conception fondamentale du backtester de MT4 qui empêche votre EA d'accéder aux données de prix historiques pour d'autres paires de devises pendant le backtest. En pratique, cela signifie que toutes les évaluations monétaires résultant de la négociation de paires croisées dans un backtest sont fondamentalement fausses, ce qui signifie que les profits/pertes des transactions elles-mêmes, lorsqu'elles sont converties dans la devise du compte par le backtester, sont tout simplement fausses.

Le code dont j'ai donné le lien les calcule correctement, de manière analytique, sans prendre de raccourcis. Mais ils ne peuvent pas être utilisés dans le backtesting sur les crosses parce que le code essaiera de calculer les évaluations du marché correctement et le backtester l'empêchera de le faire et, en tant que tel, le code renverra simplement des alertes d'erreur (comme il le ferait dans les tests à terme dans la vie réelle si le courtier brisait ses définitions de devises).

Ce type le fait en utilisant l'historique des fichiers.

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