"MQL5'te göstergeler nasıl çağrılır" makalesi için tartışma - sayfa 2

 

Bana göre dosyayı derlememe izin vermiyor.

Neler olduğuna dair bir fikriniz var mı bilmiyorum.

Teşekkürler,

Jordi

 
Büyük iş için teşekkürler!
 

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
 
evet... kendi göstergeni icat etmek ve onu robot koduna yerleştirmek, bu tutamaçları her seferinde kodlamaktan daha kolaydır ... can sıkıntısı