Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 456

 
Zver4991:

De quoi dépend la qualité du test et comment puis-je l'augmenter au maximum ?

Consultez ce site web, comment tester un EA avec une qualité de simulation de 99%.

http://tradelikeapro.ru/kak-poluchit-kachestvo-modelirovaniya-99/

 
Zhunko:
C'est le cas pour le type BOOL. C'est-à-dire, pour un bool d'une ancienne version de MQL4. Ce n'est pas vrai pour un bool à un seul octet. Un dépassement se produira si la valeur est supérieure à zéro.

Je me demande pourquoi alors.

   bool b=2;

Compile-t-il sans erreurs ni avertissements ?

 
artmedia70:

Je me demande pourquoi alors.

bool b=2;
compile sans erreur ni avertissement ?

L'opérateur d'affectation doit être surchargé pour le type bool. Il surveille le dépassement et s'il est supérieur à 1, il assigne et renvoie vrai.

En studio, au niveau d'avertissement 4, il y a souvent des avertissements lorsqu'on essaie d'insérer un type illogique dans une expression logique. Ou vice versa, lorsqu'un type logique est utilisé dans des opérations arithmétiques.

 
Zhunko:

L'opérateur d'affectation doit être surchargé pour le type bool. Il contrôle le dépassement et, s'il est supérieur à 1, il assigne et renvoie vrai.

En studio, au niveau d'avertissement 4, il y a souvent des avertissements lorsqu'on essaie d'insérer un type illogique dans une expression logique. Ou vice versa, lorsqu'on applique un type logique dans des opérations arithmétiques.

Il serait plus logique de

#property strict

d'émettre un avertissement et de le laisser comme dans l'ancienne version sans

 
artmedia70:

Ce n'est pas tout à fait vrai, mais l'essentiel est correct.

En fait, zéro correspond à faux, et toute autre valeur différente de zéro correspond à vrai.

Sans me fier aux valeurs par défaut, je transforme l'init en une variable booléenne et je n'utilise que celle-ci.
 

Eh bien, je ne suis pas un programmeur après tout...

Il y a le compte numéro 1 - à cinq chiffres avec un lot min. de 0,01 et un pas de 0,01 (build 584) ; le compte numéro 2 - à quatre chiffres avec un lot min. de 0,1 et un pas de 0,1 (build 584) et le compte numéro 3, exactement comme le numéro 2, mais le terminal build 509.

Et il y a un chalutage de stop loss :

void manageStops()
{ 
   string trailSymbol=Symbol();  
   for( int i = OrdersTotal()-1; i >=0 ; i-- ) 
   {
      if ( OrderSelect( i, SELECT_BY_POS ) == true ) 
      {  
         int trailOrderType = OrderType(); 
         if( OrderSymbol() != trailSymbol || trailOrderType > 1 || OrderProfit() < 0 ) continue; 
         double trailStopLoss = OrderStopLoss();   
         while( true ) {
            double trailStop = TrailingStop; 
            int trailDistance = MarketInfo( trailSymbol, MODE_STOPLEVEL ); 
            if( trailStop < trailDistance ) trailStop = trailStop+trailDistance;  
            bool modifyTrailingStop = false;  
            switch( trailOrderType ) 
            {
               case 0 : 
                  if(trailStopLoss < (Bid - (TrailingStop+TrailingStep) * pipPoints)) 
                  {
                     trailStopLoss = NormalizeDouble(Bid - TrailingStop * pipPoints,digits);   
                     modifyTrailingStop = true;       
                  }
                  break;    
               case 1 :                      
                  if(trailStopLoss > (Ask + (TrailingStop+TrailingStep) * pipPoints)) 
                  {
                     trailStopLoss = NormalizeDouble(Ask + TrailingStop * pipPoints,digits);             
                     modifyTrailingStop = true;             
                  }
               }                               
            if( modifyTrailingStop == false ) break;                       
            double trailTakeProfit = OrderTakeProfit(); 
            double trailPrice = OrderOpenPrice();  
            int trailTicket = OrderTicket();   
            if( ( OrderType() == OP_BUY && trailStopLoss > trailPrice && trailStopLoss < OrderOpenPrice() + ( MaxStop * pipPoints ) ) 
                  || ( OrderType() == OP_SELL && trailStopLoss < trailPrice && trailStopLoss > OrderOpenPrice() - ( MaxStop * pipPoints ) ) )

            OrderModify( trailTicket, trailPrice, trailStopLoss, trailTakeProfit,0);
            break; 
           } 
        }  
     }  
  return;   
} 

Pourquoi sur le compte #1 le stoploss est tracé normalement, mais sur les comptes #2 et 3 "erreur 130" ??? Bien que la logique soit subvertie, mais ça marche dans un cas...

 
evillive:

Eh bien, je ne suis pas un programmeur après tout...

Il y a le compte numéro 1 - à cinq chiffres avec un lot min. de 0,01 et un pas de 0,01 (build 584) ; le compte numéro 2 - à quatre chiffres avec un lot min. de 0,1 et un pas de 0,1 (build 584) et le compte numéro 3, juste le même que le numéro 2, seulement le terminal build 509.

Et il y a un chalutage d'arrêt :

Pourquoi le stop loss du compte 1 suit-il normalement, mais les comptes 2 et 3 affichent "Error 130" ? Bien que la logique soit subvertie, mais ça marche dans un cas...


La question elle-même implique que le problème concerne un compte à 5 ou 4 chiffres. Je regarde le code. Où est définie la variable pipPoint et à quoi correspond-elle ? C'est très probablement là que se situe le problème.
 
pro_:

La question elle-même suggère que le problème concerne un compte à 5 ou 4 chiffres. Je regarde le code. Où est définie la variable pipPoints et à quoi correspond-elle ? C'est probablement là que réside le problème.

J'ai défini pipPoints = MarketInfo( Symbol(), MODE_POINT) dans l'init ;

J'ai augmenté la valeur MaxStop et le chalut devrait changer par incréments avec des plus grands, mais il change par incréments de 1 point, au moins il commence à chaluter à 4 chiffres... Je vais encore devoir modifier la logique, j'ai besoin d'un pas réglable.

 
smdm:

Bonjour !

La question est la suivante. J'ai un indicateur Heiken Ashi Smoothed https://www.mql5.com/ru/code/7930.

Quelles modifications dois-je apporter au code de l'indicateur pour pouvoir attacher cet indicateur sur un graphique de cinq minutes sur un cadre temporel plus élevé, par exemple sur un graphique de trente minutes ou d'une heure ?

Merci.


J'ai posé une question similaire - comment appliquer un indicateur du graphique hebdomadaire au graphique H4. j'ai martelé sur plusieurs forums . et ici aussi, mais n'a pas obtenu quelque chose de mieux que de prescrire la taille d'un grand TF-m dans le code pour un plus petit, personne n'a suggéré. bien que si votre indicateur a une logistique simple et prend pour son calcul de simples calculs de barres, il est possible. si vous pouvez texte le code et un écran sur n1 un studio avec vos explications .
 

et donc l'indicateur doit dessiner une ligne verticale sur la barre sur laquelle le prix clôture au milieu de la barre......

double close_price(int nomer_bara)
{
if(nomer_bara<1)
{
Alert("нельзя анализировать текущий бар");
}
else
{
if(iClose(Symbol(),NULL,nomer_bara)-iLow(Symbol(),NULL,nomer_bara)<iHigh(Symbol(),NULL,nomer_bara)-iLow(Symbol(),NULL,nomer_bara)/3)//возвращает 1/3 если цена текущего бара закрылась ниже 1/3 его спреда 
{
return(1/3);
}
if(iClose(Symbol(),NULL,nomer_bara)-iLow(Symbol(),NULL,nomer_bara)>iHigh(Symbol(),NULL,nomer_bara)-iLow(Symbol(),NULL,nomer_bara)/3&&(iClose(Symbol(),NULL,nomer_bara)-iLow(Symbol(),NULL,nomer_bara)<iHigh(Symbol(),NULL,nomer_bara)-iLow(Symbol(),NULL,nomer_bara)*2)/3)//возвращает 2/3 если цена текущего бара закрылась ниже 2/3 и выше 1/3 его спреда 
{
return(2/3);
}

if((iClose(Symbol(),NULL,nomer_bara)-iLow(Symbol(),NULL,nomer_bara)>(iHigh(Symbol(),NULL,nomer_bara)-iLow(Symbol(),NULL,nomer_bara))*2)/3&&iClose(Symbol(),NULL,nomer_bara)-iLow(Symbol(),NULL,nomer_bara)<iHigh(Symbol(),NULL,nomer_bara)-iLow(Symbol(),NULL,nomer_bara))//возвращает 1 если цена текущего бара закрылась выше 2/3 его спреда
{
return(1);
}
}

}

 if(close_price(1)==1/3)// в случае если цена закрылась внизу то нарисовать линию на этом баре
   {
 SetVLine(Red, "", Time[1], STYLE_SOLID, 2);
   }
и так вся проблема заключается в том что линия рисуется на каждом баре не пойму какого черта... помогите пожалуйста