Questions d'un "mannequin - page 132

 
Yedelkin:

Si vous êtes intéressé par le calcul des données d'un autre indicateur, vous pouvez le faire de la manière suivante. Tout d'abord, nous créons un autre indicateur avec sa propre méthode de calcul des données, puis nous prenons le handle de cet indicateur(MQL5 Reference Guide / Technical Indicators / iCustom ) et ce handle est utilisé dans le nouvel indicateur. Regardez attentivement l'exemple. Si vous avez des questions sur l'exemple

J'ai des questions. Je ne comprends toujours pas.
Ok, prenons Custom Moving Average.mq5 comme base.

ajouter la nouvelle procédure de lissage MODE_MYMA - pas de problème.

la question est de savoir comment alimenter les données par l'intermédiaire de l'i-cast d'un autre indicateur ? Ok, prenons comme exemple n'importe quel indicateur fait par le second formulaire (si l'indicateur est fait par le premier formulaire... je ne sais pas comment prendre le high-low... donc cela signifie seulement le second formulaire ?)

Ok, déclarons

int newHandl ;

le définir dans le onInit (parabolique, c'est à dire n'importe quoi, l'essentiel c'est le 2ème type, non ? je comprends comment implémenter le mien)

newHandl=iCustom(_Symbol,0, "ParabolicSAR.mq5",0.02,0.2) ;

et ensuite ? dans onCalculate nous l'alimentons au lieu du prix standard ?

CalculateEMA(rates_total,prev_calculated,begin,newHandl) ;? ???

Est-ce que ça jure ou quoi ? Expliquez-moi, je ne comprends pas... (((((

oui, j'utilise toujours les modèles mcl4. là, c'est simple - boucle, prise de données (n'importe lesquelles !), lissage, sortie.
Mais ici.... Je ne sais pas à quoi m'accrocher...

 
GameOver:

(si l'indicateur est fait par la première forme... je n'ai pas compris d'où prendre le high-low... donc ça veut dire seulement par la deuxième forme ?)

Oui, à propos du high-low c'était juste un exemple, comment traiter les articles par vous-même. Pour la première forme vous pouvez prendre la tâche de dessiner la ligne close[i]/2 [ou sqrt(close[i]/2 )]. En général, il est possible de créer un grand nombre de variantes à l'aide d'un seul tableau.

GameOver:

OK, déclarons

int newHandl ;

dans onInit, définissez-le (par exemple - parabolique. peu importe, l'essentiel est le deuxième type, n'est-ce pas ? comment implémenter le vôtre est à peu près clair)

newHandl=iCustom(_Symbol,0, "ParabolicSAR.mq5",0.02,0.2) ;

C'est bien. Je vais le terminer maintenant.

Si le handle de l'indicateur est correct, cela signifie que nous pouvons nous adresser aux tampons de cet indicateur. Regardez à nouveau l'exemple de MQL5 Reference / Technical Indicators / iCustom Il y a une ligne :

//--- скопируем значения индикатора Custom Moving Average в наш индикаторный буфер
   int copy=CopyBuffer(MA_handle,0,0,rates_total,Label1Buffer);

Lisez maintenant la référence MQL5 / Accès aux séries chronologiques et aux indicateurs / CopyBuffer (...Encore une fois : beaucoup de choses deviennent claires en analysant les exemples ligne par ligne).

Essayez de recevoir les données de n'importe quel tampon indicateur que vous avez sélectionné. Je n'ai pas de terminal, mais dans parabolique vous pouvez voir quels tampons sont calculés et leur numérotation.

Документация по MQL5: Технические индикаторы
Документация по MQL5: Технические индикаторы
  • www.mql5.com
Технические индикаторы - Документация по MQL5
 

Question sur la description des fonctions ArrayIsSeries() et ArrayGetAsSeries().

Une telle phrase figure dans le manuel de référence :"Les tableaux passés dans la fonction reflètent les données de prix, c'est-à-dire que ces tableaux ont le signe timeseries et la fonction ArrayIsSeries() renverra vrai lors de la vérification de ces tableaux . Mais dans tous les cas, le sens de l'indexation doit être vérifié uniquement avec la fonctionArrayGetAsSeries()".

Il résulte d'une lecture littérale que même si la fonction ArrayIsSeries() renvoie vrai (c'est-à-dire qu'elle confirme que le tableau vérifié est un tableau timeseries), la direction de l'indexation doit de toute façon être vérifiée uniquement par la fonction ArrayGetAsSeries(). Alors je ne comprends pas la raison de l'introduction de la fonction ArrayIsSeries() si ses résultats doivent de toute façon être vérifiés en plus. Quel est l'intérêt ? Est-il possible que le tableau soit une série temporelle, mais que sa direction d'indexation ne soit pas la même que celle d'une série temporelle (le drapeau AS_SERIES ne sera pas activé) ?

 


Lors du portage de Mql4 vers Mql5, une erreur de lot est apparue :

Lot" - la constante ne peut pas être modifiée

input double Lot = 0.1; // Lot

if (MartingaleType ==7)
 {
 if (Counter1==1)
 Lot=Lots() ;
}

Comment corriger ?


 
Dark.Angel:


Lors du portage de Mql4 vers Mql5, une erreur de lot s'est produite :

Lot" - la constante ne peut pas être modifiée

Comment le réparer ?

Tu ne peux pas. Ce n'est pas un bug, c'est une fonctionnalité. :)

Dans mql5 les variables d'entrée ne sont pas modifiables (const).

Faites un découplage simple :

input int x=5;
input double StartLot = 0.01;

int X;
double Lot;
...
...
void OnInit()
  {
   ....
    X=x;
    Lot=StartLot;
   .......
  }
.....
void OnStart()
  {
   ....
   Lot=Lots();
  }
 

Dans la sectionMQL5 Manual / Array Operations / ArraySetAsSeries, il y a un exemple où la fonction ArraySetAsSeries() s'applique au tableau const datetime&time[] à chaque tick :

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---  будем хранить время открытия текущего нулевого бара
   static datetime currentBarTimeOpen=0;
//--- перевернем доступ к массиву time[] - сделаем как в таймсерии
   ArraySetAsSeries(time,true);
//--- return value of prev_calculated for next call
   return(rates_total);
  }

Est-ce que c'est ce que tout le monde fait (retourner le tableau à chaque tick) pour travailler avec le tableau comme une série chronologique ?

Autre question : les tableaux utilisés par OnCalculate() peuvent-ils changer arbitrairement leur direction d'indexation ? Ou est-il suffisant de vérifier cette direction une fois ?

 


Lors du portage de Mql4 vers Mql5, une erreur se produit SymbolInfoDouble :
'SymbolInfoDouble' - aucune des surcharges ne peut être appliquée à l'appel de fonction.

на Mql4:
double a = balance / MarketInfo (Symbol (), MODE_MARGINREQUIRED) - 0.2 ; 

на Mql5:
double a = balance / SymbolInfoDouble(Symbol(), 0) - 0.2 ;

Comment puis-je le corriger ?
 
Dark.Angel:


Lors du portage de Mql4 vers Mql5, l'erreur SymbolInfoDouble est apparue :
SymbolInfoDouble' - aucune des surcharges ne peut être appliquée à l'appel de fonction.


Comment puis-je le corriger ?

Pourquoi y a-t-il un 0 en bas ?

https://www.mql5.com/ru/docs/constants/environment_state/marketinfoconstants#enum_symbol_info_double

Et en plus de cela, vérifiez la division par 0.

Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте - Документация по MQL5
 

Les résultats du testeur de stratégie sont affichés dans des graphiques :


Pouvez-vous me dire où trouver la signification des différentes couleurs sur les graphiques ?

 
pusheax:

Les résultats du testeur de stratégie sont affichés dans des graphiques :

Pouvez-vous me dire où trouver la signification des différentes couleurs sur les graphiques ?

Les bleus correspondent à des bénéfices, les rouges à des pertes. Mais celui d'en haut à gauche est seulement douteux...
Raison: