MT4 test cihazı diğer zaman dilimlerinden bilgi vermiyor - sayfa 4

 
Hindiyi yeniden yapın, örneğin momentum, biraz farklı bir şekilde adlandırın, TF = 15 harici bir değişken ekleyin, örneğin M1 verilerine güveniyoruz. Init'te gerekli çarpan katsayısı = 15'i tanımlarız. Her çubukta, bu çubuğun on beş dakikalık bir zaman dilimi için başlangıç olup olmadığını kontrol ederiz, üzerinde bu çubuk için göstergedeki momentum değerini bir kez hesaplar ve aynısını döndürürüz. sonraki 14 çubuk için değer. Dakikalarda boşluk olmaması veya her bir çubuğun zamanını kontrol ederek gösterge okumalarını biraz farklı okumak muhtemelen önemlidir. İstenilen çubuktaki değerin hesaplanması:
    
      j=coef*i;
      MomBuffer[j]=Close[j]* 100 /Close[j+MomPeriod*coef];
Geriye uygulamak kalıyor.
 

Sych писал(а) >>

ArrayCopyRates işlevini kullanmayı deneyin,


buna göre, iClose(Symbol(),tf,0) yerine arr1[0][4] yazmanız gerekir, - her şey net bir şekilde çalışır ve en önemlisi, bir büyüklük sırası daha hızlıdır. kopyalama yoktur, yalnızca yeniden yönlendirme vardır.

Ne yazık ki, sayı ArrayCopyRates() ile çalışmadı, yalnızca testin geçtiği TF,
Komşular sessiz!
Bir şekilde "ArrayCopyRates()" benzeri 9 dizi yapmak ve 9 dosyadaki tüm verileri oraya sürmek gerekiyor.
Teklifinizi ve saygın "avatara"yı birleştirmeniz gerekiyor, o zaman bir şeylerin işe yarayacağını görebilirsiniz.
Dosyalardan nasıl okunacağını kontrol edeceğim.

 
yuripk >> :
Переделать индюк например моментум, обозвав его чуть иначе, добавить внешнюю переменную TF = 15, считаем на данных M1 для примера. В Init определяем нужный множитель coef = 15. На каждом баре смотрим, является ли этот бар началом и для пятнадцатиминтного ТФ, на нём в индикаторе считаем значение моментума один раз для этого бара и при 14 последующих барах возвращаем это же значение. Важно наверное, чтобы минутки не имели пропусков, или несколько иначе считать показания индикатора, проверяя время каждого бара. Подсчёт значения на нужном баре:
Осталось реализовать.

Diğer bir normal seçenek de veriler geldikçe kendi barlarınızı yapmaktır, burada bir şey var ama şalgamınızı kaşımanız gerekiyor!
Teşekkür ederim.

 
vladv002 >> :
В процессе познания MQL4, выяснил что, как минимум мой тесер не отдает информацию
с других ТФ. Вот код проверки, его можна на любой эксперт подвесить, у моего тестера
меняются показания только того ТФ на котором тестирую, а другие стоят на месте.

Bu kodu görsel test modunda mı test ediyorsunuz? MetaTrader 4 terminalindeki Tester makalesini okuyun: Bilmeniz gerekenler
 
vladv002 >> :

Diğer bir normal seçenek de veriler geldikçe kendi barlarınızı yapmaktır, burada bir şey var ama şalgamınızı kaşımanız gerekiyor!
Teşekkür ederim.


Aynen öyle. Ben buna modelleme diyorum ;)

Ve her zaman onların doğruluğundan emin olacaksınız.

Ayrıca, standart olmayan TF'leri uygulayabilirsiniz. Örneğin M3... veya H8. H6 ilginç.

------

Test cihazını sadece bir dakika sürmeniz gerekecek.

 
vladv002 писал(а) >>

Diğer bir normal seçenek de veriler geldikçe kendi barlarınızı yapmaktır, burada bir şey var ama şalgamınızı kaşımanız gerekiyor!
Teşekkür ederim.



Normal çalışma örneği https://www.mql5.com/ru/code/9603
 
Vinin >> :


Normal çalışma örneği https://www.mql5.com/en/code/9603

Bir test cihazında mı?

 
avatara писал(а) >>

Bir test cihazında mı?


Normal gösterge, test cihazında da düzgün çalışıyor. Hem Çoklu Para Birimi hem de Çoklu Zaman Çerçevesi.

 
Rosh >> :
Вы что, проверяете этот код в режиме визуального тестирования? Почитайте статью Тестер в терминале MetaTrader 4: Это необходимо знать

Göstergenin geçmiş üzerindeki davranışını başka nasıl hızlı bir şekilde kontrol edebilirsiniz?

Örneğimde, dakikaların verileri doğru değil.

Görsel olmayan testlerde daha doğru olacaklar mı?

muhtemelen aptalım...

 
Vinin >> :


Normal gösterge, test cihazında da düzgün çalışıyor. Hem Çoklu Para Birimi hem de Çoklu Zaman Çerçevesi.

Lütfen kodu düzeltin. Sadece doğru verileri M1'den çıkarın.

#property indicator_separate_window
#property indicator_buffers 2
#property indicator_style1 0
#property indicator_color1 Orange
#property indicator_width1 2
#property indicator_style2 0
#property indicator_color2 BlueViolet
#property indicator_width2 2
extern bool Test=true;
//03/04/10
//SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 2);

//---- buffers
double DMA[];string PARA;int hFile,j=0,shift,dayshift;
double Mtimes[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()

{PARA=Symbol();
if (Test) hFile=FileOpen("Dt"+Symbol()+Period()+".csv",FILE_CSV |FILE_WRITE,";");
ArrayCopySeries(Mtimes,MODE_CLOSE,Symbol(),PERIOD_M1);
int error=GetLastError();
if(error==4066)
{
//---- делаем еще 2 попытки чтения
for(int i=0;i<2; i++)
{
Sleep(5000);
ArrayCopySeries(Mtimes,MODE_CLOSE,Symbol(),PERIOD_M1);
}
}
if (Test) FileWrite(hFile,"-Begin--",Mtimes[0]);

//---- indicators
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,DMA);
SetIndexShift(0,0);
SetIndexLabel(0,"inv");

return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
if (Test) FileClose(hFile);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{

//----
int counted_bars=IndicatorCounted();
int i,N;double Value;
N=Bars-counted_bars;

if(counted_bars<0) return(-1);
//---- last counted bar will be recounted

if (N==0) return(0);
j++;
if (Test){ FileWrite(hFile,j,"--1M15 ",StrTime(iTime(Symbol(),Period(),1)),iClose(PARA,0,1));
FileWrite(hFile,j,"--0M15 ",StrTime(iTime(Symbol(),Period(),0)),iClose(PARA,0,0));
FileWrite(hFile,j,"--0M1 ",StrTime(iTime(Symbol(),Period(),0)),iClose(PARA,1,0));
FileWrite(hFile,j,"--1001M15 ",StrTime(iTime(Symbol(),Period(),1000)),iClose(PARA,0,1001));
}
for (i=N-1; i>=0; i--)
{
Value=iClose(PARA,0,i);

// Print (i,"=",Value);
DMA[i]=Value;
}

return(0);
}
//+------------------------------------------------------------------+
string StrTime(datetime IT){
return(StringConcatenate(TimeYear(IT),".",TimeMonth(IT),".",TimeDay(IT)
, "-",TimeHour(IT),"^",TimeMinute(IT),"^",TimeSeconds(IT)));
}

m15 üzerinde test.
Şimdiden teşekkürler!
Neden: