この戦略は,トレンドフォロー戦略に属します. 価格が上方三角形を突破するときに多額の取引を行い,急速なEMAを下回って中期EMAを突破するときに平仓します. 同時に,リスクを管理するためにストップ・ロズとストップ・ポイントを設定します.
急速EMAと中期EMAを使ってトレンドの方向を判断する.急速EMAの上に中期EMAを横断して看板信号である.
最近のN根K線の最高値と最低値を使って,上方三角形が形成されているかどうかを判断する. 多信号として三角形を形成する.
入場後,急速なEMAが中期EMAを下回った時にトレンドが逆転したと考え,平仓信号を発した.
入場価格の一定パーセント以下にストップ・ロスを設定し,退場価格の一定パーセント以下にストップ・ロスを設定する.
ストップポイントは,入場価格の一定パーセント以上で,部分ストップポイントは退出となります.
200日EMAで全体的なトレンドの方向を判断し,トレンドが上昇する時にのみ操作する.
三角形のフィルターを使用した偽突破により,入場精度が向上する.
急速EMAは中期EMAとトレンドと振動を合理的に区分し,套入を避ける.
ストップ・ダメージとストップ・ストップの設定は合理的で,単一損失を制御できます.
トレンドが上昇している時にのみ操作し,整合段階を回避できます.
三角形の範囲が小さすぎるとトレンドを逃し,大きすぎると無意味な取引を増やす可能性があります. Nのパラメータを最適化する必要があります.
止損点に近すぎると簡単に打ち出され,遠すぎると損失を制御することが困難である.パラメータの作用を評価し,最適化する必要がある.
部分的な停止設定が不適切である場合,利益の溢出が起こりうる.合理的な比率を評価する.
トレンド判断指標のパラメータが不適切である場合,ポジションの方向が誤りになる可能性がある。多種反測の最適化が必要。
三角形の判定されたパラメータNを最適化して,最適な値を見つけます.
異なるEMA周期の組み合わせをテストし,トレンド判断の正確性を向上させる.
異なる品種の特性により,ストープダストのパラメータを最適化する.
MACD形状,ブリン帯突破などの他の指標判断を追加し,信号品質を向上させる.
市場を再び開く仕組みが加えられ,トレンドが続く限り,利益の獲得時間が延長されます.
この戦略は,全体的により安定しており,三角判定によって偽突破を効果的にフィルターすることができる.パラメータ最適化スペースが大きいため,よりよい効果が得られる可能性がある.さらに,より多くの補助判断指標を追加したり,または止損停止戦略を改良して,戦略の効果をさらに向上させることができる.全体的に,この戦略は,優良なトレンド追跡戦略になる可能性がある.
/*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)