Fonctions utiles de KimIV - page 45

 

Un exemple d'utilisation de la fonction GetPriceDiffInPoint().

Supposons que nous devions calculer la valeur en pips et le sens du mouvement du taux entre la deuxième et la première barre du graphique actuel. Supposons que le graphique actuel soit EURUSD H1. Appelez la fonction GetPriceDiffInPoint() avec les paramètres par défaut :

Message(GetPriceDiffInPoint());

Voici le résultat :


La fonction GetPriceDiffInPoint() a retourné -23 points. Analysons comment il a été obtenu. Pour ce faire, traçons des lignes verticales à travers les barres horaires 2, 1 et 0 :


Passons à un cadre temporel plus petit, par exemple, M5 et marquons l'intervalle des barres 2 et 1 avec un seul rectangle :

Maintenant, nous pouvons clairement voir que le premier dans l'intervalle mis en évidence ont été deux sommets égaux de 1,4283, et seulement après eux, au milieu de la deuxième heure a été le bas de 1,4260. Par conséquent, nous concluons que pendant les deux dernières heures, l'EURUSD a baissé et la valeur de cette baisse était (1.4283 - 1.4260) / 0.0001 = 23 pips.


P.S. Vous trouverez ci-joint le script permettant de tester la fonction GetPriceDiffInPoint().

Dossiers :
 

Superbe sélection, il n'y a pas une fonction pour fermer un ordre (achat ou vente) à la première fermeture réussie d'une barre sur n'importe quelle TF....

 

Puis-je demander quels contrôles sont effectués avant l'ouverture des commandes ?

Si elles sont rassemblées dans une fonction séparée, veuillez me donner un lien. Sinon, une liste peut être donnée.

 
SK. писал (а) >>
Puis-je demander quels contrôles sont effectués avant l'ouverture des commandes ?

Sergei, je ne sais pas si votre question s'adresse à moi ou non ?

 
KimIV писал (а) >>

...

Les fonctions, ouverture, fermeture et modification lors de la gestion des erreurs utilisent la commande Sleep. J'ai fait quelques recherches et je recommande de le remplacer par l'un de ceux-ci. Le fait est que la valeur du délai est une recommandation, et ne doit pas nécessairement être strictement cette valeur. Très souvent, vous pouvez effectuer des actions avec un ordre immédiatement (sans délai). Mais si vous avez une requote, alors je n'aime pas le fait que la CB puisse calculer quand et quel type d'opération je vais effectuer.

int start()
  {
//----
   Sleep_RND(20000);  
//----
   return(0);
  }
//+------------------------------------------------------------------+
void Sleep_RND(int _Pausa)
  {
   MathSrand(TimeLocal());
   MathRand();
   Sleep(MathRound(_Pausa*MathRand()/32767+_Pausa/5));
   return;
  }
 
KimIV писал (а) >>

Sergei, je ne sais pas si votre question s'adresse à moi ou non.

Oui, Igor, c'est une question pour vous.

Le point est le suivant. J'ai regardé la fonction d'ouverture, il n'y a pas de contrôles. Apparemment, ils sont concentrés dans une autre fonction. Si vous disposez d'une telle fonction, veuillez me donner le lien. Si vous ne voyez pas une telle fonction, vous pouvez écrire une liste de contrôles ici même. Vous pouvez le faire lentement.

 

Non, Sergei, je ne fais plus de contrôles. Ou plutôt, je le fais, mais je ne les mets pas dans des fonctions séparées. C'est-à-dire que j'en ai mis quelques-uns... Bon sang, je vais vous donner un exemple :

extern int StopLoss=30;
extern int TakeProfit=50;

double ll=GetSizeLot();
double po, pp, sl, tp;
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);
  }
}

Qu'est-ce qu'on voit ici ?

1. Nous calculons le lot à négocier.

2. S'il existe une position d'achat avec un numéro magique spécifié, son prix ouvert est défini po.

S'il n'y a pas d'ordre SellStop et que la position Sell a un Magik d'une unité supérieur à celui spécifié, nous fixons l'ordre SellStop au prix inférieur d'un point offSet au prix d'ouverture de la position Buy.

4. Dans l'intervalle, nous effectuons le calcul des niveaux de prix sl et tp.

 
KimIV писал (а) >>

4. Entre les deux, calculer les niveaux de prix sl et tp.

C'est ce que je veux dire. Nous devons tenir compte des contraintes existantes, qui, en général, changent tout le temps.

Existe-t-il une fonction qui analyse toutes les contraintes possibles ?

Même chose pour la modification.

--

(J'ai 16 fonctions - 3 pour chaque bon ordre (OP,SL,TP) et 2 pour chaque ordre au marché (SL,TP),

et ensuite d'autres combinaisons d'autorisations à analyser).

 
SK. писал (а) >>
Existe-t-il une fonction qui analyse toutes sortes de restrictions ?
Pas encore... d'une certaine manière, je n'avais pas à le faire. Mais grâce à vous, j'y ai pensé et je me suis dit que je devais le faire ! >> Merci !
 

Fonction GetTypePrice()

Renvoie le nom du type de prix. La fonction n'accepte qu'un seul paramètre facultatif. Valeurs valables : PRICE_CLOSE, PRICE_OPEN, PRICE_HIGH, PRICE_LOW, PRICE_MEDIAN, PRICE_TYPICAL, PRICE_WEIGHTED. La valeur par défaut est 0 - PRICE_CLOSE.

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 01.09.2005                                                     |
//|  Описание : Возвращает наименование типа цены.                             |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    Applied_Price - тип цены                                                |
//+----------------------------------------------------------------------------+
string GetTypePrice(int Applied_Price=0) {
  switch (Applied_Price) {
    case PRICE_CLOSE   : return("Close");
    case PRICE_OPEN    : return("Open");
    case PRICE_HIGH    : return("High");
    case PRICE_LOW     : return("Low");
    case PRICE_MEDIAN  : return("Median");
    case PRICE_TYPICAL : return("Typical");
    case PRICE_WEIGHTED: return("Weighted");
    default            : return("Unknown Type Price");
  }
}
Cette fonction est utile pour commenter ou consigner le travail des indicateurs, des scripts et des Expert Advisors, en particulier pour afficher les explications des valeurs des constantes de prix.
Raison: