MACD列の色と線形回帰に基づく高頻度ヘッジ戦略


作成日: 2023-10-27 10:42:54 最終変更日: 2023-10-27 10:42:54
コピー: 0 クリック数: 871
1
フォロー
1617
フォロワー

MACD列の色と線形回帰に基づく高頻度ヘッジ戦略

概要

この戦略は,MACD柱色と線形回帰指標を融合し,巧妙な組み合わせによって高頻度の反転取引を実現し,特にショートライン引とヘッジに適しており,典型的な市場中立戦略である.

戦略原則

この戦略は以下の部分から構成されています.

  1. MACD柱の色がトレンド判断指標である。MACD柱の色が緑であるときは,上昇傾向にあることを示し,空札をしない.MACD柱の色が赤であるときは,下降傾向にあることを示し,空札をしない。

  2. 線形回帰は,重要な取引信号指標である.価格が下から線形回帰するとき,多めに;価格が上から下から線形回帰したとき,空いてください.

  3. PACチャネルは,高,低,閉店価格のEMAで構成され,線形回帰の方向を判断するために使用される.線形回帰の方向がチャネル内のトレンドと一致する場合にのみ取引シグナルが生成されます.

  4. EMA89は,価格が再びこの線を横切るとき,平仓のストップとなるストップラインである.

取引信号の生成ロジックは次のとおりです.

マルチヘッド信号: 線形回帰上下軌道を通過PACチャネル 線形回帰上下傾向 MACD柱の色が赤でない 空頭シグナル:PACチャネルを横切る線形回帰下方と線形回帰下方トレンドとMACD柱の色が緑ではない

ストップ・ロズ・アウト・シグナル:価格を下げてEMA89を穿戴する

この戦略は,トレンド判断と重要な価格レベルを組み合わせて,高頻度のヘッジ取引を実現します.

優位分析

  1. MACDの柱の色を使って大トレンドを判断し,逆向きの取引を避ける.

  2. 線形回帰は滑らかであり,部分的なノイズをフィルターすることができる.

  3. EMAが形成した通路は,多空方向を明確に定義している.

  4. ストップラインの設定は合理的で,最大利益の保証である.

  5. 取引頻度が高いため,プログラムによる取引の高周波戦略に適しています.

  6. 金融危機の危機を回避するために,

リスク分析

  1. 線形回帰と通路指標は,一定のパラメータ最適化が必要で,そうでなければ失効する可能性があります.

  2. 大規模な震動の際の停止損失は,より頻繁に引き起こされる可能性がある. 適切な緩解の範囲を緩めることができる.

  3. 取引数が多い場合,手数料の影響に注意してください.

  4. MACDは後退性があり,短期トレンドの逆転を逃す可能性があります.

  5. EMAチャネルは,市場の変化に対応するために,常に最適化する必要があります.

最適化の方向

  1. 線形回帰と通路のパラメータを調整し,指標を異なる品種特性に合わせた.

  2. ストップ・ローズ幅を緩和し,ストップ・アップ比が 1 よりも大きいことを確認します.

  3. MACDパラメータを最適化して,より多くの短期信号を捕捉できるようにする.

  4. ブリン線のような線形回帰を代替する他の指標を試してみる.

  5. ポジション管理を強化し,一方的な損失を防止する.

  6. RSIなどの指標と組み合わせた部分的な取引シグナルをフィルターします.

要約する

この戦略は,複数の技術指標を総合的に使用して,高周波のヘッジ取引を実現する.その優点は,短期的な反転を捉えること,リスク管理が合理的で,市場の揺れ期に非常に適している.同時に,特定のパラメータの最適化や改善に注意する必要があり,過適合が起こらないようにする.適切に管理すれば,非常に強力な実戦的な高周波戦略になることができる.

ストラテジーソースコード
/*backtest
start: 2022-10-20 00:00:00
end: 2023-10-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
// strategy("Sonic R + Linear Reg + Kumo Cloud + Barcolor MACD", overlay=true,default_qty_value=10000,initial_capital=200,currency=currency.USD, pyramiding=1)
EMA = input(defval=89, title="EMA Signal")
HiLoLen     = input(34, minval=2,title="High Low channel Length")
pacC        = ema(close,HiLoLen)
pacL        = ema(low,HiLoLen)
pacH        = ema(high,HiLoLen)
DODGERBLUE = #1E90FFFF
// Plot the Price Action Channel (PAC) base on EMA high,low and close//
L=plot(pacL, color=DODGERBLUE, linewidth=1, title="High PAC EMA",transp=90)
H=plot(pacH, color=DODGERBLUE, linewidth=1, title="Low PAC EMA",transp=90)
C=plot(pacC, color=DODGERBLUE, linewidth=2, title="Close PAC EMA",transp=80)
//Moving Average//
signalMA =ema(close,EMA)
plot(signalMA,title="EMA Signal",color=black,linewidth=3,style=line)
linereg = linreg(close, EMA, 0)
plot(linereg, color = orange, title = "Linear Regression Curve", style = line, linewidth = 1)
//////ICHIMOKU/////////
conversionPeriods = input(9),
basePeriods = input(26, minval=1, title="Base Line")
laggingSpan2Periods = input(52, minval=1, title="Lagging Span"),
displacement = input(26, minval=1)
donchian(len) => avg(lowest(len), highest(len))
conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = avg(conversionLine, baseLine) 
leadLine2 = donchian(laggingSpan2Periods-1)
p1 = plot(leadLine1, offset = displacement-1, color=gray,title="Senkou span A", transp=90)
p2 = plot(leadLine2, offset = displacement-1, color=gray, title="Senkou span B", transp=90)
fill(p1, p2, color = leadLine1 > leadLine2 ? green : red, title="Kumo Cloud")
///////////////// MACD BARCOLOR /////////////////////
fastLength = input(12)
slowlength = input(26)
MACDLength = input(9)
MACD = ema(close, fastLength) - ema(close, slowlength)
aMACD = ema(MACD, MACDLength)
delta = MACD - aMACD
hisup= iff(delta>delta[1] and delta>0, 1,
	     iff(delta<delta[1], -1, nz(hisup[1], 0)))
hisdown = iff(delta<delta[1] and delta<0, 1,
	     iff(delta>delta[1], -1, nz(hisdown[1], 0)))
barcolor(hisup==1 and MACD>0 ? lime: hisdown==1 and MACD<0 ? red : blue )
///////////// SIGNAL ///////////////
conbuy = iff(crossover(linereg,pacL) and rising(linereg,5), 1,
	     iff(crossover(linereg,pacH) or (crossunder(linereg,pacL) and pacL<signalMA), -1, nz(conbuy[1], 0)))
consell = iff(crossunder(linereg,pacH) and falling(linereg,5), 1,
	     iff(crossunder(linereg,pacL) or (crossover(linereg,pacH) and pacH>signalMA), -1, nz(consell[1], 0)))
golong= conbuy==1 and close>open and open<pacH and close>linereg and hisdown!=1
goshort= consell==1 and close<open and open>pacL and close<linereg and hisup!=1
if(golong)
    strategy.entry("Buy",strategy.long)
if(goshort)
    strategy.entry("Sell",strategy.short)
closelong= conbuy==-1
closeshort=consell==-1
if(closelong)
    strategy.close("Buy")
if(closeshort)
    strategy.close("Sell")
 ////////////// TP and SL//.
//SL = input(defval=200.00, title="Stop Loss Point", type=float, step=1)
//rr= input(defval=0.1,title="Reward/Risk",type=float)
//useTPandSL = input(defval = false, title = "Use exit order strategy?")
//Stop = SL
//Take=SL*rr
//Q = 100
//if(useTPandSL)
//    strategy.exit("Out Long", "Buy", qty_percent=Q, profit= Take, loss=Stop)
//    strategy.exit("Out Short", "Sell", qty_percent=Q, profit= Take, loss=Stop)