複数の指標を組み合わせた適応傾向戦略

作者: リン・ハーンチャオチャン開催日:2023年12月19日 11:01:05
タグ:

img

概要

この戦略は,ダブルハル移動平均指標,ボリューム重度の移動平均指標,MACD指標,真の強度指数指標を組み合わせることで,トレンドを正確に判断します.それは市場の状況の変化に自動的に適応し,強力な適応性を備えています.

戦略原則

この戦略のコア指標は,2つのパラメータであるケフとテフによって制御されるダブルハル移動平均である.この2つのパラメータは,それぞれ速いラインとスローラインのサイクルを決定する.速いラインとスローラインによって形成された黄金十字と死十字は,現在のトレンドを判断する.

補助判断指標は,ボリューム重量移動平均 meh1です.価格が meh1より高いとき,それは上昇傾向です.価格が meh1より低いとき,それは下落傾向です.

もう1つの補助判断指標はMACDである.MACDを得るために,速い移動平均をスロー移動平均から減算し,その後MACDの移動平均を使用してシグナルラインを得る.MACDがシグナルラインよりも高いとき,それは上昇傾向である.

最終的な補助判断指標は,TSIであり,価格変動率を2倍に均等化することによって計算される.その絶対値の大きさは価格変化の勢いを表している.購入・販売条件では,TSIの信号線がエントリーと出路のタイミングを制御すると判断される.

これらの指標のシグナルを組み合わせることで,トレンドを正確に判断し,パラメータを自動的に調整して市場と同期することができます.

利点

  1. 主な判断指標としてダブル・ハル移動平均を他の複数の指標と組み合わせることで,判断の正確性を向上させ,誤った信号を減らすことができます.

  2. 市場への出入のタイミングを決定するために TSI指標を適用することで,リスクを制御できます.

  3. 多重調整可能なパラメータにより 市場の変化に自動的に適応できます

  4. 指標の組み合わせとパラメータの自己調整という考えが戦略を安定させ 継続的な高収益性をもたらします

リスク分析

  1. TSI指標がタイミングを決定するために使用されているが,アルゴリズムで使用される指標は依然としてトレンドタイプである.ショックと引き下げ市場が発生した場合,利益と損失の変動が増加する.

  2. 不適切なパラメータ設定は戦略の失敗を引き起こす可能性があります.パラメータは経験に基づいて合理的に設定する必要があります.

  3. 多数の指標を組み合わせることで計算の量は増加し,大量のデータストックや時間帯における誤差の可能性が増加します.データ範囲を制御する必要があります.

  4. 異常データによる干渉を防ぐために指標の計算効果を監視する必要がある.

最適化方向

  1. BOLLなどの他の補助指標は,信号をより正確で信頼性のあるものにするために試験することができます.

  2. 入出ロジックを最適化し,ストップ・ロスを設定し,利益条件を設定し,単一の利益と損失を制御する.

  3. 異なる品種に対するパラメータを訓練し最適化して,異なる品種に適したものにします.

  4. パラメータ自己調整モジュールを増やして,最近のトランザクション効果に基づいて戦略パラメータを自動的に調整します.

概要

この戦略は,複数の指標の利点を統合し,傾向の方向性を判断するために指標の組み合わせを使用する.リスクを制御しながら,判断の精度を向上させる.パラメータ最適化と論理最適化を通じて,戦略は市場の変化により適性化することができ,連続した損失を削減し,より大きな利益を得ることができます.この戦略は安定しており,株式,暗号通貨および他の品種に長期的に使用することができます.


/*backtest
start: 2023-11-18 00:00:00
end: 2023-12-18 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
//                                                    Quad-HullMA-cross & VWMA & MacD & TSI combination  <<<<< by SeaSide420 >>>>>>
strategy("MultiCross420", overlay=true, calc_on_order_fills= true, calc_on_every_tick=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, pyramiding=0)
keh=input(title="Double HullMA 1",defval=7, minval=1)
teh=input(title="Double HullMA 2",defval=14, minval=1)
meh=input(title="VWMA",defval=1, minval=1)
meh1=vwma(close,round(meh))
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)
n2=wma(diff1,sqn)
b=n1>n2?lime:red
c=n1>n2?green:red
n2ma3=2*wma(close,round(teh/2))
nma2=wma(close,teh)
diff2=n2ma3-nma2,sqn2=round(sqrt(teh))
n2ma4=2*wma(close[2],round(teh/2))
nma3=wma(close[2],teh)
diff3=n2ma4-nma3,sqn3=round(sqrt(teh))
n3=wma(diff2,sqn2)
n4=wma(diff3,sqn3)
fastLength = input(title="MacD fastLength", defval=7)
slowlength = input(title="MacD slowlength", defval=14)
MACDLength = input(title="MacD Length", defval=3)
MACD = ema(close, fastLength) - ema(close, slowlength)
aMACD = ema(MACD, MACDLength)
delta = MACD - aMACD
a1=plot(n1,color=c),a2=plot(n2,color=c)
plot(cross(n1, n2) ? n1 : na, style = cross, color=b, linewidth = 3)
a3=plot(n3,color=c),a4=plot(n4,color=c)
plot(cross(n3, n4) ? n1 : na, style = cross, color=b, linewidth = 3)
//a5=plot(meh1,color=c)
long = input(title="TSI Long Length",  defval=5)
short = input(title="TSI Short Length",  defval=3)
signal = input(title="TSI Signal Length",  defval=2)
linebuy = input(title="TSI Upper Line",  defval=4)
linesell = input(title="TSI Lower Line",  defval=-4)
price = close
double_smooth(src, long, short) =>
    fist_smooth = ema(src, long)
    ema(fist_smooth, short)
pc = change(price)
double_smoothed_pc = double_smooth(pc, long, short)
double_smoothed_abs_pc = double_smooth(abs(pc), long, short)
tsi_value = 100 * (double_smoothed_pc / double_smoothed_abs_pc)
closelong = n1<n2 and n3<n4 and n1>meh1
if (closelong)
    strategy.close("Long")
closeshort = n1>n2 and n3>n4 and n1<meh1
if (closeshort)
    strategy.close("Short") 
longCondition = strategy.opentrades<1 and n1>n2 and MACD>aMACD and n1<meh1 and n3>n4 and ema(tsi_value, signal)>linesell
if (longCondition)
    strategy.entry("Long",strategy.long)
shortCondition = strategy.opentrades<1  and n1<n2 and MACD<aMACD and n1>meh1 and n3<n4 and ema(tsi_value, signal)<linebuy
if (shortCondition)
    strategy.entry("Short",strategy.short)

もっと