[ARCHIVE]Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 5. - page 344

 
VladTch:

Bonne journée à tous !

Ma question semble être simple, mais j'ai parcouru tous les articles, sans trouver de réponse - comment fonctionne l'opérateur return(-1) ? Où passe-t-il le contrôle ? Dans ce code, par exemple :

sinon retour(0);

Avec le zéro entre parenthèses et sans parenthèses, tout semble clair. Mais qu'en est-il de (-1) ?

Merci de votre réponse. :)

Lesfonctions spéciales sont des fonctions générales. Ils peuvent être appelés comme des fonctions définies par l'utilisateur. Mais il y a une particularité. Pendant l'appel système, les paramètres et la valeur de retour ne sont pas transmis.

 
Summus_Digitus:
Bonjour à tous. C'est une question sérieuse et urgente et j'ai cherché partout sur Internet, comme on dit... J'ai décidé d'utiliser MT4 depuis longtemps, je l'utilise depuis 3 jours. J'ai essayé de l'utiliser pendant un certain temps et il m'a semblé que c'était pour la première fois et que je ne comprenais pas ce qui se passait. Je me suis dit que ce n'était pas grave, mais tout d'un coup, je vais sur MT et je vois 4 graphiques H4 avec un nouveau système et je vois le mauvais prix, je le compare avec le StartFX 2, j'ouvre les cadres temporels H1 et D1 et j'attends... Cela fait une heure que j'attends que le site soit mis à jour année par année, mais il ne le fait pas. "Eh bien, réinstallez-le et c'est tout" - vous dites, et je vous réponds "Fuck it". "Alors téléchargez un indicateur de mise à jour d'un logiciel depuis je ne sais quel site" - vous demandez et je vous réponds : "Je l'emmerde deux fois". Je veux vraiment continuer à gagner de l'argent et étrangler l'aide informatique avec 1 et ensuite nous verrons :-)

Aux Annales ! !!
 

Pourquoi je ne peux pas peindre un numéro ?

 #property indicator_chart_window
void start()
   {
string spred=DoubleToStr(MarketInfo(Symbol(), MODE_SPREAD), 0);
   string lot=AccountFreeMargin()/(Bid)*0.002;
   string lots=StringSubstr(lot, 4, 1);
 
SetLabel("ЧИСЛО",   lots , ColorOnSign(lots), 5, 7, 1);}
  
   color ColorOnSign(double nu){
      color lcColor=Navy;
         if (nu<4) lcColor=Green;
         if (nu>6) lcColor=Red;
      return(lcColor);}
     
   void SetLabel(string nm, string tx, color cl, int xd, int yd, int cr=0, int fs=9) {
      if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_LABEL, 0, 0,0);
         ObjectSetText(nm, tx, fs);
         ObjectSet(nm, OBJPROP_COLOR    , cl);
         ObjectSet(nm, OBJPROP_XDISTANCE, xd);
         ObjectSet(nm, OBJPROP_YDISTANCE, yd);
         ObjectSet(nm, OBJPROP_CORNER   , cr);
         ObjectSet(nm, OBJPROP_FONTSIZE , 18);
      return(0);}

Pourquoi je ne peux pas peindre un numéro ?

 

Bizarre. Je croyais qu'il y avait une question.

C'est en train de se compiler !

 
Elektronik:

Pourquoi je ne peux pas peindre un numéro ?

 #property indicator_chart_window
void start()
   {
string spred=DoubleToStr(MarketInfo(Symbol(), MODE_SPREAD), 0);
   string lot=AccountFreeMargin()/(Bid)*0.002;
   string lots=StringSubstr(lot, 4, 1);
 
SetLabel("ЧИСЛО",   lots , ColorOnSign(lots), 5, 7, 1);}
  
   color ColorOnSign(double nu){
      color lcColor=Navy;
         if (nu<4) lcColor=Green;
         if (nu>6) lcColor=Red;
      return(lcColor);}
     
   void SetLabel(string nm, string tx, color cl, int xd, int yd, int cr=0, int fs=9) {
      if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_LABEL, 0, 0,0);
         ObjectSetText(nm, tx, fs);
         ObjectSet(nm, OBJPROP_COLOR    , cl);
         ObjectSet(nm, OBJPROP_XDISTANCE, xd);
         ObjectSet(nm, OBJPROP_YDISTANCE, yd);
         ObjectSet(nm, OBJPROP_CORNER   , cr);
         ObjectSet(nm, OBJPROP_FONTSIZE , 18);
      return(0);}

Pourquoi je ne peux pas peindre un numéro ?

Vous l'avez peint, mais pour changer la couleur, vous devez créer un autre objet de la même couleur ! Et changez les objets, alors la couleur changera visuellement ! C'est ce que je comprends ! Ou peut-être y a-t-il une opinion différente ? Pour ma part, je n'ai changé de couleur avec Mashka que de cette manière.
 

Je pense que c'est une question de nombre.

lots=StringSubstr(lot, 4, 1); 

peut-être que le logiciel le comprend comme un seul chiffre.

 
Elektronik:

C'est bizarre. Je croyais qu'il y avait une question.

C'est en train de se compiler !

Ouais, je voulais en rajouter et je l'ai accidentellement effacé. Je ne voulais pas le restaurer.

Vous devez changer la couleur avec ça :

ObjectSet(nm, OBJPROP_COLOR, cl);

Votre code ne montre pas où vous changez la couleur.

============

J'ai trouvé où...

C'est comme ça qu'il faut faire :

   void SetLabel(string nm, string tx, color cl, int xd, int yd, int cr=0, int fs=9)
    {
     ObjectCreate(nm, OBJ_LABEL, 0, 0,0);
     ObjectSetText(nm, tx, fs);
     ObjectSet(nm, OBJPROP_COLOR    , cl);
     ObjectSet(nm, OBJPROP_XDISTANCE, xd);
     ObjectSet(nm, OBJPROP_YDISTANCE, yd);
     ObjectSet(nm, OBJPROP_CORNER   , cr);
     ObjectSet(nm, OBJPROP_FONTSIZE , 18);
    }

N'ayez pas peur de recréer l'objet. C'est optimisé. Si un objet est créé, il ne modifie que les propriétés qui changent. Il ne sera pas recréé.

Veuillez mettre les accolades sur un seul niveau, sinon vous ne comprendrez pas ce qui est écrit là où les blocs commencent et finissent.

Il doit y avoir des problèmes avec le paramètre ColorOnSign(). Le paramètre est double et vous insérez une chaîne.

SetLabel("ЧИСЛО", lots, ColorOnSign(StrToDouble(lots)), 5, 7, 1);

Ou

color ColorOnSign(string sLots)
 {
  double nu = StrToDouble(sLots);
  color lcColor=Navy;
  if (nu<4) lcColor=Green;
  if (nu>6) lcColor=Red;
  return(lcColor);
 }
 

Bonjour, aidez-moi et si vous pouvez me donner un indice sur le code.

J'ai le chalut suivant dans owl ->

        for ( int v = OrdersTotal() - 1; v >= 0; v -- ){       
                if (OrderSelect(v, SELECT_BY_POS, MODE_TRADES)){           
                        if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic){ 
                                //+=================================================================================+
                                ///+================================Обычный трал ====================================+
                                if (TralSimple){
                                        if(OrderType() == OP_SELL){
                                                if((OrderOpenPrice()-Ask) > (Point*TrailingStop)){ 
                                                        if((OrderStopLoss() > (Ask+Point*TrailingStop)) || (OrderStopLoss()==0)){
                                                                OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
                                                        }
                                                }
                                        }
                                        //+=================================================================================+
                                        if(OrderType() == OP_BUY){
                                                if((Bid-OrderOpenPrice()) > (Point*TrailingStop)){
                                                        if(OrderStopLoss() < Bid-Point*TrailingStop || (OrderStopLoss()==0)){
                                                                OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Blue);  
                                                        }
                                                }
                                        }
                                }                                  
--------------------------------------------

Maintenant le chalut se déplace d'un stop après chaque tick positif. Je veux faire ce qui suit :

le premier passage - lors d'un tic positif, le chalut déplacera l'arrêt d'un point et augmentera le pas en avant.

Deuxième passe - prenons une variable x qui sera incrémentée de 1 à chaque fois que nous ferons un certain pas (5). Et à chaque passe (pas)*x

etc.

La question est de savoir comment visser cette étape avec un multiplicateur croissant. En cas de plusieurs postes, ce multiplicateur doit être différent pour chaque poste.

 
berezhnuy:

Bonjour, aidez-moi et si vous pouvez me donner un indice sur le code.

J'ai le chalut suivant dans owl ->

Maintenant le chalut se déplace d'un stop après chaque tick positif. Je veux faire ce qui suit :

premier passage - à un tick positif, le chalut déplacera le stop de 1 point, et de combien la paire a augmenté.

Deuxième passe - prenez une variable x qui sera augmentée de 1 à chaque passe.

etc.

La question est de savoir comment ajouter une étape avec un multiplicateur croissant. Et en cas de plusieurs postes, ce multiplicateur doit être différent pour chaque poste.


Vous faites quelque chose comme une parabole, le calcul est relatif au point de base - prix et heure d'ouverture.
 
Si vous pouviez me donner un code ou au moins un schéma fonctionnel. Je ne comprends pas vraiment l'idée
Raison: