堅調なトレンドの継続戦略

作者: リン・ハーンチャオチャン,日付: 2024-01-29 16:57:01
タグ:

img

概要

この戦略は移動平均値に基づいています.上昇傾向の短期的訂正の後には長い時間かかります.それは傾向の次の戦略に属します.

戦略原則

この戦略は,異なる期間の3つのEMAラインを使用する.短い期間のEMA1ラインは,短期トレンドを判断するために使用されます. EMA2とEMA3ラインは,長い期間のEMA3が最も長い期間のEMA3を持つ中長期トレンドを決定するために使用されます. 短期EMA1ラインが上昇すると,それは短期上昇傾向にあることを示します. EMA2がEMA3を超えると,中長期も上昇傾向にあることを意味します.これは長期エントリーのための良いタイミングです.特に,価格がEMA1ラインを超えると取引信号が生成されます. 傾向の安定性をさらに検証するには,EMA2とEMA3が上向きであり,最後の信号バーもフィルターバーで上昇していることが必要です. これは短期の誤った訂正からの信号をフィルタに役立ちます.

ストップ・ロストラインとテイク・プロフィートラインは,利益と損失をロックするように設定されています.特に,ストップ・ロストラインはATR値に応じて動きます.そしてテイク・プロフィートラインもATR値に基づいて動きます.

利点分析

この戦略の最大の利点は,中長期の上昇傾向を効果的に把握し,短期的調整も考慮できるという点で,その保持期間と利益範囲は相当である.

さらに,ストップ・ロスの設定と 収益の設定により,リスクも制御可能になります.

リスク分析

この戦略の最大のリスクは,トレンド逆転点を決定できないことです.短期的には上昇している間に,中長期トレンドが逆転した場合,市場に入るために間違ったロング信号を生成し,より大きな損失を引き起こす可能性があります.

また,範囲限定市場でも不必要な取引損失が発生する可能性があります.

オプティマイゼーションの方向性

EMAのサイクルパラメータを,特定の取引品種の特徴に基づいて調整し,その品種の中長サイクルにより良く適合することを検討する.

短期調整の終了を決定するために他の指標と組み合わせると,誤入が回避できます.

ATR値に基づいてストップ損失係数を調整し,ATRが大きい場合,ストップ損失距離を適切に緩和することを検討する.

結論

一般的に,この戦略は,うまく機能する中長期トレンドフォロー戦略である.移動平均値,引き戻し信号によるエントリータイミング,ストップ・ロストとテイク・プロフィート設定による利益と損失のロックを通じてトレンド方向を決定する.しかし,盲目トレンドフォローの一定のリスクもあります.トレーダーは,市場に参入するかどうかを決定するために,自分の判断を下さなければなりません.


/*backtest
start: 2024-01-21 00:00:00
end: 2024-01-28 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('Trend Continuation', shorttitle='Trend_Continuation', overlay=true)

// Input
price = input(close)
MA1_Length = input.int(50, step=1, title='EMA 1 Length')
MA2_Length = input.int(80, step=1, title='EMA 2 Length')
MA3_Length = input.int(200, step=1, title='EMA 3 Length')
numberOfCandles = input(1)
slATRFactor = input(3.5)
tpATRFactor = input(3.5)
ATRLength = input(14)
// switch1=input(true, title="Show Bar Color?")
// switch2=input(true, title="Show Moving Averages?")

// Calculation
MA1 = ta.ema(price, MA1_Length)
MA2 = ta.ema(price, MA2_Length)
MA3 = ta.ema(price, MA3_Length)
prev_price = close[numberOfCandles]


// Strategy
allPositive = true
for i = 0 to numberOfCandles - 1 by 1
    if close[i] < close[i + 1] or close[i] < MA1
        allPositive := false
        break


long = MA2 > MA3 and price > MA1 and ta.crossunder(prev_price, MA1) and allPositive
// short = crossover(price, MA3) or ( change(price)>0 and change(MA1)>0 and crossover(price,MA1)  and change(MA2)<0 ) 


if long
    strategy.entry('Long', strategy.long, comment='Long')

bought = strategy.position_size[0] > strategy.position_size[1]
atrAtLong = ta.valuewhen(bought, ta.atr(ATRLength), 0)


// Stop loss and take profit
slPrice = strategy.position_avg_price - slATRFactor * atrAtLong
tpPrice = strategy.position_avg_price + tpATRFactor * atrAtLong

SL = plot(slPrice, title='SL', style=plot.style_linebr, linewidth=1, color=color.new(color.red, 0))

if price >= tpPrice and price < MA1
    strategy.close('Long')

if price < strategy.position_avg_price
    strategy.exit('Stop Loss', 'Long', stop=slPrice)


// Strategy Alert
alertcondition(long, title='Long Alert', message='Go Long!')
// alertcondition(short, title='EMA Slope + EMA Cross Strategy, Short Alert', message='Go Short!')

// MA trend bar color
// up =  change(MA2)>0 and change(MA3)>0
// dn =  change(MA2)<0 and change(MA3)<0
// bar_color = up?green:dn?red:blue
// barcolor(switch1?bar_color:na)

// MA trend output color
change_1 = ta.change(MA2)
MA2_color = ta.change(MA2) > 0 ? color.lime : change_1 < 0 ? color.red : color.blue
change_2 = ta.change(MA3)
MA3_color = ta.change(MA3) > 0 ? color.lime : change_2 < 0 ? color.red : color.blue

// MA output
// EMA2 = plot(switch2?MA2:na, title="EMA 2", style=linebr, linewidth=2, color=MA2_color)
// EMA3 = plot(switch2?MA3:na, title="EMA 3", style=linebr, linewidth=4, color=MA3_color)
// fill(EMA2, EMA3, color=silver, transp=50)

color_1 = MA2 > MA3 ? color.green : color.red

EMA1 = plot(MA1, title='EMA 1', style=plot.style_linebr, linewidth=1, color=color_1)
// EMA2 = plot(MA2, title="EMA 2", style=linebr, linewidth=2, color=blue)
// EMA3 = plot(MA3, title="EMA 3", style=linebr, linewidth=3, color=red)



//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)



もっと