Um die Funktionen zur Ermittlung beliebiger Fraktale vollständig vom Indikator zu trennen, sollten wir die Arrays high[] und low[] und den Grenzwert nicht per Referenz übergeben.
Da unser Code sehr nah an MQL5 ist, müssen wir die Funktionen High[], Low[], iHigh() und iLow() ablehnen. So wird es in diesem Indikator aussehen:
Allerdings sollten Sie auch für -1 von den Funktionen GetPriceHigh() und GetPriceLow() prüfen
strongflex: RSI sollte 15 Minuten betragen. Wir brauchen die EA, um es zu überprüfen alle 20 Minuten von der Markteröffnung (9-00, 9-20, 9-40 usw.) Nehmen wir an, bei 10-20 gab es eine Kreuzung unter der 70-Ebene es merkt sich den Preis und bei 10-40 prüft, ob der Preis niedriger ist als bei 10-20 es öffnet ein kurzes.
Nun, zuerst müssen Sie die Zeit eine bestimmte Anzahl von Minuten zurückbekommen. Hier ist ein Testskript:
//+------------------------------------------------------------------+ //| sTestValueRSI.mq4 | //| Copyright 2016, Artem A. Trishkin, Skype artmedia70 | //| https://login.mql5.com/ru/users/artmedia70 | //+------------------------------------------------------------------+ #property copyright"Copyright 2016, Artem A. Trishkin, Skype artmedia70" #property link"https://login.mql5.com/ru/users/artmedia70" #property version"1.00" #property strict #property script_show_inputs //--- input parameters inputENUM_TIMEFRAMES TimeframeRSI = PERIOD_M15; // Таймфрейм RSI inputint MinutesBefore =20; // Количество минут назад int minutesBefore=(MinutesBefore<1?1:MinutesBefore); // Количество минут назад
//+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ voidOnStart() { //--- datetime time_before=TimeCurrent()-minutesBefore*PeriodSeconds(PERIOD_M1); int shift=Bars(Symbol(),TimeframeRSI,TimeCurrent(),time_before); double value=iRSI(Symbol(),TimeframeRSI,14,PRICE_CLOSE,shift); Comment("\nCurrent time: ",TimeToString(TimeCurrent()), "\nВремя ",minutesBefore," минут назад: ",TimeToString(time_before), "\nБар времени ",TimeToString(time_before)," = ",shift," на таймфрейме ",EnumToString(TimeframeRSI), "\nЗначение RSI на баре ",shift," периода ",EnumToString(TimeframeRSI),": ",DoubleToString(value,Digits())); } //+------------------------------------------------------------------+
Dieses Skript zählt von der aktuellen Serverzeit abwärts - testen Sie einfach, ob Sie RSI-Daten von vor einer bestimmten Anzahl von Minuten erhalten.
Als Nächstes müssen wir die aktuelle Uhrzeit wissen und ob ihr Wert ein Vielfaches der Minuten des Prüfintervalls ist. Ich habe es zu einem Test-EA gemacht:
//+------------------------------------------------------------------+ //| exTestValueRSI.mq4 | //| Copyright 2016, Artem A. Trishkin, Skype artmedia70 | //| https://login.mql5.com/ru/users/artmedia70 | //+------------------------------------------------------------------+ #property copyright"Copyright 2016, Artem A. Trishkin, Skype artmedia70" #property link"https://login.mql5.com/ru/users/artmedia70" #property version"1.00" #property strict //--- input parameters inputENUM_TIMEFRAMES TimeframeRSI = PERIOD_M15; // Таймфрейм RSI inputint PeriodRSI = 14; // Период расчёта RSI inputENUM_APPLIED_PRICE PriceRSI = PRICE_CLOSE; // Цена расчёта RSI inputint MinutesBefore =20; // Количество минут назад //--- global variables int minutesBefore; // Количество минут назад int periodRSI; // Период расчёта RSI double prevRSIValue; // Значение RSI xxx минут назад //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ intOnInit() { //--- minutesBefore=(MinutesBefore<1?1:MinutesBefore); // Количество минут назад periodRSI=(PeriodRSI<1?1:PeriodRSI); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ voidOnDeinit(constint reason) { //---
Guten Tag. Ich bin neu im Trading, daher habe ich eine Menge Fragen, auch zur Software, in meinem Fall ist es MT4. Ist es möglich, den Spread eines Währungspaares z.B. in einem Chart-Fenster in Form von Zahlen darzustellen und auf die gleiche Weise einen Indikator für ATR? Ich halte diese Art der Darstellung von Informationen über die Marktlage für sinnvoll, denn sie ist bequemer und schneller zu berechnen und auf der Grundlage von Durchschnittswerten zu bewerten. Der zweite Punkt ist ein gleitender Stopp auf Basis der ATR. Ist es möglich, dies automatisch zu machen? Wenn Sie in einer Pose sitzen, können Sie dank des Taschenrechners und guter Sehkraft problemlos manuell einen Anschlag berechnen und einstellen. Ein automatischer Stopp ist eine gute Idee für einen Händler, auch wenn er seine Nachteile hat, aber in einem guten Trend wird ein Trailing-Stop das Risiko eines falschen Stopps durch einen Anfänger verringern. Vielen Dank im Voraus.
Als Nächstes müssen wir die aktuelle Uhrzeit wissen und ob ihr Wert ein Vielfaches der Minuten des Prüfintervalls ist. Ich habe es zu einem Test-EA gemacht:
//+------------------------------------------------------------------+ //| exTestValueRSI.mq4 | //| Copyright 2016, Artem A. Trishkin, Skype artmedia70 | //| https://login.mql5.com/ru/users/artmedia70 | //+------------------------------------------------------------------+ #property copyright"Copyright 2016, Artem A. Trishkin, Skype artmedia70" #property link"https://login.mql5.com/ru/users/artmedia70" #property version"1.00" #property strict //--- input parameters inputENUM_TIMEFRAMES TimeframeRSI = PERIOD_M15; // Таймфрейм RSI inputint PeriodRSI = 14; // Период расчёта RSI inputENUM_APPLIED_PRICE PriceRSI = PRICE_CLOSE; // Цена расчёта RSI inputint MinutesBefore =20; // Количество минут назад //--- global variables int minutesBefore; // Количество минут назад int periodRSI; // Период расчёта RSI double prevRSIValue; // Значение RSI xxx минут назад //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ intOnInit() { //--- minutesBefore=(MinutesBefore<1?1:MinutesBefore); // Количество минут назад periodRSI=(PeriodRSI<1?1:PeriodRSI); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ voidOnDeinit(constint reason) { //---
Wenn der RSI-Wert vor 20 Minuten gekreuzt wurde, überprüfen wir den Kurs, d.h. für einen Short sollte der Kurs niedriger sein als vor 20 Minuten. Ich danke Ihnen vielmals. Wenn es funktioniert, schulde ich Ihnen ein Versprechen))
Vladymyr Glushko: Guten Tag. Ich bin neu im Trading, deshalb habe ich eine Menge Fragen, auch zur Software, in meinem Fall ist es MT4. Ist es möglich, den Spread eines Währungspaares im Chart-Fenster als Zahl anzuzeigen, und zwar auf dieselbe Weise wie der ATR-Indikator? Ich halte diese Art der Darstellung von Informationen über die Marktlage für sinnvoll, denn sie ist bequemer und schneller zu berechnen und auf der Grundlage von Durchschnittswerten zu bewerten. Der zweite Punkt ist ein gleitender Stopp auf Basis der ATR. Ist es möglich, dies automatisch zu machen? Wenn Sie in einer Pose sitzen, können Sie dank des Taschenrechners und guter Sehkraft problemlos manuell einen Anschlag berechnen und einstellen. Ein automatischer Stopp ist eine gute Idee für einen Händler, auch wenn er seine Nachteile hat, aber in einem guten Trend wird ein Trailing-Stop das Risiko eines falschen Stopps durch einen Anfänger verringern. Ich danke Ihnen im Voraus.
Es ist einfach und unkompliziert - zeigen Sie grafische Objekte, insbesondere Textbeschriftungen mit den erforderlichen Daten im Diagramm an, und aktualisieren Sie sie bei jedem Tick.
Wenn du nicht weißt, was du mit ihnen machen sollst, versuche, die richtige zu finden ;)
strongflex: Wenn der RSI-Wert vor 20 Minuten überschritten wurde, überprüfen wir den Kurs, d.h. für einen Short sollte der Kurs niedriger sein als vor 20 Minuten. Ich danke Ihnen vielmals. Wenn alles klappt, bin ich dir ein Versprechen schuldig))
Wir werden nur in der Lage sein, den Preis "jetzt" "dann" durch Öffnen/Schließen/Hoch/Tief Kerze entsprechend dieser Zeit zu überprüfen - keine Tick Geschichte in MT4. Wir müssen also einen Kreuzungspunkt auf den Minuten finden, um eine möglichst genaue Preisbestimmung zu erhalten. Aber was meinen Sie mit RSI Crossover?
Artyom Trishkin: Мы сможем "сейчас" проверить цену "тогда" лишь только открытия/закрытия/хай/лоу свечи, соответствующей тому времени - нету в МТ4 тиковой истории. Поэтому нужно найти пересечение на минутках для наиболее точного определения цены из имеющихся в наличии возможностей. Но что вы имеете в виду под пересечением RSI ?
Der RSI überquert die 70er-Marke. Sagen wir, der RSI lag bei 10-00 unter 70, bei 10-20 über 70 und bei 10-40 sollte der 10-20 höher sein als bei 10-40.
Es ist einfach und unkompliziert - Sie zeigen grafische Objekte, insbesondere Textbeschriftungen mit den gewünschten Daten im Diagramm an und aktualisieren sie bei jedem Tick.
Und verschiedene Schleppnetze in kodobase gibt es wie Sand am Meer - suchen Sie sich das richtige aus ;)
Alles ist leicht und einfach - zeigen Sie grafische Objekte an, insbesondere Textbeschriftungen mit den erforderlichen Daten auf dem Diagramm, und aktualisieren Sie sie bei jedem Tick.
Und verschiedene Schleppnetze in kodobase gibt es wie Sand am Meer - finden Sie das richtige für sich ;)
Aber wie man es Schritt für Schritt zu tun? ..... grafische Objekte (was ist es und wie sie zu setzen), setzen Etiketten mit den Daten auf dem Diagramm (wo zu geben und mit welchen Daten) ...... sorry für die dummen Fragen.
Um die Funktionen zur Ermittlung beliebiger Fraktale vollständig vom Indikator zu trennen, sollten wir die Arrays high[] und low[] und den Grenzwert nicht per Referenz übergeben.
Da unser Code sehr nah an MQL5 ist, müssen wir die Funktionen High[], Low[], iHigh() und iLow() ablehnen. So wird es in diesem Indikator aussehen:
Allerdings sollten Sie auch für -1 von den Funktionen GetPriceHigh() und GetPriceLow() prüfenRSI sollte 15 Minuten betragen. Wir brauchen die EA, um es zu überprüfen alle 20 Minuten von der Markteröffnung (9-00, 9-20, 9-40 usw.) Nehmen wir an, bei 10-20 gab es eine Kreuzung unter der 70-Ebene es merkt sich den Preis und bei 10-40 prüft, ob der Preis niedriger ist als bei 10-20 es öffnet ein kurzes.
Nun, zuerst müssen Sie die Zeit eine bestimmte Anzahl von Minuten zurückbekommen. Hier ist ein Testskript:
//| sTestValueRSI.mq4 |
//| Copyright 2016, Artem A. Trishkin, Skype artmedia70 |
//| https://login.mql5.com/ru/users/artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, Artem A. Trishkin, Skype artmedia70"
#property link "https://login.mql5.com/ru/users/artmedia70"
#property version "1.00"
#property strict
#property script_show_inputs
//--- input parameters
input ENUM_TIMEFRAMES TimeframeRSI = PERIOD_M15; // Таймфрейм RSI
input int MinutesBefore =20; // Количество минут назад
int minutesBefore=(MinutesBefore<1?1:MinutesBefore); // Количество минут назад
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
//---
datetime time_before=TimeCurrent()-minutesBefore*PeriodSeconds(PERIOD_M1);
int shift=Bars(Symbol(),TimeframeRSI,TimeCurrent(),time_before);
double value=iRSI(Symbol(),TimeframeRSI,14,PRICE_CLOSE,shift);
Comment("\nCurrent time: ",TimeToString(TimeCurrent()),
"\nВремя ",minutesBefore," минут назад: ",TimeToString(time_before),
"\nБар времени ",TimeToString(time_before)," = ",shift," на таймфрейме ",EnumToString(TimeframeRSI),
"\nЗначение RSI на баре ",shift," периода ",EnumToString(TimeframeRSI),": ",DoubleToString(value,Digits()));
}
//+------------------------------------------------------------------+
Dieses Skript zählt von der aktuellen Serverzeit abwärts - testen Sie einfach, ob Sie RSI-Daten von vor einer bestimmten Anzahl von Minuten erhalten.
Als Nächstes müssen wir die aktuelle Uhrzeit wissen und ob ihr Wert ein Vielfaches der Minuten des Prüfintervalls ist. Ich habe es zu einem Test-EA gemacht:
//| exTestValueRSI.mq4 |
//| Copyright 2016, Artem A. Trishkin, Skype artmedia70 |
//| https://login.mql5.com/ru/users/artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, Artem A. Trishkin, Skype artmedia70"
#property link "https://login.mql5.com/ru/users/artmedia70"
#property version "1.00"
#property strict
//--- input parameters
input ENUM_TIMEFRAMES TimeframeRSI = PERIOD_M15; // Таймфрейм RSI
input int PeriodRSI = 14; // Период расчёта RSI
input ENUM_APPLIED_PRICE PriceRSI = PRICE_CLOSE; // Цена расчёта RSI
input int MinutesBefore =20; // Количество минут назад
//--- global variables
int minutesBefore; // Количество минут назад
int periodRSI; // Период расчёта RSI
double prevRSIValue; // Значение RSI xxx минут назад
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
minutesBefore=(MinutesBefore<1?1:MinutesBefore); // Количество минут назад
periodRSI=(PeriodRSI<1?1:PeriodRSI);
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
MqlDateTime server_time;
TimeToStruct(TimeCurrent(),server_time);
if(server_time.min%minutesBefore==0) prevRSIValue=GetLastDataRSI(Symbol(),TimeframeRSI,TimeCurrent(),minutesBefore);
Comment("\nТекущее время: ",TimeCurrent(),"\nМинуты текущего времени: ",server_time.min,"\nЗначение RSI: ",DoubleToString(prevRSIValue,Digits()));
}
//+------------------------------------------------------------------+
double GetLastDataRSI(string symbol_name, ENUM_TIMEFRAMES timeframe, datetime start_time, int minutes_before,
int period_rsi=14, ENUM_APPLIED_PRICE price_rsi=PRICE_CLOSE)
{
datetime time_before=start_time-minutes_before*PeriodSeconds(PERIOD_M1);
int shift=Bars(symbol_name,timeframe,start_time,time_before);
return(iRSI(symbol_name,timeframe,period_rsi,price_rsi,shift));
}
//+------------------------------------------------------------------+
Was müssen wir als nächstes wissen?
Als Nächstes müssen wir die aktuelle Uhrzeit wissen und ob ihr Wert ein Vielfaches der Minuten des Prüfintervalls ist. Ich habe es zu einem Test-EA gemacht:
//| exTestValueRSI.mq4 |
//| Copyright 2016, Artem A. Trishkin, Skype artmedia70 |
//| https://login.mql5.com/ru/users/artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, Artem A. Trishkin, Skype artmedia70"
#property link "https://login.mql5.com/ru/users/artmedia70"
#property version "1.00"
#property strict
//--- input parameters
input ENUM_TIMEFRAMES TimeframeRSI = PERIOD_M15; // Таймфрейм RSI
input int PeriodRSI = 14; // Период расчёта RSI
input ENUM_APPLIED_PRICE PriceRSI = PRICE_CLOSE; // Цена расчёта RSI
input int MinutesBefore =20; // Количество минут назад
//--- global variables
int minutesBefore; // Количество минут назад
int periodRSI; // Период расчёта RSI
double prevRSIValue; // Значение RSI xxx минут назад
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
minutesBefore=(MinutesBefore<1?1:MinutesBefore); // Количество минут назад
periodRSI=(PeriodRSI<1?1:PeriodRSI);
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
MqlDateTime server_time;
TimeToStruct(TimeCurrent(),server_time);
if(server_time.min%minutesBefore==0) prevRSIValue=GetLastDataRSI(Symbol(),TimeframeRSI,TimeCurrent(),minutesBefore);
Comment("\nТекущее время: ",TimeCurrent(),"\nМинуты текущего времени: ",server_time.min,"\nЗначение RSI: ",DoubleToString(prevRSIValue,Digits()));
}
//+------------------------------------------------------------------+
double GetLastDataRSI(string symbol_name, ENUM_TIMEFRAMES timeframe, datetime start_time, int minutes_before,
int period_rsi=14, ENUM_APPLIED_PRICE price_rsi=PRICE_CLOSE)
{
datetime time_before=start_time-minutes_before*PeriodSeconds(PERIOD_M1);
int shift=Bars(symbol_name,timeframe,start_time,time_before);
return(iRSI(symbol_name,timeframe,period_rsi,price_rsi,shift));
}
//+------------------------------------------------------------------+
Was müssen wir als nächstes wissen?
Guten Tag. Ich bin neu im Trading, deshalb habe ich eine Menge Fragen, auch zur Software, in meinem Fall ist es MT4. Ist es möglich, den Spread eines Währungspaares im Chart-Fenster als Zahl anzuzeigen, und zwar auf dieselbe Weise wie der ATR-Indikator? Ich halte diese Art der Darstellung von Informationen über die Marktlage für sinnvoll, denn sie ist bequemer und schneller zu berechnen und auf der Grundlage von Durchschnittswerten zu bewerten. Der zweite Punkt ist ein gleitender Stopp auf Basis der ATR. Ist es möglich, dies automatisch zu machen? Wenn Sie in einer Pose sitzen, können Sie dank des Taschenrechners und guter Sehkraft problemlos manuell einen Anschlag berechnen und einstellen. Ein automatischer Stopp ist eine gute Idee für einen Händler, auch wenn er seine Nachteile hat, aber in einem guten Trend wird ein Trailing-Stop das Risiko eines falschen Stopps durch einen Anfänger verringern. Ich danke Ihnen im Voraus.
Es ist einfach und unkompliziert - zeigen Sie grafische Objekte, insbesondere Textbeschriftungen mit den erforderlichen Daten im Diagramm an, und aktualisieren Sie sie bei jedem Tick.
Wenn du nicht weißt, was du mit ihnen machen sollst, versuche, die richtige zu finden ;)
Wenn der RSI-Wert vor 20 Minuten überschritten wurde, überprüfen wir den Kurs, d.h. für einen Short sollte der Kurs niedriger sein als vor 20 Minuten. Ich danke Ihnen vielmals. Wenn alles klappt, bin ich dir ein Versprechen schuldig))
Artyom Trishkin:
Мы сможем "сейчас" проверить цену "тогда" лишь только открытия/закрытия/хай/лоу свечи, соответствующей тому времени - нету в МТ4 тиковой истории. Поэтому нужно найти пересечение на минутках для наиболее точного определения цены из имеющихся в наличии возможностей. Но что вы имеете в виду под пересечением RSI ?
Es ist einfach und unkompliziert - Sie zeigen grafische Objekte, insbesondere Textbeschriftungen mit den gewünschten Daten im Diagramm an und aktualisieren sie bei jedem Tick.
Und verschiedene Schleppnetze in kodobase gibt es wie Sand am Meer - suchen Sie sich das richtige aus ;)
Vielen Dank ...... wir werden danach suchen))
Alles ist leicht und einfach - zeigen Sie grafische Objekte an, insbesondere Textbeschriftungen mit den erforderlichen Daten auf dem Diagramm, und aktualisieren Sie sie bei jedem Tick.
Und verschiedene Schleppnetze in kodobase gibt es wie Sand am Meer - finden Sie das richtige für sich ;)