Erreurs, bugs, questions - page 32

 
Maintenant, j'ai aussi un problème... Jusqu'à ce que vous recompiliez, les dernières mesures sont rendues.
 
Interesting:

La seule façon correcte de le faire est très simple.

Vous écrivez un indicateur qui fonctionne à 100%, et il est fait classiquement sans le paramètre "Symbole", c'est-à-dire qu'il est calculé en utilisant le symbole et la période actuels.

Ensuite, cette calculatrice BASIC est appelée dans Expert Advisor (si un travail mécanique est fourni) ou dans la calculatrice (si vous avez besoin d'afficher des informations sur le graphique d'un INSTRUMENT NON CALCULANT).

PS

Sinon, si la calculatrice ou une fonction distincte doit effectuer un calcul supplémentaire, puis relier les résultats aux données du graphique en cours...

Suggestion qui mérite d'être prise en considération,

Mais bien sûr, du point de vue de la logique commune, c'est comme se gratter l'oreille gauche avec la main droite (mais ce n'est pas pour vous, c'est pour les développeurs),

Pourquoi dois-je appeler les données d'un instrument non natif ?

Si vous devez de toute façon créer des indicateurs personnalisés et les appeler à partir d'un symbole obligatoire, en général, la conclusion est que je vais l'acheter.

Mais encore une fois, j'appelle un indicateur prêt pour l'EUR avec des données sur le JPY (par exemple, il n'y a pas assez d'historique pour le Yen)

Si je recherche le même indicateur et qu'il ne contient pas de données pour cette longueur, que me dira-t-il ?

Переход на новые рельсы: пользовательские индикаторы в MQL5
Переход на новые рельсы: пользовательские индикаторы в MQL5
  • 2009.11.23
  • Андрей
  • www.mql5.com
Я не буду перечислять все новые возможности и особенности нового терминала и языка. Их действительно много, и некоторые новинки вполне достойны освещения в отдельной статье. Вы не увидите здесь кода, написанного по принципам объектно-ориентированного программирования — это слишком серьезная тема для того, чтобы просто быть упомянутой в контексте как дополнительная вкусность для кодописателей. В этой статье остановимся подробней на индикаторах, их строении, отображении, видах, а также особенностях их написания по сравнению с MQL4.
 

Voici une option réalisable :

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
//--- plot LRma
#property indicator_label1  "LRma"
#property indicator_type1   DRAW_LINE
#property indicator_color1  Red
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
input string             symbol      ="EURJPY";
input int                MA_Period   =25;          // период MA
input int                MA_shift    =0;           // сдвиг индикатора
input ENUM_APPLIED_PRICE price       =PRICE_OPEN;  // тип цены 
//--- indicator buffers
double  LRma[],L[],S[],iPoint,iiMA;

int Lwma,Sma;// Хендлы машек
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,LRma,INDICATOR_DATA);
   Lwma=iMA(symbol,0,MA_Period+1,MA_shift,MODE_LWMA,price);
   Sma=iMA(symbol,0,MA_Period+1,MA_shift,MODE_SMA,price);
   iPoint=1.0/SymbolInfoDouble(symbol,SYMBOL_POINT);
   iiMA=1.0/MA_Period;
   IndicatorSetString(INDICATOR_SHORTNAME,"LRma_symbol_"+symbol);
//---
   int count=(int)SeriesInfoInteger(symbol,0,SERIES_BARS_COUNT);
   while(BarsCalculated(Lwma)<count){}
   while(BarsCalculated(Sma)<count){}
   ArraySetAsSeries(L,true);
   ArraySetAsSeries(S,true);
   ArraySetAsSeries(LRma,true);
   return(0);
  }
//+------------------------------------------------------------------+
//| 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[])
  {
//---
   int count=rates_total-prev_calculated;
   if(count>1)count=(int)SeriesInfoInteger(symbol,0,SERIES_BARS_COUNT);
   if(count==0)count=1;
   while(BarsCalculated(Lwma)<count){}
   while(BarsCalculated(Sma)<count){}
   if(CopyBuffer(Lwma,0,0,count,L)!=-1)
     {
      if(CopyBuffer(Sma,0,0,count,S)!=-1)
        {
         for(int i=0;i<MathMin(ArraySize(LRma),ArraySize(L));i++)
            LRma[i]=(L[i]-S[i])*6*iPoint*iiMA;
        }
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
 

Je peux ajouter un autre mal de tête. Si l'indicateur se trouve sur un graphique, mais que provient d'un autre, vous devez tenir compte du fait que le nombre de barres peut être différent :

  1. Que le nombre de barres peut être différent. Je pense que a déjà été pris en compte.
  2. Tenez compte du fait qu'il peut y avoir des trous dans l'historique de l'instrument, et 25 barres dans l'historique pour un instrument, il peut s'agir du lundi, et pour un autre - du vendredi...
  3. même si vous avez résolu les deux premiers problèmes, il reste la synchronisation par le temps, pour un instrument une nouvelle mesure a déjà commencé, pour un autre elle n'a pas encore commencé....
  4. l'indicateur ne fonctionne qu'avec l'arrivée d'un nouveau tick, c'est-à-dire que s'il s'accroche au graphique avec peu de ticks, la barre 0 d'un autre graphique est problématique...
  5. si vous arrêtez de compter les barres 0, seulement les barres complétées, alors il y aura quelques autres pièges...
Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
  • www.mql5.com
Доступ к таймсериям и индикаторам / Bars - Документация по MQL5
 
Prival:

Je peux ajouter un autre mal de tête. Si l'indicateur se trouve sur un graphique, mais apparaît sur un autre, vous devez en tenir compte :

  1. Que le nombre de barres peut être différent. Je pense que nous avons déjà pris en compte cet aspect.
  2. Tenez compte du fait qu'il peut y avoir des trous dans l'historique de l'instrument, et 25 barres dans l'historique pour un instrument, il peut s'agir du lundi, et pour un autre - du vendredi...
  3. même si vous avez résolu les deux premiers problèmes, il reste la synchronisation par le temps, pour un instrument une nouvelle mesure a déjà commencé, pour un autre n'a pas encore commencé ....
  4. l'indicateur ne fonctionne qu'avec l'arrivée d'un nouveau tick, c'est-à-dire que s'il se bloque sur un graphique avec peu de ticks, il sera problématique pour la barre 0 de l'autre graphique...
  5. Si vous arrêtez de compter les barres 0, seulement les barres complétées, alors il y aura quelques autres pièges...

Merci pour ces mots gentils :o)
 

Bug. Description. ATS toujours sur le marché (rollover par double lot 0.2).

Mode test tous les tics. Tout est normal.

Mode test, en ouvrant les prix. la même pièce.

Pour une raison quelconque, il se divise en deux transactions. Peut-être que c'est juste la façon dont il est affiché, mais ce n'est pas bien. Il ne devrait pas être de cette façon.

 
Alexandr2385:

Bonjour, j'ai un sérieux problème avec le terminal MT5. Lorsque je démarre le terminal, seule la ligne de prix (bid) bouge, tandis que les chandeliers (barres) ne se dessinent pas/ne changent pas. Par conséquent, le prix se déplace sans changer le graphique. J'ai une question : comment peut-on résoudre ce problème ? En fait, tout fonctionne bien dans MT4 ! J'ai essayé de réinstaller le terminal, mais cela n'a pas aidé ! J'ai eu un tel problème avec plusieurs courtiers... Pouvez-vous me dire ce qu'il faut faire dans cette situation ?
Quelqu'un des développeurs peut-il répondre à cette question ? Ou dois-je le demander dans un autre fil ?
Dossiers :
1.png  31 kb
 
Alexandr2385:
L'un des développeurs peut-il répondre à cette question ? Ou dois-je le demander dans un autre fil ?
+1 J'ai vu la même chose, mais ça semble fonctionner correctement maintenant, ils ont dû le corriger.
 
SHOOTER777:

+1 J'ai vu la même chose, mais ça semble fonctionner correctement maintenant, ils ont dû le corriger.

Oui, bizarrement, mais c'est parti maintenant, je ne sais pas pour combien de temps...

 
Prival:

Je peux ajouter un autre mal de tête. Si l'indicateur se trouve sur un graphique, mais apparaît sur un autre, vous devez en tenir compte :

  1. Que le nombre de barres peut être différent. Je pense que nous avons déjà pris en compte cet aspect.
  2. Tenez compte du fait qu'il peut y avoir des trous dans l'historique de l'instrument, et 25 barres dans l'historique pour un instrument, il peut s'agir du lundi, et pour un autre - du vendredi...
  3. même si vous avez résolu les deux premiers problèmes, il reste la synchronisation par le temps, pour un instrument une nouvelle mesure a déjà commencé, pour un autre n'a pas encore commencé ....
  4. l'indicateur ne fonctionne qu'avec l'arrivée d'un nouveau tick, c'est-à-dire que s'il se bloque sur un graphique avec peu de ticks, il sera problématique pour la barre 0 de l'autre graphique...
  5. Si vous arrêtez de compter les barres 0, au diable, seulement les barres complétées, alors il y aura quelques pièges de plus...

Je suis d'accord sur les problèmes de trous et d'histoire.

Avec un fonctionnement normal et une synchronisation des périodes, les nouvelles barres devraient (logiquement) commencer en même temps...

Raison: