この戦略は,複数の指標に基づいてトレンドを特定する短期間の取引戦略である.トレンド方向を決定し,それに応じて取引決定を行うためにWOW,BMA,BarColor,SuperTrend,DI,TTS,RSIおよびWTOを含む8つの指標を組み合わせます.
戦略はまず8つの指標の傾向方向を計算し判断します WOW,BMA,BarColor,SuperTrend,DI,TTS,RSIとWTOです
WOW インディケーターは,ボディの位置に基づいて上昇傾向または下落傾向を判断します.上部帯近くのボディは上昇傾向を示し,下部帯近くのボディは下落傾向を示します.
BMA インディケーターは,オープンと閉鎖のSMAの関係によってトレンドを判断します.オープンSMAの上を横断するSMAは上昇傾向を示し,下を横断するSMAは下落傾向を示します.
BarColor インディケーターは,キャンドルスタイルの色によってトレンドを判断します.連続した黄色いキャンドルは上昇傾向を示し,黒いキャンドルは下落傾向を示します.
スーパートレンドインジケーターは,価格位置と平均範囲を比較してトレンドを判断します.上帯以上の価格は上昇傾向を示し,下帯下の価格は下落傾向を示します.
DI インディケーターは,ポジティブとネガティブな方向の動きの関係によってトレンドを判断します.ネガティブなDIよりも大きいポジティブなDIは,上昇傾向を示し,その逆は下落傾向を示します.
TTS指標は価格位置と移動平均を基準に傾向を判断します.
RSIインジケーターは相対強度指数のレベルに基づいてトレンド方向を判断します.
WTO指標は波動傾向振動器に基づいて 傾向の方向性を判断します
この戦略は8つの指標から上昇信号の数を数え,それに応じてSILAのサポートラインとレジスタンスラインをグラフ化します.より多くのラインはより強いトレンド信号を示します.
多数の指標が上昇傾向を示している場合, ストップが最低サポートラインの上にあるとき, 買い信号が生成されます. 多数の指標が下落傾向を示している場合, ストップが最低レジスタンスラインの下にあるとき, 売り信号が生成されます.
さらに,この戦略は,リターンチャンスを見つけ,エントリーポイントを改善するためにキャンドルスタイクパターンを利用します.
戦略は8つの共通トレンド指標を使用して,複数の側面からトレンドを決定し,トレンド判断の正確性と信頼性を向上させます.
SILAのサポート/レジスタンスラインは,上昇/下落信号の数を反映しています.より多くのラインはより強い信号を示します.これはトレーダーが取引信号の強さをさらに評価するのに役立ちます.
この戦略は,トレンドが逆転するときに より良いエントリーポイントを見つけるために,キャンドルスタイクパターンをベースに引き戻し機会を探します.
複数の指標が交互に矛盾する信号を生むこともあり 意思決定が難しくなります
デフォルトパラメータが最適ではない場合もある.最適な結果を得るにはさらなる最適化が必要である.
ブラック・スワン・イベントは通常の技術信号を無効にすることがあります.市場システムリスクは評価されるべきです.
この傾向に従うことは,市場の調整中により大きな引き上げにつながる可能性があります.引き上げを制限するために取引の規模を管理する必要があります.
周期や値レベルなどのパラメータを体系的にテストし最適化して 最適なパラメータの組み合わせを見つけます
移動またはパーセントストップ損失をコントロールドローダウンに追加することを検討します.
MAVPやOBVのような量指標とトレンド指標を組み合わせて戦術的な決定を改善します
市場の異なる段階に最適なポジションサイズを調査し,トレンドがより明らかになるとサイズアップします.
概要すると,これは短期的な取引戦略に従うマルチインジケータートレンドである.複数のインジケーターを使用してトレンド方向を決定し,入口改善のためのキャンドルスタイクパターンで補完されたSILAシステムでシグナル強さを識別する.戦略は正確性を向上させることができるが,矛盾するシグナルのリスクは注意すべきである.パラメータ最適化,ストップ損失最適化,ボリューム組み込みなどを通じてさらなる改善が可能である.
/*backtest start: 2023-10-16 00:00:00 end: 2023-11-15 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // (c) Noro //2017 //@version=2 strategy(title="Noro's SILA v1.6L Strategy", shorttitle="SILA v1.6L str", overlay=true) //settings sensup = input(5, title="Uptrend-sensivity", minval = -8, maxval = 8) sensdn = input(5, title="Downtrend-sensivity", minval = -8, maxval = 8) usewow = input(true, title="Use trend-indicator WOW?") usebma = input(true, title="Use trend-indicator BestMA?") usebc = input(true, title="Use trend-indicator BarColor?") usest = input(true, title="Use trend-indicator SuperTrend?") usedi = input(true, title="Use trend-indicator DI?") usetts = input(true, title="Use trend-indicator TTS?") usersi = input(true, title="Use trend-indicator RSI?") usewto = input(true, title="Use trend-indicator WTO?") dist = input(100, title="Distance SILA-lines", minval = 0, maxval = 100) usetl = input(true, title="Need SILA-lines?") usebgup = input(true, title="Need uptrend-background?") usebgdn = input(true, title="Need downtrend-background?") usealw = input(true, title="Need background always?") usearr = input(true, title="Need new-trend-arrows?") useloco = input(true, title="Need locomotive-arrows?") usemon = input(true, title="Need money?") //joke // WOW 1.0 method lasthigh = highest(close, 30) lastlow = lowest(close, 30) center = (lasthigh +lastlow) / 2 body = (open + close) / 2 trend1 = body > center ? 1 : body < center ? -1 : trend1[1] trend2 = center > center[1] ? 1 : center < center[1] ? -1 : trend2[1] WOWtrend = usewow == true ? trend1 == 1 and trend2 == 1 ? 1 : trend1 == -1 and trend2 == -1 ? -1 : WOWtrend[1] : 0 // BestMA 1.0 method SMAOpen = sma(open, 30) SMAClose = sma(close, 30) BMAtrend = usebma == true ? SMAClose > SMAOpen ? 1 : SMAClose < SMAOpen ? -1 : BMAtrend[1] : 0 // BarColor 1.0 method color = close > open ? 1 : 0 score = color + color[1] + color[2] + color[3] + color[4] + color[5] + color[6] + color[7] BARtrend = usebc == true ? score > 5 ? 1 : score < 3 ? -1 : BARtrend[1] : 0 // SuperTrend mehtod Up = hl2 - (7 * atr(3)) Dn = hl2 + (7 * atr(3)) TrendUp = close[1] > TrendUp[1] ? max(Up, TrendUp[1]) : Up TrendDown = close[1] < TrendDown[1] ? min(Dn, TrendDown[1]) : Dn SUPtrend = usest == true ? close > TrendDown[1] ? 1: close < TrendUp[1]? -1 : SUPtrend[1] : 0 //DI method th = 20 TrueRange = max(max(high-low, abs(high-nz(close[1]))), abs(low-nz(close[1]))) DirectionalMovementPlus = high-nz(high[1]) > nz(low[1])-low ? max(high-nz(high[1]), 0): 0 DirectionalMovementMinus = nz(low[1])-low > high-nz(high[1]) ? max(nz(low[1])-low, 0): 0 SmoothedTrueRange = nz(SmoothedTrueRange[1]) - (nz(SmoothedTrueRange[1])/14) + TrueRange SmoothedDirectionalMovementPlus = nz(SmoothedDirectionalMovementPlus[1]) - (nz(SmoothedDirectionalMovementPlus[1])/14) + DirectionalMovementPlus SmoothedDirectionalMovementMinus = nz(SmoothedDirectionalMovementMinus[1]) - (nz(SmoothedDirectionalMovementMinus[1])/14) + DirectionalMovementMinus DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100 DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100 DItrend = usedi == true ? DIPlus > DIMinus ? 1 : -1 : 0 //TTS method (Trend Trader Strategy) //Start of HPotter's code //Andrew Abraham' idea avgTR = wma(atr(1), 21) highestC = highest(21) lowestC = lowest(21) hiLimit = highestC[1]-(avgTR[1] * 3) loLimit = lowestC[1]+(avgTR[1] * 3) ret = iff(close > hiLimit and close > loLimit, hiLimit, iff(close < loLimit and close < hiLimit, loLimit, nz(ret[1], 0))) pos = iff(close > ret, 1, iff(close < ret, -1, nz(pos[1], 0))) //End of HPotter's code TTStrend = usetts == true ? pos == 1 ? 1 : pos == -1 ? -1 : TTStrend[1] : 0 //RSI method RSIMain = (rsi(close, 13) - 50) * 1.5 rt = iff(RSIMain > -10, 1, iff(RSIMain < 10, -1, nz(pos[1], 0))) RSItrend = usersi == true ? rt : 0 //WTO ("WaveTrend Oscilator") method by LazyBear //Start of LazyBear's code esa = ema(hlc3, 10) d = ema(abs(hlc3 - esa), 10) ci = (hlc3 - esa) / (0.015 * d) tci = ema(ci, 21) //End of LazyBear's code WTOtrend = usewto == true ? tci > 0 ? 1 : tci < 0 ? -1 : 0 : 0 //plots trends = usemon == true ? WOWtrend + BMAtrend + BARtrend + SUPtrend + DItrend + TTStrend + RSItrend + WTOtrend: -1 * (WOWtrend + BMAtrend + BARtrend + SUPtrend + DItrend + TTStrend + RSItrend + WTOtrend) pricehi = sma(high, 10) pricelo = sma(low, 10) per = usetl == 1 ? dist / 10000 : 0 color1 = usetl == true ? trends > 0 ? blue : na : na plot(pricelo * (1 - per), color=color1, linewidth=1, title="SILA-line") color2 = usetl == true ? trends > 1 ? blue : na : na plot(pricelo * (1 - 2 * per), color=color2, linewidth=1, title="SILA-line") color3 = usetl == true ? trends > 2 ? blue : na : na plot(pricelo * (1 - 3 * per), color=color3, linewidth=1, title="SILA-line") color4 = usetl == true ? trends > 3 ? blue : na : na plot(pricelo * (1 - 4 * per), color=color4, linewidth=1, title="SILA-line") color5 = usetl == true ? trends > 4 ? blue : na : na plot(pricelo * (1 - 5 * per), color=color5, linewidth=1, title="SILA-line") color6 = usetl == true ? trends > 5 ? blue : na : na plot(pricelo * (1 - 6 * per), color=color6, linewidth=1, title="SILA-line") color7 = usetl == true ? trends > 6 ? blue : na : na plot(pricelo * (1 - 7 * per), color=color7, linewidth=1, title="SILA-line") color8 = usetl == true ? trends > 7 ? blue : na : na plot(pricelo * (1 - 8 * per), color=color8, linewidth=1, title="SILA-line") color10 = usetl == true ? trends < 0 ? black : na : na plot(pricehi * (1 + per), color=color10, linewidth=1, title="SILA-line") color11 = usetl == true ? trends < -1 ? black : na : na plot(pricehi * (1 + 2 * per), color=color11, linewidth=1, title="SILA-line") color12 = usetl == true ? trends < -2 ? black : na : na plot(pricehi * (1 + 3 * per), color=color12, linewidth=1, title="SILA-line") color13 = usetl == true ? trends < -3 ? black : na : na plot(pricehi * (1 + 4 * per), color=color13, linewidth=1, title="SILA-line") color14 = usetl == true ? trends < -4 ? black : na : na plot(pricehi * (1 + 5 * per), color=color14, linewidth=1, title="SILA-line") color15 = usetl == true ? trends < -5 ? black : na : na plot(pricehi * (1 + 6 * per), color=color15, linewidth=1, title="SILA-line") color16 = usetl == true ? trends < -6 ? black : na : na plot(pricehi * (1 + 7 * per), color=color16, linewidth=1, title="SILA-line") color17 = usetl == true ? trends < -7 ? black : na : na plot(pricehi * (1 + 8 * per), color=color17, linewidth=1, title="SILA-line") //background col = usebgup == true and trends >= sensup ? 1 : usebgdn == true and trends <= (-1 * sensdn) ? -1 : usealw == true ? col[1] : 0 bgcolor = col == 1 ? lime : col == -1 ? red : na //bgcolor(bgcolor, transp=70) //arrows posi = trends >= sensup ? 1 : trends <= (-1 * sensdn) ? -1 : posi[1] arr = usearr == true ? posi == 1 and posi[1] < 1 ? 1 : posi == -1 and posi[1] > -1 ? -1 : na : na //plotarrow(arr == 1 ? 1 : na, title="UpArrow", colorup=blue, maxheight=60, minheight=50, transp=0) //plotarrow(arr == -1 ? -1 : na, title="DnArrow", colordown=blue, maxheight=60, minheight=50, transp=0) //locomotive bar = close > open ? 1 : close < open ? -1 : 0 locotop = bar == -1 and bar[1] == 1 and bar[2] == 1 ? 1 : 0 locobot = bar == 1 and bar[1] == -1 and bar[2] == -1 ? 1 : 0 entry = useloco == false ? 1 : posi == posi[1] ? (locotop == 1 and posi == -1) or (locobot == 1 and posi == 1) ? 1 : entry[1] : 0 //plotarrow(locobot == 1 and entry[1] == 0 and posi == 1 ? 1 : na, title="UpLocomotive", colorup=yellow, maxheight=60, minheight=50, transp=0) //plotarrow(locotop == 1 and entry[1] == 0 and posi == -1 ? -1 : na, title="DnLocomotive", colordown=yellow, maxheight=60, minheight=50, transp=0) longCondition = arr == 1 if (longCondition) strategy.entry("Long", strategy.long) shortCondition = arr == -1 if (shortCondition) strategy.entry("Short", strategy.short)