Wählt einen Auftrag für die weitere Arbeit mit ihm aus. Gibt bei erfolgreichem Abschluss der Funktion true zurück. Gibt false zurück, wenn die Funktion fehlschlägt. Sie müssen die FunktionGetLastError() aufrufen, um Informationen über den Fehler zu erhalten.
Die FunktionOrderSelect( ulong ticket// Ticket der Bestellung );
Parameter
Ticket
[Das Ticket der Bestellung.
Wie wird dieses Ticket zugewiesen? Wo kann ich es bekommen? Oder wie richte ich es ein?
In der Hilfe heißt es
OrderGetTicket
Gibt das Ticket des entsprechenden Auftrags zurück und wählt den Auftrag automatisch für die weitere Bearbeitung mit Funktionen aus. Wir müssen alle Bestellungen nach Index durchsehen und gegebenenfalls ein Ticket besorgen. Allerdings wird mit dieser Funktion auch der Auftrag selbst ausgewählt. Das Ticket wird vom Vermittler festgelegt, und wir können es nicht ändern.
ulongOrderGetTicket(
int index // номер в списке ордеров
);
Ich habe eine Funktion geschrieben, die jeden Tag eine "Nicht-Handelszeitzone" in den Chart einzeichnen soll. Aber hier ist ein Problem - wenn ich es starten, das Modul OnInit, zeichnet, wie es sein sollte, aber wenn ich es in das Modul OnTimer aus irgendeinem unbekannten Grund auslösen die Variable Datum hält Werte, die im Modul OnInit zugewiesen wurden.
Frage: Warum?
intOnInit()
{
EventSetTimer(1);
MqlDateTime date;
TimeLocal(date);
offtimeCreate(date); // Рисуем на графике заполненный прямоугольник (не торговая зона) с 21:00 до 23:59 в день указанный в переменной datereturn(INIT_SUCCEEDED);
}
...
void onTimer()
{
MqlDateTime date;
TimeLocal(date);
if (date.hour==9 && date.min==0 && date.sec==0) offtimeCreate(date); // Каждое утро, в 9:00, рисуем новую "не торговую зону" для дня указанного в переменной date
}
...
Ich habe eine Funktion geschrieben, die jeden Tag eine "Nicht-Handelszeitzone" in einem Diagramm einzeichnen soll. Aber es gibt ein Problem - wenn es im Modul OnInit ausgeführt wird, zeichnet es das Datum, wie es sein sollte, aber wenn es im Modul OnTimer aus irgendeinem unbekannten Grund ausgeführt wird, behält die Datumsvariable die Werte, die im Modul OnInit zugewiesen wurden.
Weil A) ich visuell sehe, dass die "Zeitzone" heute nicht von 21:00 bis 23:59 Uhr gezogen wird, sondern von gestern 21:00 bis heute 23:59 Uhr
B) Wenn ich die Eigenschaften des grafischen Objekts (schattiertes Rechteck - "Zeitzone") öffne, sehe ich, dass sich die erste Variable nicht geändert hat, d.h. sie hat denselben Wert wie gestern um 21:00
INGFX: Ja OnTimer, habe einen Fehler beim Umschreiben hier gemacht ... der Code selbst ist korrekt
Sie hätten Ihren Code überprüfen müssen. Sie haben es satt, Ihre Teile zusammenzustecken - hier ist der Code. Ersetzen Sie in OnTimer Ihre Ortszeit und vergleichen Sie die Ausdrucke bei der Initialisierung und im Timer:
//+------------------------------------------------------------------+//| TestEA.mq5 |//| Copyright 2015, MetaQuotes Software Corp. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2015, MetaQuotes Software Corp."#property link"https://www.mql5.com"#property version"1.00"//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit()
{
EventSetTimer(1);
MqlDateTime date;
TimeLocal(date);
offtimeCreate(date); // Рисуем на графике заполненный прямоугольник (не торговая зона) с 21:00 до 23:59 в день указанный в переменной datereturn(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+voidOnTimer()
{
MqlDateTime date;
TimeLocal(date);
if(date.hour==22 && date.min==33 && date.sec==00)
offtimeCreate(date); // Каждое утро, в 9:00, рисуем новую "не торговую зону" для дня указанного в переменной date
}
//+------------------------------------------------------------------+/*void offtimeCreate(MqlDateTime &struct_date)
{
string text="";
text=IntegerToString(struct_date.hour)+":"+
IntegerToString(struct_date.min)+":"+
IntegerToString(struct_date.sec);
Comment(text);
//ChartRedraw();
}*///+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+bool offtimeCreate(MqlDateTime &stm)
{
color clr=Black;
datetime tm1,tm2;
tm1 = StringToTime((string)stm.year+"."+(string)stm.mon+"."+(string)stm.day+" 21:00");
tm2 = StringToTime((string)stm.year+"."+(string)stm.mon+"."+(string)stm.day+" 23:59");
Print(tm1+" "+tm2);
//RectangleCreate(0,"offtime",0,tm1,0,tm2,200,clr); // chrart_id,object_name,sub_window,time1,price1,time2,price2,colorreturn(true);
}
//+------------------------------------------------------------------+
Gibt es eine Möglichkeit zu überprüfen, ob die Eröffnungsskripte am Wochenende funktionieren?
Nur der Indikator verarbeitet alle Ticks in OnCalculate(). Ohne jegliche Auslassungen.
Äh, nein. Und er verfehlt. Aber weniger als andere. Aber er überspringt.
Das ist gut, vielen Dank.
Eine andere Frage:
BestellungAuswählen
Wählt einen Auftrag für die weitere Arbeit mit ihm aus. Gibt bei erfolgreichem Abschluss der Funktion true zurück. Gibt false zurück, wenn die Funktion fehlschlägt. Sie müssen die FunktionGetLastError() aufrufen, um Informationen über den Fehler zu erhalten.
Die FunktionOrderSelect(
ulong ticket// Ticket der Bestellung
);
Parameter
Ticket
[Das Ticket der Bestellung.
Wie wird dieses Ticket zugewiesen? Wo kann ich es bekommen? Oder wie richte ich es ein?
OrderGetTicket
Gibt das Ticket des entsprechenden Auftrags zurück und wählt den Auftrag automatisch für die weitere Bearbeitung mit Funktionen aus. Wir müssen alle Bestellungen nach Index durchsehen und gegebenenfalls ein Ticket besorgen. Allerdings wird mit dieser Funktion auch der Auftrag selbst ausgewählt. Das Ticket wird vom Vermittler festgelegt, und wir können es nicht ändern.
Hallo zusammen!
Ich habe eine Funktion geschrieben, die jeden Tag eine "Nicht-Handelszeitzone" in den Chart einzeichnen soll.
Aber hier ist ein Problem - wenn ich es starten, das Modul OnInit, zeichnet, wie es sein sollte, aber wenn ich es in das Modul OnTimer aus irgendeinem unbekannten Grund auslösen die Variable Datum hält Werte, die im Modul OnInit zugewiesen wurden.
Frage: Warum?
Hallo zusammen!
Ich habe eine Funktion geschrieben, die jeden Tag eine "Nicht-Handelszeitzone" in einem Diagramm einzeichnen soll.
Aber es gibt ein Problem - wenn es im Modul OnInit ausgeführt wird, zeichnet es das Datum, wie es sein sollte, aber wenn es im Modul OnTimer aus irgendeinem unbekannten Grund ausgeführt wird, behält die Datumsvariable die Werte, die im Modul OnInit zugewiesen wurden.
Frage: Warum?
Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests
Wanzen, Wanzen, Fragen
Karputov Vladimir, 2016.01.09 20:51
Wie kommen Sie darauf, dass in der Timer-Variable date der zuvor in OnInit() definierte Wert übergeben wird?
Sie müssen sich Ihre Funktion ansehen, die den Bereich zeichnet.
Abgeschlossen:
Korrekterweise müsste es OnTimer heißen, nicht onTimer.
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
Wanzen, Wanzen, Fragen
INGFX, 2016.01.09 21:20
Weil A) ich visuell sehe, dass die "Zeitzone" heute nicht von 21:00 bis 23:59 Uhr gezogen wird, sondern von gestern 21:00 bis heute 23:59 Uhr
B) Wenn ich die Eigenschaften des grafischen Objekts (schattiertes Rechteck - "Zeitzone") öffne, sehe ich, dass sich die erste Variable nicht geändert hat, d.h. sie hat denselben Wert wie gestern um 21:00
Ja OnTimer, habe einen Fehler beim Umschreiben hier gemacht ... der Code selbst ist korrekt
Sie hätten Ihren Code überprüfen müssen. Sie haben es satt, Ihre Teile zusammenzustecken - hier ist der Code. Ersetzen Sie in OnTimer Ihre Ortszeit und vergleichen Sie die Ausdrucke bei der Initialisierung und im Timer:
Sie hätten Ihren Code überprüfen müssen.
Vladimir, ich danke Ihnen für Ihre Geduld und Ihre Hilfe!
Ich habe wirklich einen Fehler im Code gemacht ...
Von nun an werde ich vorsichtiger sein.