Fonctions utiles de KimIV - page 37

 
KimIV писал (а) >>

La fonction isLossLastPos().

Cette fonction renvoie le drapeau de perte de la dernière position fermée. Drapeau vers le haut - Vrai - la dernière position a été fermée avec une perte. Drapeau omis - Faux - la dernière position a été fermée soit à zéro, soit avec un bénéfice. Cette fonction ne tient pas compte des swaps et des commissions. La sélection des positions est définie par des paramètres externes :

  • sy - Nom de l'instrument de marché. Si vous spécifiez ce paramètre, la fonction ne prendra en compte que les positions de l'instrument spécifié. La valeur par défaut "" signifie tout instrument de marché. NULL signifie l'instrument actuel.
  • op - Opération commerciale, type de poste. Valeurs valables : OP_BUY, OP_SELL ou -1. La valeur par défaut -1 signifie une position quelconque.
  • mn - Identificateur de position, MagicNumber. La valeur par défaut de -1 signifie n'importe quel identifiant.
P.S. Vous trouverez ci-joint un script pour tester la fonction isLossLastPos().

Afin de ne pas multiplier le nombre de fonctions liées à la dernière position fermée, je propose la variante suivante :

int LastClosePos(string sy="", int op=-1, int mn=-1) {
  datetime t;
  int      i, j=-1, k=OrdersHistoryTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (t<OrderCloseTime()) {
                t=OrderCloseTime();
                j=OrderTicket();              }
              else
                return(j);
            }
          }
        }
      }
    }
  }
  return(-1);
}

Cette fonction définit le numéro de ticket de la dernière position fermée...

Les actions ultérieures avec le numéro du ticket sont à la discrétion du programmeur, en fonction du problème à résoudre...

 

Fonction FindNearFractal().

Cette fonction recherche la fractale la plus proche et renvoie son niveau de prix. La fonction accepte les paramètres facultatifs suivants :

  • sy - Nom de l'instrument. "" ou NULL - symbole actuel. La valeur par défaut est NULL.
  • tf - Période de temps. Valeur par défaut 0 - symbole actuel.
  • mode - Type de fractale. MODE_LOWER et MODE_UPPER sont autorisés. La valeur par défaut est MODE_BAS.
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 07.10.2006                                                     |
//|  Описание : Поиск ближайшего фрактала. Возвращает ценовой уровень.         |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy   - наименование инструмента      ("" или NULL - текущий символ)     |
//|    tf   - таймфрейм                     (    0       - текущий ТФ)         |
//|    mode - тип фрактала                  (MODE_LOWER|MODE_UPPER)            |
//+----------------------------------------------------------------------------+
double FindNearFractal(string sy="0", int tf=0, int mode=MODE_LOWER) {
  if (sy=="" || sy=="0") sy=Symbol();
  double f=0;
  int    d=MarketInfo(sy, MODE_DIGITS), s;
  if (d==0) if (StringFind(sy, "JPY")<0) d=4; else d=2;

  for (s=2; s<100; s++) {
    f=iFractals(sy, tf, mode, s);
    if (f!=0) return(NormalizeDouble(f, d));
  }
  Print("FindNearFractal(): Фрактал не найден");
  return(0);
}
 

Exemples d'utilisation de FindNearFractal().

  • Le prix de la fractale inférieure la plus proche sur le graphique actuel.
    Message(FindNearFractal());
  • Prix de la fractale supérieure la plus proche sur le graphique H4 du symbole actuel.
    Message(FindNearFractal(NULL, PERIOD_H4, MODE_UPPER));
  • Prix de la fractale inférieure la plus proche sur le graphique GBPUSD M30.
    Message(FindNearFractal("GBPUSD", PERIOD_M30, MODE_LOWER));
    

SZY. Vous trouverez ci-joint un script pour tester la fonction FindNearFractal().

Dossiers :
 
KimIV писал (а) >>

Примеры использования функции SetVLine().

  1. Голубая сплошная вертикальная линия на текущем баре.
  2. Сиреневая толстая линия на восьмом баре.
  3. Сетка пунктирных линий на барах 14:00.

ЗЫ. Во вложении скрипт для тестирования функции SetVLine().

KimIV
писал (а)
>>

Exemples d'utilisation de SetVLine().

  1. Ligne verticale bleue pleine sur la barre actuelle.
  2. Ligne épaisse lilas sur la huitième barre.
  3. Une grille de lignes pointillées sur les barres 14:00.

ZS. Vous trouverez ci-joint un script pour tester la fonction SetVLine().

Salut Igor,
Pourriez-vous me montrer un exemple d'utilisation d'une telle fonction dans un indicateur ?
J'essaie d'améliorer l'indicateur PreviousiHighsvAndhLows0 et d'y ajouter une marque par temps.

Utiliser l'exemple SetVLine() et dessiner la marque à l'ouverture de la barre avec un certain temps...
Jusqu'à présent, ma version de l'indicateur dessine quelques absurdités.
J'ai déjà demandé de l'aide sur le forum, mais les débutants ne sont pas gâtés ici...

Merci quand même, vos fonctions sont très utiles pour l'apprentissage pas à pas, mais bien sûr, il serait bon qu'il y ait beaucoup plus de conseils ou d'exemples.

 
obabuev писал (а) >>
Pourriez-vous me montrer un exemple d'utilisation d'une telle fonction dans un indicateur ?
J'essaie d'améliorer l'indicateur et d'y ajouter un dessin d'horodatage.
Utiliser l'exemple de SetVLine() et dessiner une marque à l'ouverture de la barre avec un certain temps...

Montrez sur l'illustration les marques que vous souhaitez dessiner.

 

Fonction GetExtremumZZZBar().

Cette fonction recherche un extremum de l'indicateur ZigZag standard personnalisé et renvoie le numéro de la barre. La fonction accepte les paramètres facultatifs suivants :

  • sy - Nom de l'instrument. "" ou NULL - symbole actuel. La valeur par défaut est NULL.
  • tf - Période de temps. La valeur par défaut est 0 - l'horizon temporel actuel.
  • ne - Nombre extrême. 0 - dernier, 1 - précédent, 2 - précédent, etc.
  • dp, dv, bs - paramètres de ZigZaga : respectivement ExtDepth, ExtDeviation, ExtBackstep.
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 07.10.2006                                                     |
//|  Описание : Возвращает номер бара экстремума ЗигЗага по его номеру.        |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (NULL или "" - текущий символ)          |
//|    tf - таймфрейм                  (      0     - текущий ТФ)              |
//|    ne - номер экстремума           (      0     - последний)               |
//|    dp - ExtDepth                                                           |
//|    dv - ExtDeviation                                                       |
//|    bs - ExtBackstep                                                        |
//+----------------------------------------------------------------------------+
int GetExtremumZZBar(string sy="", int tf=0, int ne=0, int dp=12, int dv=5, int bc=3) {
  if (sy=="" || sy=="0") sy=Symbol();
  double zz;
  int    i, k=iBars(sy, tf), ke=0;

  for (i=0; i<k; i++) {
    zz=iCustom(sy, tf, "ZigZag", dp, dv, bc, 0, i);
    if (zz!=0) {
      ke++;
      if (ke>ne) return(i);
    }
  }
  Print("GetExtremumZZBar(): Экстремум ЗигЗага номер ",ne," не найден");
  return(-1);
}
 

Exemples d'utilisation de la fonction GetExtremumZZZBar().

  • Le numéro de la barre avec le dernier extrémum ZigZag sur le graphique actuel.
    Message(GetExtremumZZBar());
  • Le numéro de la barre avec l'avant-dernier extrémum ZigZag sur le graphique H4 du symbole actuel.
    Message(GetExtremumZZBar(NULL, PERIOD_H4, 1));
  • Trouvez la dernière cassure ZigZag sur le graphique actuel et tracez une ligne verticale à travers elle.
    int n=GetExtremumZZBar(NULL, 0, 1);
    SetVLine(Magenta, "", Time[n]);

ZS. Vous trouverez ci-joint un script pour tester la fonction GetExtremumZZZBar().

Dossiers :
 
KimIV писал (а) >>

Montrez sur l'illustration les marques que vous souhaitez dessiner.

Merci, Igor, d'avoir répondu,
Ça m'a pris deux jours, mais j'ai fait la marque.
Maintenant, j'essaie d'en faire un autre.
J'en ai besoin pour les tests
En utilisant votre indicateur i-AnyRange, je veux faire
L'indicateur traitera le temps avec une déviation aléatoire.
Par exemple -
l'indicateur a
temps1=10:05 ;
temps2=15:35 ;
et dans l'indicateur lui-même, pour les calculs des lignes de l'indicateur, il utilise
T1=temps1(+/- aléatoire)
T2=temps2(+/- aléatoire)
mais nous devons également définir les limites maximales de l'écart, par exemple
max random =5min ;
L'énigme est de savoir comment limiter le caractère aléatoire à 5 minutes ?
Vous avez probablement des exemples similaires

Dossiers :
 
obabuev писал (а) >>

mais vous devez également définir les limites de l'écart maximal, par ex.
max random =5min ;
Le hic est de savoir comment limiter le caractère aléatoire à 5 minutes ?
Vous devez avoir des exemples similaires.

5 minutes, c'est 300 secondes :

void init() {
  MathSrand(TimeLocal());
}

void start() {
  double a=MathRand()/32767.0*300;
  int b=MathFloor(a);
  Comment(b);
}
 
KimIV писал (а) >>

Cinq minutes, c'est 300 secondes :

Merci bien sûr, mais cela ne répond pas tout à fait aux questions,
Comment ajouter int b à string Time2 minutes maintenant ou comment faire plus moins aléatoirement

>> Je vais examiner la question, bien sûr, mais j'ai du mal à le faire.