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

作者: リン・ハーンチャオチャン, 日付: 2023-09-20 14:24:16
タグ:

概要

このトレンドフォロー戦略は,価格が上昇する三角形形成から突破して,急速なEMAが中間EMAを下回るとポジションを閉じる.ストップ・ロストとテイク・プロフィートはリスクを制御するために設定されています.

戦略の論理

  1. トレンド方向を決定するために,高速EMAと中期EMAを使用します.高速EMAが中期EMAを超越することは長い信号です.

  2. 上昇する三角形が形成されているかどうかを判断するために,最後のNバーの最高値と最低値を使用します.三角形形成は長い信号を提供します.

  3. 入場後,高速EMAが中期EMAを下回ると,トレンド逆転を示し,出口信号を発します.

  4. ストップ・ロスの出口の入場価格より一定の割合でストップ・ロスを設定する.

  5. 部分的な利益の獲得の為,入場価格の上での一定の割合で利益の獲得目標を設定します.

  6. 200日間の EMA を使って,全体的なトレンドの方向性を決定します.トレンドが上昇するときにだけ取引します.

利点分析

  1. 三角形は 偽の突破をフィルターし 入力の精度を向上させる

  2. Fast EMA vs Medium 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)

もっと