2047728: Ciao, ho iniziato a studiare MQL4 usando i video tutorial del 2013. Sto riscrivendo il codice esattamente dal video, aggiungendo alcune piccole modifiche da un altro video, come risultato ho 25 errori. Ho provato a cercare la soluzione a questi errori, ma dal momento che la build del terminale è cambiata e sono avvenuti alcuni cambiamenti nella codifica. Sarò grato se qualcuno può aiutarmi a modificare il codice o almeno darmi qualche consiglio utile, grazie in anticipo.
E questo come vi aiuta? La prossima volta, vai direttamente a Freelance.
Ciao, ho iniziato a studiare MQL4 utilizzando i video tutorial 2013, ho riscritto il codice esattamente dal video, aggiungendo alcune piccole modifiche da un altro, come ho bisogno di loro. Ho provato a cercare la soluzione a questi errori, ma dal momento che la build del terminale è cambiata e sono avvenuti alcuni cambiamenti nella codifica. Sarò grato se qualcuno può aiutarmi a modificare il codice o almeno darmi qualche consiglio utile, grazie in anticipo.
Aggiungete i cambiamenti uno per uno e correggete i bug - imparerete passo dopo passo. Vuoi imparare la lingua - inizia con esempi semplici
Buon pomeriggio! Per favore aiutami a capire il codice dell'indicatore. C'è un livello zero, basato su di esso, devi riempire il primo livello. Cosa non faccio, cosa non funziona. Ecco il codice indicatore:
//+---------------------------------------------------------------------------------------------------------+//| 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); // Причина деинициализации
}
Scriviamo uno script per salvare i dati del grafico in un file *.csv (applicazione s_ExportChartToCSV_v1.mq4):
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);
}
Esegui lo script su grafici con timeframes non standard. Come risultato dell'esecuzione dello script, riceviamo dei file *.csv standard con dati temporali non standard nella directory experts/filies.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Если можно сделаете скрипт
Цена на рынке меняется с достаточно большой частотой, чтобы для технического анализа было удобно пользоваться графиком непосредственного изменения цены, так называемого тикового графика. Для упрощения восприятия изменений цены и обеспечения возможности использования в анализе большие интервалы времени используется отображение графиков в виде...
perché non includerlo nella versione HTML del rapporto?
È sempre stato così.
Ecco perché i risultati dei test con le stesse impostazioni potrebbero essere leggermente diversi a causa dei cambiamenti di swap. Oppure i risultati nell'ottimizzazione e nei test differiscono, se l'ottimizzazione è stata lunga e lo swap è cambiato durante questo tempo.
Ecco perché i risultati dei test con le stesse impostazioni possono essere leggermente diversi a causa dei cambiamenti di swap. Oppure i risultati sono diversi nell'ottimizzazione e nei test, se l'ottimizzazione è stata lunga e lo swap è cambiato durante questo tempo.
Non l'ho mai notato! Pensavo che non ci fosse lo swap in mt4 nello strategy tester.
Nello Strategy Tester l'ordine viene modificato senza problemi, ma su un conto demo questa modifica non funziona.
Lo stop loss è modificato. Nel tester lo stoploss può essere solo 1 pip di distanza dal prezzo corrente ma nei conti demo anche se impostiamo lo stoploss ad una distanza di spread + 6-8 pip in più.
MODE_STOPLEVEL=0, MODE_FREEZELEVEL=0.
Si prega di consigliare perché e come fare la modifica corretta.
Nello Strategy Tester l'ordine viene modificato senza problemi, ma su un conto demo questa modifica non funziona.
Lo stop loss è modificato. Nel tester lo stoploss può essere solo 1 pip di distanza dal prezzo corrente ma nei conti demo anche se impostiamo lo stoploss ad una distanza di spread + 6-8 pip in più.
MODE_STOPLEVEL=0, MODE_FREEZELEVEL=0.
Si prega di consigliare perché e come fare la modifica corretta.
0 significa uno stop fluttuante. Nel tester, lo spread è fisso. Se si imposta 1, allora 1 sarà sempre lì. Ma nella vita reale galleggia.
Ciao, ho iniziato a studiare MQL4 usando i video tutorial del 2013. Sto riscrivendo il codice esattamente dal video, aggiungendo alcune piccole modifiche da un altro video, come risultato ho 25 errori. Ho provato a cercare la soluzione a questi errori, ma dal momento che la build del terminale è cambiata e sono avvenuti alcuni cambiamenti nella codifica. Sarò grato se qualcuno può aiutarmi a modificare il codice o almeno darmi qualche consiglio utile, grazie in anticipo.
E questo come vi aiuta? La prossima volta, vai direttamente a Freelance.
Ciao, ho iniziato a studiare MQL4 utilizzando i video tutorial 2013, ho riscritto il codice esattamente dal video, aggiungendo alcune piccole modifiche da un altro, come ho bisogno di loro. Ho provato a cercare la soluzione a questi errori, ma dal momento che la build del terminale è cambiata e sono avvenuti alcuni cambiamenti nella codifica. Sarò grato se qualcuno può aiutarmi a modificare il codice o almeno darmi qualche consiglio utile, grazie in anticipo.
Aggiungete i cambiamenti uno per uno e correggete i bug - imparerete passo dopo passo. Vuoi imparare la lingua - inizia con esempi semplici
Buon pomeriggio! Per favore aiutami a capire il codice dell'indicatore. C'è un livello zero, basato su di esso, devi riempire il primo livello. Cosa non faccio, cosa non funziona. Ecco il codice indicatore:
Per favore, aiutatemi.
Non riesco a creare uno script su questo argomento, ecco la pagina https://www.mql5.com/ru/articles/1368
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Scriviamo uno script per salvare i dati del grafico in un file *.csv (applicazione s_ExportChartToCSV_v1.mq4):
Esegui lo script su grafici con timeframes non standard. Come risultato dell'esecuzione dello script, riceviamo dei file *.csv standard con dati temporali non standard nella directory experts/filies.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Если можно сделаете скрипт
grazie in anticipo
da quando il tester di strategia ha iniziato a caricare lo swap?
o non l'ho notato?
perché non includerlo nella versione HTML del rapporto?
da quando il tester di strategia ha iniziato a caricare lo swap?
o non l'ho notato?
perché non includerlo nella versione HTML del rapporto?
È sempre stato così.
Ecco perché i risultati dei test con le stesse impostazioni potrebbero essere leggermente diversi a causa dei cambiamenti di swap. Oppure i risultati nell'ottimizzazione e nei test differiscono, se l'ottimizzazione è stata lunga e lo swap è cambiato durante questo tempo.
Questo è sempre stato il caso.
Ecco perché i risultati dei test con le stesse impostazioni possono essere leggermente diversi a causa dei cambiamenti di swap. Oppure i risultati sono diversi nell'ottimizzazione e nei test, se l'ottimizzazione è stata lunga e lo swap è cambiato durante questo tempo.
Non l'ho mai notato! Pensavo che non ci fosse lo swap in mt4 nello strategy tester.
Buona sera a tutti!
Nello Strategy Tester l'ordine viene modificato senza problemi, ma su un conto demo questa modifica non funziona.
Lo stop loss è modificato. Nel tester lo stoploss può essere solo 1 pip di distanza dal prezzo corrente ma nei conti demo anche se impostiamo lo stoploss ad una distanza di spread + 6-8 pip in più.
MODE_STOPLEVEL=0, MODE_FREEZELEVEL=0.
Si prega di consigliare perché e come fare la modifica corretta.
Buona sera a tutti!
Nello Strategy Tester l'ordine viene modificato senza problemi, ma su un conto demo questa modifica non funziona.
Lo stop loss è modificato. Nel tester lo stoploss può essere solo 1 pip di distanza dal prezzo corrente ma nei conti demo anche se impostiamo lo stoploss ad una distanza di spread + 6-8 pip in più.
MODE_STOPLEVEL=0, MODE_FREEZELEVEL=0.
Si prega di consigliare perché e come fare la modifica corretta.