mql5 - vertikale Linie nach einer bestimmten Zeit seit dem letzten Handel - Seite 4

 
renatmt5:
Übrigens gibt es noch einen weiteren Aspekt des von Ihnen hinzugefügten Schutzes. Da ich eine Verzögerung von 1-2 Minuten habe, bevor der korrekte Wert berechnet wird, während der die Variablen gleich Null sind, schalte ich den aktuellen Zeitrahmen auf einen anderen für eine schnelle Aktualisierung um - die Werte werden sofort neu berechnet. Wahrscheinlich ist es möglich, eine Software-Krücke nach diesem Prinzip zu erstellen?

Ich hasse das Wort 'Krücke'.


Ich habe bereits im Vorfeld an alles gedacht, und es ist sehr gut, dass Sie gefragt haben. Wir müssen LastProfitForPeriod von void in bool umwandeln. Im Falle eines Fehlers - z. B. wenn das Datum nicht gefunden wurde - wird false zurückgegeben, und so weiter.

Es gehen also keine Minuten verloren.

 

Wenn Sie "false" erhalten, stellen Sie die Zeit neu ein:

   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:

Ich hasse das Wort 'Krücke'.


Ich habe bereits im Vorfeld an alles gedacht, und es ist sehr gut, dass Sie gefragt haben. Wir müssen LastProfitForPeriod von void in bool umwandeln. Im Falle eines Fehlers - z. B. wenn das Datum nicht gefunden wurde - wird false zurückgegeben, und so weiter.

Es gehen also keine Minuten verloren.

Über "Krücke" - ja, in diesem Wort steckt eine gewisse nachlässige Einstellung zum Programmieren :)

Ja, der Effekt der verlorenen Minute ist in Version 3 des Skripts verschwunden.

 
renatmt5:

Was "Krücke" angeht - ja, in diesem Wort steckt eine gewisse Unachtsamkeit beim Programmieren :)

Ja, der Effekt der verlorenen Minute ist in Version 3 des Skripts verschwunden.

Es ist ein Indikator:)

 
Vladimir Karputov:

Es ist ein Indikator:)

Ja, das ist richtig - ich bin immer noch verwirrt.

 

Ich habe einen Block hinzugefügt, um den Zeitversatz in Bezug auf den Abschluss der letzten Transaktion zu berechnen. Wenn ich später versuche, last_time und n für den Zeilenversatz zu verwenden, erhalte ich einen Kompilierfehler :(

.....

                    {

                     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);

  }

.......
 
Irgendwie füge ich den Codeschnipsel nicht richtig ein :)
 
Beim Erstellen von ObjectCreate (chart_ID,name,OBJ_VLINE,sub_window,time,0) muss ich die Zeit von TimeCurrent() zulast_time mit einem Offset in die Zukunft um eine Periode gleich n ändern.
Oder gibt es vielleicht eine Funktion, die ein Objekt um eine bestimmte Anzahl von Takten nach vorne/hinten verschiebt? Was ist besser? Ich muss gestehen, dass meine unabhängigen Bemühungen bisher erfolglos waren :(
 
renatmt5:
Beim Erstellen von ObjectCreate (chart_ID,name,OBJ_VLINE,sub_window,time,0), möchte ich den Zeitwert ändern, so dass es nicht TimeCurrent(), sondernlast_time mit einem Offset für den Zeitraum gleich n wäre.
Oder gibt es vielleicht eine Funktion, die ein Objekt um eine bestimmte Anzahl von Takten nach vorne/hinten verschiebt? Was ist besser? Ich muss gestehen, dass meine unabhängigen Bemühungen bisher erfolglos waren :(

Die Zeile wird einmal erstellt - in OnInit().

Dann wird sie nur verschoben -VLineMove

 

Verstehe ich das richtig, dass ich in der letzten Zeile des Codeschnipsels Änderungen vornehmen muss (vor allem 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 


Oder ist VLineMove eine Funktion, die noch an irgendeiner Stelle (z.B. in OnCalculate) initiiert werden muss und der die eingehenden Parameter übergeben werden müssen?
Ich bin völlig verwirrt :)