
これは,複数の技術指標を用いた取引信号判断策である.海取引法の二重均線交差システム,重力移動平均,MACDとTSIの4つの主流技術指標を統合して,複数の確認取引策を形成する.この組み合わせは,偽信号を効果的にフィルターし,安定性を向上させる.
この戦略の核心となるのは,複数の技術指標の交叉組み合わせである.
海取引法の二重平均線交差は取引信号を生成する. 7日と14日の二重ハル移動平均をそれぞれ計算し,短期平均線を長期平均線に突破すると看板,下破すると下落する.
1日間の加重移動平均を計算し,重要な長期トレンドの判断指標として使用する.
MACD指標を計算し,信号線との金叉死叉を判断する。MACDは信号線より大きいときは看板,小さい時は下落。
TSI指標を計算して,それが超買線より高いか超売線より低いかを判断する.TSIが超買線より高いときは下落し,超売線より低いときは看板する.
入学には以下の条件を同時に満たす必要があります.
単一の技術指標によって生成される偽信号を効果的に回避し,安定性を向上させることができる.
複数の指標を組み合わせたこの戦略には以下の利点があります.
複数の確認により,偽の信号を効果的にフィルターし,誤った取引を回避します.
テクニカル・インディケーターは,様々なレベルの取引機会を捉えるため,短期,中期,長期をカバーします.
海取引法は実戦試験に耐えており,安定した収益を容易にする.
MACDは短期的な変化に敏感で,戦略のリアルタイム性を向上させる.
TSI指標は比較的滑らかで,過剰買い過剰販売を効果的に識別できる.
移動平均は長期トレンドの重要な指標であり,逆転取引を防止します.
この戦略は,複数の指標を組み合わせて,安定し,柔軟性があり,収益の余地があり,非常に優れた量化戦略です.
この戦略にはいくつかのリスクがあり,以下のような部分に重点を置いています.
多重指標は戦略の複雑さを高め,パラメータの設定と最適化の難しさが大きい.
戦略の安定性に影響を与える指標の違いがある.
テクニカル・インディケーターが偽信号を発する確率を完全に排除することはできません.
短期的な逆転の機会を逃し,急激な逆転の利回りの余地を得られない.
関連して,以下のような点でさらに最適化できます.
指標のパラメータの最適な組み合わせを探し,指標間の相関性を向上させる.
単発損失を抑えるための 損失防止メカニズムを増やす.
安定性をさらに高めるために,より多くの異なるタイプの指標を組み合わせて,異なる周期で
資金の一部を適当に確保し,反転技法を活用して競売を行う.
この戦略は,次のいくつかの点でさらに最適化できます.
パラメータ最適化 周期長,線数,超買超売区間などの指標のパラメータを最適化して最適なパラメータの組み合わせを見つけることができる.
止損メカニズムを増やす. 移動止損またはCLASSESなどの止損方法を適切に設定し,損失を制御する.
追加の指標を追加する KD,OBV,波動率などの他の指標を追加して,より多くの次元を構成するクロス検証を行うことができます.
機械学習と組み合わせて. 複数の技術指標をインプットとして,信号判断とパラメータ最適化などのニューラルネットワークを使用する.
適切な資金の保持を,ヘッジのために. 特定の反転ポジションを保持し,反転の利益を利用する.
この戦略は,海取引法,移動平均,MACDとTSIの4つの技術指標の組み合わせを使用することによって,安定性があり,柔軟性があり,実戦的な効果のある量化戦略を構築している.それは,短期および長期のトレンドを兼ね備えて,複数の指標のクロス検証が偽信号の確率を効果的に減らす.さらなるパラメータの最適化,止損機構の追加およびモデルの最適化により,より良い戦略効果を得ることができる.この戦略は実戦的に検証し,適用する価値がある.
/*backtest
start: 2023-12-08 00:00:00
end: 2024-01-07 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
// Quad-HullMA-cross & VWMA & MacD & TSI combination <<<<< by SeaSide420 >>>>>>
strategy("MultiCross", overlay=true)
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)