Trading Systerm

Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 4

//@version=2

study("Trading System(Dark)", overlay=true)

source = close
topbots = input(true, title="Show PPO high/low triangles?")
long_term_div = input(true, title="Use long term divergences?")
div_lookback_period = input(55, minval=1, title="Lookback Period")
fastLength = input(12, minval=1, title="PPO Fast")
slowLength=input(26, minval=1, title="PPO Slow")
signalLength=input(9,minval=1, title="PPO Signal")
smoother = input(2,minval=1, title="PPO Smooth")
fastMA = ema(source, fastLength)
slowMA = ema(source, slowLength)
macd = fastMA - slowMA
macd2=(macd/slowMA)*100
d = sma(macd2, smoother) // smoothing PPO

bullishPrice = low

priceMins = bullishPrice > bullishPrice[1] and bullishPrice[1] < bullishPrice[2] or


low[1] == low[2] and low[1] < low and low[1] < low[3] or low[1] == low[2] and
low[1] == low[3] and low[1] < low and low[1] < low[4] or low[1] == low[2] and
low[1] == low[3] and low[1] and low[1] == low[4] and low[1] < low and low[1] <
low[5] // this line identifies bottoms and plateaus in the price
oscMins= d > d[1] and d[1] < d[2] // this line identifies bottoms in the PPO

BottomPointsInPPO = oscMins

bearishPrice = high
priceMax = bearishPrice < bearishPrice[1] and bearishPrice[1] > bearishPrice[2] or
high[1] == high[2] and high[1] > high and high[1] > high[3] or high[1] == high[2]
and high[1] == high[3] and high[1] > high and high[1] > high[4] or high[1] ==
high[2] and high[1] == high[3] and high[1] and high[1] == high[4] and high[1] >
high and high[1] > high[5] // this line identifies tops in the price
oscMax = d < d[1] and d[1] > d[2] // this line identifies tops in the PPO

TopPointsInPPO = oscMax

currenttrough4=valuewhen (oscMins, d[1], 0) // identifies the value of PPO at the


most recent BOTTOM in the PPO
lasttrough4=valuewhen (oscMins, d[1], 1) // NOT USED identifies the value of PPO at
the second most recent BOTTOM in the PPO
currenttrough5=valuewhen (oscMax, d[1], 0) // identifies the value of PPO at the
most recent TOP in the PPO
lasttrough5=valuewhen (oscMax, d[1], 1) // NOT USED identifies the value of PPO at
the second most recent TOP in the PPO

currenttrough6=valuewhen (priceMins, low[1], 0) // this line identifies the low


(price) at the most recent bottom in the Price
lasttrough6=valuewhen (priceMins, low[1], 1) // NOT USED this line identifies the
low (price) at the second most recent bottom in the Price
currenttrough7=valuewhen (priceMax, high[1], 0) // this line identifies the high
(price) at the most recent top in the Price
lasttrough7=valuewhen (priceMax, high[1], 1) // NOT USED this line identifies the
high (price) at the second most recent top in the Price

delayedlow = priceMins and barssince(oscMins) < 3 ? low[1] : na


delayedhigh = priceMax and barssince(oscMax) < 3 ? high[1] : na
// only take tops/bottoms in price when tops/bottoms are less than 5 bars away
filter = barssince(priceMins) < 5 ? lowest(currenttrough6, 4) : na
filter2 = barssince(priceMax) < 5 ? highest(currenttrough7, 4) : na

//delayedbottom/top when oscillator bottom/top is earlier than price bottom/top


y11 = valuewhen(oscMins, delayedlow, 0)
y12 = valuewhen(oscMax, delayedhigh, 0)

// only take tops/bottoms in price when tops/bottoms are less than 5 bars away,
since 2nd most recent top/bottom in osc
y2=valuewhen(oscMax, filter2, 1) // identifies the highest high in the tops of
price with 5 bar lookback period SINCE the SECOND most recent top in PPO
y6=valuewhen(oscMins, filter, 1) // identifies the lowest low in the bottoms of
price with 5 bar lookback period SINCE the SECOND most recent bottom in PPO

long_term_bull_filt = valuewhen(priceMins, lowest(div_lookback_period), 1)


long_term_bear_filt = valuewhen(priceMax, highest(div_lookback_period), 1)

y3=valuewhen(oscMax, currenttrough5, 0) // identifies the value of PPO in the most


recent top of PPO
y4=valuewhen(oscMax, currenttrough5, 1) // identifies the value of PPO in the
second most recent top of PPO

y7=valuewhen(oscMins, currenttrough4, 0) // identifies the value of PPO in the most


recent bottom of PPO
y8=valuewhen(oscMins, currenttrough4, 1) // identifies the value of PPO in the
SECOND most recent bottom of PPO

y9=valuewhen(oscMins, currenttrough6, 0)
y10=valuewhen(oscMax, currenttrough7, 0)

bulldiv= BottomPointsInPPO ? d[1] : na // plots dots at bottoms in the PPO


beardiv= TopPointsInPPO ? d[1]: na // plots dots at tops in the PPO

i = currenttrough5 < highest(d, div_lookback_period) // long term bearish oscilator


divergence
i2 = y10 > long_term_bear_filt // long term bearish top divergence
i3 = delayedhigh > long_term_bear_filt // long term bearish delayedhigh divergence

i4 = currenttrough4 > lowest(d, div_lookback_period) // long term bullish osc


divergence
i5 = y9 < long_term_bull_filt // long term bullish bottom div
i6 = delayedlow < long_term_bull_filt // long term bullish delayedbottom div

//plot(0, color=gray)
//plot(d, color=black)
//plot(bulldiv, title = "Bottoms", color=maroon, style=circles, linewidth=3,
offset= -1)
//plot(beardiv, title = "Tops", color=green, style=circles, linewidth=3, offset= -
1)

bearishdiv1 = (y10 > y2 and oscMax and y3 < y4) ? true : false
bearishdiv2 = (delayedhigh > y2 and y3 < y4) ? true : false
bearishdiv3 = (long_term_div and oscMax and i and i2) ? true : false
bearishdiv4 = (long_term_div and i and i3) ? true : false

bullishdiv1 = (y9 < y6 and oscMins and y7 > y8) ? true : false
bullishdiv2 = (delayedlow < y6 and y7 > y8) ? true : false
bullishdiv3 = (long_term_div and oscMins and i4 and i5) ? true : false
bullishdiv4 = (long_term_div and i4 and i6) ? true : false

bearish = bearishdiv1 or bearishdiv2 or bearishdiv3 or bearishdiv4


bullish = bullishdiv1 or bullishdiv2 or bullishdiv3 or bullishdiv4

greendot = beardiv != 0 ? true : false


reddot = bulldiv != 0 ? true : false

alertcondition( bearish, title="Bearish Signal (Orange)", message="Orange &


Bearish: Short " )
alertcondition( bullish, title="Bullish Signal (Purple)", message="Purple &
Bullish: Long " )
alertcondition( greendot, title="PPO High (Green)", message="Green High Point:
Short " )
alertcondition( reddot, title="PPO Low (Red)", message="Red Low Point: Long " )

plotshape(bearish ? d : na, text='▼\nP', style=shape.labeldown,


location=location.abovebar, color=color(orange,0), textcolor=color(white,0),
offset=0)
plotshape(bullish ? d : na, text='P\n▲', style=shape.labelup,
location=location.belowbar, color=color(#C752FF,0), textcolor=color(white,0),
offset=0)
plotshape(topbots and greendot ? d : na, text='', style=shape.triangledown,
location=location.abovebar, color=red, offset=-1, size=size.tiny)
plotshape(topbots and reddot ? d : na, text='', style=shape.triangleup,
location=location.belowbar, color=lime, offset=-1, size=size.tiny)

//barcolor(bearishdiv1 or bearishdiv2 or bearishdiv3 or bearishdiv4 ? orange : na)


//barcolor(bullishdiv1 or bullishdiv2 or bullishdiv3 or bullishdiv4 ? fuchsia : na)
//barcolor(#dedcdc)

///////////////////////
//TMC LB

length = input(41)
showPriceTracker=input(false, type=bool)
prev(s, x) =>
y=abs(round(x))
s[y]

halfLength = floor( length /2 )


basis = sma( close, length )
plot( basis, title="Minor term avg", color=maroon, style=3 )
yom = 100 * ( close - prev( basis, halfLength ))/prev( basis, halfLength )
avyom = sma( yom, 2 * length )
varyom = sma( yom * yom, 2 * length ) - avyom * avyom
som = prev( sqrt( varyom ), halfLength )
sigom = sma( som, length )

plot( basis * ( 1 + 0.01 * sigom ), title="Ch+1", color=red,


trackprice=showPriceTracker )
plot( basis * ( 1 - 0.01 * sigom ), title="Ch-1", color=green,
trackprice=showPriceTracker )
plot( basis * ( 1 + 0.02 * sigom ), title="Ch+2", color=red,
trackprice=showPriceTracker )
plot( basis * ( 1 - 0.02 * sigom ), title="Ch-2", color=green,
trackprice=showPriceTracker )
plot( basis * ( 1 + 0.03 * sigom ), title="Ch+3", color=red,
trackprice=showPriceTracker )
plot( basis * ( 1 - 0.03 * sigom ), title="Ch-3", color=green,
trackprice=showPriceTracker )

/////////////////////////////////////////
//FBB
length1 = input(200, minval=1)
src = input(hlc3, title="Source")
mult = input(3.0, minval=0.001, maxval=50)
basis1 = vwma(src, length1)
dev = mult * stdev(src, length1)
upper_1= basis1 + (0.236*dev)
upper_2= basis1 + (0.382*dev)
upper_3= basis1 + (0.5*dev)
upper_4= basis1 + (0.618*dev)
upper_5= basis1 + (0.764*dev)
upper_6= basis1 + (1*dev)
lower_1= basis1 - (0.236*dev)
lower_2= basis1 - (0.382*dev)
lower_3= basis1 - (0.5*dev)
lower_4= basis1 - (0.618*dev)
lower_5= basis1 - (0.764*dev)
lower_6= basis1 - (1*dev)
plot(basis1, color=fuchsia, linewidth=2)
p1 = plot(upper_1, color=white, linewidth=1, title="0.236")
p2 = plot(upper_2, color=white, linewidth=1, title="0.382")
p3 = plot(upper_3, color=white, linewidth=1, title="0.5")
p4 = plot(upper_4, color=white, linewidth=1, title="0.618")
p5 = plot(upper_5, color=white, linewidth=1, title="0.764")
p6 = plot(upper_6, color=red, linewidth=2, title="1")
p13 = plot(lower_1, color=white, linewidth=1, title="0.236")
p14 = plot(lower_2, color=white, linewidth=1, title="0.382")
p15 = plot(lower_3, color=white, linewidth=1, title="0.5")
p16 = plot(lower_4, color=white, linewidth=1, title="0.618")
p17 = plot(lower_5, color=white, linewidth=1, title="0.764")
p18 = plot(lower_6, color=green, linewidth=2, title="1")

//////////////////
//UCS RC
src1 = close
len = input(defval=25, minval=1, title="Linear Regression Length")
lrc = linreg(src1, len, 0)
plot(lrc, color = red, title = "Linear Regression Curve", style = line, linewidth =
2)

You might also like