トレンドプルバック微調整戦略


作成日: 2023-10-13 15:49:29 最終変更日: 2023-10-13 15:49:29
コピー: 1 クリック数: 932
1
フォロー
1702
フォロワー

概要

この戦略は,トレンド中の小さな逆転を捕捉し,逆転の終わりに多額のポジションを開き,利益を得るためのものです.これは,EMA平均線,MACD指数,RSI指数などの技術指標を総合的に使用して,トレンドと逆転の終了時刻を判断し,ATR指数を使用してストップ・ロスト価格を設定します.

原則

この戦略は,現在のトレンドの方向と強さを判断するために,まずEMA平均線,MACD指数,およびRSI指数を計算します.

3つのEMA平均線 ((短期21周期,中期50周期,長期200周期) を用いて,短期平均線に中長い2つの線を穿越すると,上昇傾向と判断する.

MACD指数は,トレンドの強さを判断し,MACD線またはhisto柱の0軸を横切ると,上昇傾向が強くなると考えます.

RSI指標は,過熱と過売りを判断し,RSI値が50を超えると,判断回調は終了する可能性があります.

特定の買い戻しポイントを判断するために,SuperTrendの指数を使用します.SuperTrendが下から上へと逆転すると,買い信号が生成されます.

最後に,ATR指数に基づいて撤回ストップと利益ストップの価格を設定します.

利点

  • 複数の指標の組み合わせで判断し,取引シグナルをより信頼性のあるものにする.
  • 流行の短線を捉え,高い確率で勝てる.
  • 危険を効果的に制御する止損防止機構を設定する.

リスク

  • 返済の時間が長くなり,損失が拡大する可能性があります.
  • 複数の指標の組み合わせ,パラメータの設定は複雑で,繰り返しテスト・最適化が必要である.
  • ストップ・ロスの設定が緩やかすぎると,損失は拡大する可能性があります.

リスク管理策:

  • パラメータを最適化して,指標の順番を確実に使用する.
  • ストップポイントを適正に調整して,過大損失を防ぐ.
  • 返済時間が長い株は避けましょう

最適化の方向

  • 異なるパラメータの組み合わせをテストして,指標の最適な状態値を探す.
  • 株の日中の変動を考慮して,ストップ・ロスの設定を調整する.
  • 価格指標を追加し,供給不足を回避する.

要約する

この戦略は,複数の技術指標を総合的に使って,トレンドと逆転を判断し,強力な信頼性を持っています. リスクは,厳格な止損機構によって制御され,取り戻し処分は間に合わせます. 継続的にパラメータと株式プールを調整することで,より良いリターンを得ることができます.

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

//@version=5
strategy(title="pullb", overlay = true, initial_capital = 10000, default_qty_value = 100, default_qty_type = strategy.percent_of_equity)

//variables

///emas var
ema_src = input.source(close, "EMA Source")
ema_1 = input.int(21, 'EMA 1 len')
ema_2 = input(50, 'EMA 2 len')
ema_3 = input(200, 'EMA 3 len')

///macd var
mac_src = input.source(close, "MACD Source")
mac_1 = input.int(12, 'MACD Fast')
mac_2 = input.int(26, 'MACD Signal')
mac_3 = input.int(9, 'MACD Histogram')

///rsi var
rsi_src = input.source(close, "RSI Source")
rsi_len = input.int(14, 'RSI Len')

///stoch var
smoothK = input.int(3, "K", minval=1)
smoothD = input.int(3, "D", minval=1)
lengthRSI = input.int(14, "RSI Length", minval=1)
lengthStoch = input.int(14, "Stochastic Length", minval=1)
stoch_src = input(close, title="RSI Source Stoch")

//usage variables
ema_b = input.bool(true, "Use EMA Filter")
rsi_b = input.bool(true, "Use RSI Filter")
macd_b = input.bool(true, "Use MACD Filter")
//stoch_b = input(title="Use STOCH Filter", type=bool, defval=true)

//emaas
ema1 = ta.ema(ema_src, ema_1)
ema2 = ta.ema(ema_src, ema_2)
ema3 = ta.ema(ema_src, ema_3)

//macd
[macdLine, signalLine, histLine] = ta.macd(mac_src, mac_1, mac_2, mac_3)

//rsi
rsi = ta.rsi(rsi_src, rsi_len)

//stoch
rsi1 = ta.rsi(stoch_src, lengthRSI)
k = ta.sma(ta.stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = ta.sma(k, smoothD)

//supertrend
Periods = input.int(14, "ATR Period")
src_st = input.source(close, "Supertrend Source")
Multiplier = input.float(2.0 , "ATR Multiplier")
changeATR= input.bool(true, "Change ATR Calculation Method ?")
showsignals = input.bool(true, "Show Buy/Sell Signals ?")
highlighting = input.bool(true, "Highlighter On/Off ?")
atr2 = ta.sma(ta.tr, Periods)
atr3= changeATR ? ta.atr(Periods) : atr2
up=src_st-(Multiplier*atr3)
up1 = nz(up[1],up)
up := close[1] > up1 ? math.max(up,up1) : up
dn=src_st+(Multiplier*atr3)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? math.min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
buySignal = trend == 1 and trend[1] == -1
sellSignal = trend == -1 and trend[1] == 1

//conditions
///buy
rsi_cond_b = if rsi_b
    rsi >= 50
else 
    true

macd_cond_b = if macd_b
    (histLine >= 0 or histLine < histLine[1])
else
    true
ema_cond_b = if ema_b
    (ema1 > ema2 and ema2 > ema3)
else 
    true

look_for = input.int(5, "Bars from cross to signal")

stoch_signal_sum = 0
for i = 0 to (look_for)
    if k[i] > d[i] and k[i + 1] < d[i + 1] and (k[i + 1] < 20 and d[i + 1] < 20)
        stoch_signal_sum := stoch_signal_sum + 1
        
stoch_cond_b = if stoch_signal_sum > 0
    if k > 80 and d > 80
        false
    else
        true
else
    false


sup_cond_b = buySignal

buy_sig = (rsi_cond_b and macd_cond_b and ema_cond_b and stoch_cond_b and sup_cond_b)

tp_b = close + (ta.atr(14) * 3)
sl_b = close - (ta.atr(14) * 1.5)

if (buy_sig)
    strategy.entry("long", strategy.long)
    strategy.exit("exit", "long", stop = sl_b, limit = tp_b)
plot(tp_b)
plot(sl_b)