閉値比較ダブル移動平均クロスオーバー戦略は,比較的単純な定量的な取引戦略である.近年の7個のキャンドルの平均閉値と20個のキャンドルの平均閉値を計算する.短期移動平均が下から長期移動平均を横切ると,それはロングポジションをシグナルする.短期移動平均が長期移動平均を下回ると,それはショートポジションをシグナルする.これは戦略が市場の中期トレンドの曲線点を把握することを可能にする.
この戦略の主な論理は,近年の7本のキャンドルの平均閉店価格 (現在のキャンドルを除く) を短期移動平均値として,および20本のキャンドルの平均閉店価格 (近年の7本のキャンドルを除く) を長期移動平均値として計算することです.短期移動平均が下から長期移動平均を横切ると,市場は下落から上昇に回転し,ロングポジションをシグナル化します.短期移動平均が上から長期移動平均を下回転すると,市場は上昇から減少に回転し,ショートポジションをシグナル化します.
ロングシグナルでは,口座全資本を使用してロングポジションが開かれます.ショートシグナルでは,同じ金額を使用してショートポジションを開く前に既存のロングポジションを最初に閉じる.開いたポジションはそれぞれ20-25キャンドル保持されます.この期間中に,損失が発生した場合,ポジションの50%が損失を停止します.十分な利益が発生した場合,ポジションの50%が利益を得ます.
この単純な二重移動平均のクロスオーバー戦略の利点は以下の通りである.
戦略を踏まえた単純な傾向として,いくつかの潜在的なリスクにも直面しています.
これらのリスクに対処するための最適化は次のとおりです.
簡単な二重移動平均クロスオーバー戦略として,主な最適化は以下の通りである.
MA パラメータを最適化し,最良のパラメータのために異なる短期および長期 MA 組み合わせをテストする.
波動市場における誤った信号を避けるため,ボリューム,波動指数など他のフィルター指標を追加します.
ストップ・ロスの戦略を最適化し 利得戦略を確立し 最適な比率をテストする
異なる市場サイクルにおける有効性をテストし,保持期間を最適化します
機械学習アルゴリズムを追加し 信頼性を高めるため バックテストでパラメータを最適化します
概要すると,これは単純な二重移動平均クロスオーバー戦略であり,中期トレンドの転換点を決定するために異なる期間の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)