Je vais écrire l'indicateur gratuitement - page 19

 
Tango_X:

Je l'ai implémenté avec OnTimer() et rien n'en est ressorti. Malheureusement l'événement onTimer() ne calcule pas l'indicateur et le délai est sauvegardé, peut-être une affirmation forte et j'ai fait quelque chose de mal, s'il vous plaît corriger. Merci !

Ce que vous avez fait n'est pas une implémentation par OnTimer(). On y trouve simplement des valeurs (toute l'histoire, et à chaque seconde, d'ailleurs, sans vérification). Quoi qu'il en soit, je ne pense pas que vous puissiez le mettre en œuvre par vous-même. Attendez la réponse de l'auteur de la branche :)
 
Alexey Kozitsyn:
Ce que vous avez fait n'est pas une implémentation par OnTimer(). Vous n'y obtenez que des valeurs (tout l'historique, et chaque seconde, sans aucun contrôle). En général, il est peu probable que vous puissiez le mettre en œuvre par vous-même. Attendre la réponse de l'auteur de la branche :)
Oui, merci ! J'ai déjà contacté l'auteur de la branche, où il a promis de m'aider ! J'attends une réponse))
 
Tango_X:

Je l'ai implémenté avec OnTimer() et rien n'en est ressorti. Malheureusement l'événement onTimer() ne calcule pas l'indicateur et le délai est sauvegardé, peut-être une affirmation forte et j'ai fait quelque chose de mal, s'il vous plaît corriger. Merci !

//+------------------------------------------------------------------+
//|                                              TestCopyBuffer3.mq5 |
//|                        Copyright 2009, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2009, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
//---- plot MA
#property indicator_label1  "MA"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- input parameters
bool               AsSeries=true;
int                period=15;
input ENUM_TIMEFRAMES    TimeFrame=PERIOD_CURRENT; //Период графика
ENUM_MA_METHOD     smootMode=MODE_EMA;
ENUM_APPLIED_PRICE price=PRICE_CLOSE;
int                shift=0;
//--- indicator buffers
double                   MABuffer[];
int                      ma_handle;
int to_copy;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,MABuffer,INDICATOR_DATA);
   Print("Параметр AsSeries = ",AsSeries);
   Print("Индикаторный буфер после SetIndexBuffer() является таймсерией = ",
         ArrayGetAsSeries(MABuffer));
//--- set short indicator name
   IndicatorSetString(INDICATOR_SHORTNAME,"MA("+period+")"+AsSeries);
//--- set AsSeries (depends on input parameter)
   ArraySetAsSeries(MABuffer,AsSeries);
   Print("Индикаторный буфер после ArraySetAsSeries(MABuffer,true); является таймсерией = ",
         ArrayGetAsSeries(MABuffer));
//---
   ma_handle=iMA(Symbol(),TimeFrame,period,shift,smootMode,price);
   EventSetTimer(1);
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
  {
//--- check if all data calculated
   if(BarsCalculated(ma_handle)<rates_total) return(0);
//--- we can copy not all data
   //int to_copy;
   if(prev_calculated>rates_total || prev_calculated<=0) to_copy=rates_total;
   else
     {
      to_copy=rates_total-prev_calculated;
      //--- last value is always copied
      to_copy++;
     }
//--- try to copy
  
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
//---
   CopyBuffer(ma_handle,0,0,to_copy,MABuffer);
   Print("Таймер");
  }
//+------------------------------------------------------------------+
Je pense que ce que je voulais dire, c'était dedéplacer tout ce qui est dansOnCalculate versOnTimer.
 
Yurij Izyumov:
Je suppose que cela signifiedéplacer tout ce qui est dansOnCalculate versOnTimer.
Si cela fonctionne, pourquoi pas !
 
Une solution a été proposée ici, mais comme je suis un programmeur novice, il m'est difficile de la mettre en œuvre, c'est pourquoi j'ai demandé de l'aide dans ce fil de discussion.
 
Yurij Izyumov:

Afin de le réécrire, tous les indicateurs à inclure doivent également être sous mql5

Et la réécriture ? Le code est-il trop compliqué ???
 
Bon après-midi. Je suis sur l'indicateur Delta_RSI, il continue à dessiner (voir capture d'écran) histo dans les deux directions en même temps (chercher l'erreur). Et il est possible de colorer le signal zéro différemment pour le dessus et le dessous du zéro. Serez-vous capable de voir(corriger) ? Merci.
 
Igor371:
Après-midi. Je suis sur l'indicateur Delta_RSI, je l'ai constamment dessiné (voir capture d'écran) histo dans les deux sens en même temps (chercher l'erreur). Il est également possible de colorer la couleur de l'absence de signal pour les valeurs supérieures ou inférieures à zéro. Serez-vous capable de voir(corriger) ? Merci.

décrivez ce que vous faites pour le briser ))))

graphique, TF, séquence, etc.

 
Yurij Izyumov:

décrivez ce que vous faites pour le briser ))))

graphique, TF, séquence, etc.

Je ne fais pas vraiment quelque chose. J'ai de grandes périodes de 1000/250 sur M1 par exemple. À un moment donné, le marché devient les deux côtés de zéro en même temps. Je ne sais pas exactement à quel moment, mais je vais regarder de plus près. Je n'ai aucun problème avec le code, rien à corriger ?
 
Bon après-midi. Je n'arrive pas à saisir quand l'indicateur se casse. Il est là et tout va bien, mais ensuite il se casse. Je n'ai pas vu les courtiers faire des manipulations, car j'ai souvent la même chose avec les flèches, (mais je mets ça sur le compte du dessin des indices, et ici du RSI) Je vais mettre une chouette à surveiller avec des captures d'écran.
Dossiers :
GBPUSD.mM1.png  32 kb
Raison: