Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1897

 
EVGENII SHELIPOV #:

Guten Tag.

Ich zeige den Wert des täglichen Fraktals in Form seines Wertes oder einer vertikalen Linie an. Die Zeile wird nicht angezeigt und der Wert ist 0.

Hier ist ein Stück Code


Bitte sagen Sie mir, was los ist.

Da der Wert 0 ist, wird das Fraktal nach n Kerzenständern gebildet.

 
Vitaly Muzichenko #:

Array für die gesamte verfügbare Geschichte, das brauche ich nicht.

Ich brauche buchstäblich 50-100 Barren.

Zum Beispiel so.


Was ist der Sinn des Indikators? Wenn es nicht gerade ein Geheimnis ist) Das Problem liegt in der Zeitanzeige. Das heißt, es ist nicht die Zeit der echten Ticks, sondern die Zeit der Zahlen. Jede Nummer auf einer eigenen Leiste der TF.

 
Valeriy Yastremskiy #:

Was ist der Sinn des Indikators? Das Problem dabei ist natürlich die Zeitanzeige. Das heißt, es ist nicht die wirklich tickende Zeit, sondern die nummerierte Zeit. Jede Nummer auf einer eigenen Tafel von TF.

Der Punkt, um die letzten Ticks auf dem offenen Chart zu sehen :)

P.S. * Änderung von Ask und Bid

Wie bei Market Watch


 
Tretyakov Rostyslav #:

Da der Wert 0 ist, wird nach n Kerzen ein Fraktal gebildet.

Ein Fraktal entsteht, wenn es kein neues Extremum gibt und nach drei Balken die Werte 0, 1, 2 stehen.

double FractalDayUpper = iFractals(Symbol(), PERIOD_D1, MODE_UPPER, 2);
   ObjectCreate("signal00",OBJ_LABEL,0,0,0,0,0);
   ObjectSet("signal00",OBJPROP_XDISTANCE,600);
   ObjectSet("signal00",OBJPROP_YDISTANCE,100);

Es hat sich nichts geändert.

Oder es ist wieder etwas falsch.

 
Vitaly Muzichenko #:

Ich habe es getan, es funktioniert.

---

Irgendetwas sagt mir, dass Sie auf den Zyklus verzichten können.

Ist das wahr?

Soweit ich weiß, scheint es in MQL keine Verschiebefunktion zu geben. Die Verschiebung kann also nur mit Hilfe einer Schleife vorgenommen werden. Warum passt das nicht zu Ihnen?

P.S. Was das zusätzliche Feld betrifft, so war es nicht notwendig. Sie haben die Verschiebung korrekt vorgenommen und schreiben den Gebotswert direkt in den Puffer!

 
EVGENII SHELIPOV #:

Guten Tag.

Ich zeige den Wert des täglichen Fraktals in Form seines Wertes oder einer vertikalen Linie an. Die Zeile wird nicht angezeigt und der Wert ist 0.

Hier ist ein Stück Code


Bitte sagen Sie mir, was los ist.

Warum sind Sie sicher, dass das Fraktal auf dem Null-Balken nicht Null sein muss? Wenn, dann nicht 0, sondern nur, wenn es da ist!


Tretjakow Rostyslaw #:

Weil der Wert 0 ist, wird das Fraktal nach n Kerzen gebildet.

Und auch das geschieht längstnicht immer. Nur für den Fall, dass der n-te Balken ein Fraktal ist!

 
Vitaly Muzichenko #:

Das heißt, um die letzten Ticks in einem offenen Diagramm zu sehen :)

P.S. * Änderung von Ask und Bid

Wie bei Market Watch


Ich dachte an Geschwindigkeitsmessungen)))

 
Vitaly Muzichenko #:

Das heißt, um die letzten Ticks in einem offenen Diagramm zu sehen :)

P.S. * Änderung von Ask und Bid

Wie bei Market Watch


Was ist falsch mitArrayCopy()?
Документация по MQL5: Операции с массивами / ArrayCopy
Документация по MQL5: Операции с массивами / ArrayCopy
  • www.mql5.com
ArrayCopy - Операции с массивами - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Artyom Trishkin #:
ArrayCopy() ist keine gute Lösung?

ArrayCopy, dies ist für das Kopieren von einem Array in ein anderes. Und hier müssen Sie die Werte verschieben, bevor Sie jedes Häkchen hinzufügen. Daher kann sie nur mit Hilfe einer Schleife gelöst werden.

 
Artyom Trishkin #:
ArrayCopy() ist für Sie nicht geeignet?

Können Sie mir zeigen, wie man das benutzt?

Hier ist die Aufgabe.

Forum für Handel, automatisierte Handelssysteme und Strategietests

Alle Fragen von Neulingen zu MQL4 und MQL5, Hilfe und Diskussion von Algorithmen und Codes

Vitaly Muzichenko, 2022.02.13 15:42

Ich benötige kein Array für die gesamte verfügbare Historie.

Ich brauche buchstäblich 50-100 Barren

Wie diese


Hier ist der fertige Code, aber die Schleife ist ein bisschen unheimlich

#property indicator_separate_window
#property indicator_buffers 2
#property indicator_plots   2
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrDodgerBlue
#property indicator_label1  "Bid"
#property indicator_type2   DRAW_LINE
#property indicator_color2  clrRed
#property indicator_label2  "Ask"

double Buffer1[];
double Buffer2[];
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnInit()
{
  SetIndexBuffer(0,Buffer1);
  ArraySetAsSeries(Buffer1,true);
  SetIndexBuffer(1,Buffer2);
  ArraySetAsSeries(Buffer2,true);
  ArrayInitialize(Buffer1,EMPTY_VALUE);
  ArrayInitialize(Buffer2,EMPTY_VALUE);
  IndicatorSetInteger(INDICATOR_DIGITS,Digits());
  IndicatorSetString(INDICATOR_SHORTNAME,"Tick:");
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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 H=100;
  if(prev_calculated==0) {
    ArrayInitialize(Buffer1,EMPTY_VALUE);
    ArrayInitialize(Buffer2,EMPTY_VALUE);
  }
  if(rates_total-prev_calculated==1) {
    Buffer1[H+1]=EMPTY_VALUE;
    Buffer2[H+1]=EMPTY_VALUE;
  }
  double b=SymbolInfoDouble(Symbol(),SYMBOL_BID);
  double a=SymbolInfoDouble(Symbol(),SYMBOL_ASK);
  Buffer1[0]=b;
  Buffer2[0]=a;
  for(int j=H; j>0; j--) {
    Buffer1[j]=Buffer1[j-1];
    Buffer2[j]=Buffer2[j-1];
  }
  return(rates_total);
}
//+------------------------------------------------------------------+

---

Auch hier gibt es eine Schleife innerhalb von ArrayCopy() und wahrscheinlich mehr als eine. Der Code wird also durch diese Ersetzung kaum leichter und schneller werden

Grund der Beschwerde: