Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1382

 
Boris:

Alors... Lisez la documentation (encore une fois).

Question. Qu'est-ce qui ne va pas ? Cela ne compte pas, ni avec CopyTicksRange, ni avec CopyTicks.

Vous devez lire plus et plus et plus... Lisez-le jusqu'à ce que vous lisiez ce que j'ai copié de la documentation pour vous personnellement et l'ai marqué en caractères gras et rouges.

Quel ennui... Aucune citation ne leur colle à la peau... Je vais devoir les dupliquer...

from_msc

[La date à partir de laquelle les ticks sont demandés. Spécifié en millisecondes à partir du 01.01.1970. Si le paramètrefrom_msc n'est pas spécifié, alors les ticks sont retournés depuis le début de l'historique. Les ticks avec un temps >= from_msc sont retournés.

to_msc

[Date à laquelle les ticks sont demandés. Spécifié en millisecondes à partir du 01.01.1970. Les ticks avec un temps <= to_msc sont retournés. Si le paramètreto_msc n'est pas spécifié, tous les ticks jusqu'à la fin de l'historique sont donnés .


 
Boris:

Alors... Lisez la documentation (encore une fois).

Question. Qu'est-ce qui ne va pas ? Il ne compte ni par CopyTicksRange ni par CopyTicks.

La question que je me pose, par exemple, je ne connais pas bien µl5, c'est le mot Date, pas Heure. Et en conséquence une question, et dans une date quel âge aura-t-on ?

Et après une allusion. Comment obtenir le temps en millisecondes ?

 
Valeriy Yastremskiy:

La question que je me pose est, par exemple, je ne connais pas très bien µl5, c'est le mot Date, pas Time. Et par conséquent, la question est de savoir, à la même date, quel est l'âge ?

Et après une allusion. Comment obtenir le temps en millisecondes ?

1 seconde = 1000 millisecondes. Et "Date" implique "Date et heure", car le type est datetime et pas seulement date.

 
Alexey Viktorov:

Lisez plus et plus et plus... Lisez jusqu'à ce que vous ayez lu ce que j'ai personnellement copié de la documentation pour vous et surligné en rouge gras.

Dommage... les citations ne collent pas... je vais devoir les dupliquer...


Oh, mec... Ouais, eh bien... Ça marche !

 

QUESTION sur mql4 :

Il y a une restriction de spread dans le code de l'EA, l'EA est défini pour plusieurs graphiques.

Il n'est pas tout à fait correct d'entrer le spread moyen pour une paire dans les paramètres d'entrée, et il varie d'un bureau de négociation à l'autre.

Le spread moyen est de 5pp, mais il y a des moments où il s'élargit à 12pp pendant quelques minutes et ce n'est pas un rollover.

Comment puis-je automatiser cette opération afin de calculer le spread moyen et de ne pas ouvrir une position sur un spread étendu ?

   MqlRates rates[]; 
   int copied=CopyRates(NULL,PERIOD_M1,0,100,rates); 
   if(copied>0) 
   for(int e = ArraySize(rates)-1; e >=0; e--) {
     Print(e,"=",rates[e].spread); // всегда "0"
   }
 

Bonjour, est-il possible et comment créer un Expert Advisor basé sur l'algorithme d'ouverture et de fermeture d'une transaction sans utiliser d'indicateurs ?

Par exemple, prenez deux lignes, une ligne de tendance est ascendante et la seconde est également descendante, mettez-les l'une sur l'autre, il y a un point d'intersection entre les deux lignes, supposons qu'il soit à 15-30 dans le temps, alors comment faire pour que l'ordre soit automatiquement ouvert au même moment pour commencer dans n'importe quelle direction, comment faire pour que l'algorithme trouve ces points etouvre une position? J'aimerais obtenir des précisions et connaître votre avis.

Peut-on créer un EA basé sur un tel T3 ?
Совершение сделок - Торговые операции - Справка по MetaTrader 5
Совершение сделок - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением...
 
Vitaly Muzichenko:

QUESTION sur mql4 :

Il y a une restriction de spread dans le code de l'EA, l'EA est défini pour plusieurs graphiques.

Il n'est pas tout à fait correct d'entrer le spread moyen pour une paire dans les paramètres d'entrée, et il varie d'un bureau de négociation à l'autre.

Le spread moyen est de 5pp, mais il y a des moments où il s'élargit à 12pp pendant quelques minutes et ce n'est pas un rollover.

Comment automatiser cela afin de calculer le spread moyen et ne pas ouvrir une position sur un spread étendu ?

Une bonne idée est de surveiller l'écart à chaque tique. A en juger par la rhétorique et les problèmes des traders avec sa forte augmentation à loos. Le problème, tel que je le comprends, n'est pas un grand écart long, c'est le moindre des problèmes, mais une forte augmentation des grands écarts et des écarts courts.

Je regarderais celui spécifié dans les propriétés du symbole, le prendrais comme une moyenne et l'augmenterais raisonnablement avant d'ouvrir des ordres. Et nous examinerions également l'écart pour le fermer ou le modifier. Ou bien, je surveille l'écart moyen sur les 3 à 10 derniers ticks.

 
Valeriy Yastremskiy:

Une bonne idée est de surveiller l'écart à chaque tique. Si l'on en juge par les discours et les problèmes que rencontrent les traders en cas de forte augmentation au point de perdre de l'argent. Le problème, tel que je le comprends, n'est pas un long et grand écart, c'est le moindre des problèmes, mais une forte et courte augmentation de l'écart.

Je regarderais celui spécifié dans les propriétés du symbole, le prendrais comme une moyenne et l'augmenterais raisonnablement avant d'ouvrir des ordres. Et nous examinerions également l'écart pour le fermer ou le modifier. Ou encore, l'écart sur les 3 à 10 derniers ticks serait suivi en moyenne.

Hier, à environ 1 minute (et ce n'est pas 10 ticks), il y avait ~14 points d'écart avec un écart normal moyen de 4 points. Ainsi, au moment de l'extension de l'écart, le robot est entré pour acheter.

10 ticks n'est clairement pas suffisant

 
Vitaly Muzichenko:

Hier, pendant environ 1 minute (ce qui n'est pas 10 ticks), il y avait un écart de ~14pp avec un écart normal moyen de 4pp. Ainsi, au moment de l'extension de l'écart, le robot est entré pour acheter.

10 ticks ne sont évidemment pas suffisants.

Il s'agit ici de fixer le début et la fin des changements, et cette fixation doit se faire dans un intervalle de temps court. C'est-à-dire que la valeur moyenne de l'écart doit être fixée d'une seconde à 10 secondes par une fenêtre flottante. Vous devez observer le nombre de tics par seconde en moyenne ou observer les tics pendant 10 secondes et faire la moyenne. Je préfère la première option.

 
Valeriy Yastremskiy:

La tâche ici est de capturer le début des changements et la fin. et les émissions de changements uniques. et la capture doit être dans une courte période de temps. La valeur moyenne de l'écart doit être fixée d'une seconde à 10 secondes par une fenêtre flottante. Vous devez observer le nombre de tics par seconde en moyenne ou observer les tics pendant 10 secondes et faire la moyenne. La première variante est plus proche de moi.

J'ai résolu le problème de cette façon :

void OnTick(void)
{
 int sp = SymbolInfoInteger(Symbol(),SYMBOL_SPREAD);

   if(CheckSpr(sp)) {
     // Здесь код отправки
   }
}

//+------------------------------------------------------------------+
bool CheckSpr(int _sp)
{
  static int ts=0, res=0;
  static long tc=0;
   tc++;
   ts += _sp;
   res =ts/tc;
   if(tc>LONG_MAX-1) {
      tc=0;
      ts=0;
   }
   // Comment( res,"=",tc );
   if(tc<500) return(false);
   return(res>_sp?true:false);
}

Le problème est qu'il enregistrera un écart énorme dans le roulement et qu'il fonctionnera avec.

Je pense que cette solution est inefficace, nous devons d'une manière ou d'une autre limiter l'enregistrement du rollover sans appliquer de limite de temps.