2047728 : Merhaba, 2013 yılından itibaren video eğitimlerini kullanarak MQL4 öğrenmeye başladım, videodaki kodu aynen yeniden yazıyorum, ihtiyacım olan başka bir videodan küçük değişiklikler ekliyorum, sonuç olarak 25 hata alıyorum. Bu hatalara bir çözüm aramaya çalıştım ama anladığım kadarıyla terminal yapısı değişti ve bunun sonucunda kod yazımında bazı değişiklikler oldu. Birisi kodu düzenlemeye yardımcı olursa veya en azından iyi bir tavsiyede bulunursa minnettar olurum, şimdiden teşekkürler.
Ve bu size nasıl yardımcı olacak? Bir dahaki sefere, hemen Freelance ile iletişime geçin
Merhaba, 2013 yılından itibaren video eğitimlerini kullanarak MQL4 öğrenmeye başladım, videodaki kodu aynen yeniden yazıyorum, ihtiyacım olan başka bir videodan küçük değişiklikler ekliyorum, sonuç olarak 25 hata alıyorum. Bu hatalara bir çözüm aramaya çalıştım ama anladığım kadarıyla terminal yapısı değişti ve bunun sonucunda kod yazımında bazı değişiklikler oldu. Birisi kodu düzenlemeye yardımcı olursa veya en azından iyi bir tavsiyede bulunursa minnettar olurum, şimdiden teşekkürler.
Değişiklikleri birer birer ekleyin ve hataları düzeltin - yavaş yavaş öğrenin. Bir dil öğrenmek istiyorsanız basit örneklerle başlayın.
Tünaydın! Lütfen gösterge kodunu anlamama yardım edin. Sıfır bir seviye var, buna bağlı olarak ilk seviyeyi doldurmanız gerekiyor. Ne yapmıyorum, ne çalışmıyor. İşte gösterge kodu:
//+---------------------------------------------------------------------------------------------------------+//| 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); // Причина деинициализации
}
Grafikteki verileri bir *.csv dosyasına kaydetmek için bir komut dosyası yazıyoruz (uygulamanın s_ExportChartToCSV_v1.mq4 dosyası):
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 );
}
Komut dosyasını standart olmayan zaman dilimlerinin çizelgelerinde yürütürüz. Uzmanlar/dosyalar dizinindeki betiğin çalışmasının bir sonucu olarak, standart olmayan zaman çerçevesi verileriyle standart *.csv dosyaları alırız.
-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ------------------------------------- Eğer bir komut dosyası yazabilirseniz
Цена на рынке меняется с достаточно большой частотой, чтобы для технического анализа было удобно пользоваться графиком непосредственного изменения цены, так называемого тикового графика. Для упрощения восприятия изменений цены и обеспечения возможности использования в анализе большие интервалы времени используется отображение графиков в виде...
Bu nedenle, aynı ayarlara sahip test sonuçları, takas değişiklikleri nedeniyle bazen biraz farklılık gösterir. Veya optimizasyon uzunsa ve bu süre zarfında takas değiştiyse optimizasyon ve testlerdeki sonuçlar farklıdır.
Bu nedenle, aynı ayarlara sahip test sonuçları, takas değişiklikleri nedeniyle bazen biraz farklılık gösterir. Veya optimizasyon uzunsa ve bu süre zarfında takas değiştiyse optimizasyon ve testlerdeki sonuçlar farklıdır.
Soru şu ki, test cihazında sipariş sorunsuz bir şekilde değiştirilir, ancak demo hesabında bu değişiklik çalışmaz.
Stoploss değiştirildi. Testte stoploss cari fiyattan en az 1 puan olabilir ama demo hesapta spread + 6-8 puan daha uzaklıkta stop koysanız bile yapmanız gerekir.
MODE_STOPLEVEL=0, MODE_FREEZELEVEL=0. DC Alpari.
Lütfen bana değişikliği neden ve nasıl doğru bir şekilde yapacağımı söyleyin.
Soru şu ki, test cihazında sipariş sorunsuz bir şekilde değiştirilir, ancak demo hesabında bu değişiklik çalışmaz.
Stoploss değiştirildi. Testte stoploss cari fiyattan en az 1 puan olabilir ama demo hesapta spread + 6-8 puan daha uzaklıkta stop koysanız bile yapmanız gerekir.
MODE_STOPLEVEL=0, MODE_FREEZELEVEL=0. DC Alpari.
Lütfen bana değişikliği neden ve nasıl doğru bir şekilde yapacağımı söyleyin.
0, yüzer durma anlamına gelir. Test cihazında yayılma sabittir. 1 koyarsanız, her zaman 1 olacaktır. Ama gerçek hayatta yüzüyor.
MQL5.com web sitesine giriş yapmak için çerezlerin kullanımına izin vermelisiniz.
Lütfen tarayıcınızda gerekli ayarı etkinleştirin, aksi takdirde giriş yapamazsınız.
Hesabınıza giriş yaptınız. İki faktörlü kimlik doğrulama devre dışı bırakıldı. Yeniden kurup yeni bir QR kodu tarayın veya iki faktörlü kimlik doğrulama devre dışıyken devam edin.
Merhaba, 2013 yılından itibaren video eğitimlerini kullanarak MQL4 öğrenmeye başladım, videodaki kodu aynen yeniden yazıyorum, ihtiyacım olan başka bir videodan küçük değişiklikler ekliyorum, sonuç olarak 25 hata alıyorum. Bu hatalara bir çözüm aramaya çalıştım ama anladığım kadarıyla terminal yapısı değişti ve bunun sonucunda kod yazımında bazı değişiklikler oldu. Birisi kodu düzenlemeye yardımcı olursa veya en azından iyi bir tavsiyede bulunursa minnettar olurum, şimdiden teşekkürler.
Ve bu size nasıl yardımcı olacak? Bir dahaki sefere, hemen Freelance ile iletişime geçin
Merhaba, 2013 yılından itibaren video eğitimlerini kullanarak MQL4 öğrenmeye başladım, videodaki kodu aynen yeniden yazıyorum, ihtiyacım olan başka bir videodan küçük değişiklikler ekliyorum, sonuç olarak 25 hata alıyorum. Bu hatalara bir çözüm aramaya çalıştım ama anladığım kadarıyla terminal yapısı değişti ve bunun sonucunda kod yazımında bazı değişiklikler oldu. Birisi kodu düzenlemeye yardımcı olursa veya en azından iyi bir tavsiyede bulunursa minnettar olurum, şimdiden teşekkürler.
Değişiklikleri birer birer ekleyin ve hataları düzeltin - yavaş yavaş öğrenin. Bir dil öğrenmek istiyorsanız basit örneklerle başlayın.
Tünaydın! Lütfen gösterge kodunu anlamama yardım edin. Sıfır bir seviye var, buna bağlı olarak ilk seviyeyi doldurmanız gerekiyor. Ne yapmıyorum, ne çalışmıyor. İşte gösterge kodu:
Bana yardım et lütfen.
Bu konuda nasıl bir komut dosyası oluşturamam, işte sayfa https://www.mql5.com/ru/articles/1368
-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- --------------------------------
Grafikteki verileri bir *.csv dosyasına kaydetmek için bir komut dosyası yazıyoruz (uygulamanın s_ExportChartToCSV_v1.mq4 dosyası):
Komut dosyasını standart olmayan zaman dilimlerinin çizelgelerinde yürütürüz. Uzmanlar/dosyalar dizinindeki betiğin çalışmasının bir sonucu olarak, standart olmayan zaman çerçevesi verileriyle standart *.csv dosyaları alırız.
-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ------------------------------------- Eğer bir komut dosyası yazabilirseniz
şimdiden teşekkürler
Takas ne zamandan beri strateji test cihazında tahakkuk etmeye başladı?
Yoksa fark etmedim mi?
neden raporun HTML sürümüne dahil etmiyorsunuz?
Takas ne zamandan beri strateji test cihazında tahakkuk etmeye başladı?
Yoksa fark etmedim mi?
neden raporun HTML sürümüne dahil etmiyorsunuz?
Her zaman böyle olmuştur.
Bu nedenle, aynı ayarlara sahip test sonuçları, takas değişiklikleri nedeniyle bazen biraz farklılık gösterir. Veya optimizasyon uzunsa ve bu süre zarfında takas değiştiyse optimizasyon ve testlerdeki sonuçlar farklıdır.
Her zaman böyle olmuştur.
Bu nedenle, aynı ayarlara sahip test sonuçları, takas değişiklikleri nedeniyle bazen biraz farklılık gösterir. Veya optimizasyon uzunsa ve bu süre zarfında takas değiştiyse optimizasyon ve testlerdeki sonuçlar farklıdır.
hiç dikkat etmedi! Strateji test cihazında MT4'te takas olmadığını düşündüm.
Herkese iyi akşamlar!
Soru şu ki, test cihazında sipariş sorunsuz bir şekilde değiştirilir, ancak demo hesabında bu değişiklik çalışmaz.
Stoploss değiştirildi. Testte stoploss cari fiyattan en az 1 puan olabilir ama demo hesapta spread + 6-8 puan daha uzaklıkta stop koysanız bile yapmanız gerekir.
MODE_STOPLEVEL=0, MODE_FREEZELEVEL=0. DC Alpari.
Lütfen bana değişikliği neden ve nasıl doğru bir şekilde yapacağımı söyleyin.
Herkese iyi akşamlar!
Soru şu ki, test cihazında sipariş sorunsuz bir şekilde değiştirilir, ancak demo hesabında bu değişiklik çalışmaz.
Stoploss değiştirildi. Testte stoploss cari fiyattan en az 1 puan olabilir ama demo hesapta spread + 6-8 puan daha uzaklıkta stop koysanız bile yapmanız gerekir.
MODE_STOPLEVEL=0, MODE_FREEZELEVEL=0. DC Alpari.
Lütfen bana değişikliği neden ve nasıl doğru bir şekilde yapacağımı söyleyin.