Uzman Danışmanlar: MarketPredictor - sayfa 2

 

İpuçları için teşekkürler, kod 5 gündür devam ediyor, herhangi bir işlem ayarlamama sorununu çözdüm, sadece küçük güncellemeler yapmak istiyorum :)

 

Yeni bir yineleme yapmanız gerekiyor

    // Alfa değerini volatiliteye göre ayarlayın (ATR)
    double atr = iATR(_Symbol, PERIOD_CURRENT, period); // ATR'yi hesaplayın
    if(atr > 0.0)
        alpha = atr * 0.1; // Alfa değerini volatilite ile orantılı olarak ayarlayın
    else
        alpha = inputAlpha; // ATR kullanılamıyorsa giriş değerine geri dönüş

bu kod ATR'yi doğru bir şekilde hesaplamayacaktır

https://www.mql5.com/tr/docs/indicators/iatr

Dönüş Değeri

Belirtilen bir teknik göstergenin tutamacını döndürür


Bir kod olan tutamacı döndürür ve ATR değerini döndürmez

Documentation on MQL5: Technical Indicators / iATR
Documentation on MQL5: Technical Indicators / iATR
  • www.mql5.com
The function returns the handle of the Average True Range indicator. It has only one buffer. Parameters symbol [in] The symbol name of the security...
 
1. Hata düzeltmeleri:
- FFT'de: Çift ve tek diziler için özyinelemeli FFT çağrısı, dizi boyutu ikinin bir derecesi değilse sonsuz özyinelemeye yol açabilir.
Dizi boyutunun iki dereceli olduğundan emin olmalıyız. Mevcut kodda bu kontrol edilmemektedir.
- CalculateFractalComponentFFT: fonksiyonunda, FFT kullanırız ancak N'nin iki dereceli olup olmadığını kontrol etmeyiz.
Ayrıca, FFT'den sonra, yalnızca ilk N/2 öğelerini kullanırız, bu doğrudur, ancak FFT kodunda birleştirme sırasında indekslemede bir hata vardır.
2. İyileştirmeler:
- ExecuteTrade fonksiyonunda: PositionSelect(_Symbol) kullanarak açık pozisyonu kontrol etmek tam olarak doğru değildir,
çünkü bu fonksiyon bir sembolde herhangi bir pozisyon varsa true döndürür, ancak o anda açık olması gerekmez.
Tüm pozisyonlar arasında bir döngü kullanmak ve sihirli numarayı ve sembolü kontrol etmek daha iyidir.
- Ayrıca, ExecuteTrade'de zaten açık bir pozisyon olup olmadığını kontrol etmiyoruz, bu nedenle birden fazla pozisyon açabiliriz.
Açılışı yalnızca bir pozisyonla sınırlamamız (veya pozisyonlarımızı tanımlamak için sihirli sayı kullanmamız) gerekir.
- OptimiseParameters: fonksiyonunda, movingAverage hesaplaması yerleşik iMA fonksiyonu ile değiştirilebilir.
- SimulatePrice fonksiyonunda: MathRand() kullanmak Monte Carlo için en iyisi olmayabilir, normal dağılım kullanmak daha iyidir