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
int Weekday = TimeDayOfWeek(TimeLocal()); //Локальное время |
int Weekdays = TimeDayOfWeek(TimeCurrent()); //Серверное время |
while(IsExpertEnabled()) //До тех пор пока запушенно |
{if(Weekday!=0||Weekday!=6){Exp=true;if(Weekday==1){Info(4,Weekday,0);}} //Если не Сбб. Воск. то разрешено |
if(Weekdays==0||Weekdays==6) //Если Сбб. Воск. то не разрешено |
{
Exp=false;Info(5,Weekdays,0);
if(Weekdays==6){Sleep(86400000);} //Если суббота пауза 24 часа |
if(Weekdays==0){Sleep(3600000);} //Если воскресение пауза 1 час |
}
IsTradeAllowed
Gibt Informationen über die Möglichkeit, mit Expert Advisors zu handeln.
boolIsTradeAllowed();
Die zweite Form dieses Aufrufs liefert Informationen über die Möglichkeit, für ein bestimmtes Symbol zu einem bestimmten Zeitpunkt zu handeln.
boolIsTradeAllowed(
const string symbol// symbol
datetimetested_time// Uhrzeit
);
Parameter
Symbol
Symbol [in].
getestete_zeit
[in] Zeit.
Zurückgegebener Wert
Gibt true zurück, wenn der EA handeln darf und der Thread frei ist, andernfalls gibt er false zurück.
Vielen Dank natürlich, aber es ist, wie sie sagen, um in durch das Auge eines Ortes zu bekommen) Ich kann auch eine Pause auf dem Euro auf 5,0 Server wird es erlauben, und dann mit jedem Timer-Zyklus versuchen, die Pause zu ändern, wenn der Fehler 132 dann der Markt geschlossen ist, wenn normal, dann ist der Handel, aber beim Handel Zeit dieser Server überschwemmt ist, würde ich gerne das Problem menschlich zu lösen, nicht durch "Schleifen", aber das ist die Entwickler MK.
IsTradeAllowed
Gibt Informationen über die Möglichkeit, mit Expert Advisors zu handeln.
boolIsTradeAllowed();
Die zweite Form dieses Aufrufs liefert Informationen über die Möglichkeit, für ein bestimmtes Symbol zu einem bestimmten Zeitpunkt zu handeln.
boolIsTradeAllowed(
const string symbol// symbol
datetimetested_time// Uhrzeit
);
Parameter
Symbol
Symbol [in].
getestete_zeit
[in] Zeit.
Zurückgegebener Wert
Gibt true zurück, wenn der EA handeln darf und der Thread für Handelsoperationen frei ist, andernfalls wird false zurückgegeben.
Alexander, du irrst dich)
dieser funktioniert recht gut
dieser funktioniert recht gut
Vielen Dank für den Tipp, aber wenn der Markt geöffnet ist, ist es nicht richtig zu versuchen, die Möglichkeit zu bestimmen, mit Aufträgen zu arbeiten, aber es wird funktionieren.
Ich für meinen Teil habe folgende Überlegungen angestellt.
Wenn es notwendig ist, mit dem aktuellen Symbol zu handeln, ist ein indirektes Zeichen dafür, dass der Markt geöffnet ist, die Ankunft neuer Ticks. Das OnTick-Ereignis ist also ausreichend und das Problem ist gelöst.
Wenn wir mit anderen Symbolen als dem aktuellen arbeiten müssen, garantiert die Tatsache der Eröffnung von Geschäften auf dem aktuellen Symbol nicht, dass die Geschäfte auf einem anderen Symbol ausgeführt werden. Ein Beispiel: Der Expert Advisor wurde auf EURUSD ausgeführt, es ist 09:00 UTC, und wir wollen mit US-Aktien handeln, deren Markt erst um 13:00 UTC öffnet. OnTick wird also nicht helfen. Wir müssen feststellen, ob der Markt durch andere Symbole geöffnet wird, indem wir versuchen, in bestimmten Abständen Aufträge an den Server zu senden. Einmal pro Minute einen Auftrag zu senden, ist keineswegs ein Server-Bombardement, sondern eine ganz normale Vorgehensweise. Was ist daran falsch?
keine Zecken kein Handel, wie mir einmal von servicedesk über dieses Wochentagsproblem gesagt wurde,
schlugen sie eine Lösung vor wie.
TimeDayOfWeek(TimeLocal());
obwohl dies nicht ganz korrekt ist, da der Wochentag nicht unbedingt mit dem Terminaltag identisch ist.
Eine wichtige Bedingung war, dass ich nicht versuchte, Aufträge zu eröffnen, obwohl ich das bei anderen Projekten schon oft gemacht hatte. Um ehrlich zu sein, scheint mir dies die bisher einfachste und zuverlässigste Methode zu sein.
Bisher habe ich den besten Weg gefunden, dies zu tun (aber ich bin noch auf der Suche, siehe unten):
1) Feststellen, ob der Handel "von Angesicht zu Angesicht" erlaubt ist - zweite Form der Funktion IsTradeAllowed() (ich habe sie oben erwähnt). Wenn nicht, dann ist es nicht erlaubt :)
2) Vergleich des Zeitpunkts der letzten Notierung mittels SymbolInfoInteger(<Symbol>, SYMBOL_TIME) mit dem Zeitpunkt einer der Handelssitzungen(SymbolInfoSessionTrade()); wenn der Zeitpunkt der Notierung in einen der Sitzungsbereiche fällt, dann ist der Handel erlaubt.
3) Prüfen Sie, ob die Zeit des Kurses nicht zu "veraltet" ist: wenn sie mehr als xx Minuten zurückliegt (vergleichen Sie SymbolInfoInteger(<Symbol>, SYMBOL_TIME) und TimeCurrent(), dann denken wir, dass der Kurs veraltet ist und wir deshalb nicht damit handeln können (wenn ich richtig liege, waren es etwa drei Minuten)
Der Nachteil dieses Ansatzes ist folgender: Es kann Bedingungen geben, unter denen der Handel mit dem Symbol unmöglich ist, während die Ticks durchlaufen.
Ich bin nicht in den Mechanismus eingedrungen; die Entwicklung wurde für einen Broker durchgeführt und während der Tests haben sie einen solchen Modus eingeschaltet - Ticks gehen, aber der Handel ist unmöglich. Bislang ist es uns nicht gelungen, diese Variante zu überwinden.
Es ist fair zu sagen, dass mir dies im realen Handel nicht begegnet ist. Unter "normalen" Bedingungen scheint die Lösung also akzeptabel zu sein. Aber ich bin immer noch auf der Suche danach :)
P.S. Die Schritte 1 und 2 können kombiniert werden (um SymbolInfoInteger(<Symbol>, SYMBOL_TIME) in die Funktion IsTradeAllowed zu übertragen), aber ich habe diese Variante noch nicht getestet und werde das nicht sagen.