Questions des débutants MQL5 MT5 MetaTrader 5 - page 883

 
Askr:
Comment MT5 télécharge-t-il l'archive des cotations ? Dans MT4 par exemple F2 et ensuite vous appuyez sur refresh, mais ici ?

Vous n'avez pas besoin de télécharger quoi que ce soit sur MetaTrader 5. Vous pouvez utiliser les cotations du serveur de négociation auquel vous êtes connecté. Si vous voulez, vous pouvez utiliser lesCopyRates, si vous voulez, vous pouvez utiliser lesCopyTicks.

 
Askr:
Comment MT5 télécharge-t-il l'archive des cotations ? Dans MT4 par exemple, F2 et ensuite vous appuyez sur update, mais ici ?

Vous ne pouvez pas le faire directement. Sauf si vous créez un symbole personnalisé pour lequel vous pouvez importer l'historique. Le symbole personnalisé ne peut être utilisé que pour travailler avec l'historique. Il ne vous permettra pas de faire du commerce par ce biais.

 
Ihor Herasko:

Et si l'EE n'était pas active à ce moment-là ? Après tout, nous aimerions obtenir les données de l'historique du compte. Mais cela ne peut malheureusement pas se faire de manière univoque. Cela ne peut se faire qu'avec beaucoup de réserves.

Il est étrange que les développeurs n'aient pas implémentéOrderCloseTime() dans MT5. Apparemment, il y avait une bonne raison à cela).

 
lil_lil:

Il est étrange que les développeurs n'aient pas crééOrderCloseTime() dans MT5. Apparemment, il y avait de sérieuses raisons pour cela).

Parce que l'ordre a une signification différente en termes de MT5 et de Mql5. Pour trouver l'heure de clôture d'une position, nous devons sélectionner les ordres et les transactions de cette position, trouver parmi eux une transaction avec le modificateur DEAL_ENTRY_OUT et l'heure de cette transaction sera égale à la clôture de la position.

 

Bonjour, veuillez me conseiller, je ne peux pas faire une construction pour la condition suivante : l'indicateur est démarré, des paramètres de prix appropriés apparaissent dans la bougie, une indication graphique est dessinée, mais disons, si c'est encore loin avant que la bougie se ferme, l'indicateur peut détecter une autre combinaison de bougies à cet endroit. La question est de savoir comment écrire le code dans le processus d'un contrôle sur deux pour qu'il supprime le résultat précédent lorsque la condition de cette bougie cesse de fonctionner.

Voici un exemple correct de rendu, mais si je devais exécuter le testeur ici, il me donnerait une lecture incorrecte du chandelier. Comment le réparer ?

Et une autre question - comment créer une alerte basée sur le concept suivant :

Tâche - donnée : TF 1 heure.

La condition - exécuter la partie recherche de l'indicateur seulement, disons, après 55 minutes et jusqu'à 60 minutes de la bougie actuelle, et ensuite recommencer le cycle.

Comment mettre en œuvre cette construction ?

 
clickaider:

Bonjour, veuillez me conseiller, je ne peux pas faire une construction pour la condition suivante : l'indicateur démarre, des paramètres de prix appropriés apparaissent dans la bougie, une indication graphique est dessinée, mais disons, si la bougie est loin de la fermeture, l'indicateur peut détecter une autre combinaison de bougies à cet endroit. La question est de savoir comment écrire le code dans le processus d'un contrôle sur deux pour qu'il supprime le résultat précédent lorsque la condition de cette bougie cesse de fonctionner.

Voici un exemple correct de rendu, mais si je devais exécuter le testeur ici, il me donnerait une lecture incorrecte du chandelier. Comment puis-je le réparer ?

1. le testeur a fonctionné et fonctionne encore correctement, sans erreur.

2. erreur dans votre compréhension du processus de test : lorsque la première exécution de l'indicateur ou de l'historique de pagination se produit (rappelez-vous, le signe de ceci est prev_calculé==0), vous faites le tour de toutes les barres dans une boucle. Donc, dans cette boucle, vous utilisez des tableaux de séries chronologiques.

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])

qui, pour chaque i-ème membre de la boucle, n'a qu'UNE seule valeur : Open, High, Low et Close.

Mais lorsque toutes les barres sont passées, le testeur commence à travailler en mode tick sur chaque barre - c'est pourquoi vous pouvez voir comment le High monte et le Low descend.

 
Vladimir Karputov:

1. le testeur a fonctionné et fonctionne correctement, il n'y a pas d'erreurs.

2) Il y a une erreur dans votre compréhension du processus de test : lorsque la première exécution de l'indicateur ou la pagination de l'historique se produit (rappelez-vous, le signe de ceci est prev_calculated==0) vous contournez toutes les barres dans la boucle. Donc, dans cette boucle, vous utilisez des tableaux de séries chronologiques.

qui, pour chaque i-ème membre de la boucle, n'a qu'UNE seule valeur : Open, High, Low et Close.

Et lorsque toutes les barres sont passées, le testeur commence à travailler sur chaque barre en mode tick - c'est pourquoi vous pouvez voir comment le High monte et le Low descend.

Oui, je suis d'accord que lorsque le testeur démarre, le résultat est différent en raison du remplissage des valeurs de prix, mais la question est de savoir comment insérer une condition lorsque dans un chandelier, par exemple, un premier motif est formé, mais à la fin un autre apparaît mais il ne peut pas être remplacé par une autre entrée d'indicateur parce que la condition appropriée n'est pas écrite. Comment le spécifier ?

if(Cmp(shadow_upper_1,shadow_lower_0)<0 && body_size_0 < body_size_1 && shadow_lower_0 >= 0.7*shadow_upper_0 && 8*body_size_0 >= shadow_lower_0 && 7*body_size_0 <= shadow_upper_0 && close_0 >= Upper1_0 && close_0 <= body_Upper_Upper1_mediane75_0 && Upper1_1 >= Upper1_2)
         if(InpEnablePAT_DOJIUP_UPPER1) DrawPattern(index,PATTERN_TYPE_DOJIUP_UPPER1,high,low,time);

Voici le code formant l'indication du chandelier, mais comment le rendre redessinable ?

 
clickaider:

Oui, je suis d'accord que lorsque vous exécutez le testeur le résultat est différent en raison du remplissage des valeurs de prix, mais la question est de savoir comment mettre une condition dans la construction, lorsque dans une bougie, par exemple, un premier modèle est formé, mais à la fin un autre modèle apparaît, mais il ne peut pas être remplacé par une autre entrée d'indicateur, parce que la condition appropriée n'est pas prescrite. Comment le spécifier ?

Voici le code formant l'indication du chandelier, mais comment le rendre redessinable ?

Enregistrez le numéro de la barre dans l'index. Vérifiez-le avant de dessiner. S'il y a un objet sur la barre, supprimez-le. ObjectDelete.

 
clickaider:

Oui, je suis d'accord que lorsque vous exécutez le testeur le résultat est différent en raison du remplissage des valeurs de prix, mais la question est de savoir comment mettre une condition dans la construction, lorsque dans une bougie, par exemple, un premier modèle est formé, mais à la fin un autre modèle apparaît, mais il ne peut pas être remplacé par une autre entrée d'indicateur, parce que la condition appropriée n'est pas prescrite. Comment le spécifier ?

Voici le code formant l'indication du chandelier, mais comment le rendre redessinable ?

Juste pour fournir trois états :

  • Dessinez le motif 1
  • Dessinez le motif 2
  • ne pas dessiner quoi que ce soit (par exemple, pour DRAW_ARROW passer"0" dans le tampon de l'indicateur, si vous avez écrit

//--- установим пустое значение 
   PlotIndexSetDouble(индекс_построения_DRAW_ARROW,PLOT_EMPTY_VALUE,0);
 
Vladimir Karputov:

Il suffit de fournir trois états :

  • dessiner le motif 1
  • dessiner le motif 2
  • ne dessine rien (par exemple, pour DRAW_ARROW vous passez"0" au tampon de l'indicateur, si vous avez écrit

Je vous ai envoyé le code source, pouvez-vous voir où le mettre ?
Dossiers :
PatternsBB.ex5  81 kb
Raison: