ダブルハルMAの組み合わせ判断閾値取引戦略


作成日: 2023-09-13 13:48:30 最終変更日: 2023-09-13 13:48:30
コピー: 1 クリック数: 585
1
フォロー
1617
フォロワー

この戦略は,双Hull移動平均と日K線を組み合わせて,多空条件の判断値を設定して取引する.また,リスク管理のためにストップ・ストップ・価格を設定する.

戦略の原則:

  1. 二重ハル移動平均を計算し,現在の値と前回の周期の大きさの関係を比較する.

  2. 日K線の閉盘価格変動率を計算し,多空判定値を設定する.

  3. 速線で慢線を貫通し,日変化率が値を超えると多めにする。速線の下で慢線を貫通し,日変化率が値を下回ると空にする。

  4. 固定ストップ・ストップ・価格を設定する. 価格がストップ・ストップに触れたときに積極的に平仓する.

  5. ポジションの最大開設数も設定できます.

この戦略の利点は

  1. 双HullMAは判断精度を高めます.日K線の変化率が先端方向を確認する.

  2. 値設定は,小幅の逆の価格の影響を受けないようにする.

  3. ストップ・ロスト・ストップは,利益を固定し,リスクをコントロールするのに役立ちます.

この戦略のリスクは

  1. 高すぎても低すぎても,取引機会が逃れることがあります. 慎重にテストしてください.

  2. 固定ストップ・ストップの価格は柔軟に調整できないので,不合理な設定のリスクがある.

  3. HullMAと日替わり率の両方に遅れがある.

要するに,この戦略は,二重指数判断とリスク管理の手段によって取引し,一定程度に安定性を高めることができる.しかし,パラメータ最適化の問題に注意を払い,最適な配置を探す必要があります.

ストラテジーソースコード
/*backtest
start: 2022-09-06 00:00:00
end: 2023-02-21 00:00:00
period: 5d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
//                                                        Hull_MA_cross & Daily_Candle_cross combination with TP$ & SL$ setting
//                                                              (new script reducing effect of repaint on results)
//
strategy("Decision Threshold", shorttitle="DT", overlay=true, default_qty_type=strategy.percent_of_equity, max_bars_back=720, default_qty_value=100, calc_on_order_fills= true, calc_on_every_tick=true, pyramiding=0)
keh=input(title="Double HullMA",defval=14, minval=1)
dt = input(defval=0.0010, title="Decision Threshold",  step=0.0001)
SL = input(defval=-50000.00, title="Stop Loss in $",  step=1)
TP = input(defval=100000.00, title="Target Point in $", step=1)
p=input(ohlc4)
ot=1
n2ma=2*wma(p,round(keh/2))
nma=wma(p,keh)
diff=n2ma-nma
sqn=round(sqrt(keh))
n2ma1=2*wma(p[1],round(keh/2))
nma1=wma(p[1],keh)
diff1=n2ma1-nma1
sqn1=round(sqrt(keh))
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
b=n1>n2?lime:red
c=n1>n2?green:red
d=n1>n2?red:green
a1=plot(n1,color=c)
a2=plot(n2,color=c)
plot(cross(n1, n2) ? n1 : na, style = circles, color=b, linewidth = 4)
plot(cross(n1, n2) ? n1 : na, style = line, color=d, linewidth = 4)
confidence=(security(syminfo.tickerid, 'D', p)-security(syminfo.tickerid, 'D', p[1]))/security(syminfo.tickerid, 'D', p[1])
closelong = n1<n2 and p<n2 and confidence<dt or strategy.openprofit<SL or strategy.openprofit>TP
if (closelong)
    strategy.close("Long")
closeshort = n1>n2 and p>n2 and confidence>dt or strategy.openprofit<SL or strategy.openprofit>TP
if (closeshort)
    strategy.close("Short")
longCondition = n1>n2 and strategy.opentrades<ot and confidence>dt and p>n2
if (longCondition)
    strategy.entry("Long",strategy.long)
shortCondition = n1<n2 and strategy.opentrades<ot and confidence<dt and p<n2 
if (shortCondition)
    strategy.entry("Short",strategy.short)