Fonctions utiles de KimIV - page 80

 
zennon писал(а) >>
La fonction MovingInWL() passe simplement en revue toutes les positions ouvertes, sans tenir compte des filtres sy, op, mn. Ceci est également vrai pour l'exemple ci-joint EA (page 55).

Andrei, merci ! Corrigé...

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 23.04.2009                                                     |
//|  Описание : Перенос уровня стопа в безубыток                               |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ( ""  - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   ( -1  - любая позиция)                  |
//|    mn - MagicNumber                ( -1  - любой магик)                    |
//+----------------------------------------------------------------------------+
void MovingInWL(string sy="", int op=-1, int mn=-1) {
  double po, pp;
  int    i, k=OrdersTotal();

  if ( sy=="0") sy=Symbol();
  for ( i=0; i< k; i++) {
    if (OrderSelect( i, SELECT_BY_POS, MODE_TRADES)) {
      if ((OrderSymbol()== sy || sy=="") && ( op<0 || OrderType()== op)) {
        if ( mn<0 || OrderMagicNumber()== mn) {
          po=MarketInfo(OrderSymbol(), MODE_POINT);
          if (OrderType()==OP_BUY) {
            if (OrderStopLoss()-OrderOpenPrice()< LevelWLoss* po) {
              pp=MarketInfo(OrderSymbol(), MODE_BID);
              if ( pp-OrderOpenPrice()> LevelProfit* po) {
                ModifyOrder(-1, OrderOpenPrice()+ LevelWLoss* po, -1);
              }
            }
          }
          if (OrderType()==OP_SELL) {
            if (OrderStopLoss()==0 || OrderOpenPrice()-OrderStopLoss()< LevelWLoss* po) {
              pp=MarketInfo(OrderSymbol(), MODE_ASK);
              if (OrderOpenPrice()- pp> LevelProfit* po) {
                ModifyOrder(-1, OrderOpenPrice()- LevelWLoss* po, -1);
              }
            }
          }
        }
      }
    }
  }
}
Le fichier e-MovingInWL2.mq4 est également corrigé.
 

Bonjour Igor !

Merci de consacrer autant de temps au forum. Igor, connaissez-vous une possibilité d'obtenir des informations sur les demandes d'achat/de vente entrantes - "profondeur du marché".

 
Alex30 писал(а) >>
Igor, connaissez-vous une possibilité d'obtenir des informations sur les demandes d'achat/de vente entrantes - "profondeur du marché".

pas de

 
Question à l'expérimenté : quelqu'un peut dire pourquoi mon indicateur de démo xMeterMTF.mq4 montre tout normal, et dans le vide euro réel (si en raison du fait que dans le réel eur/usd- est répertorié comme eur/usddpro) si oui peut être corrigé
Dossiers :
xmetermtf.mq4  8 kb
xmeter.rar  34 kb
 

La fonction isTradeTimeString().

Cette fonction renvoie le drapeau permettant de négocier par temps. En fait, il vérifie si l'heure actuelle du serveur commercial est située à l'intérieur d'une certaine période de temps. Si elle se trouve à l'intérieur, la fonction isTradeTimeString() renvoie true, sinon elle renvoie false. La particularité de cette fonction est la possibilité de spécifier l'intervalle de temps à l'intérieur et à l'extérieur d'un jour. Ceci sera montré en détail dans les exemples d'utilisation. La fonction isTradeTimeString() accepte les paramètres facultatifs suivants :

  • TimeBegin - Chaîne au format "HH:MM", elle définit l'heure de début de la transaction. La valeur par défaut est "00:00".
  • TimeEnd - Chaîne au format "HH:MM", spécifie l'heure de fin de la transaction. La valeur par défaut est "00:00".
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 29.04.2009                                                     |
//|  Описание : Возвращает флаг разрешения торговли по времени.                |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    TimeBegin - время начала торговли         (ЧЧ:ММ)                       |
//|    TimeEnd   - время окончания торговли      (ЧЧ:ММ)                       |
//+----------------------------------------------------------------------------+
bool isTradeTimeString(string TimeBegin="00:00", string TimeEnd="00:00") {
  datetime dtBegin, dtEnd;        // Время начала и окончания работы
  int      hc, he;                // Часы текущего времени и окончания работы

  dtBegin=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+ TimeBegin);
  dtEnd  =StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+ TimeEnd);
  hc     =TimeHour(TimeCurrent());
  he     =TimeHour( dtEnd);
  if ( dtBegin>= dtEnd) {
    if ( hc>= he) dtEnd+=24*60*60; else dtBegin-=24*60*60;
  }

  if (TimeCurrent()>= dtBegin && TimeCurrent()<= dtEnd) return( True);
  else return( False);
}
 

Exemples d'utilisation de isTradeTimeString().

  1. Période de temps dans une journée. Heure actuelle du serveur de commerce dans une période donnée, soit "07:50".
    if (isTradeTimeString("06:00", "09:30")) Message("Торгуем...");
    else Message("Отдыхаем...");
  2. Délai à l'intérieur du jour. Heure actuelle du serveur commercial en dehors du segment et qu'elle soit égale à "07:50".
    if (isTradeTimeString("12:00", "16:30")) Message("Торгуем...");
    else Message("Отдыхаем...");
  3. Le créneau horaire comprend le bord de la journée. Heure actuelle du serveur commercial dans le segment et qu'elle soit égale à "07:50".
    if (isTradeTimeString("21:15", "09:30")) Message("Торгуем...");
    else Message("Отдыхаем...");
  4. Le créneau horaire comprend une limite de jour. L'heure actuelle du serveur de trading en dehors du segment et que ce soit "07:50".
    if (isTradeTimeString("22:00", "05:30")) Message("Торгуем...");
    else Message("Отдыхаем...");

SZY. Vous trouverez ci-joint un script permettant de tester la fonction isTradeTimeString().

Dossiers :
 
KimIV >> :

Igor, l'indicateur i-Sessions a parfois des ratés : des zones de sessions non encore ouvertes apparaissent et disparaissent...

 
DR12CED >> :

Igor, l'indicateur i-Sessions a parfois des ratés : des zones de sessions non encore ouvertes apparaissent et disparaissent...

Oups... Je retire ce que j'ai dit... Ils seront aussi très utiles pour attendre les événements... Pardonnez-moi... s'il vous plaît...

 
KimIV >> :

La fonction isTradeTimeString().

Cette fonction renvoie le drapeau permettant de négocier par temps. En fait, il vérifie si l'heure actuelle du serveur commercial est située à l'intérieur d'une certaine période de temps. Si elle se trouve à l'intérieur, la fonction isTradeTimeString() renvoie true, sinon elle renvoie false. La particularité de cette fonction est la possibilité de spécifier l'intervalle de temps à l'intérieur et à l'extérieur d'un jour. Ceci sera montré en détail dans les exemples d'utilisation. La fonction isTradeTimeString() accepte les paramètres facultatifs suivants :

  • TimeBegin - Chaîne au format "HH:MM", elle définit l'heure de début de la transaction. La valeur par défaut est "00:00".
  • TimeEnd - Chaîne au format "HH:MM", spécifie l'heure de fin de la transaction. Valeur par défaut - "00:00".

Il est également possible de définir des variables qui ne sont pas des "chaînes", mais des "int". Afin de rechercher dans le testeur ?

>> Merci d'avance.

 
vasilyt писал(а) >>
Pouvez-vous faire en sorte que les variables ne soient pas "string" mais "int". Pour pouvoir faire des recherches dans le testeur ?

A la page 76...

Raison: