Nützliche Funktionen von KimIV - Seite 81

 
KimIV >> :

Auf Seite 76...

Dankeschön

 

Die Funktion isTradeTimeInt().

Diese Funktion gibt ein Flag zurück, das den zeitlich begrenzten Handel erlaubt. Der zurückgegebene Wert ist true oder false. Die Funktion isTradeTimeInt() ähnelt der Funktion isTradeTimeString() durch das Prinzip der Zeitintervallerkennung, d.h. der Handelsstartzeitpunkt kann sowohl größer (Zeitintervall innerhalb eines Tages) als auch kleiner (Zeitintervall in verschiedenen Tagen) sein. Die Funktion isTradeTimeInt() akzeptiert die folgenden optionalen Parameter:

  • hb - Zahl, gibt die Uhrzeit des Handelsbeginns an. Der Standardwert ist 0.
  • mb - Eine Zahl, die die Minuten der Handelsstartzeit angibt. Standardwert - 0.
  • he - Eine Zahl zur Angabe der Stunden des Handelsendes. Der Standardwert ist 0.
  • me - Eine Zahl zur Angabe der Minuten des Handelsendes. Standardwert - 0.
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 30.04.2009                                                     |
//|  Описание : Возвращает флаг разрешения торговли по времени.                |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    hb - часы времени начала торговли                                       |
//|    mb - минуты времени начала торговли                                     |
//|    he - часы времени окончания торговли                                    |
//|    me - минуты времени окончания торговли                                  |
//+----------------------------------------------------------------------------+
bool isTradeTimeInt(int hb=0, int mb=0, int he=0, int me=0) {
  datetime db, de;           // Время начала и окончания работы
  int      hc;               // Часы текущего времени торгового сервера

  db=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+ hb+":"+ mb);
  de=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+ he+":"+ me);
  hc=TimeHour(TimeCurrent());
  if ( db>= de) {
    if ( hc>= he) de+=24*60*60; else db-=24*60*60;
  }

  if (TimeCurrent()>= db && TimeCurrent()<= de) return( True);
  else return( False);
}
 

Beispiele für die Verwendung von isTradeTimeInt().

  1. Zeitspanne innerhalb eines Tages. Aktuelle Zeit des Handelsservers innerhalb eines Zeitraums und lassen Sie sie "08:30" sein.
    if (isTradeTimeInt(6, 0, 9, 30)) Message("Торгуем...");
    else Message("Отдыхаем...");
  2. Zeitrahmen innerhalb eines Tages. Aktuelle Zeit des Handelsservers außerhalb des Segments und gleich "08:30" lassen.
    if (isTradeTimeInt(12, 0, 16, 30)) Message("Торгуем...");
    else Message("Отдыхаем...");
  3. Das Zeitfenster umfasst die Tagesgrenze. Aktuelle Uhrzeit des Handelsservers innerhalb des Segments und lassen Sie sie gleich "08:30" sein.
    if (isTradeTimeInt(21, 15, 9, 30)) Message("Торгуем...");
    else Message("Отдыхаем...");
  4. Das Zeitfenster umfasst die Tagesgrenze. Aktuelle Zeit des Handelsservers außerhalb des Segments und lassen Sie sie "08:30" sein.
    if (isTradeTimeInt(22, 0, 5, 30)) Message("Торгуем...");
    else Message("Отдыхаем...");

SZY: Im Anhang finden Sie ein Skript zum Testen der Funktion isTradeTimeInt().

Dateien:
 

Aktualisierte Liste der Funktionen mit kurzen Beschreibungen und Links...

Dateien:
f_kimiv.rar  12 kb
 
KimIV >> :

Die Funktion isCloseLastPosByStop().

Diese Funktion gibt ein Flag zurück, mit dem die letzte Position durch Stopp geschlossen wird. Flagge ist oben - Wahr - StopLoss hat ausgelöst. Flagge gesenkt - Falsch - die Position wurde aus einem anderen Grund geschlossen. Eine genauere Auswahl der zu berücksichtigenden Positionen wird durch externe Parameter festgelegt:


Hallo

Ich versuche, Ihre Funktion für meine eigenen Zwecke zu nutzen. Kleiner funktionierender Expert Advisor. Nur Verkäufe und Schließungen, eine Position. Manchmal fängt er mehrere Stop-Losses hintereinander ab. Ich möchte die Verkaufsbedingungen nach dem ersten Stop ändern, Expert Advisor öffnet Positionen, schließt sie aber nicht. Bitte sagen Sie mir, was ich falsch mache ?

..........................................................

if ( isCloseLastPosByStop(NULL,OP_SELL, MagicNamber) == 0)
{
if ( (StochK_0<StochD_1) && (StochD_1 > 80) ) // 1st Sell Slowly
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+SL*Point,0, "Mein EXP", MagicNamber,0,Green); // verkaufen

OrderSelect(0, SELECT_BY_POS);

if (OrderSelect(0, SELECT_BY_POS)==true )
Print("SELECT_BY_POS");
sonst
Print("Fehler bei der Auswahl : ",GetLastError());
RefreshRates();
if((StochK_0<30)&& (StochD_1 < 30))
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);
}
sonst
if ( isCloseLastPosByStop(NULL,OP_SELL, MagicNamber) == 1)
{
if ((StochK_0<StochD_1) && (StochK_0 < 60) && (StochD_1 < 60) )

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0, "Mein EXP", MagicNamber,0,Green); //

...........................

 
KoZaNOStra писал(а) >>
Der Experte eröffnet Positionen, schließt sie aber nicht.

Drucken der Variablen StochK_0 und StochD_1. Vielleicht nehmen sie Werte an, die nicht unter Ihre Abschlussbedingungen fallen.

 

zu KimIV

Hallo, könnten Sie bitte helfen, diesen Cluster-Indikator in eine Funktion mit der gleichen Zeichnung zu konvertieren und + Pair change rate Werte zurück (obere rechte Ecke) durch Eingabeparameter - Pair name. Ich danke Ihnen im Voraus.

P.S..... Ich kämpfe jetzt schon seit einer Woche

Dateien:
cc_240.mq4  13 kb
 
Gibt es eine Funktion zur Anzeige von Nachrichten im geöffneten Fenster eines Währungspaares?
 
Und wie drücken wir im Code aus, dass wir zu Beginn einer beliebigen Stunde in der ersten Sekunde zwei unterschiedlich ausgerichtete Positionen eröffnen und in der letzten Sekunde der Stunde den fehlgeschlagenen Auftrag schließen?
 
VAM_ писал(а) >>
Und wie drücken wir im Code aus, dass wir zu Beginn einer beliebigen Stunde in der ersten Sekunde zwei unterschiedlich ausgerichtete Positionen eröffnen und in der letzten Sekunde der Stunde den fehlgeschlagenen Auftrag schließen?

Was, wenn es keine gibt, in erster und letzter Sekunde?

Grund der Beschwerde: