Ich habe es mit OnTimer() implementiert und es kam nichts dabei heraus. Leider berechnet das onTimer()-Ereignis den Indikator nicht und die Verzögerung wird gespeichert, vielleicht eine laute Aussage und ich habe etwas falsch gemacht, bitte korrigieren. Danke!
Was Sie getan haben, ist keine Implementierung durch OnTimer(). Sie erhalten dort einfach Werte (die gesamte Geschichte, und zwar jede Sekunde, ohne Überprüfung). Wie auch immer, ich glaube nicht, dass Sie es selbst umsetzen können. Warten Sie auf die Antwort des Branchenautors:)
Alexey Kozitsyn: Was Sie getan haben, ist keine Implementierung durch OnTimer(). Sie erhalten dort nur Werte (die gesamte Geschichte und jede Sekunde, ohne jegliche Kontrolle). Im Allgemeinen ist es unwahrscheinlich, dass Sie es selbst umsetzen können. Warten Sie auf die Antwort des Autors der Branche:)
Ja, danke! Ich habe bereits mit dem Autor des Zweigs Kontakt aufgenommen, und er hat versprochen, mir zu helfen! Ich warte auf eine Antwort))
Ich habe es mit OnTimer() implementiert und es kam nichts dabei heraus. Leider berechnet das onTimer()-Ereignis den Indikator nicht und die Verzögerung wird gespeichert, vielleicht eine laute Aussage und ich habe etwas falsch gemacht, bitte korrigieren. Danke!
#property indicator_separate_window #property indicator_buffers1 #property indicator_plots1 //---- plot MA #property indicator_label1 "MA" #property indicator_type1 DRAW_LINE #property indicator_color1 clrRed #property indicator_style1 STYLE_SOLID #property indicator_width1 1 //--- input parameters bool AsSeries=true; int period=15; inputENUM_TIMEFRAMES TimeFrame=PERIOD_CURRENT;//Период графика ENUM_MA_METHOD smootMode=MODE_EMA; ENUM_APPLIED_PRICE price=PRICE_CLOSE; int shift=0; //--- indicator buffers double MABuffer[]; int ma_handle; int to_copy; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ intOnInit() { //--- indicator buffers mapping SetIndexBuffer(0,MABuffer,INDICATOR_DATA); Print("Параметр AsSeries = ",AsSeries); Print("Индикаторный буфер после SetIndexBuffer() является таймсерией = ", ArrayGetAsSeries(MABuffer)); //--- set short indicator name IndicatorSetString(INDICATOR_SHORTNAME,"MA("+period+")"+AsSeries); //--- set AsSeries (depends on input parameter) ArraySetAsSeries(MABuffer,AsSeries); Print("Индикаторный буфер после ArraySetAsSeries(MABuffer,true); является таймсерией = ", ArrayGetAsSeries(MABuffer)); //--- ma_handle=iMA(Symbol(),TimeFrame,period,shift,smootMode,price); EventSetTimer(1); return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ intOnCalculate(constint rates_total, constint prev_calculated, constdatetime &time[], constdouble &open[], constdouble &high[], constdouble &low[], constdouble &close[], constlong &tick_volume[], constlong &volume[], constint &spread[]) { //--- check if all data calculated if(BarsCalculated(ma_handle)<rates_total) return(0); //--- we can copy not all data //int to_copy; if(prev_calculated>rates_total || prev_calculated<=0) to_copy=rates_total; else { to_copy=rates_total-prev_calculated; //--- last value is always copied to_copy++; } //--- try to copy
//--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| Timer function | //+------------------------------------------------------------------+ voidOnTimer() { //--- CopyBuffer(ma_handle,0,0,to_copy,MABuffer); Print("Таймер"); } //+------------------------------------------------------------------+
Ich denke, was ich meine, ist, alles inOnCalculate zuOnTimer zuverschieben
Eine Lösung wurde hier vorgeschlagen, aber da ich ein unerfahrener Programmierer bin, ist dies für mich ziemlich schwierig zu implementieren, weshalb ich in diesem Thread um Hilfe gebeten habe
Guten Tag. Ich bin auf der Delta_RSI-Indikator, es hält Zeichnung (siehe Screenshot) histo in beide Richtungen zur gleichen Zeit (siehe Fehler). Außerdem ist es möglich, das Nullsignal bei Über-/Unterschreitung des Nullpunkts unterschiedlich einzufärben. Werden Sie in der Lage sein zu sehen (richtig)? Ich danke Ihnen.
Igor371: Nachmittags. Ich bin auf der Delta_RSI-Indikator, ich habe es ständig Zeichnung (siehe Screenshot) histo beide Wege zur gleichen Zeit (suchen Sie nach Fehler). Und es ist möglich, die Farbe des Nicht-Signals für über/unter Null zu färben. Werden Sie in der Lage sein zu sehen (richtig)? Ich danke Ihnen.
beschreiben Sie, was Sie tun, um es zu brechen ))))
beschreiben Sie, was Sie tun, um es zu brechen ))))
Diagramm, TF, Sequenz, etc.
Sie tun nicht wirklich etwas. Ich habe zum Beispiel große Zeiträume von 1000/250 auf M1. An einem bestimmten Punkt werden beide Seiten der Null gleichzeitig zu einem Geschäft. Ich weiß nicht genau, zu welchem Zeitpunkt, aber ich werde es mir genauer ansehen. Ich habe keine Probleme damit im Code, nichts zu beheben?
Guten Tag. Ich kann nicht erkennen, wann der Indikator bricht. Er steht da und alles ist in Ordnung, aber dann geht er kaputt. Ich habe nicht begegnet Makler, um alle Manipulationen zu tun, weil ich oft die gleiche Sache mit Pfeilen, (aber ich setze es auf Zeichnung Indizes, und hier RSI) Ich werde eine Eule zu setzen, um mit Screenshots aufpassen.
Ich habe es mit OnTimer() implementiert und es kam nichts dabei heraus. Leider berechnet das onTimer()-Ereignis den Indikator nicht und die Verzögerung wird gespeichert, vielleicht eine laute Aussage und ich habe etwas falsch gemacht, bitte korrigieren. Danke!
Was Sie getan haben, ist keine Implementierung durch OnTimer(). Sie erhalten dort nur Werte (die gesamte Geschichte und jede Sekunde, ohne jegliche Kontrolle). Im Allgemeinen ist es unwahrscheinlich, dass Sie es selbst umsetzen können. Warten Sie auf die Antwort des Autors der Branche:)
Ich habe es mit OnTimer() implementiert und es kam nichts dabei heraus. Leider berechnet das onTimer()-Ereignis den Indikator nicht und die Verzögerung wird gespeichert, vielleicht eine laute Aussage und ich habe etwas falsch gemacht, bitte korrigieren. Danke!
//| TestCopyBuffer3.mq5 |
//| Copyright 2009, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2009, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots 1
//---- plot MA
#property indicator_label1 "MA"
#property indicator_type1 DRAW_LINE
#property indicator_color1 clrRed
#property indicator_style1 STYLE_SOLID
#property indicator_width1 1
//--- input parameters
bool AsSeries=true;
int period=15;
input ENUM_TIMEFRAMES TimeFrame=PERIOD_CURRENT; //Период графика
ENUM_MA_METHOD smootMode=MODE_EMA;
ENUM_APPLIED_PRICE price=PRICE_CLOSE;
int shift=0;
//--- indicator buffers
double MABuffer[];
int ma_handle;
int to_copy;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- indicator buffers mapping
SetIndexBuffer(0,MABuffer,INDICATOR_DATA);
Print("Параметр AsSeries = ",AsSeries);
Print("Индикаторный буфер после SetIndexBuffer() является таймсерией = ",
ArrayGetAsSeries(MABuffer));
//--- set short indicator name
IndicatorSetString(INDICATOR_SHORTNAME,"MA("+period+")"+AsSeries);
//--- set AsSeries (depends on input parameter)
ArraySetAsSeries(MABuffer,AsSeries);
Print("Индикаторный буфер после ArraySetAsSeries(MABuffer,true); является таймсерией = ",
ArrayGetAsSeries(MABuffer));
//---
ma_handle=iMA(Symbol(),TimeFrame,period,shift,smootMode,price);
EventSetTimer(1);
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| 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[])
{
//--- check if all data calculated
if(BarsCalculated(ma_handle)<rates_total) return(0);
//--- we can copy not all data
//int to_copy;
if(prev_calculated>rates_total || prev_calculated<=0) to_copy=rates_total;
else
{
to_copy=rates_total-prev_calculated;
//--- last value is always copied
to_copy++;
}
//--- try to copy
//--- return value of prev_calculated for next call
return(rates_total);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Timer function |
//+------------------------------------------------------------------+
void OnTimer()
{
//---
CopyBuffer(ma_handle,0,0,to_copy,MABuffer);
Print("Таймер");
}
//+------------------------------------------------------------------+
Ich nehme an, das bedeutet, alles inOnCalculate nachOnTimer zuverschieben
Um sie umzuschreiben, müssen alle Indikatoren, die einbezogen werden sollen, auch unter mql5 sein
Nachmittags. Ich bin auf der Delta_RSI-Indikator, ich habe es ständig Zeichnung (siehe Screenshot) histo beide Wege zur gleichen Zeit (suchen Sie nach Fehler). Und es ist möglich, die Farbe des Nicht-Signals für über/unter Null zu färben. Werden Sie in der Lage sein zu sehen (richtig)? Ich danke Ihnen.
beschreiben Sie, was Sie tun, um es zu brechen ))))
Diagramm, TF, Sequenz, etc.
beschreiben Sie, was Sie tun, um es zu brechen ))))
Diagramm, TF, Sequenz, etc.