Aide à la mise à niveau vers MetaTrader 5 sans perte de données - page 15

 
Valmars:

...

Valery, dis-moi ce que signifie cette section de code dans calc.mq5:

...

if(StringSubstr(Symbol(), 3, 3)=="CAD") { xxx=1.2175;   }
if(StringSubstr(Symbol(), 3, 3)=="JPY") { xxx=91.425;   }
if(StringSubstr(Symbol(), 3, 3)=="CHF") { xxx=1.1631;   }
if(StringSubstr(Symbol(), 3, 3)=="AUD") { xxx=1/0.6800; }
if(StringSubstr(Symbol(), 3, 3)=="NZD") { xxx=1/0.54;   }
if(StringSubstr(Symbol(), 3, 3)=="GPB") { xxx=1/1.49;   }
if(StringSubstr(Symbol(), 3, 3)=="EUR") { xxx=1/1.3015; }

...

Autrement dit, pourquoi la variable xxx se voit-elle attribuer des valeurs fixes ?

---

Et une autre question. L'aide contient des informations incomplètes sur le calcul des bénéfices pour le Forex, n'est-ce pas ? Cela signifie que seule la formule pourXXXUSD est donnée pour calculer le profit.

Identifiant

Description

Formule

SYMBOLE_CALC_MODE_FOREX

Mode Forex - calcul des bénéfices et des marges pour le Forex

Marge : Lots*Taille_contrat/Levage

Profit : (prix de clôture - prix d'ouverture)*Taille du contrat*Lots

Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте - Документация по MQL5
 
tol64:

Et une autre question. Il s'avère que l'aide est incomplète avec des informations sur le calcul des bénéfices pour le Forex? Cela signifie que la formule de calcul des bénéfices n'est présentée que pour les cotations inverses(XXXUSD).

Oui, il semble que vous ayez raison. Jusqu'à présent, vous pouvez lire sur le calcul des bénéfices dans l'article "L'ABC du trading de devises".
Азбука торговли валютами - Статьи по MQL4
  • www.mql5.com
Азбука торговли валютами - Статьи по MQL4: особенности автоматических торговых стратегий
 
Rosh:
Oui, vous semblez avoir raison. Pour l'instant, vous pouvez consulter le calcul des bénéfices dans l'article "L'ABC du trading de devises".

Merci. Cet article doit absolument être ajouté aux signets pour servir d'aide-mémoire, car je ne peux pas tout garder en tête. Mieux encore, si vous ajoutez un tableau dans l'aide, afin que tout soit centralisé. :)

---

Et des valeurs fixes (sur une tête fraîche il faut regarder :) ) donc j'ai compris pour un cas où il n'y avait pas de données. Mais ces valeurs doivent être corrigées en permanence en fonction des taux de change. C'est pourquoi il est préférable d'afficher le message qu'il n'y a pas de données, plutôt que des valeurs erronées.

 
tol64: Et j'ai compris les valeurs fixes (quand elles sont fraîches dans la tête :) ) au cas où il n'y aurait pas de données. Mais ces valeurs doivent être corrigées en permanence en fonction du cours de l'une ou l'autre devise. C'est pourquoi il est préférable d'afficher un message indiquant qu'il n'y a pas de données, plutôt que des valeurs incorrectes.

Oui, vous avez tout à fait raison. J'ai fait comme l'auteur, j'étais trop paresseux, je n'avais pas le temps... Pour les taux croisés dans MT4, vous devez sélectionner explicitement dans la fenêtre "Market Watch" les symboles des deux monnaies exprimées en USD, c'est à dire Par exemple, pour NZDJPY, vous devez sélectionner USDJPY et NZDUSD. L'auteur présente un avertissement sur ce point dans le préambule :

"Pour XXXYYY croise le correspondant

paires majeures USDYYY ou XXXUSD (par exemple, pour GPBJPY, la fenêtre de révision du marché doit être ouverte).

USDJPY doit être ouvert)."

Dans MT5, il est préférable de laisser cette tâche à l'indicateur lui-même.

 

Piligrim:

Valery (Valmars), pensez-vous qu'il soit judicieux, en termes de complexité de reconditionnement, de vous proposer de refaire cet indicateur dans MQL5 également ? La précédente, traduite par vous, fonctionne très bien !

Vous ne pouvez pas modifier cet indicateur pour MT5, car MT5 ne dispose pas (et ne disposera jamais) de graphiques autonomes. Comment fonctionne l'indicateur dans MT4 ? Il crée un graphique autonome avec une période non standard, à l'arrivée d'une nouvelle cotation, il l'enregistre dans le fichier .hst de cette période non standard. Et ensuite vous ouvrez ce tableau. A chaque tick, l'indicateur le met à jour (redessine) à l'aide de la dll de l'indicateur. En conséquence, vous voyez un graphique avec une période non standard mis à jour en temps réel.

Dans MT5, même le format des fichiers PERIOD.hc (sur lequel les graphiques pour les périodes standard sont construits) n'a pas été ouvert par les développeurs, probablement parce qu'ils ne peuvent pas construire des graphiques "gauchers". Vous pouvez voir la controverse sur les graphiques avec une période arbitraire ici.

 
Valmars:

Oui, vous avez tout à fait raison. J'ai fait comme l'auteur, j'étais trop paresseux, je n'avais pas le temps... Pour les taux croisés dans MT4, vous devez sélectionner explicitement dans la fenêtre "Market Watch" les symboles des deux devises exprimées en USD, c'est à dire Par exemple, pour NZDJPY, vous devez sélectionner USDJPY et NZDUSD. L'auteur présente un avertissement à ce sujet dans le préambule :

"Pour les croix XXXYYY, le correspondant

paires majeures USDYYY ou XXXUSD (par exemple pour GPBJPY dans la fenêtre Market Watch doit

être ouvert USDJPY)".

Dans MT5, il est préférable de laisser cette tâche à l'indicateur lui-même.

Donc, au lieu de cette liste avec des valeurs fixes, ce code ferait ? :

bool flgExit=false;
string arrSymbols[7]={ "CAD","JPY","CHF","AUD","NZD","GBP","EUR" };
//---
for(int i=ArraySize(arrSymbols)-1; i>=0; i--)
  {
   if(flgExit) { break; }
   //---
   if(StringSubstr(Symbol(),3,3)==arrSymbols[i])
     {
      for(int j=SymbolsTotal(false)-1; j>=0; j--)
        {
         if(SymbolName(j,false)=="USD"+arrSymbols[i]+"")
           {
            SymbolSelect("USD"+arrSymbols[i]+"",true);
            //---
            if((xxx=SymbolInfoDouble(SymbolName(j,true),SYMBOL_BID))<=0)
              {
               Comment("Ошибка ("+IntegerToString(GetLastError())+") при получении данных по символу "+SymbolName(j,true)+""); return(0);
              }
            else { flgExit=true; break; }
           }
       }
   }
}
 
Valmars:

Cet indicateur ne peut pas être converti en MT5, car MT5 ne dispose pas (et ne disposera pas) de graphiques autonomes. Comment fonctionne l'indicateur dans MT4 ? Il crée un graphique autonome avec une période non standard, à l'arrivée d'une nouvelle cotation, il l'enregistre dans le fichier .hst de cette période non standard. Et puis vous ouvrez ce tableau. A chaque tick, l'indicateur le met à jour (redessine) à l'aide de la dll de l'indicateur. En conséquence, vous verrez un graphique avec une période non standard mis à jour en temps réel.

Dans MT5, même le format des fichiers PERIOD.hc (sur lesquels sont construits les graphiques pour les périodes standard) n'a pas été divulgué par les développeurs, probablement parce qu'ils ne peuvent pas construire de graphiques "gauchers". Vous pouvez voir la controverse sur les graphiques avec une période arbitraire ici.

En tout cas, merci, Valery ! Pour moi, en tant que non-programmeur, une consultation professionnelle compréhensible est bien plus préférable pour trouver des solutions possibles à un problème qui dépasse mes compétences.

 
tol64:

Donc, au lieu de cette liste à valeur fixe, ce code fonctionnerait bien ? :

Oui, il suffit de l'exécuter aussi pour le deuxième caractère de la croix et de le mettre dans l'inite.

 
Valmars:
Oui, faites de même pour le deuxième caractère croisé et mettez-le dans l'inite.

Valery, si vous avez un moment de libre, jetez un coup d'oeil à la version corrigée. Est-il fait correctement maintenant avec tout ce qui a été discuté ci-dessus à l'esprit ? Merci.


Dossiers :
 
tol64:

...

Mise à jour du fichier ci-dessus(calcriskprofit.mq5). J'ai corrigé la faute de frappe. Au lieu de GBP, c'était GPB. :)