Fonctions utiles de KimIV - page 63

 
KimIV >> :

n'a pas... écrit...

La fonction ClosePosBySortLots().

Cette fonction ferme les positions dans l'ordre de tri par taille de lot. C'est-à-dire qu'à l'aide de cette fonction, vous pouvez fermer des positions dans l'ordre croissant ou décroissant de la taille des lots. La fonction ClosePosBySortLots() accepte les paramètres facultatifs suivants :

  • sy - Nom de l'instrument de négociation. "" - tout instrument, NULL - instrument actuel. La valeur par défaut est "".
  • op - Type d'opération commerciale. Valeurs valables -1 - toute position, OP_BUY - achat, OP_SELL - vente. La valeur par défaut est -1.
  • mn - MagicNumber, identifiant unique de l'opération commerciale. Valeur par défaut -1 - tout nombre magique.
  • sd - Sens de tri de la taille du lot. Valeurs valides MODE_ASCEND - ascendant, MODE_DESCEND - descendant. La valeur par défaut est MODE_DESCEND.

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

Merci beaucoup Igor. Je vais prier pour vous :-)

 

Privat

rsi

Merci pour les exemples !

Décryptez ceci si vous le voulez bien :

var=Close[0]
Que fait-il ?
 

er... arrêtez ici... Je suis désolé... supprimer... La créativité est toujours la bienvenue !

et prendre le lien vers les fonctions dans le fichier joint...

Dossiers :
f_kimiv.rar  12 kb
 
WroC писал(а) >>

Veuillez décoder ceci si ce n'est pas difficile :

var=Close[0]

Avec quoi veux-tu le manger ?

La variable nommée var se voit attribuer la valeur du niveau de prix de la clôture de la barre actuelle (nombre zéro). Mais comme la barre actuelle n'est pas encore terminée, Close[0] est identique à Bid, c'est-à-dire le prix actuel.

 

KimIV


Et j'ai continué à essayer d'utiliser d'une manière ou d'une autre marketinfo ; il s'avère que c'est encore plus simple .....

 
if ( ExistPositions(NULL, OP_BUY, Magic)) {
 po= PriceOpenLastPos(NULL, OP_BUY, Magic);
 if (! ExistOrders (NULL, OP_SELLSTOP, Magic+1)
 && ! ExistPositions(NULL, OP_SELL , Magic+1)) {
 pp= po- offSet*Point;
 if ( StopLoss>0) sl= pp+ StopLoss*Point; else sl=0;
 if ( TakeProfit>0) tp= pp- TakeProfit*Point; else tp=0;
 SetOrder(NULL, OP_SELLSTOP, ll, pp, sl, tp, Magic+3);

Bon après-midi.
Igor, avez-vous une fonction pour implémenter les tactiques de verrouillage ?
À la page 45, vous avez donné un exemple qui pourrait être utilisé à cette fin.

Mais une telle approche limite le nombre d'ordres ouverts à 1.
Si nous regardons l'exemple, cela ressemblerait à ceci
LockStep=20 à partir de la position ouverte
LockStopLoss=10
1500 - open Buy\1480 - open sellstop

1470 - open buy\1450 - open sellstop

1460 - close sellstop 1450\open sellstop 1450
1490 - close sellstop 1480\opensellstop 1450
la fonction donnée ouvrira deux ordres sellstop 1450

P.S. Merci beaucoup pour votre travail. Il y a en fait beaucoup d'informations et elles sont très utiles, j'en ai pris la plupart en compte.



 
demsan писал(а) >>
Igor, avez-vous une fonction pour implémenter les tactiques de verrouillage ?

Non, il n'y a pas de fonction séparée. Vous devez donc combiner les éléments existants et peut-être en ajouter d'autres. Je vous conseille d'organiser la connexion suivante : une paire Achat/Vente-Stop - un magicien. Paire suivante - magicien suivant et ainsi de suite.

 

La fonction StringLower().

Cette fonction convertit une chaîne de caractères en minuscules. Tous les caractères SIGNIFICATIFS (grands) deviennent des minuscules (petits). La fonction StringLower() n'accepte qu'un seul paramètre obligatoire - la chaîne de caractères d'entrée.

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 01.09.2005                                                     |
//|  Описание : Возвращает строку в нижнем регистре                            |
//+----------------------------------------------------------------------------+
string StringLower(string s) {
  int c, i, k=StringLen( s), n;
  for ( i=0; i< k; i++) {
    n=0;
    c=StringGetChar( s, i);
    if ( c>64 && c<91) n= c+32;     // A-Z -> a-z
    if ( c>191 && c<224) n= c+32;   // А-Я -> а-я
    if ( c==168) n=184;            //  Ё  ->  ё
    if ( n>0) s=StringSetChar( s, i, n);
  }
  return( s);
}

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

Dossiers :
 

La fonction StringUpper().

Cette fonction convertit la chaîne de caractères en majuscules. Tous les caractères minuscules (petits) deviennent des majuscules (grands). La fonction StringUpper() n'accepte qu'un seul paramètre obligatoire - la chaîne de caractères d'entrée.

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 01.09.2005                                                     |
//|  Описание : Возвращает строку в ВЕРХНЕМ регистре                           |
//+----------------------------------------------------------------------------+
string StringUpper(string s) {
  int c, i, k=StringLen( s), n;
  for ( i=0; i< k; i++) {
    n=0;
    c=StringGetChar( s, i);
    if ( c>96 && c<123) n= c-32;    // a-z -> A-Z
    if ( c>223 && c<256) n= c-32;   // а-я -> А-Я
    if ( c==184) n=168;            //  ё  ->  Ё
    if ( n>0) s=StringSetChar( s, i, n);
  }
  return( s);
}

ZS. Vous trouverez ci-joint un script pour tester StringUpper().

Dossiers :
 

La fonction StringToArrayDouble().

Cette fonction divise la chaîne en nombres réels, et chaque nombre est ajouté au tableau comme un élément séparé. Autant de nombres réels apparaissent dans la chaîne, autant d'éléments seront ajoutés au tableau. Le point-virgule est reconnu comme un séparateur. La fonction StringToArrayDouble() renvoie le nombre d'éléments du tableau et prend les paramètres obligatoires suivants :

  • st - Une chaîne de nombres réels séparés par un point-virgule.
  • ad - Tableau de nombres réels.
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 10.10.2008                                                     |
//|  Описание : Перенос вещественных чисел из строки в массив                  |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    st - строка вещественных чисел через точку с запятой                    |
//|    ad - массив вещественных чисел                                          |
//+----------------------------------------------------------------------------+
//|  Возврат:                                                                  |
//|    Количество элементов в массиве                                          |
//+----------------------------------------------------------------------------+
int StringToArrayDouble(string st, double& ad[]) {
  int    i=0, np;
  string stp;

  ArrayResize( ad, 0);
  while (StringLen( st)>0) {
    np=StringFind( st, ";");
    if ( np<0) {
      stp= st;
      st="";
    } else {
      stp=StringSubstr( st, 0, np);
      st=StringSubstr( st, np+1);
    }
    i++;
    ArrayResize( ad, i);
    ad[ i-1]=StrToDouble( stp);
  }
  return(ArraySize( ad));
}

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

Dossiers :