
この戦略は,移動平均,相対的に強い指標 ((RSI),量変化指標 ((VFI),および実際の強さ指標 ((TSI) など,市場の全体的な動きと傾向を判断するために,中長期の価格動きを捉えるために,複数の技術指標を総合的に使用します.
速線RSI ((7日),正常線RSI ((14日),緩線RSI ((50日) の移動平均を計算し,RSIの多空傾向と動力を判断する.
VFIとVFIの移動平均EMA (25日),SMA (25日) を計算し,市場の資金流入と流出状況を判断する.
市場のトレンドの強さを判断するために,TSIの長期平均線と短期平均線の比を計算する.
RSI,VFI,TSIの結果を統合して,市場の全体的な動向の方向を導き出します.
市場動向が下向きだと判断すると空白;市場動向が逆転だと判断すると空白で平仓する.
複数の指標を組み合わせると,市場の全体的な動力とトレンドをより包括的かつ正確に判断できます.
VFIは市場資金の流入と流出を反映し,取引の逆転を避ける.
TSIのフィルターにより,シグナルがより信頼性が高くなります.
この戦略は,全体的に見て,信頼性が高く,勝利率も高い.
複数の指標が組み合わせられ,パラメータ設定が複雑で,最適なパラメータを得るために繰り返しテストが必要である.
エントリー・エグジット・ストラテジーは単純で,指標が提供する情報を十分に活用できず,超短線反転損失が発生する可能性があります.
市場が揺れ動いている時,誤ったシグナルや逆の小損失が生じやすい.
指標パラメータの組み合わせを最適化して,最適なパラメータを見つけます.
エクジットルールを追加し,指数で逆退出を判断する.
収益保護機構を増やし,小規模な損失を削減する.
この戦略は,市場全体の動力を判断するために,複数の指標を総合的に使用し,市場が下方動向であることを判断すると空売りで利益を得ます. この戦略は,信頼性が高く,しかしエントリーとエクジットの仕組みは単純で,指標情報は充分に利用されていません. パラメータの継続的な最適化とエクジットのルールの強化によって,戦略の安定性と収益性をさらに向上させることができます.
]
//@version=2
//credit to LazyBear, Lewm444, and others for direct and indirect inputs/////////////////////////////////
//script is very rough, publishing more for collaborative input value than as a finished product/////////
strategy("Momo", overlay=true)
length = input( 50 )
overSold = input( 50 )
overBought = input( 65 )
price = ohlc4
/////////////////////////////////////////////////////macd/////////////////////////////////////////////////
fastLength = input(12)
slowlength = input(26)
MACDLength = input(9)
fast = 12, slow = 26
fastMA = ema(close, fast)
slowMA = ema(close, slow)
MACD = (fastMA - slowMA)
Msignal = (sma(MACD, 9))*40
//plot(Msignal, color=blue, linewidth=3)
/////////////////////////////////////////////////rsi spread/////////////////////////////////////////////////
source = price
RSIFast = rsi(source, input(7))
RSINorm = rsi(source, input(14))
RSISlow = rsi(source, input(50))
//plot(RSIFast, color=silver, style=area, histbase=50)
//plot(RSINorm, color=#98b8be, style=area, histbase=50)
//plot(RSISlow, color=#be9e98, style=area, histbase=50)
//plot(RSIFast, color=gray, style=line, linewidth=1)
//plot(RSINorm, color=purple, style=line, linewidth=2)
//plot(RSISlow, color=black, style=line, linewidth=3)
exponential = input(true, title="Exponential MA")
src = (RSIFast)
ma05 = exponential ? ema(src, 05) : sma(src, 05)
ma30 = exponential ? ema(src, 30) : sma(src, 30)
ma50 = exponential ? ema(src, 50) : sma(src, 50)
ma70 = exponential ? ema(src, 70) : sma(src, 70)
ma90 = exponential ? ema(src, 90) : sma(src, 90)
ma100 = exponential ? ema(src, 100) : sma(src, 100)
exponential1 = input(true, title="Exponential MA")
src1 = (RSINorm)
ma051 = exponential1 ? ema(src1, 05) : sma(src1, 05)
ma301 = exponential1 ? ema(src1, 30) : sma(src1, 30)
ma501 = exponential1 ? ema(src1, 50) : sma(src1, 50)
ma701 = exponential1 ? ema(src1, 70) : sma(src1, 70)
ma901 = exponential1 ? ema(src1, 90) : sma(src1, 90)
ma1001 = exponential1 ? ema(src1, 100) : sma(src1, 100)
exponential2 = input(true, title="Exponential MA")
src2 = (RSINorm)
ma052 = exponential2 ? ema(src2, 05) : sma(src2, 05)
ma302 = exponential2 ? ema(src2, 30) : sma(src2, 30)
ma502 = exponential2 ? ema(src2, 50) : sma(src2, 50)
ma702 = exponential2 ? ema(src2, 70) : sma(src2, 70)
ma902 = exponential2 ? ema(src2, 90) : sma(src2, 90)
ma1002 = exponential2 ? ema(src2, 100) : sma(src2, 100)
////////////////////////////////////////////////vfi by LazyBear, modified////////////////////////////////////
VFIlength = input(130, title="VFI length")
coef = input(0.2)
vcoef = input(2.5, title="Max. vol. cutoff")
signalLength=input(10)
signalLength2 = input(100)
smoothVFI=input(false, type=bool)
ma(x,y) => smoothVFI ? sma(x,y) : x
typical=hlc3
inter = log( typical ) - log( typical[1] )
vinter = stdev(inter, 30 )
cutoff = coef * vinter * close
vave = sma( volume, VFIlength )[1]
vmax = vave * vcoef
vc = iff(volume < vmax, volume, vmax) //min( volume, vmax )
mf = typical - typical[1]
vcp = iff( mf > cutoff, vc, iff ( mf < -cutoff, -vc, 0 ) )
vfi = ma(sum( vcp , VFIlength )/vave, 3)
vfima = ema( vfi, 25 )
vfimaS = (sma(vfima, 25))
zima = ema( vfima, signalLength2 )
d=vfi-vfima
vfi_avg = avg(vfi, vfima, vfimaS)
vfi_avgS = (sma(vfi_avg,5))
plot( zima, title="EMA of vfima", color=fuchsia, linewidth=1)
plot( vfimaS, title="SMA of vfima", color=blue, linewidth=1)
plot( vfima , title="EMA of vfi", color=black, linewidth=1)
//plot( vfi, title="vfi", color=green,linewidth=1)
//plot( vfi_avg, title="vfi_avg", color=blue, linewidth=2)
//plot( vfi_avgS, title="vfi_avgS", color=maroon, linewidth=2)
/////////////////////////////////////////////////////tsi////////////////////////////////////////////////
long2 = input(title="Long Length", defval=24)
short2 = input(title="Short Length", defval=7)
signal2 = input(title="Signal Length", defval=13)
pc = change(price)
double_smooth2(src, long2, short2) =>
fist_smooth2 = ema(src, long2)
ema(fist_smooth2, short2)
double_smoothed_pc2 = double_smooth2(pc, long2, short2)
double_smoothed_abs_pc2 = double_smooth2(abs(pc), long2, short2)
tsi_value2 = 60 * (double_smoothed_pc2 / double_smoothed_abs_pc2)
//plot( tsi_value2, title="tsi2", color=black, linewidth=1)
////////////////////////////////////////////////////////mjb////////////////////////////////////////////////
trendSignal = avg(tsi_value2, Msignal, vfi)*1.75
T1 = sma(trendSignal, 5)
T2 = ema(trendSignal, 25)
T3 = ema(T2, 25)
//plot( T1, title="Trend", color=red, linewidth=3)
plot( T3, title="Trend3", color=black, linewidth=3)
/////////////////////////////////////////////////////mjb////////////////////////////////////////////////
Momentum = avg (T3, vfimaS, vfima)
plot( Momentum, title="Momentum", color=blue, linewidth=2)
vrsi = rsi(price, length)
clearance = abs(zima - Msignal)
/////////////////////////////////////////////////////mjb////////////////////////////////////////////////
if (not na(vrsi))
if (zima > T3) and (clearance > 5) and (falling(zima, 1) == 1) and (zima > vfimaS) and (zima > vfima) and (falling(T3, 1) == 1) and (zima > 6)
strategy.entry("ss", strategy.short)
if (T3 > zima) and (rising(zima, 1) == 1)
strategy.entry("Zcover", strategy.long)
if (strategy.openprofit > 750) and (rising(T2, 1) == 1) and (T2 > 10)
strategy.entry("ProfitTake", strategy.long)
// strategy.risk.allow_entry_in(strategy.direction.short)
// strategy.risk.max_intraday_loss(2000, strategy.cash)