2047728: Hallo, ich habe begonnen, MQL4 mit Hilfe von Video-Tutorials aus 2013 zu studieren. Ich schreibe den Code genau aus dem Video um und füge einige kleinere Änderungen aus einem anderen Video hinzu, als Ergebnis habe ich 25 Fehler. Ich habe versucht, nach einer Lösung für diese Fehler zu suchen, aber da sich der Build des Terminals geändert hat und einige Änderungen in der Codierung vorgenommen wurden. Ich wäre dankbar, wenn mir jemand helfen kann, den Code zu bearbeiten oder zumindest einige nützliche Ratschläge zu geben, danke im Voraus.
Und wie kann Ihnen das helfen? Das nächste Mal gehen Sie direkt zu Freelance.
Hallo, ich habe begonnen, MQL4 mit den 2013 Video-Tutorials zu studieren, ich habe den Code genau aus dem Video umgeschrieben, einige kleinere Änderungen aus einem anderen hinzufügen, wie ich sie brauche. Als Ergebnis bekomme ich 25 Fehler. Ich habe versucht, nach einer Lösung für diese Fehler zu suchen, aber da sich der Build des Terminals geändert hat und einige Änderungen in der Codierung vorgenommen wurden. Ich wäre dankbar, wenn mir jemand helfen kann, den Code zu bearbeiten oder mir zumindest nützliche Ratschläge zu geben, vielen Dank im Voraus.
Fügen Sie nach und nach Änderungen hinzu und beheben Sie Fehler - Sie werden Schritt für Schritt lernen. Sie möchten die Sprache lernen - beginnen Sie mit einfachen Beispielen
Guten Tag! Bitte helfen Sie mir, den Indikatorcode zu verstehen. Es gibt eine Nullebene, auf deren Grundlage Sie die erste Ebene füllen müssen. Was ich nicht mache, was nicht geht. Hier ist der Indikatorcode:
//+---------------------------------------------------------------------------------------------------------+//| Trend Levels.mq5 |//| Serzh |//+---------------------------------------------------------------------------------------------------------+#property copyright"Serzh"#property version"1.00"//--------------------------------Входные параметры----------------------------------------------------------#property indicator_chart_window// Индикатор отображается в окне графика#property indicator_buffers4// К-во индикаторных буферов#property indicator_plots2// К-во графических серий//--------------------------------Инициализация графических серий--------------------------------------------#property indicator_label1"Максимумы 1-го ровня"// Название индикаторной серии#property indicator_type1DRAW_ARROW// Тип линии индикатора#property indicator_color1clrDarkGreen// Цвет линии индикатора#property indicator_width12// Толщина линии индикатора#property indicator_label2"Минимумы 1-го ровня"// Название индикаторной серии#property indicator_type2DRAW_ARROW// Тип линии индикатора#property indicator_color2clrCrimson// Цвет линии индикатора#property indicator_width22// Толщина линии индикатора//--------------------------------Инициализация индикаторных массивов----------------------------------------double Max_1[],Min_1[]; // Индикаторные массивыdouble Max_0[],Min_0[]; // Вспомогательные массивы//+---------------------------------------------------------------------------------------------------------+//| Функция обработки события OnInit |//+---------------------------------------------------------------------------------------------------------+intOnInit ()
{
EventSetTimer ( _Period ); // Установка Таймера//-----------------------------------------------------------------------------------------------------------SetIndexBuffer ( 0 ,Max_1, INDICATOR_DATA ); // Присвоение индикаторного массива буферуSetIndexBuffer ( 1 ,Min_1, INDICATOR_DATA ); // Присвоение индикаторного массива буферуPlotIndexSetInteger ( 0 , PLOT_ARROW , 159 ); // Установка кода символа для PLOT_ARROWPlotIndexSetInteger ( 1 , PLOT_ARROW , 159 ); // Установка кода символа для PLOT_ARROWPlotIndexSetInteger ( 0 , PLOT_ARROW_SHIFT ,- 10 ); // Установка сдвига символа в пикселяхPlotIndexSetInteger ( 1 , PLOT_ARROW_SHIFT , 10 ); // Установка сдвига символа в пикселяхPlotIndexSetDouble ( 0 , PLOT_EMPTY_VALUE , 0 ); // Установка пустого значенияPlotIndexSetDouble ( 1 , PLOT_EMPTY_VALUE , 0 ); // Установка пустого значения//----------------------------------------------------------------------------------------------------------- SetIndexBuffer ( 2 ,Max_0, INDICATOR_CALCULATIONS ); // Присвоение индикаторного массива буферуSetIndexBuffer ( 3 ,Min_0, INDICATOR_CALCULATIONS ); // Присвоение индикаторного массива буферуArraySetAsSeries (Max_0, true ); // Установка индексаци массива как в таймсерииArraySetAsSeries (Min_0, true ); // Установка индексаци массива как в таймсерии//--------------------------------Инициализация массивов-----------------------------------------------------return ( INIT_SUCCEEDED );
}
//+---------------------------------------------------------------------------------------------------------+//| Функция обработки события OnCalculate |//+---------------------------------------------------------------------------------------------------------+intOnCalculate ( constint rates_total, // Всего баровconstint prev_calculated, // Расчитаных баровconstdatetime &time[], // Время открытияconstdouble &open[], // Цена открытияconstdouble &high[], // Максимальная ценаconstdouble &low[], // Минимальная ценаconstdouble &close[], // Цена закрытияconstlong &tick_volume[], // Тиковый объемconstlong &volume[], // Объемconstint &spread[]) // Спред
{
//--------------------------------Объявление переменных------------------------------------------------------int i0, i_1max, i_1min, i_1maxH= 0 , i_1minH= 0 ; // Индексыint Max_1Index= 0 , Min_1Index= 0 ; // Индексы максимальных и минимальных баровint Step_0, Step_1max, Step_1min; // Шаги цикловint Start_1max, Start_1min; // Стартовая позицияint Stop_1maxA= 0 , Stop_1minA= 0 , Stop_1maxB= 0 , Stop_1minB= 0 ; // Ограничитель дальнейших действийint Shift_max1= 0 , Shift_min1= 0 ; // Шифтыint TotalMax_0= 0 , TotalMin_0= 0 ; // Всего баров в нулевых массивахint TotalMax_1= 0 , TotalMin_1= 0 ; // Всего баров в массивах 1-го уровняint imax_0= 0 , imin_0= 0 , imax_1= 0 , imin_1= 0 ; // Инициализаторы массивов//--------------------------------Расчет 0-го уровня индикатора----------------------------------------------if (prev_calculated< 4 ) Step_0= 1 ; // Если расчетов еще небыло Step_0=1else Step_0=rates_total- 3 ; // Если расчеты уже были Step_0=rates_total-3for (i0=Step_0;i0<rates_total- 2 ;i0++) // Цикл для расчетов
{
if (high[i0+ 1 ]<high[i0] && high[i0]>=high[i0- 1 ]) Max_0[i0]=high[i0]; // Присвоение значения массиву Max_0else Max_0[i0]= 0 ; // Присвоение 0 значения массиву
TotalMax_0= ArrayRange (Max_0,imax_0); // Всего баров в массиве Max_0if (low[i0+ 1 ]>low[i0] && low[i0]<=low[i0- 1 ]) Min_0[i0]=low[i0]; // Присвоение значения массиву Min_0else Min_0[i0]= 0 ; // Присвоение 0 значения массиву
TotalMin_0= ArrayRange (Min_0,imin_0); // Всего баров в массиве Min_0
}
//--------------------------------Расчет максимума 1-го уровня индикатора------------------------------------if (TotalMax_1< 2 ) Step_1max= 1 ; // Если расчетов еще небыло Step_1max=1else Step_1max=TotalMax_0- 1 ; // Если расчеты уже были Step_1max=TotalMax_0-1for (i_1max=Step_1max;i_1max<TotalMax_0- 1 ;i_1max++) // Главный цикл для заполнения массива Max_1
{
if (Max_0[i_1max]>Min_0[i_1max] && Stop_1maxA< 1 ) // Нахождение ситуации когда Max_0 больше Min_0
{
Start_1max=i_1max; // Определение стартовой позиции
Stop_1maxA= 1 ; // Задается значение пераметру Stop_1maxA
Stop_1minA= 0 ; // Задается значение пераметру Stop_1minAfor (i_1maxH=i_1max;Max_0[i_1maxH]>=Min_0[i_1maxH];i_1maxH++) // Цикл для подсчета к-ва баров
{Shift_max1++;} // Подсчет к-ва баров для расчета максимального индекса
Max_1Index= ArrayMaximum (Max_0,Start_1max,Shift_max1); // Вычисление максимального индекса
}
if (i_1max==Max_1Index) Max_1[i_1max]=Max_0[i_1max]; // Присвоение значения массиву Max_1else Max_1[i_1max]= 0 ; // Присвоение 0 значения массиву Max_1
TotalMax_1= ArrayRange (Max_1,imax_1); // Всего баров в массиве Max_1if (Max_0[i_1max]<Min_0[i_1max] && Stop_1minA< 1 ) // Нахождение ситуации когда Max_0 меньше Min_0
{
Stop_1maxA= 0 ; // Изменение параметра Stop_1maxA
Stop_1minA= 1 ; // Изменение параметра Stop_1minA
}
}
//--------------------------------Расчет минимума 1-го уровня индикатора-------------------------------------if (TotalMin_1< 2 ) Step_1min= 1 ; // Если расчетов еще небыло Step_1min=1else Step_1min=TotalMin_0- 1 ; // Если расчеты уже были Step_1min=TotalMin_0-1for (i_1min=Step_1min;i_1min<TotalMin_0- 1 ;i_1min++) // Главный цикл для заполнения массива Min_1
{
if (Min_0[i_1min]>Max_0[i_1min] && Stop_1minB< 1 ) // Нахождение ситуации когда Min_0 больше Max_0
{
Start_1min=i_1min; // Определение стартовой позиции
Stop_1minB= 1 ; // Задается значение пераметру Stop_1minB
Stop_1maxB= 0 ; // Задается значение пераметру Stop_1maxBfor (i_1minH=i_1min;Min_0[i_1minH]>=Max_0[i_1minH];i_1minH++) // Цикл для подсчета к-ва баров
{Shift_min1++;} // Подсчет к-ва баров для расчета минимального индекса
Min_1Index= ArrayMinimum (Min_0,Start_1min,Shift_min1); // Вычисление максимального индекса
}
if (i_1min==Min_1Index) Min_1[i_1min]=Min_0[i_1min]; // Присвоение значения массиву Min_1else Min_1[i_1min]= 0 ; // Присвоение 0 значения массиву Min_1
TotalMin_1= ArrayRange (Min_1,imin_1); // Всего баров в массиве Min_1if (Min_0[i_1min]<Max_0[i_1min] && Stop_1maxB< 1 ) // Нахождение ситуации когда Min_0 меньше Max_0
{
Stop_1minB= 0 ; // Изменение параметра Stop_1minB
Stop_1maxB= 1 ; // Изменение параметра Stop_1maxB
}
}
//-------------------------------------------------------------- return (rates_total);
}
//+---------------------------------------------------------------------------------------------------------+//| Функция обработки события Таймер |//+---------------------------------------------------------------------------------------------------------+voidOnTimer (){}
//+---------------------------------------------------------------------------------------------------------+//+---------------------------------------------------------------------------------------------------------+//| Функция обработки события OnDeinit |//+---------------------------------------------------------------------------------------------------------+voidOnDeinit ( constint reason)
{
EventKillTimer (); // Удаление ТаймераPrint ( __FUNCTION__ , "_Код причины деинициализации = " ,reason); // Причина деинициализации
}
Wir schreiben ein Skript zum Speichern von Diagrammdaten in einer *.csv-Datei (Anwendung s_ExportChartToCSV_v1.mq4-Datei):
int start(){
int h=FileOpen(Symbol()+Period()+".csv",FILE_WRITE|FILE_CSV,",");
for(int i=Bars-1;i>=0;i--){
FileWrite(h,TimeToStr(Time[i],TIME_DATE),TimeToStr(Time[i],TIME_MINUTES),Open[i],High[i],Low[i],Close[i],Volume[i]);
}
FileClose(i);
return(0);
}
Führen Sie das Skript auf Charts mit nicht standardmäßigen Zeitrahmen aus. Wenn das Skript ausgeführt wird, erhalten wir standardmäßige *.csv-Dateien mit nicht standardmäßigen Zeitrahmendaten im Verzeichnis experts/filies.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Если можно сделаете скрипт
Цена на рынке меняется с достаточно большой частотой, чтобы для технического анализа было удобно пользоваться графиком непосредственного изменения цены, так называемого тикового графика. Для упрощения восприятия изменений цены и обеспечения возможности использования в анализе большие интервалы времени используется отображение графиков в виде...
Warum wird sie nicht in die HTML-Version des Berichts aufgenommen?
Das war schon immer so.
Aus diesem Grund können die Testergebnisse bei gleichen Einstellungen aufgrund von Swap-Änderungen leicht unterschiedlich ausfallen. Oder die Ergebnisse der Optimierung und der Tests weichen voneinander ab, wenn die Optimierung lange dauerte und sich der Swap in dieser Zeit verändert hat.
Aus diesem Grund können die Testergebnisse bei gleichen Einstellungen aufgrund von Swap-Änderungen leicht unterschiedlich ausfallen. Oder die Ergebnisse sind bei der Optimierung und den Tests unterschiedlich, wenn die Optimierung lange dauerte und sich der Swap in dieser Zeit verändert hat.
Das ist mir noch nie aufgefallen! Ich dachte, es gäbe keinen Tausch in mt4 im Strategietester.
Im Strategy Tester wird die Order ohne Probleme geändert, aber auf einem Demokonto funktioniert diese Änderung nicht.
Stop Loss wird geändert. Im Tester kann Stoploss nur 1 Pip vom aktuellen Preis entfernt sein, aber in Demo-Konten, auch wenn wir Stoploss in einem Abstand von Spread + 6-8 Pips mehr gesetzt.
MODE_STOPLEVEL=0, MODE_FREEZELEVEL=0.
Bitte teilen Sie mir mit, warum das so ist und wie ich die Änderung vornehmen kann.
Im Strategy Tester wird die Order ohne Probleme geändert, aber auf einem Demokonto funktioniert diese Änderung nicht.
Stop Loss wird geändert. Im Tester kann Stoploss nur 1 Pip vom aktuellen Preis entfernt sein, aber in Demo-Konten, auch wenn wir Stoploss in einem Abstand von Spread + 6-8 Pips mehr gesetzt.
MODE_STOPLEVEL=0, MODE_FREEZELEVEL=0.
Bitte teilen Sie mir mit, warum das so ist und wie ich die Änderung vornehmen kann.
0 bedeutet einen fließenden Anschlag. Im Testgerät ist die Spanne fixiert. Wenn Sie 1 einstellen, wird 1 immer vorhanden sein. Aber im wirklichen Leben schwimmt es.
Hallo, ich habe begonnen, MQL4 mit Hilfe von Video-Tutorials aus 2013 zu studieren. Ich schreibe den Code genau aus dem Video um und füge einige kleinere Änderungen aus einem anderen Video hinzu, als Ergebnis habe ich 25 Fehler. Ich habe versucht, nach einer Lösung für diese Fehler zu suchen, aber da sich der Build des Terminals geändert hat und einige Änderungen in der Codierung vorgenommen wurden. Ich wäre dankbar, wenn mir jemand helfen kann, den Code zu bearbeiten oder zumindest einige nützliche Ratschläge zu geben, danke im Voraus.
Und wie kann Ihnen das helfen? Das nächste Mal gehen Sie direkt zu Freelance.
Hallo, ich habe begonnen, MQL4 mit den 2013 Video-Tutorials zu studieren, ich habe den Code genau aus dem Video umgeschrieben, einige kleinere Änderungen aus einem anderen hinzufügen, wie ich sie brauche. Als Ergebnis bekomme ich 25 Fehler. Ich habe versucht, nach einer Lösung für diese Fehler zu suchen, aber da sich der Build des Terminals geändert hat und einige Änderungen in der Codierung vorgenommen wurden. Ich wäre dankbar, wenn mir jemand helfen kann, den Code zu bearbeiten oder mir zumindest nützliche Ratschläge zu geben, vielen Dank im Voraus.
Fügen Sie nach und nach Änderungen hinzu und beheben Sie Fehler - Sie werden Schritt für Schritt lernen. Sie möchten die Sprache lernen - beginnen Sie mit einfachen Beispielen
Guten Tag! Bitte helfen Sie mir, den Indikatorcode zu verstehen. Es gibt eine Nullebene, auf deren Grundlage Sie die erste Ebene füllen müssen. Was ich nicht mache, was nicht geht. Hier ist der Indikatorcode:
Bitte um Hilfe.
Ich kann anscheinend kein Skript zu diesem Thema erstellen, hier ist die Seite https://www.mql5.com/ru/articles/1368
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Wir schreiben ein Skript zum Speichern von Diagrammdaten in einer *.csv-Datei (Anwendung s_ExportChartToCSV_v1.mq4-Datei):
Führen Sie das Skript auf Charts mit nicht standardmäßigen Zeitrahmen aus. Wenn das Skript ausgeführt wird, erhalten wir standardmäßige *.csv-Dateien mit nicht standardmäßigen Zeitrahmendaten im Verzeichnis experts/filies.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Если можно сделаете скрипт
vielen Dank im Voraus
Seit wann verlangt der Strategietester einen Tausch?
oder habe ich das nicht bemerkt?
Warum wird sie nicht in die HTML-Version des Berichts aufgenommen?
Seit wann verlangt der Strategietester einen Tausch?
oder habe ich das nicht bemerkt?
Warum wird sie nicht in die HTML-Version des Berichts aufgenommen?
Das war schon immer so.
Aus diesem Grund können die Testergebnisse bei gleichen Einstellungen aufgrund von Swap-Änderungen leicht unterschiedlich ausfallen. Oder die Ergebnisse der Optimierung und der Tests weichen voneinander ab, wenn die Optimierung lange dauerte und sich der Swap in dieser Zeit verändert hat.
Dies war schon immer der Fall.
Aus diesem Grund können die Testergebnisse bei gleichen Einstellungen aufgrund von Swap-Änderungen leicht unterschiedlich ausfallen. Oder die Ergebnisse sind bei der Optimierung und den Tests unterschiedlich, wenn die Optimierung lange dauerte und sich der Swap in dieser Zeit verändert hat.
Das ist mir noch nie aufgefallen! Ich dachte, es gäbe keinen Tausch in mt4 im Strategietester.
Guten Abend zusammen!
Im Strategy Tester wird die Order ohne Probleme geändert, aber auf einem Demokonto funktioniert diese Änderung nicht.
Stop Loss wird geändert. Im Tester kann Stoploss nur 1 Pip vom aktuellen Preis entfernt sein, aber in Demo-Konten, auch wenn wir Stoploss in einem Abstand von Spread + 6-8 Pips mehr gesetzt.
MODE_STOPLEVEL=0, MODE_FREEZELEVEL=0.
Bitte teilen Sie mir mit, warum das so ist und wie ich die Änderung vornehmen kann.
Guten Abend zusammen!
Im Strategy Tester wird die Order ohne Probleme geändert, aber auf einem Demokonto funktioniert diese Änderung nicht.
Stop Loss wird geändert. Im Tester kann Stoploss nur 1 Pip vom aktuellen Preis entfernt sein, aber in Demo-Konten, auch wenn wir Stoploss in einem Abstand von Spread + 6-8 Pips mehr gesetzt.
MODE_STOPLEVEL=0, MODE_FREEZELEVEL=0.
Bitte teilen Sie mir mit, warum das so ist und wie ich die Änderung vornehmen kann.