短期取引戦略の傾向

作者: リン・ハーンチャオチャン, 日付: 2023-11-16 11:11:32
タグ:

img

概要

この戦略は,複数の指標に基づいてトレンドを特定する短期間の取引戦略である.トレンド方向を決定し,それに応じて取引決定を行うために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のサポートラインとレジスタンスラインをグラフ化します.より多くのラインはより強いトレンド信号を示します.

多数の指標が上昇傾向を示している場合, ストップが最低サポートラインの上にあるとき, 買い信号が生成されます. 多数の指標が下落傾向を示している場合, ストップが最低レジスタンスラインの下にあるとき, 売り信号が生成されます.

さらに,この戦略は,リターンチャンスを見つけ,エントリーポイントを改善するためにキャンドルスタイクパターンを利用します.

戦略 の 利点

  1. 複数の指標を組み合わせることで正確性が向上します

戦略は8つの共通トレンド指標を使用して,複数の側面からトレンドを決定し,トレンド判断の正確性と信頼性を向上させます.

  1. SILAシステムは信号の強さを識別します

SILAのサポート/レジスタンスラインは,上昇/下落信号の数を反映しています.より多くのラインはより強い信号を示します.これはトレーダーが取引信号の強さをさらに評価するのに役立ちます.

  1. キャンドルスタイクパターンはエントリーポイントを改善します

この戦略は,トレンドが逆転するときに より良いエントリーポイントを見つけるために,キャンドルスタイクパターンをベースに引き戻し機会を探します.

戦略 の リスク

  1. 指標間の潜在的な衝突

複数の指標が交互に矛盾する信号を生むこともあり 意思決定が難しくなります

  1. パラメーターは最適化が必要かもしれません.

デフォルトパラメータが最適ではない場合もある.最適な結果を得るにはさらなる最適化が必要である.

  1. システムリスクを考慮する

ブラック・スワン・イベントは通常の技術信号を無効にすることがあります.市場システムリスクは評価されるべきです.

  1. 引き上げリスク

この傾向に従うことは,市場の調整中により大きな引き上げにつながる可能性があります.引き上げを制限するために取引の規模を管理する必要があります.

戦略の強化

  1. 指標パラメータを最適化

周期や値レベルなどのパラメータを体系的にテストし最適化して 最適なパラメータの組み合わせを見つけます

  1. ストップ・ロスの方法を追加する

移動またはパーセントストップ損失をコントロールドローダウンに追加することを検討します.

  1. 容量指標を組み込む

MAVPやOBVのような量指標とトレンド指標を組み合わせて戦術的な決定を改善します

  1. 位置サイズ管理

市場の異なる段階に最適なポジションサイズを調査し,トレンドがより明らかになるとサイズアップします.

結論

概要すると,これは短期的な取引戦略に従うマルチインジケータートレンドである.複数のインジケーターを使用してトレンド方向を決定し,入口改善のためのキャンドルスタイクパターンで補完された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)

もっと