[ARCHIVE] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 3. - page 232

 
DhP:

Quelle est la différence entre le double tmp et NormalizeDouble(iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,0)?

En les multipliant, on obtient toujours un résultat supérieur à zéro.

Je pense que oui))

(-) * (-) = +

(+) * (+) = +


а.... vous avez tout à fait raison... NormalizeDouble(iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,0) - ici nous devrions mettre "i" au lieu de 0 - je l'ai changé, mais il n'a toujours pas commencé à faire des affaires....

le code ressemble maintenant à ceci :

 bool signal_MACD() 
  { 
    bool signal_MACD = false;
    double tmp = iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,0); 
    for(int i=1;i<=5;i++) 
    { 
       if(NormalizeDouble(iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,i)*tmp,4)<0.0) 
       { 
          signal_MACD = true; 
          break; 
       }        
    } 
    return(signal_MACD);
  } 

mais cela ne fonctionne toujours pas

 
CLAIN:


а.... vous avez tout à fait raison... NormalizeDouble(iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,0) - Je l'ai changé, mais il n'a jamais commencé à faire des affaires....

Le code ressemble maintenant à ceci :

mais ça ne fonctionne toujours pas.

Est-ce que cela change vrai en faux ?

La fonction modifie-t-elle la valeur de sortie ?

 
CLAIN:


а.... vous avez tout à fait raison... NormalizeDouble(iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,0) - ici nous devrions mettre "i" au lieu de 0 - je l'ai changé, mais il n'a toujours pas commencé à faire des affaires....

le code ressemble maintenant à ceci :

mais cela ne fonctionne toujours pas


Utilisez "Print", lisez les journaux et comparez "ce qui est" avec "ce qui est attendu".
 

La fonction ne modifie pas les valeurs.... du moins, c'est ce que je pense, car les échanges n'ont jamais commencé à s'ouvrir.

comment utilisez-vous l'impression ?

 bool signal_MACD() 
  { 
    bool signal_MACD = false;
    double tmp = iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,0); 
    for(int i=1;i<=5;i++) 
    { 
       if(NormalizeDouble(iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,i)*tmp,4)<0.0) 
       { 
          signal_MACD = true; 
          Print(NormalizeDouble(iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,i)*tmp);
          break; 
       }        
    } 
    return(signal_MACD);
  } 

je n'ai que cette version, mais quelque chose me dit qu'elle est fausse aussi....

 
CLAIN:

La fonction ne modifie pas les valeurs.... du moins, c'est ce que je pense, car les échanges n'ont jamais commencé à s'ouvrir.

comment utilisez-vous l'impression ?

je n'ai que cette version, mais quelque chose me dit qu'elle est fausse aussi....


Print("iMACD(",Symbol(),",",TF,",",fast_ema,",",slow_ema,",",signal_period,",",PRICE_CLOSE,",",MODE_MAIN,",",i,",",")*",tmp,"=",iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,i)*tmp);
 
MaxZ:

Si toutes les variables sont déclarées, je ne vois pas d'erreurs dans la syntaxe MQL4...

Quel est le problème ?

Merci.

Je fais un calcul de rollback pour mon EA. J'ai vu que les calculs étaient imprécis, c'est pourquoi j'ai passé en revue les blocs qui peuvent contenir des erreurs.

 


Salut.

Aidez-moi à comprendre
Je suis en train d'écrire un EA et je n'arrive pas à comprendre les ordres.
Je passe des commandes :
OrderSend(Symbol(),OP_SELLLIMIT,lot,cena_sell,3,sl _sell,tp_sell,"",1,0,Red) ;
Alerte (GetLastError()) ;

OrderSend(Symbol(),OP_SELLLIMIT,lot_1,cena_sell_d_ 1,3,sl_sell,tp_sell_d_1,",2,0,Red) ;
Alert (GetLastError() ;

OrderSend(Symbol(),OP_SELLLIMIT,lot_2,cena_sell_d_2,3,sl_sell,tp_sell_d_2,"",3,0,Red) ;
Alert (GetLastError() ;

OrderSend(Symbol(),OP_SELLLIMIT,lot_3,cena_sell_d_3,3,sl_sell,tp_sell_d_3,"",4,0,Red) ;
Alert (GetLastError()) ;

Si le premier take profit est déclenché, supprimez les autres ordres.
Si le premier ne s'est pas déclenché, et que le deuxième take profit s'est déclenché, changez les lots_3 et lot_4 pour le troisième et quatrième take profit.

 
sergey_r:


Salut.

Aidez-moi.
Je suis en train d'écrire un EA et je n'arrive pas à comprendre les ordres.
Je passe des commandes :
OrderSend(Symbol(),OP_SELLLIMIT,lot,cena_sell,3,sl _sell,tp_sell,"",1,0,Red) ;
Alerte (GetLastError()) ;

OrderSend(Symbol(),OP_SELLLIMIT,lot_1,cena_sell_d_1,3,sl_sell,tp_sell_d_1,",2,0,Red) ;
Alerte (GetLastError()) ;

OrderSend(Symbol(),OP_SELLLIMIT,lot_2,cena_sell_d_2,3,sl_sell,tp_sell_d_2,"",3,0,Red) ;
Alerte (GetLastError()) ;

OrderSend(Symbol(),OP_SELLLIMIT,lot_3,cena_sell_d_3,3,sl_sell,tp_sell_d_3,"",4,0,Red) ;
Alerte (GetLastError()) ;
J'en ai besoin :
Si le premier take profit est déclenché, supprimez les ordres restants.
Si le premier ne s'est pas déclenché, et que le deuxième take profit s'est déclenché, changez les lots_3 et lot_4 pour les troisième et quatrième.


Ce qui est venu en premier - utiliser la fonction de cette page du forum - elle renvoie le drapeau pour fermer l'ordre à la prise de profit. Avant cela, en fonction de vos (différents) volumes d'ordres, vous définissez pour chacun d'eux un numéro magique différent, par exemple lot - magique 1, lot1 - magique 2, etc. Ensuite, vous vérifiez si l'ordre avec la magie 1 a été fermé par l'ordre de prise en charge utilisant cette fonction et si c'est le cas, vous "supprimez les autres". Et ensuite, par le code, vous vérifiez également le deuxième ordre avec le numéro magique 2 - s'il est Ok, alors vous modifiez les troisième et quatrième ordres (changez leurs volumes)... et lorsque vous définissez des ordres en attente et que vous les modifiez, vous devez vous rappeler de vérifier les tolérances min. et tout le reste... Comme ça...
 

Je ne comprends pas comment utiliser les fonctions. Pouvez-vous nous décrire comment faire ?

C'est ici que j'ai passé ces commandes. Puis j'insère la fonction de cette page. Ou comment ? Décrivez un exemple de la manière de procéder. S'il vous plaît.

 
sergey_r:

Je ne comprends pas comment utiliser les fonctions. Pouvez-vous nous décrire comment faire ?

C'est ici que j'ai passé ces commandes. Puis j'insère la fonction de cette page. Ou comment ? Décrivez un exemple de la manière de procéder. S'il vous plaît.



L'ordre de travail avec la f-mi - ce sont des choses fondamentales, autour desquelles tout tourne... Démontez-le, voyez des exemples de chouettes (dans un code compétent), on les trouve dans la base de code - démontez cet exemple de chouette et utilisez-le comme base pour votre propre... C'est une base, vous ne pouvez pas vous en passer. J'ai moi-même mis le hibou basé sur cet exemple dans le codebase.

Calme-toi, prends ton temps, débrouille-toi.

Raison: