この戦略は,二重移動平均クロスオーバーを計算することによって価格動向と取引機会を判断する.高速MAが遅いMAを超えると,ロングに行くための黄金十字とみなされる.高速MAが遅いMAを下回ると,ショートに行くための死亡十字とみなされる.同時に,誤った信号を避けるためにクロスオーバーの信頼性を判断するためにボリュームインジケーターを組み合わせる.
この戦略の基本原則は次のとおりです.
異なるパラメータを持つ移動平均の2つのグループを計算する. 1つのグループは価格変化に迅速に反応し,もう1つは比較的ゆっくり反応する. 速いMAが遅いMAを超えると,上昇傾向を示します. 速いMAが遅いMAを下回ると,下落傾向を示します.
MAが交差すると,ボリュームインジケーターの変化を確認する.ボリュームインジケーターも著しく突破した場合,クロスオーバー信号は信頼性がある.ボリュームに対応する突破がない場合は,偽信号である可能性があります.
クロスオーバーの方向とボリューム判断に基づいて,ロングまたはショートポジションを入力します. 特定の利益レベルに達するとポジションを閉じるために利益を得る基準を設定します.
この戦略は,価格動向を7期間のダブルMAクロスオーバーを用いて判断する.信号の信頼性を確認するためにボリューム指標を使用する.信頼できる信号を取得すると,SIGNALごとにロングまたはショートする.利益を得るために利益目標を設定する.
この戦略の主な利点は以下の通りです.
2つのMAを組み合わせてトレンド方向とボリュームフィルタを決定し 誤った信号や罠にはまらないようにします
ボランスが確認されると ポジションを取ると成功率が上がる
利益を引き出すメカニズムを持つこと 利益を時間内に引き出すこと 利益を返さないこと
この戦略の主なリスクは,
MAのクロスオーバー遅延は 最良の機会を逃す可能性があります.
ボリュームの偏差を判断するのは難しい. 確認のためにより多くの指標を追加することができます.
不適切なストップ・プロフィート設定は,取引を過剰にしたり,勝者を長時間保持したりする可能性があります.ストップ・プロフィートパラメータをテストし最適化する必要があります.
戦略は以下の側面から最適化できます.
価格変動に適したタイミングで対応できるように MA 期間を最適化する.
信号確認のためにMACD,KDなどのより多くの指標を追加し,ボリュームの誤った信号を避ける.
ダイナミックな利益を得るために ストップ,パーセンテージストップ,波動ストップなど より多くの利益を得るメカニズムを組み込むことです
ストップ・ロスのメカニズムを追加し,単一の取引損失額を制御します.
ポジションのサイズを最適化し,異なる市場環境に適応できるようにする.
結論として,この戦略の核心アイデアは,トレンドのためのダブルMAクロスオーバーとシグナル信頼性のためのボリュームフィルタを使用することです. これは安定し,実装が簡単です. パラメータ,シグナルフィルタリング,利益採取およびストップ損失のさらなる最適化は,実践的な取引のためにより信頼性と知性を高めることができます.
/*backtest start: 2022-12-19 00:00:00 end: 2023-12-25 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("ZendicatoR", overlay=true, calc_on_order_fills= true, calc_on_every_tick=true, default_qty_type=strategy.percent_of_equity, default_qty_value=15, pyramiding=0) dt = input(defval=0.0010, title="Decision Threshold", type=float, step=0.0001) keh=input(title="Double HullMA Cross",defval=7, minval=1) che1=input(title="MA 1",defval=34,minval=1) che2=input(title="MA 2",defval=144,minval=1) che3=input(title="MA 3",defval=377,minval=1) amnt=input(title="TP ($)",defval=4200,minval=1) wma1=wma(close,che1) wma2=wma(close,che2) wma3=wma(close,che3) sma1=sma(close,11) tms=10000000000000 A=request.security(syminfo.tickerid, 'D', close)*tms B=request.security(syminfo.tickerid, 'D', close[1])*tms C=A>B?green:red D=wma2>wma3?green:red plot(wma1,style=line,color=C,linewidth=4) p1=plot(wma2,style=line,color=D) p2=plot(wma3,style=line,color=D) fill(p1, p2, color=D, transp=75) n2ma=2*wma(close,round(keh/2)) nma=wma(close,keh) diff=n2ma-nma,sqn=round(sqrt(keh)) n2ma1=2*wma(close[2],round(keh/2)) nma1=wma(close[2],keh) diff1=n2ma1-nma1,sqn1=round(sqrt(keh)) n1=wma(diff,sqn)*tms n2=wma(diff1,sqn)*tms Q=n1>n2?blue:yellow plot(sma1,style=line,color=Q,linewidth=4) closelong = A*tms<B*tms and n2*tms>n1*tms and strategy.openprofit>amnt if (closelong) strategy.close("Long") closeshort = A*tms>B*tms and n1*tms>n2*tms and strategy.openprofit>amnt if (closeshort) strategy.close("Short") longCondition = A*tms>B*tms and n1*tms>n2*tms if (longCondition) strategy.entry("Long",strategy.long) shortCondition = A*tms<B*tms and n1*tms<n2*tms if (shortCondition) strategy.entry("Short",strategy.short)