Fehler, Irrtümer, Fragen - Seite 32

 
Jetzt habe ich auch eine Störung ... Bis zur Neukompilierung werden die letzten Takte gerendert.
 
Interesting:

Die einzig richtige Vorgehensweise ist sehr einfach.

Sie schreiben einen 100%ig funktionierenden Indikator, und zwar klassisch ohne den Parameter "Symbol", d.h. er wird mit dem aktuellen Symbol und der Periode berechnet.

Danach wird ein solcher BASIC-Rechner im Expert Advisor (wenn mechanische Arbeit vorgesehen ist) oder im Taschenrechner (wenn Sie Informationen auf dem Diagramm eines NICHT RECHNENDEN INSTRUMENTS anzeigen möchten) aufgerufen.

PS

Andernfalls, wenn der Taschenrechner oder eine separate Funktion eine zusätzliche Berechnung durchführen und die Ergebnisse mit den aktuellen Diagrammdaten verknüpfen muss...

Ein Vorschlag, den man in Betracht ziehen sollte,

Aber natürlich ist es vom Standpunkt der allgemeinen Logik aus gesehen so, als würde man sich mit der rechten Hand am linken Ohr kratzen (aber nicht für Sie, sondern für die Entwickler),

Warum muss ich die Daten eines nicht einheimischen Instruments aufrufen?

Wenn Sie benutzerdefinierte Indikatoren erstellen und diese über ein erforderliches Symbol aufrufen müssen, ist die Schlussfolgerung im Allgemeinen, dass ich es kaufen werde.

Aber auch hier rufe ich einen fertigen Indikator für EUR mit Daten über JPY (zum Beispiel, es gibt nicht genug Geschichte für den Yen)

Wenn ich nach demselben Indikator suche und er keine Daten für diese Länge enthält, was sagt er mir dann?

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

Hier ist eine praktikable Lösung:

#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);
  }
//+------------------------------------------------------------------+
 

Ich kann noch ein weiteres Kopfweh hinzufügen. Wenn sich der Indikator in einem Diagramm befindet, aber in einem anderen, müssen Sie berücksichtigen, dass die Anzahl der Balken unterschiedlich sein kann:

  1. Dass die Anzahl der Balken unterschiedlich sein kann. Ich denke, wurde bereits berücksichtigt.
  2. Berücksichtigen Sie, dass es Lücken in der Historie für das Instrument geben kann, und 25 Balken in der Historie für ein Instrument kann es Montag sein, und für ein anderes - Freitag...
  3. auch wenn Sie die ersten beiden Probleme gelöst haben, gibt es immer noch eine zeitliche Synchronisation, bei einem Instrument hat ein neuer Takt bereits begonnen, bei einem anderen noch nicht ...
  4. der Indikator funktioniert nur mit dem Eintreffen eines neuen Ticks, d.h. wenn er auf dem Chart mit wenige Ticks hängen bleibt, ist der 0-Bar eines anderen Charts problematisch...
  5. Wenn Sie aufhören, die 0-Balken zu zählen, sondern nur die abgeschlossenen, gibt es noch ein paar weitere Fallstricke...
Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
  • www.mql5.com
Доступ к таймсериям и индикаторам / Bars - Документация по MQL5
 
Prival:

Ich kann noch ein weiteres Kopfweh hinzufügen. Wenn der Indikator in einem Diagramm angezeigt wird, aber in einem anderen, müssen Sie dies berücksichtigen:

  1. Dass die Anzahl der Balken unterschiedlich sein kann. Ich denke, wir haben dies bereits berücksichtigt.
  2. Berücksichtigen Sie, dass es Lücken in der Historie für das Instrument geben kann, und 25 Balken in der Historie für ein Instrument kann es Montag sein, und für ein anderes - Freitag...
  3. auch wenn Sie die ersten beiden Probleme gelöst haben, gibt es immer noch eine zeitliche Synchronisation, bei einem Instrument hat ein neuer Takt bereits begonnen, bei einem anderen noch nicht ...
  4. der Indikator funktioniert nur mit dem Eintreffen eines neuen Ticks, d.h. wenn er in einem Chart mit wenigen Ticks hängt, wird er für den 0-Bar eines anderen Charts problematisch...
  5. Wenn Sie aufhören, 0 Takte zu zählen, sondern nur die abgeschlossenen, gibt es noch ein paar weitere Fallstricke...

Danke für die freundlichen Worte :o)
 

Fehler. Beschreibung. ATS immer im Markt (Rollover um doppeltes Los 0,2).

Testmodus alle Zecken. Alles ist normal.

Testmodus, durch Öffnen der Preise. das gleiche Stück.

Aus irgendeinem Grund teilt es sich in 2 Gewerke auf. Vielleicht ist es nur die Art der Darstellung, aber es ist nicht richtig.

 
Alexandr2385:

Hallo, ich habe ein ernstes Problem mit dem MT5-Terminal. Wenn ich das Terminal starte, bewegt sich nur die Preislinie (Bid), während die Candlesticks (Balken) nicht gezeichnet/verändert werden. Der Preis bewegt sich also, ohne dass sich das Diagramm ändert. Ich habe eine Frage: Wie kann dieses Problem gelöst werden? In MT4 funktioniert tatsächlich alles einwandfrei! Ich habe versucht, das Terminal neu zu installieren, aber es hat nicht geholfen! Ich hatte ein solches Problem mit mehreren Maklern... Können Sie mir sagen, was ich in dieser Situation tun soll?
Kann jemand von den Entwicklern diese Frage beantworten? Oder sollte ich diese Frage in einem anderen Thread stellen?
Dateien:
1.png  31 kb
 
Alexandr2385:
Kann jemand von den Entwicklern diese Frage beantworten? Oder sollte ich diese Frage in einem anderen Thread stellen?
+1 Ich habe das Gleiche gesehen, aber es scheint jetzt richtig zu funktionieren, sie müssen es behoben haben
 
SHOOTER777:

+1 Ich habe das Gleiche gesehen, aber es scheint jetzt richtig zu funktionieren, sie müssen es behoben haben

Ja, seltsamerweise, aber jetzt ist es einfach weg, ich weiß nicht, für wie lange...

 
Prival:

Ich kann noch ein weiteres Kopfweh hinzufügen. Wenn der Indikator in einem Diagramm angezeigt wird, aber in einem anderen, müssen Sie dies berücksichtigen:

  1. Dass die Anzahl der Balken unterschiedlich sein kann. Ich denke, wir haben dies bereits berücksichtigt.
  2. Berücksichtigen Sie, dass es Lücken in der Historie für das Instrument geben kann, und 25 Balken in der Historie für ein Instrument kann es Montag sein, und für ein anderes - Freitag...
  3. auch wenn Sie die ersten beiden Probleme gelöst haben, gibt es immer noch eine zeitliche Synchronisation, bei einem Instrument hat ein neuer Takt bereits begonnen, bei einem anderen noch nicht ...
  4. der Indikator funktioniert nur mit dem Eintreffen eines neuen Ticks, d.h. wenn er in einem Chart mit wenigen Ticks hängt, wird er für den 0-Bar eines anderen Charts problematisch...
  5. Wenn Sie aufhören, 0 Takte zu zählen, zum Teufel damit, nur die abgeschlossenen, dann gibt es noch ein paar weitere Fallstricke...

Ich stimme zu, was die Löcher und die Probleme mit der Geschichte angeht.

Bei normalem Betrieb und Zeitsynchronisation sollten die neuen Takte (logischerweise) zur gleichen Zeit beginnen...

Grund der Beschwerde: