MetaTrader 5 Strateji Test Cihazında Test Sonuçlarının Analizi ve Optimizasyon - sayfa 8

 
herhangi biri strateji oluşturmama yardımcı olabilir mi?

her şeyi yaptığım gibi ama yine de hatayı düzeltemiyorum,
Hata: 'advanctradingapproch.mq5'
advanctradingapproch.mq5 (satır) 1 (Sütun) 1
göstergesi için tanımlanmış gösterge grafiği yok 0 0
';' - açık parantez bekleniyor advanctradingapproch.mq5 119 61
';' - açık parantez bekleniyor advanctradingapproch.mq5 125 63

işte kod:

//+------------------------------------------------------------------+
//|                                        advancetradingapproch.mq5 |
//|                                  Copyright 2023, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2023, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_chart_window

input int BuyArrow = 233;
input int SellArrow = 234;

#define  CHART_ARROW_FIRST  0
#define  CHART_ARROW_LAST   1
#define  MODE_MAIN 0
#define  MODE_SIGNAL 1

int BuySignalBar = 0;
int SellSignalBar = 0;
double lastDayClose;
double adxValue, rsiValue, macdMain, macdSignal, stochasticMain, stochasticSignal;
datetime Time[];

double emaBuffer[];
double adxBuffer[];
double rsiBuffer[];
double macdBuffer[];
double stochasticBuffer[];

int OnInit()
{
    emaBuffer[0] = iMA(_Symbol, PERIOD_D1, 8, 0, MODE_EMA, PRICE_CLOSE);
    emaBuffer[1] = iMA(_Symbol, PERIOD_D1, 16, 0, MODE_EMA, PRICE_CLOSE);

    adxBuffer[0] = iADX(_Symbol, PERIOD_D1, 14);
    rsiBuffer[0] = iRSI(_Symbol, PERIOD_D1, 14, PRICE_CLOSE);
    macdBuffer[0] = iMACD(_Symbol, PERIOD_D1, 12, 26, 9, PRICE_CLOSE);
    macdBuffer[1] = iMACD(_Symbol, PERIOD_D1, 12, 26, 9, PRICE_CLOSE);
    stochasticBuffer[0] = iStochastic(_Symbol, PERIOD_D1, 5, 3, 3, MODE_SMA, STO_LOWHIGH);
    stochasticBuffer[1] = iStochastic(_Symbol, PERIOD_D1, 5, 3, 3, MODE_SMA, STO_LOWHIGH);
    
    
    ChartSetInteger(0, CHART_ARROW_FIRST, BuyArrow);
    ChartSetInteger(0, CHART_ARROW_LAST, SellArrow);
    
    ArraySetAsSeries(emaBuffer, true);
    ArraySetAsSeries(adxBuffer, true);
    ArraySetAsSeries(rsiBuffer, true);
    ArraySetAsSeries(macdBuffer, true);
    ArraySetAsSeries(stochasticBuffer, true);

    IndicatorSetInteger(INDICATOR_DIGITS, _Digits);
    SetIndexBuffer(0, emaBuffer);
    SetIndexBuffer(1, adxBuffer);
    SetIndexBuffer(2, rsiBuffer);
    SetIndexBuffer(3, macdBuffer);
    SetIndexBuffer(4, stochasticBuffer);

     return(INIT_SUCCEEDED);
}

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
    double emaDiff = emaBuffer[0] - emaBuffer[1];
    bool isUptrend = emaDiff > 0;
    bool isDowntrend = emaDiff < 0;

    bool emaCrossoverBuy = (emaBuffer[0] > emaBuffer[1]) && (low[0] < emaBuffer[0]);
    bool emaCrossoverSell = (emaBuffer[0] < emaBuffer[1]) && (high[0] > emaBuffer[0]);

    double currentPrice = close[0];

    bool isHighAdx = adxBuffer[0] > 25;
    bool isOversoldRsi = rsiBuffer[0] < 30;
    bool isBullishMacd = macdBuffer[0] > macdBuffer[1];
    bool isBullishStochastic = (stochasticBuffer[0] > stochasticBuffer[1]) && (stochasticBuffer[0] < 80);

    
    if (isUptrend && emaCrossoverBuy) {
        // Generate Buy signal
    } else if (isDowntrend && emaCrossoverSell) {
        // Generate Sell signal
    }

    return(rates_total);
}

void OnTimer()
{
    // Implement timer-related functionality if needed
}

void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
{
    datetime chartTime[];
    double high[], low[];
    datetime time[];

    if(id == CHARTEVENT_OBJECT_CREATE) {
        if(ObjectFind(0, "BuySignalArrow") != -1)
            ObjectDelete(0, "BuySignalArrow");
        if(ObjectFind(0, "SellSignalArrow") != -1)
            ObjectDelete(0, "SellSignalArrow");

        if(BuySignalBar != -1 && BuySignalBar < ArraySize(high) && BuySignalBar < ArraySize(low)) {
           double buyPrice = high[BuySignalBar] + 10 * Point;
            ObjectCreate(0, "BuySignalArrow", OBJ_ARROW, 0, Time[BuySignalBar], buyPrice);
            ObjectSetInteger(0, "BuySignalArrow", OBJPROP_ARROWCODE, BuyArrow);
        }

        if(SellSignalBar != -1 && SellSignalBar < ArraySize(high) && SellSignalBar < ArraySize(low)) {
            double sellPrice = low[SellSignalBar] - 10 * Point;
            ObjectCreate(0, "SellSignalArrow", OBJ_ARROW, 0, Time[SellSignalBar], sellPrice);
            ObjectSetInteger(0, "SellSignalArrow", OBJPROP_ARROWCODE, SellArrow);
        }
    }
}


 
@Ezio Evan # herhangi biri strateji oluşturmama yardımcı olabilir mi? her şeyi yaptığım gibi ama yine de hatayı düzeltemiyorum,
Hata: 'advanctradingapproch.mq5'
advanctradingapproch.mq5 (satır) 1 (Sütun) 1
göstergesi için tanımlanmış gösterge grafiği yok 0 0
';' - açık parantez bekleniyor advanctradingapproch.mq5 119 61
';' - açık parantez bekleniyor advanctradingapproch.mq5 125 63

işte kod:

Lütfen ChatGPT (veya başka bir yapay zeka) tarafından oluşturulan kod için yardım istemeyin. MQL4 ve MQL5'i karıştırarak korkunç bir kod üretir. Lütfen bu tür talepler için Serbest bölümünü kullanın.

  • Genellikle kod yazamayan insanlar bu forumda ücretsiz yardım almazlar.
  • Denemelerinizi gösterir ve sorununuzu açıkça tanımlarsanız, büyük olasılıkla topluluktan bir yanıt alırsınız. Kod eklerken KOD düğmesini (Alt-S) kullanın.
  • MQL programlamayı öğrenmek için, konuyla ilgili mevcut birçok Makaleyi veya Kod Tab anındaki örnekleri araştırabilir ve çevrimiçi Dokümantasyona başvurabilirsiniz.
  • Kod yazmayı öğrenmek istemiyorsanız, bu sorun değil. Ücretsiz bir şey zaten mevcutsa Kod Tabanına veya ücretli ürünler için Pazara (bazen de ücretsiz) bakabilirsiniz. Ancak, Market ürünleri için tavsiye veya önerilere forumda izin verilmez, bu nedenle kendi araştırmanızı yapmanız gerek ecektir.
  • Son olarak, Freelance bölümünde bir programcı kiralama seçeneğiniz de vardır.
Trading applications for MetaTrader 5 to order
Trading applications for MetaTrader 5 to order
  • 2023.11.30
  • www.mql5.com
The largest freelance service with MQL5 application developers
 

Selam millet,

Büyük Strateji Optimizasyonlarının (birkaç yıllık M1 verilerinde 100.000'den fazla kombinasyon) daha hızlı tamamlanmasına yardımcı olacak bir bilgisayarın ideal bileşenlerinin neler olduğunu anlamaya çalışıyorum. Daha sonra önerilerinizi alıp, optimizasyon sonuçlarını daha hızlı geri almayı kolaylaştırmaya yardımcı olmak için istenen özelliklere (x miktarda vCPU, x miktarda bellek vb.) sahip bir AWS EC2 Örneği (özel sanal bilgisayar) oluşturabilmem için soruyorum.

Topluluğa yardımcı olacaksa, EC2 maliyetlerimin ve tamamlanma süremin sonuçlarını daha sonra paylaşacağım.

Düşünceli yanıtlarınız için şimdiden teşekkür ederim.

 

LÜTFEN MT5 EA'MDAKI BU SORUNU ÇÖZMEME YARDIM EDIN



2 Bollinger Bandı kullanan bir EA oluşturmaya çalışıyorum (biri 1 std ve diğeri 1.5 std ile)

ve bb'nin (1 std) altında bir kapanışla bir pozisyon giriyorum ve daha büyük bb'de bir sl ve orta çizgide bir tp ile piyasa fiyatı, oder'i otomatik olarak sl ve tp'yi bolllinger bandının en son değerine taşıyacak şekilde değiştirmek istiyorum ve orta çizgi, yani mevcut mum 0 endeksine ve önceki mum 1 endeksine sahiptir, bu nedenle bb değerleri endeks 1'de. bunun sl / tp'ye ulaşılana kadar gerçekleşmesini istiyorum. lütfen biri beni doğru yöne yönlendirebilir mi? Ben bir amatörüm ve bu EA şeylerine yeni başlıyorum. pozisyon biletini alabileceğimin ve bunu sl / tp'yi değiştirmek için kullanabileceğimin farkındayım, ancak bb'den 2 değeri, ilk tp / sl ve her mumla değiştirilmiş sl / tp'yi çıkarmakta zorlanıyorum. değerleri ibands işlevinden alabilir ve değerleri çıkarmak için tampon kopyalama işlevini kullanabilirim, ancak bunu yalnızca ilk sl / tp için yapmayı başarıyorum, yuvarlanan sl / tp için değerleri nasıl çıkarabilirim, lütfen bana yardım edin, yardımınız için teşekkür ederim, takdir edin.

Neden: