Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 865

 
evillive:

Sie sind nicht verwirrt, wenn Sie das Feld verlassen?

Genau hier:

Auch "will nicht alles zeigen", nicht nur niedrig[1].

1
 
mario065:
Vorschläge, wie man das Problem beheben kann?
Erklären Sie in menschlicher Sprache, was Sie von diesem Skript erwarten?
 
evillive:
Erklären Sie in menschlicher Sprache, was Sie von diesem Skript erwarten?

Suchen Sie den niedrigsten/höchsten Wert des Volumenindikators vom Tagesbeginn bis heute.

Wenn es einen neuen Höchst-/Tiefstwert gibt, wird der letzte Wert gespeichert.

 

evolutiv,

Vielen Dank für Ihre Aufmerksamkeit :)

 
mario065:

Suchen Sie den niedrigsten/höchsten Wert des Volumenindikators vom Tagesbeginn bis heute.

Wenn es einen neuen Höchst-/Tiefstwert gibt, wird der letzte Wert gespeichert.

Dies ist wahrscheinlich das Beste:

//+------------------------------------------------------------------+
#property copyright ""
#property link      ""
int high,low;
datetime timeh,timel;
//+------------------------------------------------------------------+
int init(){  
  return(0);
 }
int deinit(){
  Comment("");
  return(0);
 }  
//-------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnStart(){
    double   spred = MarketInfo(Symbol(),MODE_SPREAD);
    int      limit,Open_bar_per,Close_bar_per,av_vol;
    datetime Time_period,Close_per;
//+------------------------------------------------------------------+
       Time_period   = iTime(Symbol(),PERIOD_D1,0);
       Open_bar_per  = iBarShift(Symbol(),0,Time_period,false);
       Close_per     = iTime(Symbol(),0,0);
       Close_bar_per = iBarShift(Symbol(),0,Close_per,false);
       limit         = Open_bar_per - Close_bar_per;

int hivol_s=iHighest(NULL,0,MODE_VOLUME,limit,1);
int lovol_s=iLowest(NULL,0,MODE_VOLUME,limit,1);
high=iVolume(NULL,0,hivol_s);
low=iVolume(NULL,0,lovol_s);
timeh=iTime(NULL,0,hivol_s);
timel=iTime(NULL,0,lovol_s);
       av_vol = NormalizeDouble(high/3,0);
//+------------------------------------------------------------------+
     Print("\nВреме на брокера: ",TimeToStr(TimeCurrent(),TIME_SECONDS),", Локално време: "+TimeToStr(TimeLocal(),TIME_SECONDS),
             "\nТекущ спред: ",DoubleToStr(spred/10,1),
             "\n High_per  :  ",high,
             "\n Low_per   :  ",low,   
             "\n time_high :  ",TimeToStr(timeh,TIME_SECONDS),
             "\n time_low  :  ",TimeToStr(timel,TIME_SECONDS),
             "\n Close_per :  ",TimeToStr(Close_per,TIME_SECONDS),
             "\n Open_per  :  ",TimeToStr(Time_period,TIME_SECONDS), 
             "\n av_vol    :  ",av_vol
             ); 
  }

Mein Kommentar zeigt nichts an, er wird gut gedruckt...

 
void CalculateSimpleMA(int rates_total,int prev_calculated,const double &price[])
  {
   int i,limit;
//--- first calculation or number of bars was changed
   if(prev_calculated==0)
   
     {
      limit=InpMAPeriod;
      //--- calculate first visible value
      double firstValue=0;
      for(i=0; i<limit; i++)
         firstValue+=price[i];
      firstValue/=InpMAPeriod;
      ExtLineBuffer[limit-1]=firstValue;
      ExtLineBufferFid[1]=(firstValue*InpMAPeriod-price[i-InpMAPeriod])/i-1; Добрый человек предоставил вот такую реализацию(sma99[i]=(sma100[i]*100-d[i-100])/99;), но что то не выходит!

Ich grüße Sie und entschuldige mich für die Wiederholung, aber die Frage ist interessant).

WIE zu berechnen ist:

Mit einer gleitenden Periode (z.B. 16) berechnen Sie eine Periode von 15, ausgehend von einer Periode von 16.

 
evillive:

Das ist wahrscheinlich das Beste:

Mein Kommentar zeigt nichts an, der Ausdruck ist normal...

Hallo evllive,

Das ist möglich, aber das brauche ich nicht, ich brauche ein Array.

Sie können den Kommentar nicht sehen, weil Sie voidOnStart verwenden und ich intstart.

Hier ist, was ich neulich in der Kommentardatei geschrieben habe, auf Bulgarisch.

Ich werde mich heute damit befassen und sehen, was wir besprochen haben.

Vielen Dank für Ihr Feedback.

PS: Ich habe eine weitere Datei hinzugefügt.

Datei H_L- erster Indikator, Datei_6 im Body-Explorer aber nur gezeichnet.

 
evillive:

Das ist wahrscheinlich besser so:

Kommentar habe ich etwas nicht angezeigt, Druckausgaben normal...

Gesagt, getan. Ich habe es noch nicht in Arrays eingefügt, aber ich werde es tun, sobald ich es in eine externe Funktion umgewandelt habe.

Die Linien werden auf dem ersten Fenster der Indikator-Daten gezeichnet, wenn es sich um volumetrische Daten handelt, braucht es einen Daten-Bruder für volumetrische Daten.

Auf diese Weise formalisiere ich den Bereich des Volumet in Teile niedrig, mittel, hoch.

 

Guten Abend!

Können Sie mir sagen, was an meinem ersten EA falsch ist? Die Meldungen wurden zum Zeitpunkt des Bruchs nicht angezeigt:

//--------------------------------------------------------------------

extern Period_MA=8; // Periode des berechneten MA

//--------------------------------------------------------------------

int start() // Sonderfunktion start

{

double MA_f, // MA-Wert bei 0 bar

MA_s, // MA-Wert bei 1 Takt

MA_t, // MA-Wert bei 2 Balken

//--------------------------------------------------------------------

// Zugriff auf die Funktion tech.ind.

MA_f =iMA(NULL,0,Period_MA,0,MODE_SMA,PRICE_CLOSE,0);

MA_s =iMA(NULL,0,Period_MA,0,MODE_SMA,PRICE_CLOSE,1);

MA_t =iMA(NULL,0,Period_MA,0,MODE_SMA,PRICE_CLOSE,2);

//--------------------------------------------------------------------

if (MA_t>MA_s<MA_f)

Alert("Durchschnittliche Fraktur von unten");// Meldung

if (MA_t<MA_s>MA_f)

Alert("Bruch in der Mitte von oben");// Meldung

//--------------------------------------------------------------------

return; //Beenden von start()

}

//--------------------------------------------------------------------

Ich danke Ihnen!

 
Top2n:

Ich grüße Sie und entschuldige mich für die Wiederholung, aber die Frage ist interessant).

WIE zu berechnen ist:

Mit einer gleitenden Periode (z.B. 16) berechnen Sie die Periode 15, beginnend mit der Periode 16.

Y(n+1)=(Y(n)*n+x[n+1])/(n+1), wobei Y(i) der gleitende Durchschnitt von i Werten und x[i] der Wert Nummer i ist. Nummerierung der Werte wie bei Zeitreihen.

Ich wäre Ihnen sehr dankbar, wenn Sie mir einmal sagen würden, wozu Sie das alles brauchen.