Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
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.
Переделать индюк например моментум, обозвав его чуть иначе, добавить внешнюю переменную 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.
В процессе познания MQL4, выяснил что, как минимум мой тесер не отдает информацию
с других ТФ. Вот код проверки, его можна на любой эксперт подвесить, у моего тестера
меняются показания только того ТФ на котором тестирую, а другие стоят на месте.
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.
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
Normal çalışma örneği https://www.mql5.com/en/code/9603Bir test cihazında mı?
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.
Вы что, проверяете этот код в режиме визуального тестирования? Почитайте статью Тестер в терминале 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...
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_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)));
}
Şimdiden teşekkürler!