mql5 - ligne verticale après un certain temps depuis la dernière transaction - page 4

 
renatmt5:
Au fait, il y a autre chose à propos de la protection que vous avez ajoutée. Comme j'ai un délai de 1 à 2 minutes avant que la valeur correcte ne soit calculée, pendant lequel les variables sont égales à zéro, je passe de l'horizon temporel actuel à un autre pour une mise à jour rapide - les valeurs sont immédiatement recalculées. Il est probablement possible de créer une béquille logicielle sur ce principe ?

Je déteste le mot "béquille".


J'ai déjà pensé à tout à l'avance et c'est très bien que vous ayez demandé. Nous devons transformer LastProfitForPeriod de void en bool. S'il y a une erreur - par exemple, la date n'est pas trouvée ou autre chose, nous retournons false et ainsi de suite.

Il n'y aura donc pas de perte de minutes.

 

Si vous obtenez "faux", remettez l'heure à zéro:

   double profit_last_day=0.0,profit_last_deal=0.0;
   if(!LastProfitForPeriod(profit_last_day,profit_last_deal))
     {
      ExtLastMove=0;
      return(rates_total);
     }

   Comment("Profit last day: ",DoubleToString(profit_last_day,2),"\n",
           "Profit last deal: ",DoubleToString(profit_last_deal,2));


Version 1.003

 
Vladimir Karputov:

Je déteste le mot "béquille".


J'ai déjà pensé à tout à l'avance et c'est très bien que vous ayez demandé. Nous devons transformer LastProfitForPeriod de void en bool. S'il y a une erreur - par exemple, la date n'est pas trouvée ou autre chose, nous retournons false et ainsi de suite.

Il n'y aura donc pas de perte de minutes.

A propos de "béquille" - oui, il y a dans ce mot une certaine attitude négligente vis-à-vis de la programmation :)

Oui, l'effet de la minute perdue a disparu dans la version 3 du script.

 
renatmt5:

Quant à "béquille", oui, il y a dans ce mot une certaine négligence de la programmation :)

Oui, l'effet de la minute perdue a disparu dans la version 3 du script.

C'est unindicateur:)

 
Vladimir Karputov:

C'est unindicateur:)

Oui, c'est vrai - je m'embrouille encore.

 

J'ai ajouté un bloc pour calculer le décalage temporel par rapport à la clôture de la dernière transaction. Lorsque j'essaie d'utiliser last_time et n pour le décalage de ligne plus tard, je reçois une erreur de compilation :(

.....

                    {

                     last_time=deal_time;

                     profit_last_deal=full_profit;

                    }

                 }

        }

     }

//-------------//     

// MY CODE     //   

//-------------//

if (profit_last_day<=0 && profit_last_deal<=0){uint n=60*60*24;}

else if (profit_last_day>0 && profit_last_deal<=0){uint n=60*60*2;}

else {uint n=60*60*1;}

//-------------//     

// MY CODE END //   

//-------------//

   return(true);

  }

.......
 
Je n'ai pas réussi à insérer le code correctement :)
 
Lors de la création d'ObjectCreate (chart_ID,name,OBJ_VLINE,sub_window,time,0), je dois changer l'heure de TimeCurrent() enlast_time avec un décalage dans le futur d'une période égale à n.
Ou peut-être existe-t-il une fonction qui décale un objet vers l'avant/vers l'arrière d'un nombre spécifié de barres ? Qu'est-ce qui est mieux ? J'avoue que jusqu'à présent, mes efforts indépendants n'ont pas été couronnés de succès :(
 
renatmt5:
Lors de la création d'un ObjectCreate (chart_ID,name,OBJ_VLINE,sub_window,time,0), je veux changer la valeur du temps pour que ce ne soit pas TimeCurrent(), maislast_time avec un décalage pour la période égale à n.
Ou peut-être existe-t-il une fonction qui décale un objet vers l'avant/vers l'arrière d'un nombre spécifié de barres ? Qu'est-ce qui est mieux ? J'avoue que jusqu'à présent, mes efforts indépendants n'ont pas été couronnés de succès :(

La ligne est créée une fois - dans OnInit().

Il est alors seulement déplacé -VLineMove

 

Est-ce que je comprends bien que je dois modifier la dernière ligne du bout de code (notamment time=0) ?

//+------------------------------------------------------------------+ 
//| Move the vertical line                                           | 
//+------------------------------------------------------------------+ 
bool VLineMove(const long   chart_ID=0,   // chart's ID 
               const string name="VLine", // line name 
               datetime     time=0)       // line time 


Ou bien VLineMove est une fonction qui doit être initiée à un endroit quelconque (par exemple dans OnCalculate) et lui transmettre les paramètres entrants ?
Je suis complètement confus :)

Raison: