トライアングルブレイクアウトトレンドフォロー戦略


作成日: 2023-09-20 14:24:16 最終変更日: 2023-09-20 14:24:16
コピー: 0 クリック数: 623
1
フォロー
1617
フォロワー

概要

この戦略は,トレンドフォロー戦略に属します. 価格が上方三角形を突破するときに多額の取引を行い,急速なEMAを下回って中期EMAを突破するときに平仓します. 同時に,リスクを管理するためにストップ・ロズとストップ・ポイントを設定します.

戦略原則

  1. 急速EMAと中期EMAを使ってトレンドの方向を判断する.急速EMAの上に中期EMAを横断して看板信号である.

  2. 最近のN根K線の最高値と最低値を使って,上方三角形が形成されているかどうかを判断する. 多信号として三角形を形成する.

  3. 入場後,急速なEMAが中期EMAを下回った時にトレンドが逆転したと考え,平仓信号を発した.

  4. 入場価格の一定パーセント以下にストップ・ロスを設定し,退場価格の一定パーセント以下にストップ・ロスを設定する.

  5. ストップポイントは,入場価格の一定パーセント以上で,部分ストップポイントは退出となります.

  6. 200日EMAで全体的なトレンドの方向を判断し,トレンドが上昇する時にのみ操作する.

優位分析

  1. 三角形のフィルターを使用した偽突破により,入場精度が向上する.

  2. 急速EMAは中期EMAとトレンドと振動を合理的に区分し,套入を避ける.

  3. ストップ・ダメージとストップ・ストップの設定は合理的で,単一損失を制御できます.

  4. トレンドが上昇している時にのみ操作し,整合段階を回避できます.

リスク分析

  1. 三角形の範囲が小さすぎるとトレンドを逃し,大きすぎると無意味な取引を増やす可能性があります. Nのパラメータを最適化する必要があります.

  2. 止損点に近すぎると簡単に打ち出され,遠すぎると損失を制御することが困難である.パラメータの作用を評価し,最適化する必要がある.

  3. 部分的な停止設定が不適切である場合,利益の溢出が起こりうる.合理的な比率を評価する.

  4. トレンド判断指標のパラメータが不適切である場合,ポジションの方向が誤りになる可能性がある。多種反測の最適化が必要。

最適化の方向

  1. 三角形の判定されたパラメータNを最適化して,最適な値を見つけます.

  2. 異なるEMA周期の組み合わせをテストし,トレンド判断の正確性を向上させる.

  3. 異なる品種の特性により,ストープダストのパラメータを最適化する.

  4. MACD形状,ブリン帯突破などの他の指標判断を追加し,信号品質を向上させる.

  5. 市場を再び開く仕組みが加えられ,トレンドが続く限り,利益の獲得時間が延長されます.

要約する

この戦略は,全体的により安定しており,三角判定によって偽突破を効果的にフィルターすることができる.パラメータ最適化スペースが大きいため,よりよい効果が得られる可能性がある.さらに,より多くの補助判断指標を追加したり,または止損停止戦略を改良して,戦略の効果をさらに向上させることができる.全体的に,この戦略は,優良なトレンド追跡戦略になる可能性がある.

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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © mohanee

//@version=4

strategy(title="TrianglePoint strategy", overlay=true,pyramiding=2, default_qty_value=3, default_qty_type=strategy.fixed,    initial_capital=10000, currency=currency.USD)
// variables  BEGIN

numPeriods=input(9,title="Number of Bars")
fastEMA = input(13, title="fast EMA", minval=1)
slowEMA = input(65, title="slow EMA", minval=1)

stopLoss = input(title="Stop Loss%", defval=5, minval=1)


HH = highest(close[1],numPeriods)
LL = lowest(close[1],numPeriods)
tringlePoint =  low > LL and high < HH

fastEMAval= ema(close, fastEMA)
slowEMAval= ema(close, slowEMA)
two100EMAval= ema(close, 200)

//plot emas
plot(fastEMAval, color = color.green, linewidth = 1, transp=0)
plot(slowEMAval, color = color.orange, linewidth = 1, transp=0)
plot(two100EMAval, color = color.purple, linewidth = 2, transp=0)

longCondition=fastEMAval>two100EMAval and tringlePoint

//plotshape(triP,style=shape.triangleup,text="Buy",color=color.green,location=location.belowbar)
//plotshape(longCondition,style=shape.triangleup,text="Buy",color=color.green,location=location.belowbar)

//Entry
strategy.entry(id="TBT LE", comment="TBT LE" , long=true,  when= longCondition and strategy.position_size<1)   

//Add
strategy.entry(id="TBT LE", comment="Add" , long=true,  when= longCondition and strategy.position_size>=1 and close<strategy.position_avg_price)   


//barcolor(strategy.position_size>=1 ? color.blue : na)

//Take profit
takeProfitVal=   strategy.position_size>=1 ?  (strategy.position_avg_price * (1+(stopLoss*0.01) )) : 0.00
//strategy.close(id="TBT LE", comment="Profit Exit",  qty=strategy.position_size/2,  when=close>=takeProfitVal and close<open and close<fastEMAval)   //crossunder(close,fastEMAval)
barcolor(strategy.position_size>=1  ? (close>takeProfitVal? color.purple : color.blue): na)

//Exit
strategy.close(id="TBT LE", comment="TBT Exit",   when=crossunder(fastEMAval,slowEMAval))


//stoploss
stopLossVal=   strategy.position_size>=1 ?  (strategy.position_avg_price * (1-(stopLoss*0.01) )) : 0.00

//stopLossVal= close> (strategy.position_avg_price * (1+(stopLoss*0.01) )) ? lowest(close,numPeriods) : (strategy.position_avg_price * (1-(stopLoss*0.01) ))


strategy.close(id="TBT LE", comment="SL Exit",   when= close < stopLossVal)