Fehler, Irrtümer, Fragen - Seite 31

 
Urain:
Es kann, aber manchmal funktioniert es, obwohl, wenn ich 3, der kurze Name zeigt 3 Werte und ich will nur eine der wichtigsten Puffer.

Dann vielleicht so:

#property indicator_buffers 3
#property indicator_plots   1
   SetIndexBuffer(0,LRma,INDICATOR_DATA);
   SetIndexBuffer(1,L,INDICATOR_CALCULATIONS);
   SetIndexBuffer(2,S,INDICATOR_CALCULATIONS);

In der Grafik wird nur ein Wert angezeigt.

 
DC2008:

Dann geht es vielleicht so:

Das Diagramm zeigt nur einen Wert an.

So stellt sich heraus, dass die Kurzbezeichnung des Indikators 3 Zahlen anzeigt, während der Puffer zum Zeichnen einer Zahl alles speichert, was Sie wissen müssen,

Das Problem ist, dass man in 4 nur den Wert der Maus auf der gewünschten Leiste abfragen kann und hier muss ich den gesamten Puffer herunterladen und irgendwo speichern

Diese Speicherung ist für den Bedarf des Indikators nicht erforderlich. Aber ich weiß nicht, wie ich den Wert der Welle erhalten kann.

 
DC2008:

Dann vielleicht so:

In der Grafik wird nur ein Wert angezeigt.

Auch glitchy ....
 
Interesting:

Es geht hier nicht um die Initialisierung. Es geht nicht einmal um die beiden Zeilen, die Mashek nennt.

Selbst wenn wir davon ausgehen, dass der SYMBOL-Parameter wirklich benötigt wird (was ich persönlich bezweifle), ist die Arbeit mit Puffern lahm, und ich spreche nicht einmal vom Taschenrechner-Block...

Ich sehe, dass der Indikator den Wert des linearen Regressionswinkels des falschen Instruments anzeigt, auf dem er läuft,

und die in der Eingabe vorgeschriebene, so dass Sie hoffentlich den Checker ausblenden.

Sagen Sie mir andererseits, was Sie an dem, was in der Kalkulation passiert, als inkongruent ansehen?

Ich behaupte nicht, dass es in Ordnung ist (wie gerade fünf zu lernen und natürlich gedünstet, wie viele).

Das erste, was mir in den Sinn kommt, ist, dass die Länge des Verlaufs bei verschiedenen Paaren unterschiedlich ist und es daher zu Störungen kommt,

Die Entwickler versicherten mir jedoch, dass das Terminal alle erforderlichen Daten selbständig laden wird.

 
Urain:

Das Problem ist, dass man in 4 nur den Wert der Wellenform auf dem erforderlichen Balken abfragen kann, während man hier den gesamten Puffer laden muss,

das Problem ist, dass in 4 können Sie einfach den Wert der Welle auf der benötigten Bar, aber hier müssen Sie den gesamten Puffer herunterladen und speichern Sie es irgendwo

Ich muss den gesamten Puffer laden, aber ich brauche ihn nicht für meine Indikatoren. Ich weiß nicht, wie ich sie auf andere Weise bekommen kann.

Ich kann sie richtig oder fast richtig machen. Für alle anderen Puffer können wir arbeiten (Serie wird nicht verwendet, was seltsam ist). Aber was in dem Rechner vor sich geht, ist eine große Frage...
 
Urain:

Ich sehe, dass der Indikator den Wert des linearen Regressionswinkels des falschen Instruments anzeigt, auf dem er läuft,

sondern die, die in der Intuition vorgeschrieben ist, so dass Sie hoffentlich den Checker ausblenden werden.

Sagen Sie mir doch bitte, was Sie an den Berechnungen absurd finden?

Ich behaupte nicht, dass es in Ordnung ist (wie gerade fünf zu lernen und natürlich gedünstet, wie viele).

Das erste, was mir in den Sinn kommt, ist, dass die Länge der Geschichte bei verschiedenen Paaren von verschiedenen und daher Pannen,

Mir wurde von den Entwicklern zugesichert, dass das Terminal alle erforderlichen Informationen selbständig lädt.


Was gibt es da zu streiten? Wir nehmen den Hut des Taschenrechners und sehen, was wir dort sehen, und das ist, was wir sehen:

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[])

Danach kommt die Kontrolle der Bars...

   int count=rates_total-prev_calculated;
   if(count==0)count=1;
Wenn Sie das Passwort nicht kennen, erhalten Sie eine Warnung. Sagen Sie mir, wo ist die Logik?
 

Ich habe die Berechnung folgendermaßen umgeschrieben:

  {
//---
   int count=rates_total-prev_calculated;
   if(count>_Bars())count=_Bars()-1;
   if(count==0)count=1;
   if(CopyBuffer(Lwma,0,0,count,L)!=-1)
     {
      if(CopyBuffer(Sma,0,0,count,S)!=-1)
        {
         for(int i=0;i<count;i++)
            LRma[i]=(L[i]-S[i])*6*iPoint*iiMA;
        }
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
int _Bars(){return(Bars(symbol,_Period));}
Die Fehlermeldungen sind verschwunden, aber es funktioniert immer noch nicht richtig.
 

Hier haben wir uns den Kopf über einen ähnlichen Truthahn zerbrochen. Sehen Sie, was dabei herauskam

 
Urain:

Ich habe die Berechnung folgendermaßen umgeschrieben:

Die Fehlereinträge sind verschwunden, aber es funktioniert immer noch nicht so, wie es sollte.

Der einzig richtige Weg 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 eine mechanische Bedienung vorgesehen ist) oder im Taschenrechner (wenn es notwendig ist, Informationen auf dem Diagramm des NON-CALCULATOR anzuzeigen) 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...

 
Urain:

Ich habe die Berechnung folgendermaßen umgeschrieben:

Die Fehlermeldungen sind verschwunden, aber es funktioniert immer noch nicht richtig.

Das ist wahrscheinlich besser:

#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);
   ArraySetAsSeries(L,true);
   ArraySetAsSeries(S,true);
   ArraySetAsSeries(LRma,true);
   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);
//---
   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;
   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);
  }
//+------------------------------------------------------------------+

Es scheint korrekt zu funktionieren.

Grund der Beschwerde: