Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım 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
Bana göre dosyayı derlememe izin vermiyor.
Neler olduğuna dair bir fikriniz var mı bilmiyorum.
Teşekkürler,
Jordi
Teşekkürler!
Aşağıda, etrafta oynarken bir araya getirdiğim basit bir örnek var.
Eğer yanlışsa lütfen beni düzeltin, ben de düzelteyim.
Garip bulduğum şey, değerlerin grafikteki basit bir hareketli ortalamayla eşleşmiyor gibi görünmesi.
################### Bir komut dosyasında
int period = 21; // 21 barlık hareketli ortalama
int sampleSize = 100; //Bu, almak istediğiniz veri çubuğu sayısıdır
int handle = iCustom(Symbol(),0, "Examples\\Custom Moving Average",
dönem,// Dönem
0, // Ofset
MODE_SMA, // Hesaplama yöntemi
PRICE_CLOSE // Kapanış fiyatları üzerinden hesaplama
);
void OnTick()
{
// Bu, hareketli ortalamaların içine kopyalanacağı dizidir.
// Buradaki her öğe bir hareketli ortalama değerdir
// Bu dizideki ilk öğe (0 konumundaki öğe) en son öğedir
// Son öğe dizideki son öğedir ArraySize() - 1
double movingAverageValues[];
ArraySetAsSeries(movingAverageValues, true);
if (CopyBuffer(handle,0,0,sampleSize,movingAverageValues) < 0){Print("CopyBufferMA1 error =",GetLastError());}
double currentMovingAverage = movingAverageValues[0];
double earliestMovingAverage = movingAverageValues[ArraySize(movingAverageValues) - 1];
################################# Bir EA'da (NOT: OnInit ve OnTick)
int OnInit(){
int period = 21; // 21 barlık hareketli ortalama
int sampleSize = 100; //Bu, almak istediğiniz veri çubuğu sayısıdır
int handle = iCustom(Symbol(),0, "Examples\\Custom Moving Average",
period, // Period
0, // Ofset
MODE_SMA, // Hesaplama yöntemi
PRICE_CLOSE // Kapanış fiyatları üzerinden hesaplama
);
}
OnTick()
{
// Bu, hareketli ortalamaların içine kopyalanacağı dizidir.
// Buradaki her öğe bir hareketli ortalama değerdir
// Bu dizideki ilk öğe (0 konumundaki öğe) en son öğedir
// Son öğe dizideki son öğedir ArraySize() - 1
double movingAverageValues[];
ArraySetAsSeries(movingAverageValues, true);
if (CopyBuffer(handle,0,0,sampleSize,movingAverageValues) < 0){Print("CopyBufferMA1 error =",GetLastError());}
double currentMovingAverage = movingAverageValues[0];
double earliestMovingAverage = movingAverageValues[ArraySize(movingAverageValues) - 1];
}
Harika bir makale