Aide au codage - page 722

 
Tigra:


Dans cet indicateur, il ya quelques problèmes lors de l'utilisation des citations à 4 chiffres. Mais il n'est pas critique, le problème est l'échelle à 4 chiffres au niveau de 100, a essayé de montrer les images, en regardant au bon moment est très fatiguant pour vos yeux (après quelques jours, si comme un fil à changer l'échelle au niveau de 40 - il serait mieux d'être vu histogrammes et coin droit du texte qui indiquerait la valeur actuelle ?

Оставлю оригинальный текст на русском, тк возможны искажения при переводе(

Il n'y a aucune raison pour que l'on ne se mette pas d'accord sur le fait qu'il n'y ait pas d'échange d'informations. Но это не критично, самая проблемы это масштабирование на 4 значном до уровня 100, постарался показать на картинках, разглядывать нужный момент весьма напрягает глаза( после нескольких дней, можно ли как нить поменять масштаб доуровня 40 - что бы лучше было видно гистограммы и в правом углу текстом что бы обозначалось текущее значение ? Il n'y a aucune raison de ne pas le faire. Il n'y a aucune raison de ne pas le faire.

Ce n'est pas le repeinteur ?
 

Mladen,

Je travaille avec MT5.

J'ai cette " fonction de trailing simple" que je dois convertir en "trailing avec step", pourriez-vous me donner un conseil ?

Dans l'EA, j'ai
===================
entrée "Trailing" (par points)

=> exemple :
trailing : 4000 (4 points)
(ancienne méthode) si le prix a bougé de 4 points, déplacer le stoploss de 4 points

mais je dois modifier en

===================
Entrée "Trailing (Distance) en points".
Entrée "Trailing (Step) en points".

=> exemple :
distance de suivi : 4000 (4 points)
pas de traînage : 1500 (1,5 points)

(nouvelle méthode) si le prix a bougé de 4points déplacer le stoploss de 1,5 points

//+------------------------------------------------------------------+
//| Simple Trailing function                                         |
//+------------------------------------------------------------------+
void fSimpleTrailing(){
   if(Trailing<=0){
      return;
   }        
   if(!Pos.Select(_Symbol)){
      return;
   }        
   if(!Sym.RefreshRates()){
      return;  
   }  
   double nsl,tmsl,psl;  
   switch(Pos.PositionType()){
      case POSITION_TYPE_BUY:
         nsl=Sym.NormalizePrice(Sym.Bid()-_Point*Trailing);
            if(nsl>=Sym.NormalizePrice(Pos.PriceOpen())){
               if(nsl>Sym.NormalizePrice(Pos.StopLoss())){
                  tmsl=Sym.NormalizePrice(Sym.Bid()-_Point*Sym.StopsLevel());
                     if(nsl<tmsl){
                        Trade.PositionModify(_Symbol,nsl,Pos.TakeProfit());
                     }
               }
            }
      break;
      case POSITION_TYPE_SELL:
         nsl=Sym.NormalizePrice(Sym.Ask()+_Point*Trailing);
            if(nsl<=Sym.NormalizePrice(Pos.PriceOpen())){
               psl=Sym.NormalizePrice(Pos.StopLoss());
                  if(nsl<psl || psl==0){
                     tmsl=Sym.NormalizePrice(Sym.Ask()+_Point*Sym.StopsLevel());
                        if(nsl>tmsl){
                           Trade.PositionModify(_Symbol,nsl,Pos.TakeProfit());
                        }
                  }
            }      
      break;
   }
}
 
nbtrading:
N'est-ce pas le repeinteur ?

Oui, il raconte, mais la couleur n'est pas importante dans cet indicateur, pour moi c'est très bien montre dehors.
 
baraozemo:

Mladen,

Je travaille avec MT5.

J'ai cette "fonction de trailing simple" que je dois convertir en "trailing avec step", pourriez-vous me donner un conseil ?

Dans l'EA, j'ai
===================
entrée "Trailing" (par points)

=> exemple :
trailing : 4000 (4 points)
(ancienne méthode) si le prix a bougé de 4 points, déplacer le stoploss de 4 points

mais j'ai besoin de modifier en

===================
Entrée "Trailing (Distance) en points".
Entrée "Trailing (Step) en points".

=> exemple :
distance de suivi : 4000 (4 points)
pas de traînage : 1500 (1,5 points)

(nouvelle méthode) si le prix a bougé de 4points déplacer le stoploss de 1,5 points

//+------------------------------------------------------------------+
//| Simple Trailing function                                         |
//+------------------------------------------------------------------+
void fSimpleTrailing(){
   if(Trailing<=0){
      return;
   }        
   if(!Pos.Select(_Symbol)){
      return;
   }        
   if(!Sym.RefreshRates()){
      return;  
   }  
   double nsl,tmsl,psl;  
   switch(Pos.PositionType()){
      case POSITION_TYPE_BUY:
         nsl=Sym.NormalizePrice(Sym.Bid()-_Point*Trailing);
            if(nsl>=Sym.NormalizePrice(Pos.PriceOpen())){
               if(nsl>Sym.NormalizePrice(Pos.StopLoss())){
                  tmsl=Sym.NormalizePrice(Sym.Bid()-_Point*Sym.StopsLevel());
                     if(nsl<tmsl){
                        Trade.PositionModify(_Symbol,nsl,Pos.TakeProfit());
                     }
               }
            }
      break;
      case POSITION_TYPE_SELL:
         nsl=Sym.NormalizePrice(Sym.Ask()+_Point*Trailing);
            if(nsl<=Sym.NormalizePrice(Pos.PriceOpen())){
               psl=Sym.NormalizePrice(Pos.StopLoss());
                  if(nsl<psl || psl==0){
                     tmsl=Sym.NormalizePrice(Sym.Ask()+_Point*Sym.StopsLevel());
                        if(nsl>tmsl){
                           Trade.PositionModify(_Symbol,nsl,Pos.TakeProfit());
                        }
                  }
            }      
      break;
   }
}
Si le prix a bougé par rapport à : quoi ?
 
mladen:
Si le prix a bougé par rapport à : quoi ?

avant d'appeler la fonction vous avez

si le prix est en train de "monter", vous vérifiez la "distance" en points. s'il correspond à la "distance" vous déplacez le stoploss en utilisant le pas (en points)

exemple :

stoploss =8000
distance de suivi = 4000
pas de suivi = 2000

vous achetez au prix de 10000

maintenant le prix est de 14000 (distance de suivi cible atteinte=4000), maintenant vous devez déplacer le stoploss à 6000 (8000 - trailing step)

le prix est maintenant de 18000 (distance de suivi atteinte=4000 ), vous devez maintenant déplacer le stoploss à 2000 (6000 - pas de suivi)

le prix est maintenant de 22000 (distance de suivi de l'objectif atteint=4000), vous devez maintenant déplacer le stoploss à "entrée" + 2000 (2000 - étape de suivi =-2000)

maintenant le prix est de 24000 (distance de suivi atteinte=4000), maintenant vous devez déplacer le stoploss à "l'entrée" + 6000 (-2000 - pas de suivi =-6000)

 
baraozemo:

avant d'appeler la fonction vous avez

si le prix est en train de "monter", vous vérifiez la "distance" en points. s'il correspond à la "distance" vous déplacez le stoploss en utilisant le pas (en points)

exemple :

stoploss =8000
trailing distance = 4000
trailing step = 2000

vous achetez au prix de 10000

maintenant le prix est de 14000 (distance de suivi atteinte=4000), vous devez déplacer le stoploss à 6000 (8000 - pas de suivi)

maintenant le prix est de 18000 (distance de suivi atteinte=4000), vous devez déplacer le stoploss à 2000 (6000 - pas de suivi)

maintenant le prix est de 22000 (distance de suivi atteinte=4000), vous devez déplacer le stoploss à "entrée" + 2000 (2000 - pas de suivi =-2000)

le prix est maintenant de 24000 (distance cible atteinte=4000), vous devez maintenant déplacer le stoploss à "entrance" + 6000 (-2000 - trailing step =-6000)

Oui, mais si vous ne l'avez pas enregistré (comme c'est généralement le cas avec les prix du stop loss ou du take profit: lorsqu'ils sont modifiés, ils commencent à être un critère pour un autre changement), vous êtes obligé d'avoir cela dans les variables et c'est tout sauf une preuve d'erreur. Ce que vous essayez n'est pas reproductible par le code ou vous devez coder en dur ces arrêts pour chaque cas, ce qui le rend inutilisable pour tout prix ouvert qui n'est pas exactement le même que les prix codés en dur.
 

Bonjour,

Je voudrais écrire une fonction qui dessine une flèche. Je voudrais que la flèche flotte. Une idée ? :)

void DrawArrow(string name, int IdSymbol, int x, int y, int width, int corner, color clr)
{
   ObjectCreate(0,name,OBJ_ARROW,0,0,0,0,0);
      ObjectSetInteger(0,name,OBJPROP_ARROWCODE,IdSymbol);
      ObjectSetInteger(0,name,OBJPROP_CORNER,corner);
      ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);
      ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
      ObjectSetInteger(0, name, OBJPROP_COLOR, clr);
      ObjectSetInteger(0,name,OBJPROP_WIDTH,width);
      ChartRedraw(0);
}

 
mladen:
Oui, mais si vous ne l'avez pas enregistré (comme c'est généralement le cas avec les prix stop loss ou take profit : quand ils sont modifiés, ils commencent à être un critère pour un autre changement), vous êtes forcé de l'avoir dans des variables et c'est tout sauf une preuve d'erreur. Ce que vous essayez n'est pas reproductible par le code ou vous devez coder en dur ces stops pour chaque cas, ce qui le rend inutilisable pour tout prix ouvert qui n'est pas exactement le même que les prix codés en dur.

Salut mladen,

voici l'exemple d'application

Dossiers :
sample-ea.mq5  36 kb
 
Tartut:

Bonjour,

Je voudrais écrire une fonction qui dessine une flèche. Je voudrais que la flèche flotte. Une idée ? :)

void DrawArrow(string name, int IdSymbol, int x, int y, int width, int corner, color clr)
{
   ObjectCreate(0,name,OBJ_ARROW,0,0,0,0,0);
      ObjectSetInteger(0,name,OBJPROP_ARROWCODE,IdSymbol);
      ObjectSetInteger(0,name,OBJPROP_CORNER,corner);
      ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);
      ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
      ObjectSetInteger(0, name, OBJPROP_COLOR, clr);
      ObjectSetInteger(0,name,OBJPROP_WIDTH,width);
      ChartRedraw(0);
}

Que signifie la flèche "flottante" ?

PS : les objets flèches n'utilisent pas les coordonnées x et y ou le coin. Ils utilisent le temps et le prix.

 

Bonjour Mr. mladen

s'il vous plaît, faites-lui une MTF

à propos de

Dossiers :