記事「汎用MLP近似器に基づくエキスパートアドバイザー」についてのディスカッション - ページ 2

 
Eric Ruvalcaba #:

この記事と洞察をシェアしてくれて本当にありがとう。素晴らしいアイデアです。私はいくつかの独立したポジション処理を実装し、ヘッジ口座(私のブローカー)で動作するようにしました。

あなたは最高です。

最高です!

 

親愛なる作者様、TargetFunction()のコードを何度か読み直しましたが、いくつか間違いがあるようです。

1.ポジションの利益を計算するとき、利益の二重合計をしています。

        if (!truTradeTime [h]) {
            if (posType != 0) { // オープンポジションがある場合
                posClPrice = rates [h].open; // バーの始値でクローズ
                profit = (posClPrice - posOpPrice) * signal - 0.00003; // 委員会

                if (profit > 0.0) allProfit += profit;
                else              allLoss   += -profit;

                if (posType == 1) buys++;
                else              sells++;

                allProfit += profit;
                posType = 0; // 位置をリセットする
            }
            continue; // 非取引時間をスキップする
        }

        if ((posType == 1 && signal == -1) || (posType == -1 && signal == 1)) {
            posClPrice = rates [h].open; // 現在のバーの始値でクローズする。
            profit = (posClPrice - posOpPrice) * signal - 0.00003; // 利益の計算

            // 損益計算
            if (profit > 0.0) allProfit += profit;
            else              allLoss   += -profit;

            // 取引に関する統計
            if (posType == 1) buys++;
            else              sells++;

            allProfit += profit;
            posType = 0; // ポジションクローズ
        }


2.適応指数を計算する際、コウ係数は使用されません。
double ko = 1.0;
  if (sells == 0 || buys == 0) return -DBL_MAX;
  if (sells / buys > 1.5 || buys / sells > 1.5) ko = 0.001;

  return (allProfit / (allLoss + DBL_EPSILON)) * dealsNumb;
 
John_Freeman #:

親愛なる作者様、TargetFunction()のコードを何度か読み直しましたが、いくつか間違いがあるようです。

1.ポジションの利益を計算するとき、利益の二重合計をしています。


2.適応指数を計算する際、コウ係数を使用しない。

1.はい、その通りです。両方のコードブロックの最後の行を削除してください。
allProfit += profit;

を削除してください:

f (!truTradeTime [h]) {
            if (posType != 0) { // オープンポジションがある場合
                posClPrice = rates [h].open; // バーの始値でクローズ
                profit = (posClPrice - posOpPrice) * signal - 0.00003; // 委員会

                if (profit > 0.0) allProfit += profit;
                else              allLoss   += -profit;

                if (posType == 1) buys++;
                else              sells++;

                //allProfit += profit;
                posType = 0; // 位置をリセットする
            }
            continue; // 非取引時間をスキップする
        }

        if ((posType == 1 && signal == -1) || (posType == -1 && signal == 1)) {
            posClPrice = rates [h].open; // 現在のバーの始値でクローズする。
            profit = (posClPrice - posOpPrice) * signal - 0.00003; // 利益の計算

            // 損益計算
            if (profit > 0.0) allProfit += profit;
            else              allLoss   += -profit;

            // 取引に関する統計
            if (posType == 1) buys++;
            else              sells++;

            //allProfit += profit;
            posType = 0; // ポジションクローズ
        }


2.はい、koは使用しません。