Fonctions utiles de KimIV - page 59

 
Liste des fonctions mise à jour
Dossiers :
f_kimiv_1.rar  12 kb
 

Igor, pouvez-vous me dire s'il existe une fonction qui détermine la valeur minimale en pips pour placer un ordre en attente?

Merci !

 
mozg писал(а) >>
Igor, pouvez-vous me dire s'il existe une fonction qui définit la valeur minimale en pips pour placer un ordre en attente ?
MarketInfo(Symbol(), MODE_STOPLEVEL);
 

Bonjour Igor ! Pourriez-vous écrire une fonction qui empêchera l'EA de rejouer le signal ? Cela signifie que l'état, après avoir ajouté ce bloc de code, devrait ressembler à ceci : acheter, vendre, acheter, vendre, acheter, vendre..... etc...

 
Shniperson писал(а) >>

Bonjour Igor ! Pourriez-vous s'il vous plaît écrire une fonction qui empêchera l'EA de redéclencher le signal ? ... C'est-à-dire que l'état, après avoir ajouté ce bloc de code, devrait ressembler à ceci... buy,sell,buy,sell,buy,sell.... etc...

des balançoires...

//+----------------------------------------------------------------------------+
//|  Управление позициями.                                                     |
//+----------------------------------------------------------------------------+
void ManagePositions() {
  double sl=0, tp=0;
  int    bs= GetTradeSignal();

  if ( bs>0) {
    if ( ExistPositions(NULL, OP_SELL, Magic)) ClosePositions(NULL, OP_SELL, Magic);
    if (! ExistPositions(NULL, OP_BUY, Magic)) {
      if ( StopLoss  >0) sl=Ask- StopLoss  *Point; else sl=0;
      if ( TakeProfit>0) tp=Ask+ TakeProfit*Point; else tp=0;
      OpenPosition(NULL, OP_BUY, Lots, sl, tp, Magic);
    }
  }
  if ( bs<0) {
    if ( ExistPositions(NULL, OP_BUY, Magic)) ClosePositions(NULL, OP_BUY, Magic);
    if (! ExistPositions(NULL, OP_SELL, Magic)) {
      if ( StopLoss  >0) sl=Bid+ StopLoss  *Point; else sl=0;
      if ( TakeProfit>0) tp=Bid- TakeProfit*Point; else tp=0;
      OpenPosition(NULL, OP_SELL, Lots, sl, tp, Magic);
    }
  }
}
//+----------------------------------------------------------------------------+
//|  Возвращает торговый сигнал:                                               |
//|     1 - покупай                                                            |
//|     0 - сиди, кури бамбук                                                  |
//|    -1 - продавай                                                           |
//+----------------------------------------------------------------------------+
int GetTradeSignal() {
  int bs=0;

  if ( условия для покупки) bs=1;
  if ( условия для продажи) bs=-1;

  return( bs);
}

ExistPositions()

ClosePositions()

 

La fonction NormalizePrice().

Cette fonction renvoie la valeur normalisée du prix. La normalisation est effectuée en utilisant les valeurs de la fonction MarketInfo(MODE_TICKSIZE || MODE_DIGITS). La fonction NormalizePrice( ) prend les paramètres suivants :

  • np - Valeur normalisée du lot. Paramètre requis.
  • sy - Nom de l'instrument commercial. NULL ou "" - symbole actuel. Valeur par défaut - "".
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 21.08.2008                                                     |
//|  Описание : Возвращает нормализованное под размер тика значение цены.      |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    np - нормализуемое значение цены.                                       |
//|    sy - наименование инструмента        ("" или NULL - текущий символ)     |
//+----------------------------------------------------------------------------+
double NormalizePrice(double np, string sy="") {
  if ( sy=="" || sy=="0") sy=Symbol();
  double pp, ts=MarketInfo(Symbol(), MODE_TICKSIZE);
  int    di=MarketInfo(Symbol(), MODE_DIGITS);

  if ( ts>0) pp=NormalizeDouble( np/ ts, 0)* ts;
  else {
    if ( di>0) pp=NormalizeDouble( np* di, 0)/ di; else pp= np;
  }
  return( pp);
}

SZZ. Vous trouverez ci-joint un script pour tester la fonction NormalizePrice().

Dossiers :
 

(Question de débutant).

L'estimé KimIV a écrit une fonction :

GetExtremumZZPrice().


double GetExtremumZZPrice(string sy="", int tf=0, int ne=0, int dp=12, int dv=5, int bs=3) {
  if (sy=="" || sy=="0") sy=Symbol();
  double zz;
  int    i, k=iBars(sy, tf), ke=0;

  for (i=1; i<k; i++) {
    zz=iCustom(sy, tf, "ZigZag", dp, dv, bs, 0, i);
    if (zz!=0) {
      ke++;
      if (ke>ne) return(zz);
    }
  }
  Print("GetExtremumZZPrice(): Экстремум ЗигЗага номер ",ne," не найден");
  return(0);
}
Quel type de code faut-il utiliser pour stocker les prix du dernier minimum et maximum dans 2 variables ? ( mon esprit est grillé ;((())
 
WroC писал(а) >>
Quel type de code faut-il utiliser pour stocker les prix du dernier minimum et maximum dans 2 variables ?
void start() {
  double p1= GetExtremumZZPrice("", 0, 0);
  double p2= GetExtremumZZPrice("", 0, 1);

  if ( p1> p2) Comment("Последний максимум ", p1, "\n Последний минимум ", p2);
  else Comment("Последний максимум ", p2, "\n Последний минимум ", p1);
}
 

KimIV

Merci !

 
Igor, bonjour !
Dans la mesure de mes capacités, j'ai essayé de comprendre le matériel que vous avez présenté. Pour être honnête, je n'ai pas encore utilisé de conseillers experts ou de scripts, et je n'ai pas d'expérience pratique avec eux, mais j'ai besoin de créer un script qui m'aiderait à placer un grand nombre d'ordres.
La tâche du script est de faciliter le placement des ordres en attente (principalement Buy stop et Sell stop).
C'est-à-dire que les paramètres du script sont définis comme suit :
1. Niveau à partir duquel les ordres sont placés (par exemple, EUR / USD Achat Stop à partir de 1.3000)
2. La taille de chaque commande (par exemple, 0,01).
Étape de passation des ordres (par exemple, 1 pip)
4. TP de chaque ordre (par exemple 3 pips)
5. Le nombre d'ordres en attente (par exemple, 70) ou le niveau jusqu'auquel les ordres en attente doivent être placés (par exemple, jusqu'à 1,3070).
Les paramètres de stop loss et de trailing stop dans le script sont souhaitables mais pas nécessaires...
Le script est censé démarrer l'ordinateur toutes les 3-4 heures, analyser la situation et décider de placer des ordres pour casser le range à la hausse (ou à la baisse), avec une période d'ouverture de 1 pip, mais avec un TP minimum (3 pips). Ainsi, en cas de mouvement du prix vers le côté nécessaire, ces ordres commenceront à être ouverts et si le prix nécessaire est atteint, ils seront fermés par TP. Ensuite, une variante est possible lorsqu'ils seront tous fermés sur un TP - si le mouvement du prix passe tous les ordres ou une partie des ordres (6 unités) seront ouverts et seront "moins". Dans ce cas, nous sommes censés définir le prochain "escalier" d'ordres dans la direction opposée avec d'autres paramètres (taille de lot, pas, TP, nombre d'ordres) qui sembleraient être les meilleurs pour un trader.
À la fin d'une journée de négociation, les "positions opposées" seront fermées, laissant ainsi le trader avec environ 6 ordres dirigés vers le haut (ou vers le bas).
Merci d'avance pour la réponse d'un expert !