[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 749

 
artmedia70:
Kluge Entwickler. Wenn es möglich wäre, ein Skript abzurufen, würde ich einen Schein dafür verlangen, aber das geht anscheinend auch nicht, denn es gibt keinen Bedarf an einer Reihe von Beratern auf einmal... Es gibt keinen einfachen Ausweg für uns :)
 

Meine Herren Programmierer. Könnten Sie mir bitte helfen?

Aus den Eingabevariablen.

extern bool UseHourTrade = True;
extern int FromHourTrade = 0;
extern int ToHourTrade = 23;

int start(){
if (UseHourTrade){
if (!(Hour()>=FromHourTrade && Hour()<=ToHourTrade)) {
Comment("Die Zeit für den Handel ist noch nicht gekommen!");
return(0);
}
}

Ich möchte eine zweite Zeitperiode hinzufügen, in der der Handel mit anderen Variablen UseHourTrade2, FromHourTrade2, ToHourTrade2 durchgeführt werden soll.

Bitte helfen Sie mir. Bitte sagen Sie mir, was zur Startfunktion hinzugefügt werden sollte. Ich habe so viele Dinge ausprobiert, die nicht funktionieren.

Ich möchte Ihnen im Voraus danken. Ich kann nicht helfen.

 
cyclik33:
extern bool UseHourTrade = True,
            UseHourTrade2 = True;
 extern int FromHourTrade = 0,
            FromHourTrade2 = 0,
            ToHourTrade = 23,
            FromHourTrade2 = 23;

int start(){
   if (UseHourTrade){
   if (!(Hour()>=FromHourTrade && Hour()<=ToHourTrade)) {
 Comment("Time for trade has not come else!");
 return(0);
 }
   if (UseHourTrade2){
   if (!(Hour()>=FromHourTrade && Hour()<=FromHourTrade2)) {
 Comment("Time for trade has not come else!");
 return(0);
 }
 }

So etwas in der Art, denke ich.

SZY Die Taste zum Einfügen des Codes "SRC" ist umständlich zu bedienen, sie ist nicht leicht zu lesen.

 
Abzasc:

Das Rätsel ist folgendes.

Der Indikator ganz am Ende des Codes erzeugt ein Objekt, das als Flag für einen anderen Indikator dient.

Nach dem Erstellen des Objekts muss ich den Indikator 5 Sekunden lang "schlafen" lassen, dann das Objekt löschen und 60 Sekunden lang schlafen lassen, woraufhin er zum letzten Wiederholungsversuch übergeht und mit einem neuen Tick von vorne beginnt.

Ich versuche dies zu tun

Es bleibt so lange hängen, bis die Zeit abgelaufen zu sein scheint.

Haben Sie einen Tipp, wie Sie das machen können?


Die Logik ist folgende - beide Indikatoren kennen den Namen des Objekts und ein zusätzliches Objekt

die erste erstellt das Objekt und tut nichts, während es dort ist - ganz am Anfang des Starts schreiben wir die Exit-Bedingung (return;)

der zweite liest das Objekt, erledigt seine Aufgaben und setzt ein weiteres Objekt

das erste, ohne das Hauptobjekt zu sehen, nichts tut und sofort das zweite (zusätzliche Objekt) findet, die Zeit der Objekterstellung abliest (sie wird dort von der zweiten Komponente bei der Erstellung in der Beschreibung eingetragen), die erforderliche Pause (60 Sekunden) herunterzählt und alle Objekte löscht - Sie können weiterarbeiten ....

 
Abzasc:
Sie funktioniert nicht in Indikatoren. Ich verstehe nicht, warum man das so macht. Offenbar muss ein ständig funktionierender Indikator hypnotisierend sein :)

Der Grund dafür ist, dass der Indikator im Fluss der Schnittstelle arbeitet, Sie können ihn nicht in den Schlaf versetzen, denn wenn Sie ihn "verlangsamen" könnten, könnten Sie in diesem Moment keine Taste im Terminal drücken, z.B. "Neuer Auftrag", oder einen Auftrag schließen, usw.
Eine weitere Spitzfindigkeit bei diesem Thema betrifft den Prüfer. Im realen Terminal gibt es mehrere Threads, ein Interface-Thread wird separat für Expert Advisors erstellt (deshalb kann er ohne Folgen verlangsamt werden) und im Tester ist es für alle gleich, und alle für einen :)
Aus diesem Grund funktioniert die Funktion Sleep() im Testmodus auf eine ganz bestimmte Weise. Wenn Sie den Ablauf des Testers in den Ruhezustand versetzen, funktioniert alles nicht mehr, einschließlich der Expert Advisors, Indikatoren und der Tick-Erzeugung, versteht sich. Wenn ich Ihre Idee also richtig verstanden habe, kann sie nur in einer Demo getestet werden. Wenn Sie den Fluss der Schnittstelle verlangsamen wollen, können Sie die folgende Funktion verwenden:

//+------------------------------------------------------------------+
//| MySleep function                                                 |
//+------------------------------------------------------------------+
void MySleep(int sec){
   int pause = TimeSeconds(TimeLocal()) + sec;
   if(pause >= 60)pause = pause - 60;
   while(TimeSeconds(TimeLocal()) != pause){}
}
//+------------------------------------------------------------------+
 
xrust:


zählt die gewünschte Pause herunter (60 Sek.)

Sie können es versuchen, aber das Wichtigste ist, wie man eine Pause macht... Ich weiß nicht mehr weiter.
 

Lesen Sie sorgfältig, ich habe alles erklärt, und es ist nicht notwendig, ein Graph-Objekt zu verwenden, können Sie mit globals.... tun

 
ToLik_SRGV:

Der Grund dafür ist, dass der Indikator im Schnittstellenstrom arbeitet, er kann nicht in den Ruhezustand versetzt werden...

Da haben Sie es... Jetzt ist es heller geworden, danke.


Mann, was für eine Wucht. Man kann ihn nicht in einen Indikator stecken, man kann ihn nicht einschlafen lassen... Ich werde versuchen, es mit globalen Variablen zu machen.
 
xrust:

Lesen Sie sorgfältig, ich habe alles erklärt, und es ist nicht notwendig, ein Graph-Objekt überhaupt zu verwenden, können Sie mit globals.... tun

Ich glaube, ich hab's. Die Löschung nach der Zeit des Bestehens ist ebenfalls eine Zeitschaltuhr. Aber ich werde es noch einmal lesen:)
 
Abzasc:

... Ich werde versuchen, es mit globalen Variablen zu realisieren.

Ich denke, Rustam hat es richtig angedeutet, denn das Einfrieren von Threads ist das Letzte, was man tun sollte, es ist eine extreme Maßnahme, und zwar nicht nur in MQL, sondern in allen Programmiersprachen.

Grund der Beschwerde: