閉じる価格比較 双向移動平均のクロスオーバー戦略

作者: リン・ハーンチャオチャン,日付: 2024-02-05 10:34:57
タグ:

img

概要

閉値比較ダブル移動平均クロスオーバー戦略は,比較的単純な定量的な取引戦略である.近年の7個のキャンドルの平均閉値と20個のキャンドルの平均閉値を計算する.短期移動平均が下から長期移動平均を横切ると,それはロングポジションをシグナルする.短期移動平均が長期移動平均を下回ると,それはショートポジションをシグナルする.これは戦略が市場の中期トレンドの曲線点を把握することを可能にする.

戦略の論理

この戦略の主な論理は,近年の7本のキャンドルの平均閉店価格 (現在のキャンドルを除く) を短期移動平均値として,および20本のキャンドルの平均閉店価格 (近年の7本のキャンドルを除く) を長期移動平均値として計算することです.短期移動平均が下から長期移動平均を横切ると,市場は下落から上昇に回転し,ロングポジションをシグナル化します.短期移動平均が上から長期移動平均を下回転すると,市場は上昇から減少に回転し,ショートポジションをシグナル化します.

ロングシグナルでは,口座全資本を使用してロングポジションが開かれます.ショートシグナルでは,同じ金額を使用してショートポジションを開く前に既存のロングポジションを最初に閉じる.開いたポジションはそれぞれ20-25キャンドル保持されます.この期間中に,損失が発生した場合,ポジションの50%が損失を停止します.十分な利益が発生した場合,ポジションの50%が利益を得ます.

利点分析

この単純な二重移動平均のクロスオーバー戦略の利点は以下の通りである.

  1. シンプルな論理で 分かりやすく実行できます
  2. 中期市場動向の転換点を決定するために,異なる期間の移動平均値の交差を用いる.これは広く使用される技術指標である.
  3. 市場騒音を効果的にフィルタリングし,中期トレンドを把握できる.
  4. 中長期取引に適しており,ポジション1つあたり20-25個のキャンドルホールディングと良い利益/損失比率がある.
  5. リスクをコントロールし 利益を確保するための ストップ・ロスト・メカニズムが組み込まれています

リスク分析

戦略を踏まえた単純な傾向として,いくつかの潜在的なリスクにも直面しています.

  1. 市場が整合状態に入るときの誤った信号や誤った信号の増加
  2. 保持期間中の価格ピークはストップロスを引き起こす可能性があります.
  3. 市場の真の逆転点を効果的に決定するのは難しいので,取引信号は遅れる可能性があります.

これらのリスクに対処するための最適化は次のとおりです.

  1. フィルターを追加し,誤った信号を除去するために,MAsが横断するときに価格が主要なサポート/レジスタンスレベルを突破するかどうかを確認します.
  2. 保持期間を調整し,損失を制御するために,各ポジションの平均保持時間を短縮します.
  3. 他の技術指標を追加して,実際の市場逆転点を決定します.

オプティマイゼーションの方向性

簡単な二重移動平均クロスオーバー戦略として,主な最適化は以下の通りである.

  1. MA パラメータを最適化し,最良のパラメータのために異なる短期および長期 MA 組み合わせをテストする.

  2. 波動市場における誤った信号を避けるため,ボリューム,波動指数など他のフィルター指標を追加します.

  3. ストップ・ロスの戦略を最適化し 利得戦略を確立し 最適な比率をテストする

  4. 異なる市場サイクルにおける有効性をテストし,保持期間を最適化します

  5. 機械学習アルゴリズムを追加し 信頼性を高めるため バックテストでパラメータを最適化します

結論

概要すると,これは単純な二重移動平均クロスオーバー戦略であり,中期トレンドの転換点を決定するために異なる期間のMAクロスオーバーを使用する.これは高実用性があり,操作が簡単である.しかし,真の市場逆転点を効果的に決定するにも限界がある.一貫したアルファのために異なる市場条件においてより堅牢にするために,フィルター,パラメータチューニング,機械学習などを追加する上でさらなる最適化が必要である.


/*backtest
start: 2024-01-05 00:00:00
end: 2024-02-04 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/
// © nrathi2211

//@version=5
strategy("Closing Prices", overlay=true)

//variables
closingB7 = ta.highest(close, 7)[7]
closingB14 = ta.highest(close, 7)[20]
highB14 = ta.highest(low, 50)[7]
capital = 50000

//functions
qty_find(float price) => capital / int(price)

profit_take() =>
    profit = strategy.opentrades.profit(strategy.opentrades - 1)
    profit*.95 

if(closingB7 < closingB14)
    if(ta.crossover(close, closingB7))
        strategy.entry("long_buy", strategy.long, qty_find(close))

    current_profit = strategy.opentrades.profit(strategy.opentrades - 1)
    if(current_profit < 0)
        strategy.close("Exit long_buy SL", "long_buy", qty_percent = 50)
    
    else if(current_profit < profit_take())
        strategy.close("Exit long_buy TP", "long_buy", qty_percent = 50)
    
    if(ta.crossunder(close, closingB7))
        strategy.exit("long_sell", from_entry = "long_buy", stop = closingB7)

plot(closingB7, "cl", color.green, 2)
//plot(closingB14, "cl", color.red, 2)
plot(highB14, "cl", color.purple, 2)


もっと