[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 370
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Ich habe getan, was Sie mir geraten haben.
Sie sollten die Zeitangabe LastTime verwenden;
datetime Pause=3600;
int start()
{
if(TimeCurrent()<LastTime+Pause)return(0);
...
bool cl() {if(OrderSelect(0,SELECT_BY_POS)==true){ int t=OrderType();
double l=OrderLots();
int tik=OrderTicket();Alert("tik=", tik);
}
if (t==OP_BUY) OrderClose(tik,l,Bid,3,Red);
if (t==OP_SELL) OrderClose(tik,l,Ask,3,Green);
LastTime=TimeCurrent();
}
Im Strategy Tester wird die Order jedoch gemäß den Bedingungen eröffnet, reagiert aber nicht auf die Zeit.
Außerdem reagiert der Prüfer nicht auf den Parameter "Zeit des Bestehens des schwebenden Auftrags", d.h. er wird nicht gelöscht, wenn es Zeit ist, ihn zu löschen.
Ist das so gewollt?
Wie können wir den Prüfer dazu bringen, die Zeit zu berücksichtigen, die seit dem Abschluss der Bestellung vergangen ist?
Zweitens ist es nicht sehr schön, Wert auf globale Variable in einigen obskuren Funktion zuweisen, haben Sie zwei Möglichkeiten aus, entweder durch die Übergabe durch Verweis, oder solange Sie Funktion gibt Wert des booleschen Typs, dann, wenn es erfolgreich abgeschlossen, können Sie Wert auf globale Variable zuweisen, natürlich Variablen für wenn auch es ist alarmierend, aber es ist Ihr Geschäft .... aber das ist nur eine Redensart))) Aus Ihrem Code geht nicht hervor, wann diese Funktion aufgerufen wird und ob sie überhaupt aufgerufen wird. Versuchen Sie, die Ergebnisse in der Protokolldatei zu überprüfen, und Sie werden es verstehen.Hier ist der vollständige Code, ich habe alle Funktionen entfernt, die Variablen deklariert, wie es sein sollte, aber das Ergebnis ist das gleiche - im Testmodus, es reagiert nicht auf die Zeit, es platziert zusätzliche Aufträge auf dem gleichen bar.
Was braucht sie?
double q0=0;
double q1=0;
double q2=0;
double q3=0;
datetime LastTime;
datetime Pause=3600;
int typ, tik;
double l;
int start()
{
datetime t=Hour();
if (t==8) {q0=0; q1=0; q2=0; q3=0;}
if (t>=9) {
int i0=0;
while (q0==0) { q0=iCustom(NULL,0, "MorningFlat_V3",0,15,8,45,161.8,Türkis,Rot,Gold, Silber,0,i0); i0++; }
int i1=0;
while (q1==0) { q1=iCustom(NULL,0, "MorningFlat_V3",0,15,8,45,161.8,Turquoise,Red,Gold, Silver,1,i1); i1++; }
int i2=0;
while (q2==0) { q2=iCustom(NULL,0, "MorningFlat_V3",0,15,8,45,161.8,Turquoise,Red,Gold, Silver,2,i2); i2++; }
int i3=0;
while (q3==0) { q3=iCustom(NULL,0, "MorningFlat_V3",0,15,8,45,161.8,Turquoise,Red,Gold, Silver,3,i3); i3++; }
Comment("g0=",q0, "\n", "g1=",q1, "\n", "g2=",q2, "\n", "g3=",q3 ); }
double os0=iOsMA(NULL,0,5,26,9,4,0);
double os1=iOsMA(NULL,0,5,26,9,4,1);
// siehe ab hier
if(TimeCurrent()<(LastTime+Pause))return(0);
if ( OrdersTotal()==0) { if (Bid>q0 && t>=9 && t<=20 && os1>0) OrderSend(Symbol(),OP_BUY,0.1,Ask,3,(Bid-30*Point),0,"__",555,0,Red );
if (Ask<q1 && t>=9 && t<=20 && os1<0) OrderSend(Symbol(),OP_SELL,0.1,Bid,3,(Ask+30*Point),0,"__",444,0,Green);}
if (OrdersTotal()==1) {OrderSelect(0,SELECT_BY_POS);
typ=OrderType();
tik=OrderTicket();
l=OrderLots();
if (typ==OP_BUY && os1<0) { LastTime=TimeCurrent(); OrderClose(tik,l,Bid,3,Red);}
if (typ==OP_SELL && os1>0) { LastTime=TimeCurrent();OrderClose(tik,l,Ask,3,Green);}
}
return(0);
}
//+------------------------------------------------------------------+
Hallo.
Frage an die Experten
Die Situation ist folgende: der Expert Advisor hängt auf dem Demokonto, die Kurse gehen durch, die Preise ändern sich, aber der Expert Advisor hat seit einiger Zeit aufgehört zu handeln, ein Fehler wird im Log generiert:
2009/12/30 16:46:06 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Fehlercode = 136. Keine Preise
2009.12.30 16:46:06 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Fehlercode = 136. Keine Preise
2009.12.30 16:46:07 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Fehlercode = 136. Keine Preise
2009.12.30 16:46:07 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Fehlercode = 136. Keine Preise
2009.12.30 16:46:08 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Fehlercode = 136. Keine Preise
2009.12.30 16:46:09 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Fehlercode = 136. Keine Preise
2009.12.30 16:46:09 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Fehlercode = 136. Keine Preise
2009.12.30 16:46:10 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Fehlercode = 136. Keine Preise
2009.12.30 16:46:10 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Fehlercode = 136. Keine Preise
2009.12.30 16:46:11 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Fehlercode = 136. Keine Preise
2009.12.30 16:46:11 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Fehlercode = 136. Keine Preise
2009.12.30 16:46:12 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Fehlercode = 136. Keine Preise
2009.12.30 16:46:13 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Fehlercode = 136. Kein Preis
Paar - USDCAD
Gestartet am 2009.12.30 16:46:06 und beendet am
2009.12.30 17:29:58 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Fehlercode = 128. Wartezeit für Transaktion abgelaufen
Ich stimme zu, dass 43 Minuten erheblich sind, und was noch schlimmer ist, es bringt den Algorithmus von ekspert durcheinander.
Noch interessanter ist die Fehlermeldung, die erscheint, wenn ich versuche, einen OP_BUYSTOP-Auftrag zu senden :-0 (welche Art von Kursen kann es für schwebende Aufträge geben?)
136 KEINE PREISE = KEINE ANGEBOTE:
Warum gibt es keine Preise, wenn sie sich auf dem Bildschirm ständig ändern?
Das Problem wurde hier https://www.mql5.com/ru/forum/105903/page2 von einem angesehenen Goldhändler angesprochen, aber noch nicht offiziell gelöst (ich hoffe, dass es sich bei diesem Problem nicht um eine Art TABO handelt, das wir nicht in aller Öffentlichkeit diskutieren wollen)
Ich würde gerne wissen, "warum das so ist" und "wie man diese Art von Fehlern verhindern oder behandeln kann".
Ich hoffe, es handelt sich nicht um ein TABOO, das man nicht öffentlich diskutieren möchte). Vielen Dank im Voraus für die Antwort.
Hallo.
Frage an die Experten -
Die Situation ist die folgende: Expert Advisor auf einem Demo-Konto, Quotes übergeben werden, Preise ändern, aber Expert Advisor hat den Handel für einige Zeit gestoppt, wird der Fehler im Protokoll erzeugt:
2009.12.30 16:46:06 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Fehlercode = 136. Keine Preise
2009.12.30 16:46:06 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Fehlercode = 136. Keine Preise
2009.12.30 16:46:07 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Fehlercode = 136. Keine Preise
2009.12.30 16:46:07 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Fehlercode = 136. Keine Preise
2009.12.30 16:46:08 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Fehlercode = 136. Keine Preise
2009.12.30 16:46:09 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Fehlercode = 136. Keine Preise
2009.12.30 16:46:09 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Fehlercode = 136. Keine Preise
2009.12.30 16:46:10 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Fehlercode = 136. Keine Preise
2009.12.30 16:46:10 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Fehlercode = 136. Keine Preise
2009.12.30 16:46:11 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Fehlercode = 136. Keine Preise
2009.12.30 16:46:11 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Fehlercode = 136. Keine Preise
2009.12.30 16:46:12 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Fehlercode = 136. Keine Preise
2009.12.30 16:46:13 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Fehlercode = 136. Kein Preis
Paar - USDCAD
Der Fehler begann am 2009.12.30 16:46:06 und endete am
2009.12.30 17:29:58 --- Fynktsia put_BUYSTOP_tsina_vhdn_par: pomulka vunuknyla pru vukonanni koda OrderSend() -- Fehlercode = 128. Wartezeit für Transaktion abgelaufen
Sie werden mir zustimmen, dass 43 Minuten eine beträchtliche Zeitspanne sind, und was noch schlimmer ist, sie verderben den Algorithmus des Experten.
Noch interessanter ist der Fehler, der erscheint, wenn ich versuche, eine OP_BUYSTOP-Order zu senden :-0 (welche Art von Kursen gibt es für die schwebenden Aufträge?)
136 KEINE PREISE = KEINE ANGEBOTE:
Warum keine Preise, wenn sie sich auf dem Bildschirm ständig ändern?
Das Problem wurde hier https://www.mql5.com/ru/forum/105903/page2 von einem angesehenen Goldhändler angesprochen, aber noch nicht offiziell gelöst (ich hoffe, es handelt sich nicht um eine Art TABU-Problem, das Sie nicht in aller Öffentlichkeit diskutieren wollen)
Ich würde gerne wissen, "warum" und "wie man diese Art von Fehlern verhindert oder behandelt".
Was ist die Plattformrevision?
Es wurde bereits mehrfach über die verschiedenen Datenströme diskutiert. Für den automatischen Handel ist der Fluss geschlossen. Offensichtlich.
136 KEINE PREISE = KEINE ANGEBOTE:
Dies geschieht oft, bevor die Nachrichten veröffentlicht werden. Sie können nichts tun, es sei denn, Sie geben eine Bestellung im Voraus auf und ziehen sie so lange wie möglich hinter dem Preis her. 43 Minuten sind zu lang.
Hier ist der vollständige Code, alle Funktionen entfernt, Variablen nach Bedarf deklariert, aber das Ergebnis ist das gleiche - im Testmodus reagiert es nicht auf die Zeit, macht zusätzliche Aufträge auf dem gleichen bar.
Die Frage bezog sich auf eine Pause nach Börsenschluss. Nach Börsenschluss wird eine Pause eingelegt.
-
Es gibt mehrere Öffnungen an einer Stange. Nach einer Eröffnung sollten Sie sich die Uhrzeit des Balkens merken und vor einer Eröffnung sollten Sie überprüfen, ob die Uhrzeit des Balkens nicht mit der Uhrzeit der letzten Eröffnung übereinstimmt. Es ist besser, GlobalVariable zu verwenden, um sich diese Zeit zu merken.
-
In all while wäre es eine gute Idee, while (q0==0 && i<Bars) hinzuzufügen.
-
LastTime=TimeCurrent(); - besser ist es, dies zu tun, nachdem man überprüft hat, ob der Auftrag wirklich geschlossen wurde: if(OrderClose(...))LastTime=TimeCurrent();
Die Frage bezog sich auf eine Pause nach Geschäftsschluss. Nach dem Schließen wird eine Pause eingelegt.
-
Mehrere Öffnungen auf derselben Stange. Nach dem Öffnen ist es notwendig, sich die Barzeit zu merken und vor dem Öffnen zu überprüfen, dass die Barzeit nicht mit der Zeit des letzten Öffnens übereinstimmt. Es ist besser, GlobalVariable zu verwenden, um sich diese Zeit zu merken.
-
In all while wäre es eine gute Idee, while (q0==0 && i<Bars) hinzuzufügen.
-
LastTime=TimeCurrent(); - besser ist es, dies zu tun, nachdem man überprüft hat, ob der Auftrag wirklich geschlossen wurde: if(OrderClose(...))LastTime=TimeCurrent();
Aus dem Tutorial - eine GV-Variable kann nur den Typ double haben - wie sollten wir die Anzahl der Sekunden dort dann setzen?
Ich habe überprüft, ob ein Auftrag abgeschlossen wurde, aber es schlägt immer noch fehl und wir erhalten immer noch einen Fehler.
if(Time[0]<(LastTime+Pause))return(0);
if ((OrdersTotal()==0) { if (Bid>q0 && t>=9 && t<=20 && os1>0) OrderSend(Symbol(),OP_BUY,0.1,Ask,3,(Bid-30*Point),0,"__",555,0,Red );
if (Ask<q1 && t>=9 && t<=20 && os1<0) OrderSend(Symbol(),OP_SELL,0.1,Bid,3,(Ask+30*Point),0,"__",444,0,Green);}
if (OrdersTotal()==1) {OrderSelect(0,SELECT_BY_POS;)
typ=OrderType();
tik=OrderTicket();
l=OrderLots();
if (typ==OP_BUY && os1<0) if (OrderClose(tik,l,Bid,3,Red)) LetzteZeit=Zeit[0];
if (typ==OP_SELL && os1>0) if (OrderClose(tik,l,Ask,3,Green)) LetzteZeit=Zeit[0];
}
Könnten Sie uns ein Beispiel oder einen Link nennen, wo die Aufgabe, die Eröffnung des nächsten Auftrags um eine Stunde nach dem vorherigen zu verschieben, erfolgreich umgesetzt wurde?
Aus dem Lehrbuch - eine GV-Variable kann nur den Typ double haben - wie kann man dann die Anzahl der Sekunden in sie eintragen?
Ahhhh, dann vergessen Sie alles und haben Sie ein frohes neues Jahr!
Ein frohes neues Jahr für alle!
Ich habe mit einem Indikator gearbeitet, alles war in Ordnung, dann, als ich den Zeitrahmen wechselte, begann das Terminal einzufrieren, ich installierte Windows neu, es friert immer noch ein. Warum(((((((((((((
Die Kontrollleuchte sollte wahrscheinlich ausgemustert werden. Oder fragen Sie den Weihnachtsmann. Es ist Silvester.