MetaTrader 5のストラテジーテスターにおけるテスト結果の分析と最適化 - ページ 8

 
Error : 'advanctradingapproch.mq5' advanctradingapproch.mq5 (行) 1 (列) 1
インジケータに対してインジケータプロットが定義されていない 0 0
';' - 開括弧の予想値 advanctradingapproch.mq5 119 61
';' - オープン括弧 expected advanctradingapproch.mq5 125 63

ここにコードがあります:

//+------------------------------------------------------------------+
//|                                        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 #
Error : 'advanctradingapproch.mq5'
advanctradingapproch.mq5 (行) 1 (列) 1
インジケータに対してインジケータプロットが定義されていない 0 0
ー';' - 開括弧がー 119 61
ー予想される advanctradingapproch.mq5 125 63

ードはー

ChatGPT(ーあるいはー他のーA.I. ー生成されたコードのーコードーにーにーにーMQL4とMQL5を混ぜてひどいコードを生成します。そのような依頼はフリーランスセクションを ご利用ください。

  • 通常、コードを書けない人はこのフォーラムで無料のヘルプを受けることはありません。
  • If you show your attempts and describe your problem clearly, you will most probably receive an answer from the community.コードを挿入する際は、 CODEボタン(Alt-S)を使用してください。
  • ーMQLプログラミングをーについてーMQLプログラミングをー学ぶにはー MQLプログラミングをー学ぶにはーMQLプログラミングをー学ぶにはー MQLプログラミングをー学ぶにはー MQLプログラミングをー学ぶーMQLプログラミングをー学ぶー
  • コードを学びたくない場合でも問題ありません。ームページ のームページはームページはームページのームページのームページのームページのームページのームページのームページのームページのむこうのむこうにむむむこうむこう ーム ではムーブメントにーム ーブメントではームーブメントをームーブメントをームーブメントがームーブメントをむいてむむのむのむらのむのむすび
  • ー最後にー最後にーーーーーーーフリーランスーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
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
 

やあ、みんな、

私は、大規模なストラテジー最適化(複数年のM1データにわたる100,000以上の組み合わせ)をより迅速に完了するためのコンピュータの理想的なコンポーネントを理解したいと考えています。皆さんの推奨を参考に、AWSのEC2インスタンス(カスタム仮想コンピュータ)を希望するスペック(vCPU x数、メモリ x数など)で作成し、最適化結果を より早く得るための効率化を図りたいと考えています。

もしそれがコミュニティの役に立つのであれば、私のEC2コストと完了までの時間の結果を後で共有します。

ご丁寧な回答をありがとうございました。

 

私のMT5 EAでこの問題を解決するのを手伝ってください。



私は2本のボリンジャーバンド(1本の標準と1.5本の標準)を利用するEAを作成しようとしています。

私はボリンジャーバンド(1 std)の下の終値と、大きい方のボリンジャーバンドにsl、真ん中のラインにtpを持つ相場でポジションをエントリーします。ibands関数から値を取得し、コピーバッファ関数を使用して値を抽出することができますが、私は最初のsl/tpのためにそうすることに成功しているだけで、どのように私はローリングsl/tpの値を抽出することができます。

理由: