Als Nächstes müssen wir eine ordnungsgemäße Fixierung, dass die Bar ausgearbeitet ist, aber hier müssen wir die gesamte Annäherung an den TOR zu berechnen.
Soweit ich das aus Ihrem Beitrag ersehen kann, müssen wir das tun:
Das Wesentliche ist, dass wir, wenn die Spanne größer als normal ist, wieder zuOnTick übergehen und bei einem neuen Tick die Spanne überprüfen, wenn sie normal ist, einen Auftrag senden und uns daran erinnern, dass auf diesem Balken ein Handel stattgefunden hat.
Es gibt auch einen zweiten Weg:
Im Allgemeinen müssen Sie die Logik definieren, wann die Aufzeichnung erfolgen soll, und erst wieder prüfen, wenn der "Neue Balken" gebildet ist.
Meine Herren, können Sie mir einen Tipp geben? Ich habe versucht, die Daten des Indikators für die zweite Woche in eine Datei zu schreiben, um sie später zu lesen und einen Indikator auf der Grundlage der Daten zu erstellen. Der Indikator ist ein Trainingsindikator, ich berechne das Volumen für jeden Tick eines bestimmten Balkens. Ist der Tick positiv, wird sein Volumen mit "+" addiert, ist er negativ, mit "-". Ich addiere die erhaltenen Volumina und erhalte ein Delta und betrachte dieses Delta als kumulativ. Dadurch entsteht eine Kurve. Diese Kurve wird jedoch nur in Echtzeit erstellt. Sie kann nicht in die Geschichte eingeordnet werden. Zu diesem Zweck habe ich beschlossen, die Daten in eine Datei zu schreiben. In dieser Phase bin ich stecken geblieben. Ich habe es mit Mühe und Not geschafft, dass der Code keine Compilerfehler erzeugt. Das daraus resultierende Produkt funktioniert jedoch nicht. Davor funktionierte der Indikator. Nachdem ich den Code zum Schreiben der Datei angehängt habe, funktioniert der Indikator nicht mehr. Das Programm erstellt eine Datei mit einem unverständlichen Datensatz und bricht an dieser Stelle ab. Ich sitze schon den ganzen Tag hier und kann es nicht herausfinden. Kann mir jemand helfen?
//+------------------------------------------------------------------+//| ProjectName |//| Copyright 2012, CompanyName |//| http://www.companyname.net |//+------------------------------------------------------------------+#property version"1.00"#property strict#property indicator_separate_window#property indicator_buffers2#property indicator_label1"Вверх"#property indicator_type1DRAW_LINE#property indicator_color1 Salmon
#property indicator_style1STYLE_SOLID#property indicator_width12#property indicator_label2"Вниз"#property indicator_type2DRAW_LINE#property indicator_color2clrDarkTurquoise#property indicator_style2STYLE_SOLID#property indicator_width22inputstring InpFileName="111.csv"; // Имя файла inputstring InpDirectoryName="Data"; // Имя каталога datetime Время=0; // Время прошлого бараdouble Bid1;
double Buf_1[];
// double ExtBuffer;long V1; // объем для текущего тика вверхlong V2; // накопленный объем для всех тиков вверх текущего бараlong V3; // объем текущего тика внизlong V4; // накопленный объем для всех тиков вниз для текущего бараlong V5; // отрицательные и положительные iVolume нарастающим итогом//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+voidOnInit()
{
IndicatorDigits(0);
SetIndexBuffer(0,Buf_1);
//SetIndexBuffer(1,Buf_2);
Bid1=Bid;
V5=0;
}
//+------------------------------------------------------------------+//| 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[])
{
datetime Вр=Time[0]; // Время текущего бараif(Вр>Время) // Если новый бар
{
Время=Вр; // Запомнить// Buf_1[0]=0; // и обнулить последний элемент буфера
}
datetime date_Buf_1[]; // массив дат индикатора datetime time_Buf_1[]; // массив времени // --- считаю объем для положительных и отрицательных тиков if(Bid>=Bid1)
{
if(Bid>Bid1) // если тик положительный..
{
V1=iVolume(NULL,0,0); // если повышающий цену тик, то находим его объем
V2= V1 + V2;
}
else
{
V1=0; // если Bid1 = Bid2, т.е. изменение цены = 0, то iVolume этого тика присваиваем 0;
V2= V1 + V2;
}
}
else
{
V3 = iVolume(NULL, 0, 0); // если понижающий цену тик
V4 = V3 + V4; // то находим его объем
}
V5=V2-V4; // определяем разницу (дельту) между объемами положительных и отрицательных тиков
Bid1=Bid;
Buf_1[0]=V5; // в буфер сгружаем дельту// ExtBuffer = Buf_1 [0];// double macurrent=iMAOnArray(ExtBuffer,0,5,0,MODE_LWMA,0); // запись в файл данных буфера//--- установим для массивов признак таймсерии ArraySetAsSeries(Buf_1,true);
ArraySetAsSeries(date_Buf_1,true);
//--- скопируем таймсерию int copied=CopyTime(NULL,0,0,0,date_Buf_1);
//--- подготовим массив Buf_1 ArrayResize(Buf_1,copied);
//--- скопируем значения линии индикатора for(int i=0;i<copied;i++)
{
Buf_1[i]=V5;
}
//--- откроем файл для записи значений индикатора ResetLastError();
int file_handle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_WRITE|FILE_CSV);
if(file_handle!=INVALID_HANDLE)
{
PrintFormat("Файл %s открыт для записи",InpFileName);
PrintFormat("Путь к файлу: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH));
//--- сначала запишем значения индикатора FileWrite(file_handle,Buf_1[0]);
//--- запишем время и значения в файл for(int i=0;i<Buf_1[0];i++)
FileWrite(file_handle,time_Buf_1[i],Buf_1[i]);
//--- закрываем файл FileClose(file_handle);
PrintFormat("Данные записаны, файл %s закрыт",InpFileName);
}
elsePrintFormat("Не удалось открыть файл %s, Код ошибки = %d",InpFileName,GetLastError());
return(rates_total);
}
//+------------------------------------------------------------------+
Meine Herren, können Sie mir einen Tipp geben? Ich habe versucht, die Daten des Indikators für die zweite Woche in eine Datei zu schreiben, um sie später zu lesen und einen Indikator auf der Grundlage der Daten zu erstellen. Der Indikator ist ein Trainingsindikator, ich berechne das Volumen für jeden Tick eines bestimmten Balkens. Ist der Tick positiv, wird sein Volumen mit "+" addiert, ist er negativ, mit "-". Ich addiere die erhaltenen Volumina und erhalte ein Delta und betrachte dieses Delta als kumulativ. Dadurch entsteht eine Kurve. Diese Kurve wird jedoch nur in Echtzeit erstellt. Sie kann nicht in die Geschichte eingeordnet werden. Zu diesem Zweck habe ich beschlossen, die Daten in eine Datei zu schreiben. In dieser Phase bin ich stecken geblieben. Ich habe es mit einer Bitterkeit geschafft, dass der Code keine Compilerfehler erzeugt. Das daraus resultierende Produkt funktioniert jedoch nicht. Der Indikator hat vorher funktioniert. Nachdem ich den Code zum Schreiben der Datei angehängt habe, funktioniert der Indikator nicht mehr. Das Programm erstellt eine Datei mit einem unverständlichen Datensatz und bricht an dieser Stelle ab. Ich sitze schon den ganzen Tag hier und kann es nicht herausfinden. Kann mir jemand helfen?
Es wäre ratsam, den Zeiger vor der Aufnahme an das Ende der Datei zu setzen.
Если выставить позицию за "правую границу" файла (больше, чем размер файла), то последующая запись в файл будет будет произведена не с конца файла, а с выставленной позиции. При этом между предыдущим концом файла и выставленной позицией будут записаны неопределенные значения...
Wozu ist das gut? Ich habe den Link gelesen, aber ich verstehe ihn nicht.
Und wozu? Wenn Sie eine Datei öffnen, wird der Zeiger an den Anfang der Datei gesetzt und die Informationen werden an den Anfang der Datei geschrieben. Um an die richtige Stelle zu schreiben, müssen Sie den Mauszeiger an die richtige Stelle bewegen.
Ich bin noch dabei, MQL4 zu lernen. Ich habe es nicht gelesen.
Gibt es einen Online-Schulungsdienst, bei dem man MQL4 kostenlos/bezahlt anhand von Beispielen mit einem Ausbilder lernen kann? Ich habe fast ein MQL4-Tutorial gelesen, aber ich kann überhaupt nicht programmieren. Ich bin mit der Programmierung noch nicht vertraut. Ich versuche, in diesem Thread etwas zu lernen, aber ich bin nicht weitergekommen. Können Sie mir einen Rat geben?
Ich bin noch dabei, MQL4 zu lernen. Ich habe es nicht gelesen.
Gibt es einen Online-Schulungsdienst, bei dem man MQL4 kostenlos/bezahlt anhand von Beispielen mit einem Tutor lernen kann? Ich habe fast ein MQL4-Tutorial gelesen, aber ich kann überhaupt nicht programmieren. Ich bin mit der Programmierung noch nicht vertraut. Ich versuche, in diesem Thread etwas zu lernen, aber ich bin nicht weitergekommen. Können Sie mir einige Vorschläge machen?
1. Die Arbeit mit Dateien in mql4 ist die gleiche wie in mql5.
2. Bei allem Respekt vor Sergej Kowaljow, auch er hat meine Fragen seinerzeit beantwortet, aber meiner Meinung nach sind die Lektionen von Kirill leichter zu verstehen. In Yandex geben Sie ein und sofort 2 Links zu seiner Lektion
Hallo! Die Anleitung auf der Website hat mir gereicht, nach ein paar Jahren des Herumprobierens habe ich gelernt, meine eigenen Indikatoren zu schreiben. Aber die Fragen bleiben. Jetzt verstehe ich nicht, warum die Indikatoren verwirrt sind. Auf M1 fangen einige von ihnen nach etwa 12 Stunden an, falsch zu zeichnen, signalisieren aber korrekt. Einige zeichnen und signalisieren falsch. Auf der M5 ziehen sie fünfmal so lange. Können Sie mir bitte einen Tipp geben.
1. Die Handhabung von Dateien in mql4 ist die gleiche wie in mql5.
2. Bei allem Respekt vor Sergej Kowaljow, auch er hat meine Fragen seinerzeit beantwortet, aber meiner Meinung nach ist die Lektion von Kirill leichter zu verstehen. In Yandex, geben Sie auf und sofort 2 Links zu seiner Lektion
Ist es möglich, mit Hilfe der Lektionen von "Kirill" zu lernen, wenn man sich noch nie mit Programmierung beschäftigt hat? Wie lange dauert es aus Ihrer Sicht?
So soll es zunächst sein.
Als Nächstes müssen wir eine ordnungsgemäße Fixierung, dass die Bar ausgearbeitet ist, aber hier müssen wir die gesamte Annäherung an den TOR zu berechnen.
Soweit ich das aus Ihrem Beitrag ersehen kann, müssen wir das tun:
Das Wesentliche ist, dass wir, wenn die Spanne größer als normal ist, wieder zuOnTick übergehen und bei einem neuen Tick die Spanne überprüfen, wenn sie normal ist, einen Auftrag senden und uns daran erinnern, dass auf diesem Balken ein Handel stattgefunden hat.
Es gibt auch einen zweiten Weg:
Im Allgemeinen müssen Sie die Logik definieren, wann die Aufzeichnung erfolgen soll, und erst wieder prüfen, wenn der "Neue Balken" gebildet ist.
Ich verstehe Sie, danke!
Meine Herren, können Sie mir einen Tipp geben? Ich habe versucht, die Daten des Indikators für die zweite Woche in eine Datei zu schreiben, um sie später zu lesen und einen Indikator auf der Grundlage der Daten zu erstellen. Der Indikator ist ein Trainingsindikator, ich berechne das Volumen für jeden Tick eines bestimmten Balkens. Ist der Tick positiv, wird sein Volumen mit "+" addiert, ist er negativ, mit "-". Ich addiere die erhaltenen Volumina und erhalte ein Delta und betrachte dieses Delta als kumulativ. Dadurch entsteht eine Kurve. Diese Kurve wird jedoch nur in Echtzeit erstellt. Sie kann nicht in die Geschichte eingeordnet werden. Zu diesem Zweck habe ich beschlossen, die Daten in eine Datei zu schreiben. In dieser Phase bin ich stecken geblieben. Ich habe es mit Mühe und Not geschafft, dass der Code keine Compilerfehler erzeugt. Das daraus resultierende Produkt funktioniert jedoch nicht. Davor funktionierte der Indikator. Nachdem ich den Code zum Schreiben der Datei angehängt habe, funktioniert der Indikator nicht mehr. Das Programm erstellt eine Datei mit einem unverständlichen Datensatz und bricht an dieser Stelle ab. Ich sitze schon den ganzen Tag hier und kann es nicht herausfinden. Kann mir jemand helfen?
Meine Herren, können Sie mir einen Tipp geben? Ich habe versucht, die Daten des Indikators für die zweite Woche in eine Datei zu schreiben, um sie später zu lesen und einen Indikator auf der Grundlage der Daten zu erstellen. Der Indikator ist ein Trainingsindikator, ich berechne das Volumen für jeden Tick eines bestimmten Balkens. Ist der Tick positiv, wird sein Volumen mit "+" addiert, ist er negativ, mit "-". Ich addiere die erhaltenen Volumina und erhalte ein Delta und betrachte dieses Delta als kumulativ. Dadurch entsteht eine Kurve. Diese Kurve wird jedoch nur in Echtzeit erstellt. Sie kann nicht in die Geschichte eingeordnet werden. Zu diesem Zweck habe ich beschlossen, die Daten in eine Datei zu schreiben. In dieser Phase bin ich stecken geblieben. Ich habe es mit einer Bitterkeit geschafft, dass der Code keine Compilerfehler erzeugt. Das daraus resultierende Produkt funktioniert jedoch nicht. Der Indikator hat vorher funktioniert. Nachdem ich den Code zum Schreiben der Datei angehängt habe, funktioniert der Indikator nicht mehr. Das Programm erstellt eine Datei mit einem unverständlichen Datensatz und bricht an dieser Stelle ab. Ich sitze schon den ganzen Tag hier und kann es nicht herausfinden. Kann mir jemand helfen?
Es wäre ratsam, den Zeiger vor der Aufnahme an das Ende der Datei zu setzen.
Es wäre gut, den Zeiger vor dem Schreiben an das Ende der Datei zu setzen.
Wozu ist das gut? Ich habe den Link gelesen, aber ich verstehe ihn nicht.
Wozu ist das gut? Ich habe den Link gelesen, aber ich verstehe ihn nicht.
Und wozu? Wenn Sie eine Datei öffnen, wird der Zeiger an den Anfang der Datei gesetzt und die Informationen werden an den Anfang der Datei geschrieben. Um an die richtige Stelle zu schreiben, müssen Sie den Mauszeiger an die richtige Stelle bewegen.
Meine Herren, können Sie mir einen Tipp geben? Seit einer Woche versuche ich nun schon, Indikatordaten in eine Datei zu schreiben...
Haben Sie es gelesen?
Ich bin noch dabei, MQL4 zu lernen. Ich habe es nicht gelesen.
Gibt es einen Online-Schulungsdienst, bei dem man MQL4 kostenlos/bezahlt anhand von Beispielen mit einem Ausbilder lernen kann? Ich habe fast ein MQL4-Tutorial gelesen, aber ich kann überhaupt nicht programmieren. Ich bin mit der Programmierung noch nicht vertraut. Ich versuche, in diesem Thread etwas zu lernen, aber ich bin nicht weitergekommen. Können Sie mir einen Rat geben?
Ich bin noch dabei, MQL4 zu lernen. Ich habe es nicht gelesen.
Gibt es einen Online-Schulungsdienst, bei dem man MQL4 kostenlos/bezahlt anhand von Beispielen mit einem Tutor lernen kann? Ich habe fast ein MQL4-Tutorial gelesen, aber ich kann überhaupt nicht programmieren. Ich bin mit der Programmierung noch nicht vertraut. Ich versuche, in diesem Thread etwas zu lernen, aber ich bin nicht weitergekommen. Können Sie mir einige Vorschläge machen?
1. Die Arbeit mit Dateien in mql4 ist die gleiche wie in mql5.
2. Bei allem Respekt vor Sergej Kowaljow, auch er hat meine Fragen seinerzeit beantwortet, aber meiner Meinung nach sind die Lektionen von Kirill leichter zu verstehen. In Yandex geben Sie ein und sofort 2 Links zu seiner Lektion
Hallo! Die Anleitung auf der Website hat mir gereicht, nach ein paar Jahren des Herumprobierens habe ich gelernt, meine eigenen Indikatoren zu schreiben. Aber die Fragen bleiben. Jetzt verstehe ich nicht, warum die Indikatoren verwirrt sind. Auf M1 fangen einige von ihnen nach etwa 12 Stunden an, falsch zu zeichnen, signalisieren aber korrekt. Einige zeichnen und signalisieren falsch. Auf der M5 ziehen sie fünfmal so lange. Können Sie mir bitte einen Tipp geben.
1. Die Handhabung von Dateien in mql4 ist die gleiche wie in mql5.
2. Bei allem Respekt vor Sergej Kowaljow, auch er hat meine Fragen seinerzeit beantwortet, aber meiner Meinung nach ist die Lektion von Kirill leichter zu verstehen. In Yandex, geben Sie auf und sofort 2 Links zu seiner Lektion
Ist es möglich, mit Hilfe der Lektionen von "Kirill" zu lernen, wenn man sich noch nie mit Programmierung beschäftigt hat? Wie lange dauert es aus Ihrer Sicht?