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

 
Igor Zakharov:

Utiliser l'indicateur ATR

Merci, mais je ne comprends toujours pas comment il peut être utilisé dans mon cas.

Quelqu'un m'a envoyé un lien vers CopyRates (Merci, malheureusement le commentaire a été supprimé), donc j'essaie de comprendre que iVolume() est la différence entre le prix haut et bas ou autre chose ?

Par exemple, dans mon cas (tel que je le comprends), je peux créer un tableau de données mensuelles et hebdomadaires, puis faire la moyenne des valeurs, etc.

 
Alexander Layzerevich:

J'essaie de comprendre la fonction iVolume(). Est-ce la différence entre le prix le plus haut et le prix le plus bas ou quelque chose d'autre ?

il s'agit de volumes en tic-tac, faites un clic droit sur le graphique dans MT et sélectionnez "show volumes" - des histogrammes apparaîtront en bas du graphique - c'est tout.

https://docs.mql4.com/ru/series/ivolume

iVolume - Доступ к таймсериям и индикаторам - Справочник MQL4
iVolume - Доступ к таймсериям и индикаторам - Справочник MQL4
  • docs.mql4.com
Значение тикового объема бара (указанного параметром shift) соответствующего графика или 0 в случае ошибки. Для получения дополнительной информации об ошибке необходимо вызвать функцию GetLastError().
 
Igor Makanu:

Il s'agit de volumes en tic-tac, cliquez avec le bouton droit de la souris sur le graphique dans MT et sélectionnez "Afficher les volumes" - des histogrammes apparaîtront en bas du graphique - ce sont ceux-là.

https://docs.mql4.com/ru/series/ivolume

Merci beaucoup pour cette clarification.

Il reste donc ce qui suit : Créez 2 tableauxHigh et Low pour calculer les données pour le mois et 2 tableauxHigh et Low pour calculer les données pour la semaine.

Ensuite, on fait la moyenne de tout, etc.

Je vais essayer d'implémenter tout cela dans le code...

J'ai une autre question : quel est le meilleur moyen de calculer le dernier mois et la dernière semaine ?

A en juger par l'exemple :

Référence par position initiale et nombre d'éléments requis

intCopyHigh(
stringsymbol_name,// nom du symbole
ENUM_TIMEFRAMEStimeframe,// période
intstart_pos,//où commencer
intcount,// combien on en copie
doublehigh_array[]// tableau pour la copie des prix maximums
) ;

timeframe = PERIOD_D1 ;

start_pos = 1 ; // barre précédente

count = 30 ; // 30 jours (mois)

 
Alexander Layzerevich:

Autre question : quelle est la meilleure façon de compter le dernier mois et la dernière semaine ?

Il est préférable de le dater, car il y a des sauts de bars et des week-ends où il n'y a pas de bars, cela aidera :

Обращение по начальной и конечной датам требуемого интервала времени

int  CopyHigh(
   string           symbol_name,      // имя символа
   ENUM_TIMEFRAMES  timeframe,        // период
   datetime         start_time,       // с какой даты
   datetime         stop_time,        // по какую дату
   double           high_array[]      // массив для копирования максимальных цен
   );

https://docs.mql4.com/ru/series/copyhigh

CopyHigh - Доступ к таймсериям и индикаторам - Справочник MQL4
CopyHigh - Доступ к таймсериям и индикаторам - Справочник MQL4
  • docs.mql4.com
Функция получает в массив high_array исторические данные максимальных цен баров для указанной пары символ-период в указанном количестве. Необходимо отметить, что отсчет элементов от стартовой позиции ведется от настоящего к прошлому, то есть стартовая позиция, равная 0, означает текущий бар. При копировании заранее неизвестного количества...
 
Igor Makanu:

Il serait préférable de dater, car il y a des sauts (citations) de bars et des week-ends où il n'y a pas de bars, cela aiderait :

https://docs.mql4.com/ru/series/copyhigh

Merci, comment faire pour que l'EA (Robot) sache par quelle date commencer et où s'arrêter.

Je trouve plus facile de compter 30 bougies (30 jours) à partir de 1. Ou 7 chandeliers (jours).

J'ai obtenu ce code :

//************************************************************************************************/
double iPointOrderStep()
{
double Awerage30 = 0, SummAwerage30 = 0;
double Awerage7 = 0, SummAwerage7 = 0;

double High30[], Low30[], High7[], Low7[];
//----------------Для месяца---------------------------
int iHigh30 = CopyHigh(Symbol(),PERIOD_D1,1,30,High30);
int iLow30 = CopyLow(Symbol(),PERIOD_D1,1,30,Low30);
//----------------Для недели---------------------------
int iHigh7 = CopyHigh(Symbol(),PERIOD_D1,1,7,High7);
int iLow7 = CopyLow(Symbol(),PERIOD_D1,1,7,Low7);

for(int i=0;i<30;i++) 
   {
      SummAwerage30 += (High30[i]-Low30[i]);
   }
for(int i=0;i<7;i++) 
   {
      SummAwerage7 += (High7[i]-Low7[i]);
   }

   Awerage30 = SummAwerage30/30;
   Awerage7 = SummAwerage7/7;
   
   double iPointOrderStep = NormalizeDouble(((Awerage30+Awerage7)/2),0);
   return (iPointOrderStep/6);
}
//************************************************************************************************/

Mais malheureusement il donne une valeur = 0.

Pouvez-vous me dire où se trouve l'erreur...

Et aussi...

Comment faire le calcul une fois par semaine en début de session ou au redémarrage du terminal ?

 
Alexander Layzerevich:

Merci, mais je n'ai pas encore compris comment il peut être utilisé dans mon cas.

L'essence de l'ATR est la hauteur moyenne des barres sur une période. Autant utiliser la MA(haute)-MA(basse). C'est plus facile que de déplier le dépassement.

 
Igor Zakharov:

L'essence de l'ATR est la hauteur moyenne des barres sur une période. Vous pourriez tout aussi bien utiliser la MA(haute)-MA(basse). C'est plus facile que d'inverser le dépassement.

c'est-à-dire selon l'exemple

intiATR(
stringsymbol,// nom du symbole
ENUM_TIMEFRAMESperiod,// période
intma_period// période de calcul de la moyenne
) ;

double Awerage30= iATR(Symbol(),PERIOD_D1, 30) ; ce sera la valeur numérique moyenne pour 30 jours ?

 
Alexander Layzerevich:

c'est-à-dire selon l'exemple

intiATR(
stringsymbol,// nom du symbole
ENUM_TIMEFRAMESperiod,// période
intma_period// période de calcul de la moyenne
) ;

double Awerage30= iATR(Symbol(),PERIOD_D1, 30) ; ce sera la valeur moyenne pour 30 jours ?

Pas les jours civils. 30 jours en arrière (dimanches, samedis)

A en juger par la fonction sans changement de paramètre que vous faites en 5, et vous avez posé une question en 4 :)

 
Igor Zakharov:

Mais pas ceux du calendrier. Barres de 30 jours à l'envers (dimanches, samedis)

A en juger par la fonction sans le paramètre shift, vous faites en 5 et vous avez posé la question en 4 :)

Cette branche est pour les deux terminaux. Surtout avec les mêmes fonctions.

 
Artyom Trishkin:
Cette branche se trouve sur les deux terminaux. Surtout avec les mêmes fonctions.

Faut-il alors corriger le titre ?

Raison: