ストキャスティックスクロスオーバー取引戦略

作者: リン・ハーンチャオチャン, 日付: 2023-09-20 17:05:17
タグ:

概要

この戦略は,K線とD線間のストキャスティッククロスオーバーを使用して,典型的なストキャスティック・トレード戦略である取引信号を生成します.

戦略の論理

  1. ストキャスティックKとD線を計算します.

  2. D線上のK線交差が買い信号を生成します

  3. D線の下のK線クロスオーバーは 売り信号を生成します

  4. バックテストの日付範囲を設定して 戦略の有効性をテストできます

  5. シンプルで明確なルールで ストカスティック・クロスオーバーを取引します

利点

  1. ストキャストは過買い・過売値に敏感です

  2. K線とD線は簡単な取引信号を形成します

  3. バックテストは戦略の実行を検証します

  4. ストカスティックは計算し実装しやすい.

  5. 簡潔なコードで 開発が容易です

リスク

  1. クロスオーバーは 偽信号を生成する可能性があります

  2. ストップ・ロストも 利益もありません

  3. 傾向や範囲を区別できない

  4. バックテストは前向きな偏見を伴います

  5. 実際の取引業績はバックテストと異なる場合があります.

強化

  1. テストパラメータを最適値にします

  2. 追加の検証のために傾向フィルターを追加します.

  3. ストップ・ロスト・アンド・テイク・プロフィート・メカニズムを組み込む

  4. 信号の確認のために他の要素を組み込む.

  5. バックテストデータを処理してバイアスを排除します

  6. 紙の取引は リアルタイムの取引のパラメータを最適化します

結論

この戦略は,シンプルなストキャスティッククロスオーバーで取引し,実装が簡単ですが,安定性のために改良が必要です.パラメータチューニング,リスクコントロールなどを通じてそれを強化することで,堅牢な量子取引システムに変えることができます.


/*backtest
start: 2023-08-20 00:00:00
end: 2023-09-19 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © utanico

//@version=4
strategy(title="Stochastic", overlay=true, shorttitle="Stoch")
periodK = input(35, title="K", minval=1)
periodD = input(21, title="D", minval=1)
smoothK = input(21, title="Smooth", minval=1)
startYear = input(type=input.integer, title = "開始年", defval = 2020)
startMonth = input(type=input.integer, title = "開始月", defval = 1)
startDay = input(type=input.integer, title = "開始日", defval = 1)
endYear = input(type=input.integer, title = "終了年", defval = 2030)
endMonth = input(type=input.integer, title = "終了月", defval = 12)
endDay = input(type=input.integer, title = "終了日", defval = 31)

//開始日時
test_start = timestamp(startYear, startMonth, startDay, 00, 00)
//終了日時
test_end   = timestamp(endYear, endMonth, endDay, 00, 00)
//テスト期間の指定
is_test = true

k = sma(stoch(close, high, low, periodK), smoothK)
d = sma(k, periodD)

if (is_test)
    if (k > d)
        strategy.entry("Stoch_LE", strategy.long, comment="Stoch_LE")
    //if (strategy.opentrades > 0 and k < d)
        //strategy.close("Stoch_LE",comment="CloseLONG")
    if (k < d)
        strategy.entry("Stoch_SE", strategy.short, comment="Stoch_SE")
    //if (strategy.opentrades < 0 and k > d)
        //strategy.close("Stoch_SE",comment="CloseShort")

もっと