Fonctions utiles de KimIV - page 119

 
M2012K:

Bonjour chers collègues, je suis encore en train d'apprendre les codes, je ne comprends pas très bien les subtilités et je suis un peu dans l'embarras.

Si je comprends bien, nous devons faire un appel à cette fonction pour corriger les paramètres avant de passer une commande.

Il existe une telle ligne pour ouvrir une commande :

if(buy == true && Open[0]>UpTr && Trade) {

buy=OrderSend(Symbol(),OP_BUYSTOP,LOT(),NormalizeDouble(op,Digits),slippage,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits), "T",Magic,0,MediumBlue) ;

est-ce là qu'il faut l'aborder ? Et comment le faire correctement. Ou cette commande n'a pas besoin deCorrectingPrice() ?

Merci d'avance.

Avant d'envoyer une demande de transaction au serveur, vous devez avoir déjà calculé les prix StopLoss et TakeProfit. Ils sont, comme je le vois, stockés dans des variables, respectivement sl et tp .

Donc, lancez cette fonction, et insérez-y les noms de vos variables :

CorrectingPrice(Symbol(), OP_BUY, Ask, sl, tp);

Il les corrigera pour vous, si nécessaire...

Et après avoir appelé cette fonction, vous pouvez appeler la fonction de position ouverte

 

Bon après-midi.

J'utilise la fonction PriceOpenNearPos () de KimIV. J'ai remarqué que Parfois, lapositionla plus procheest perdue et uneautreposition est utilisée. Donc j'ai fait code pour un test où vous pouvez voir comment lapositionla plus proche est perdue dans lejournal. Veuillez vérifier sur pourquoi cela se produit.

int    magic    = 665544;

bool flag = false;

 

int start()

  {

//----

if((PriceOpenNearPos(NULL, OP_BUY, magic) != 0

&& PriceOpenNearPos(NULL, OP_BUY, magic)- 0.1 <  Bid

&& PriceOpenNearPos(NULL, OP_BUY, magic)+ 0.1 > Bid))

flag = true;

else

flag = false;

 

Print("::::::::::::::::::::::::: flag = ",  flag );

Print("PriceOpenNearPos(NULL, OP_BUY, magic)= ", PriceOpenNearPos(NULL, OP_BUY, magic));

 

if(!flag)

OpenPosition(NULL, OP_BUY, 0.1,0,0,magic);  

//----

   return(0);

  }

Selon les conditions, les positions ne doivent pas se chevaucher , mais lorsque j'exécute le testeur, je vois que les positions se chevauchent. (usdjpy 5m).

 
artmedia70:

Avant d'envoyer une demande de transaction au serveur, vous devez avoir déjà calculé les prix StopLoss et TakeProfit. Ils sont, comme je le vois, stockés dans des variables, respectivement sl et tp .

Exécutez donc cette fonction, en y insérant les noms de vos variables :

Il les ajustera pour vous si nécessaire...

Et après que cette fonction soit appelée, vous pouvez appeler la fonction d'ouverture de position


Merci, je l'ai. :)
 
abeiks:

Bon après-midi.

J'utilise la fonction PriceOpenNearPos () de KimIV. Je remarque que Parfois, lapositionla plus procheest perdue et uneautreposition est utilisée. Donc j'ai fait code pour un test où vous pouvez voir comment lapositionla plus proche est perdue dans lejournal. Veuillez vérifier sur pourquoi cela se produit.

Selon les conditions, les positions ne doivent pas se chevaucher , mais lorsque j'exécute le testeur, je constate que les positions se chevauchent. (usdjpy 5m).


Vérifié... dans le testeur... Tout va bien. Montrez-moi vous-même comment les positions sont perdues. Ou expliquez plus en détail ce que vous appelez exactement des positions perdantes.

Je joins ici mon conseiller expert prêt à être testé avec toutes les fonctions supplémentaires.

Dossiers :
 

Voir l'annexe. Selon les conditions, les positions ne doivent pas se chevaucher, mais le terminal montre que les positions 3 et 9 s'ouvrent au même prix (également 4, 6, 8). Nous examinons ensuite les fichiers journaux et constatons qu'à un moment donné, la position 98.179 est perdue et apparaît 98.301. Par conséquent, les postes se chevauchent.

 
abeiks:

Voir l'annexe. Selon les conditions, les positions ne doivent pas se chevaucher, mais le terminal montre que les positions 3 et 9 s'ouvrent au même prix (également 4, 6, 8). Nous examinons ensuite les fichiers journaux et constatons qu'à un moment donné, la position 98.179 est perdue et apparaît 98.301. Les postes se chevauchent donc.


Merci pour votre code, les matériaux fournis et votre patience !

J'ai réparé la fonction. Voici la nouvelle version :

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

  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 (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (mn<0 || OrderMagicNumber()==mn) {
            if (OrderType()==OP_BUY)  mi=MarketInfo(OrderSymbol(), MODE_ASK);
            if (OrderType()==OP_SELL) mi=MarketInfo(OrderSymbol(), MODE_BID);
            p=MarketInfo(OrderSymbol(), MODE_POINT);
            if (pp<0 || pp>MathAbs(OrderOpenPrice()-mi)/p) {
              pp=MathAbs(OrderOpenPrice()-mi)/p;
              oop=OrderOpenPrice();
            }
          }
        }
      }
    }
  }
  return(oop);
}

Voici comment cela fonctionne maintenant... pas de chevauchement

Dossiers :
 
KimIV:


Merci pour le code, le matériel fourni et la patience !

Correction de la fonction. Voici la nouvelle version :

Voici comment cela fonctionne maintenant... pas de chevauchement


Merci, tout fonctionne ! :)
 
KimIV:


Correction de la fonction. Voici la nouvelle version :

Igor, y a-t-il quelque part un affichage de vos nouvelles bibliothèques, avec vos nouvelles fonctionnalités ou avec certaines de vos fonctionnalités modifiées ?

En d'autres termes, des bibliothèques mises à jour avec les modifications et les ajouts déjà effectués...

 
artmedia70:

Igor, y a-t-il quelque part un affichage de vos nouvelles bibliothèques, avec vos nouvelles fonctionnalités ou avec des modifications de certaines de vos fonctionnalités ?

En d'autres termes, des bibliothèques mises à jour avec les modifications et les ajouts déjà effectués...


Pas encore d'affichage... Je n'ai pas eu le temps... Mais de toute façon... Je suis toujours en train de les modifier. Et j'en ai écrit 30 ou plus. Je les poste ici tranquillement quand j'ai le temps et l'envie)))

SZY. Je peux envoyer toutes les bibliothèques à l'e-mail, tel quel, mais si vous le publiez, il est nécessaire de préparer la description ou au moins la liste et le but des fonctions à préciser ...

 
KimIV:


Pas encore d'affichage... Je n'ai pas eu le temps... Mais de toute façon... Je suis toujours en train de modifier des choses dedans. Et j'en ai écrit 30 ou plus. Je les poste ici tranquillement quand j'ai le temps et l'envie de le faire)))

ZS. Je peux envoyer par email toutes les libras telles quelles, mais si vous les publiez, vous devriez préparer une description ou au moins indiquer la liste et le but des fonctions...

Oh... il sera intéressant d'y jeter un coup d'œil :) Je vous enverrai un message dans votre boîte de réception.