[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 189

 

J'ai appris les bases de la programmation (il y a 25 ans - Algol 60 :))) A cette époque, tout commençait par la création d'un algorithme (carrés, losanges), puis cet algorithme était décrit avec un langage. Maintenant, je ne vois pas d'algorithmes ou de commandes.

Avez-vous des recommandations pour de bons tutoriels sur mql4 ? De préférence avec des exemples concrets d'écriture experte, à partir de l'algorithme.

 
v721965 писал(а) >>

J'ai appris les bases de la programmation (il y a 25 ans - Algol 60 :))) A cette époque, tout commençait par la création d'un algorithme (carrés, losanges), puis cet algorithme était décrit avec un langage. Maintenant, je ne vois pas d'algorithmes ou de commandes.

Avez-vous des recommandations pour de bons tutoriels sur mql4 ? De préférence avec des exemples spécifiques d'écriture d'EE, en commençant par l'algorithme.

https://book.mql4.com/ru/

 
alvish >> :
pro s'il vous plaît conseiller, selon l'aide de langue mql5 il n'y a pas de fonction iHighest comment calculer le haut maximal pour N période ? ... J'ai essayé copyHigh et fmax, mais seulement pour une certaine période et pas que bien sûr, aider

Voici un exemple :

         int shift_Box_Start = iBarShift(NULL, 0, TimeBoxStart);
         Box_Start_High      = High[iHighest(NULL, 0, MODE_HIGH, shift_Box_Start- i, i+1)];
         Box_Start_Low       =  Low[iLowest(NULL,  0, MODE_LOW,  shift_Box_Start- i, i+1)];

Assurez-vous juste de prendre les bonnes manettes.

 

1. J'essaie d'exécuter l'EA en mode test avec visualisation. L'EA est simple : il génère un message par le biais d'Alert. Quand Alert est en init, le message est donné au départ. Lorsqu'il est en démarrage, l'EA ne réagit pas à un nouveau tick. Quel est le problème ?

2. Dans le même mode de test, je lance également un script, qui affiche les valeurs de Time[1], Close[1],... (pour référence). J'ai découvert que ces valeurs sont basées sur l'heure actuelle (réelle) et non sur l'heure de réception des ticks et des barres formées dans le graphique. Que peut-on faire ?

 
Roger писал(а) >>

Pour l'EURGBP, il retourne - 0 (c'est Alpari) short et -0.68 long et cela exactement en dollars.

Pour Alpari, le type de calcul du swap est 0 et le mien est 1,

Je dois cependant connaître tous les types de calculs.

J'ai essayé toutes les combinaisons : multiplication, division ou pas de multiplication du tout.

Voici le code qui calcule tout cela et renvoie la valeur la plus proche de la valeur réelle du swap.

int a,b,c,d,dd;

dd=1;

double raznica;

for ( j=OrdersHistoryTotal( )-1; j>=OrdersHistoryTotal( )-21; j--) {

int a_=0,b_=0,c_=0,d_=0;

raznica=1000000;

OrderSelect(j, SELECT_BY_POS, MODE_HISTORY);

if(OrderSwap()!=0){

if(OrderType()==OP_BUY){

for(a=-dd;a<=dd;a++){

for(b=-dd;b<=dd;b++){

for(c=-dd;c<=dd;c++){

for(d=-dd;d<=dd;d++){

double gg=MathPow(MarketInfo(OrderSymbol(),MODE_SWAPLONG),a)*MathPow(OrderLots(),b)*MathPow(MarketInfo(OrderSymbol(),MODE_TICKVALUE),c)*MathPow(MarketInfo(OrderSymbol(),MODE_BID),d);

if(MathAbs(gg-OrderSwap())<raznica){raznica=MathAbs(gg-OrderSwap());a_=a;b_=b;c_=c;}

}}}}

Alert(" РЕАЛЬНЫЙ СВОП = "+OrderSwap()+"РАСЧЕТНЫЙ СВОП = "+gg+"\n a= "+a_+" b = "+b_+" c = "+c_+" d = "+d_);

}//if(OrderType()==OP_BUY){

if(OrderType()==OP_SELL){

for(a=-dd;a<=dd;a++){

for(b=-dd;b<=dd;b++){

for(c=-dd;c<=dd;c++){

for(d=-dd;d<=dd;d++){

gg=MathPow(MarketInfo(OrderSymbol(),MODE_SWAPSHORT),a)*MathPow(OrderLots(),b)*MathPow(MarketInfo(OrderSymbol(),MODE_TICKVALUE),c)*MathPow(MarketInfo(OrderSymbol(),MODE_BID),d);

if(MathAbs(gg-OrderSwap())<raznica){raznica=MathAbs(gg-OrderSwap());a_=a;b_=b;c_=c;}

}}}}

Alert(" РЕАЛЬНЫЙ СВОП = "+OrderSwap()+"РАСЧЕТНЫЙ СВОП = "+gg+"\n a= "+a_+" b = "+b_+" c = "+c_+" d = "+d_);

}//if(OrderType()==OP_SELL){

}//if(OrderSwap()!=0){

}//for ( j=OrdersHistoryTotal( )-1; j>=OrdersHistoryTotal( )-21; j--) {

Je n'ai obtenu aucun résultat ni pour Alpari ni pour BROCO.

I.e.

MarketInfo(OrderSymbol(),MODE_SWAPLONG)

OrderLots()

MarketInfo(OrderSymbol(),MODE_TICKVALUE)

MarketInfo(OrderSymbol(),MODE_BID)

Pas assez pour le calcul de l'échange.

Il doit y avoir autre chose, mais quoi ?

 
Merci chief2000, mais vous avez écrit à travers le standard iHighest et iLowest, c'est le problème, et ils ne sont pas dans mql 5
 
alvish >> :
Merci chef2000, mais vous avez écrit à travers le standard iHighest et iLowest, c'est le problème avec mql 5.

Je vois maintenant que je n'ai pas lu la question attentivement.

Dois-je vraiment tout décrire manuellement dans la version 5 ? Quelque chose ne va pas ici - peut-être y a-t-il un problème avec la documentation ?

 
juste là
 
vasya_vasya >> :

Pour Alpari, le type de calcul du swap est 0 et le mien est 1,


Vassia, pourquoi tu te donnes la peine ? Je t'ai raconté ici 'Swaps in mql4' très brièvement.

Je peux entrer dans les détails,

il y a 4 variantes au total

chacun avec une formule différente.

 
kaisa писал(а) >>

Vassia, pourquoi tu te donnes la peine ? Je t'ai dit ici 'Swaps in mql4' brièvement.

Je peux vous donner plus de détails si vous le souhaitez,

il y a 4 variantes au total

pour chacun une formule différente

oui, puis-je avoir les autres formules ?