यह रणनीति मूविंग एवरेज, रिलेटिव स्ट्रेंथ इंडेक्स (आरएसआई), मूविंग एवरेज दिशाओं और अन्य तकनीकी संकेतकों को उचित रूप से लागू करके प्रवृत्ति का सटीक रूप से न्याय करती है। डबल मूविंग एवरेज के लंबे और छोटे निर्णय के आधार पर, झूठे ब्रेकआउट से बचने के लिए लंबे और छोटे फ़िल्टरिंग के लिए आरएसआई संकेतकों को जोड़ा जाता है। इस बीच, विभिन्न चक्रों के मूविंग एवरेज का संयुक्त रूप से अवलोकन करके प्रवृत्ति की दिशा को प्रभावी ढंग से पहचाना जा सकता है। रणनीति में बड़े अनुकूलन स्थान हैं और विभिन्न ट्रेडिंग किस्मों और चक्रों पर लागू किया जा सकता है।
यह रणनीति मुख्य रूप से निम्नलिखित तकनीकी संकेतकों पर आधारित है:
डबल मूविंग एवरेजः तेज और धीमी गति से चलने वाले औसत का स्वर्ण क्रॉस लंबे संकेत को दर्शाता है, जबकि मृत्यु क्रॉस का अर्थ है छोटा संकेत। इस रणनीति में मूविंग एवरेज की गणना करने के लिए ईएमए का उपयोग किया जाता है।
आरएसआई संकेतक: उच्च आरएसआई स्तरों से गिरावट कम अवसरों का सुझाव देती है, जबकि कम स्तरों से रिबाउंड लंबे अवसरों का सुझाव देता है। इस रणनीति में रुझान फ़िल्टरिंग के लिए आरएसआई तर्क का उपयोग किया जाता है।
चलती औसत दिशाः लंबी और छोटी चलती औसत की दिशाओं की तुलना करने से प्रवृत्ति निर्धारित की जा सकती है। इस रणनीति में दीर्घकालिक दिशा निर्धारित करने के लिए 200-अवधि ईएमए का उपयोग किया जाता है।
व्यापारिक तर्क इस प्रकार है:
जब तेज ईएमए धीमी ईएमए से ऊपर जाता है तो लंबा करें और जब तेज ईएमए धीमी ईएमए से नीचे जाता है तो छोटा करें।
उच्च आरएसआई स्तरों से गिरावट कम अवसरों को जोड़ती है, जबकि कम स्तरों से उछाल लंबे अवसरों को जोड़ता है।
केवल दीर्घकालिक प्रवृत्ति (200-दिवसीय ईएमए) के अनुरूप दिशा में ट्रेड करें, अर्थात केवल अपट्रेंड में लंबी और डाउनट्रेंड में छोटी करें।
बाहर निकलने के लिए लाभ लेने और हानि रोकने का प्रयोग करें।
इस रणनीति के लाभों में निम्नलिखित शामिल हैंः
कई तकनीकी संकेतकों का संयोजन प्रवृत्ति की दिशा की पुष्टि करने और झूठे ब्रेकआउट के अवसरों को कम करने में मदद करता है।
आरएसआई फ़िल्टर जोड़ने से ट्रेंड उलटते समय झटके से बचा जा सकता है।
अल्प, मध्यम और दीर्घकालिक रुझानों का उपयोग करने से प्रवेश की समयबद्धता और दिशा में सुधार होता है।
स्टॉप लॉस सेटिंग एक ही ट्रेड के लिए नुकसान को सीमित करने के लिए जोखिम नियंत्रण प्रदान करती है।
समायोज्य मापदंड विभिन्न उत्पादों के लिए बहु-समय-सीमा व्यापार के लिए अनुकूलन क्षमता की अनुमति देते हैं।
इस रणनीति में कुछ जोखिम भी हैंः
स्टॉप लॉस को एक मजबूत प्रवृत्ति में अल्पकालिक पॉलबैक से ट्रिगर किया जा सकता है। व्यापक स्टॉप लॉस रेंज या मूविंग/ट्रेलिंग स्टॉप लॉस का उपयोग किया जा सकता है।
रेंज-बाउंड बाजार में झूठे ब्रेकआउट नुकसान का कारण बन सकते हैं। व्यापक आरएसआई फ़िल्टरिंग रेंज या डोंचियन चैनलों जैसे अतिरिक्त संकेतक मदद कर सकते हैं।
अनुचित पैरामीटर अनुकूलन से अधिक व्यापार हो सकता है। विभिन्न उत्पादों के लिए सावधानीपूर्वक परीक्षण और अनुकूलन की आवश्यकता होती है।
यह रणनीति केवल तकनीकी पहलुओं पर निर्भर करती है। प्रमुख प्रवृत्ति का निर्धारण करने के लिए मौलिक विश्लेषण की आवश्यकता होती है।
इस रणनीति को निम्नलिखित पहलुओं में अनुकूलित किया जा सकता हैः
विभिन्न बाजार चक्रों के अनुकूल चलती औसत अवधि को समायोजित करना।
लंबी/छोटी चयन की सटीकता में सुधार के लिए आरएसआई मापदंडों का अनुकूलन करें।
ब्रेकआउट सफलता दर में सुधार के लिए बोलिंगर बैंड और केल्टनर चैनल जैसे अतिरिक्त संकेतकों का परीक्षण करें।
प्रवृत्ति को बेहतर ढंग से ट्रैक करने के लिए स्टॉप लॉस के साथ प्रयोग करें।
जब प्रवृत्ति कमजोर हो तब झूठे संकेतों को कम करने के लिए रेंज ब्रेकआउट ऑपरेशन का अध्ययन करें।
जोखिमों को नियंत्रित करने के लिए उत्पाद विशेषताओं के आधार पर उचित स्टॉप लॉस और लाभ मान निर्धारित करें।
ओवरसाइज सिंगल सट्टेबाजी से बचने के लिए व्यापार आकार नियंत्रण जोड़ें.
रणनीति स्पष्ट तर्क है और लागू करने में आसान है। उचित पैरामीटर ट्यूनिंग के साथ, यह विभिन्न उत्पादों और चक्रों पर लागू किया जा सकता है जिसमें क्षमता के बाद मजबूत प्रवृत्ति है। रेंज-बाउंड बाजारों में फंसने से बचने के लिए जोखिम नियंत्रण महत्वपूर्ण है। बाजार की स्थिति और व्यक्तिगत वरीयताओं के आधार पर अनुकूलित अनुकूलन किया जा सकता है।
/*backtest start: 2023-08-26 00:00:00 end: 2023-09-08 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Nostradamus by Wicksell 2.0", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100) // MACD + EMA 200 *** estratégia de compra e venda (RSI, EMA, SMA) *** Doji Harami *** sobrecompra e sobrevenda *** Direção de tendência *** Divergência *** Ichimoku // === Entradas gerais === // Curto maFastSource = input(defval = open, title = "Fast MA Source") maFastLength = input(defval = 14, title = "Fast MA Period", minval = 1) // long ma maSlowSource = input(defval = open, title = "Slow MA Source") maSlowLength = input(defval = 21, title = "Slow MA Period", minval = 1) // === Entradas relacionado a estratégia === tradeInvert = input(defval = false, title = "Invert Trade Direction?") // Entrada de riscos inpTakeProfit = input(defval = 100000000, title = "Take Profit", minval = 0) inpStopLoss = input(defval = 5000, title = "Stop Loss", minval = 0) inpTrailStop = input(defval = 1000, title = "Trailing Stop Loss", minval = 0) inpTrailOffset = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0) // === Valores de gerenciamento de riscos === // if an input is less than 1, assuming not wanted so we assign 'na' value to disable it. useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na useTrailStop = inpTrailStop >= 1 ? inpTrailStop : na useTrailOffset = inpTrailOffset >= 1 ? inpTrailOffset : na // === Configurações de série === /// maFast = ema(maFastSource, maFastLength) maSlow = ema(maSlowSource, maSlowLength) // === Lógica === // is fast ma above slow ma? aboveBelow = maFast >= maSlow ? true : false // are we inverting our trade direction? tradeDirection = tradeInvert ? aboveBelow ? false : true : aboveBelow ? true : false // MACD + EMA 200 // Input source = input(close) fastLength = input(12, minval=1, title="MACD fast moving average") slowLength=input(26,minval=1, title="MACD slow moving average") signalLength=input(9,minval=1, title="MACD signal line moving average") veryslowLength=input(200,minval=1, title="Very slow moving average") switch1=input(true, title="Enable Bar Color?") switch2=input(true, title="Enable Moving Averages?") switch3=input(true, title="Enable Background Color?") // Calculation fastMA = sma(source, fastLength) slowMA = sma(source, slowLength) veryslowMA = sma(source, veryslowLength) macd = fastMA - slowMA signal = sma(macd, signalLength) hist = macd - signal // Colors MAtrendcolor = change(veryslowMA) > 0 ? green : red trendcolor = fastMA > slowMA and change(veryslowMA) > 0 and close > slowMA ? green : fastMA < slowMA and change(veryslowMA) < 0 and close < slowMA ? red : blue bartrendcolor = close > fastMA and close > slowMA and close > veryslowMA and change(slowMA) > 0 ? green : close < fastMA and close < slowMA and close < veryslowMA and change(slowMA) < 0 ? red : blue backgroundcolor = slowMA > veryslowMA and crossover(hist, 0) and macd > 0 and fastMA > slowMA and close[slowLength] > veryslowMA ? green : slowMA < veryslowMA and crossunder(hist, 0) and macd < 0 and fastMA < slowMA and close[slowLength] < veryslowMA ? red : na bgcolor(switch3?backgroundcolor:na,transp=80) barcolor(switch1?bartrendcolor:na) // Output F=plot(switch2?fastMA:na,color=trendcolor) W=plot(switch2?slowMA:na,color=trendcolor,linewidth=2) V=plot(switch2?veryslowMA:na,color=MAtrendcolor,linewidth=4) fill(F,V,color=gray) // estratégia de compra e venda wicksell // Estratégia longo longEntry() => rsi(close, 2) <= 20 and close >= sma(close, 200) and ema(close, 20) longExit() => ema(close, 80) and rsi(close, 2) >= 80 strategy.entry(id = "Compra", long = true, when = longEntry()) strategy.close(id = "Compra", when = longExit()) strategy.exit("Feche a ordem", from_entry = "Venda", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset) // Estratégia curta shortEntry() => rsi(close, 2) >= 80 and close <= sma(close, 200) and ema(close, 80) shortExit() => low <= ema(close, 20) and rsi(close, 2) <= 10 strategy.entry(id = "Venda", long = false, when = shortEntry()) strategy.close(id = "Venda", when = shortExit()) strategy.exit("feche a ordem", from_entry = "Compra", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset) // Sobrecompra e Sobrevenda backtime = input(title='Period', defval=5) overbought = input(title='RSI Overbought', defval=74) oversold = input(title='RSI Oversold', defval=24) calcSpread(k) => ((high[k] - low[k]) / high[k])*100 isOversold(k) => key = k <= 1 ? 0 : k - 1 rsi(close[k], backtime) <= oversold and volume[k] >= volume[key] isOverbought(k) => key = k <= 1 ? 0 : k - 1 rsi(close[k], backtime) >= overbought and volume[k] >= volume[key] plotshape(isOverbought(1) and isOverbought(0), style=shape.labeldown, location=location.abovebar, color=#ff0000) plotshape(isOversold(1) and isOversold(0), style=shape.labelup, location=location.belowbar, color=green) // Bandas // Script created by JoinFree // BollingerBands added for reference // Buy Long when you see a Green colour bar // Sell Short when you see a Red colour bar mysignal = ema(close, 12) - ema(close, 26) barcolor(mysignal[0] > mysignal[1] ? green : red) length = input(20, minval=1), mult = input(2.0, minval=0.001, maxval=50) basis = sma(source, length) dev = mult * stdev(source, length) upper = basis + dev lower = basis - dev p1 = plot(upper, color=white) p2 = plot(lower, color=white) fill(p1, p2) // Padrão candle delta = close - open gap = open - close[1] is_up = delta >= 0 high_len = is_up ? high - close : high - open low_len = is_up ? open - low : close - low mod_delta = delta<0 ? -delta:delta avg_mod = (mod_delta + mod_delta[1] + mod_delta[2] + mod_delta[3] + mod_delta[4] + mod_delta[5] + mod_delta[6] + mod_delta[7] + mod_delta[8] + mod_delta[9])/10 // ENGULF is_bearish_engulf = -delta > delta[1]*2 and delta[1] > 0 and delta < 0 and delta[2] > 0 is_bullish_engulf = delta > -delta[1]*2 and delta[1] < 0 and delta > 0 and delta[2] < 0 plotshape(is_bearish_engulf, style=shape.triangledown, location=location.abovebar, color=white, title='bearish_englf') plotshape(is_bearish_engulf, style=shape.triangledown, location=location.abovebar, color=white, title='bearish_englf') plotshape(is_bullish_engulf, style=shape.triangleup, location=location.belowbar, color=yellow, title='bullish_englf') // DOJI is_doji_up = delta*10 < mod_delta and (high-low) > mod_delta*10 and delta[1] < 0 is_doji_down = delta*10 < mod_delta and (high-low) > mod_delta*10 and delta[1] > 0 plotshape(is_doji_down, style=shape.triangledown, location=location.abovebar, color=white, title='doji_down') plotshape(is_doji_down, style=shape.triangledown, location=location.abovebar, color=white, title='doji_down') plotshape(is_doji_up, style=shape.triangleup, location=location.belowbar, color=yellow, title='doji_up') // DOJI DRAGONFLY is_doji_dr_up = delta*10 < mod_delta and low_len*10 < mod_delta and high_len > mod_delta*5 and delta[1] < 0 is_doji_dr_down = delta*10 < mod_delta and high_len*10 < mod_delta and low_len > mod_delta*5 and delta[1] > 0 plotshape(is_doji_dr_down, style=shape.triangledown, location=location.abovebar, color=white, title='doji_dr_down') plotshape(is_doji_dr_down, style=shape.triangledown, location=location.abovebar, color=white, title='doji_dr_down') plotshape(is_doji_dr_up, style=shape.triangleup, location=location.belowbar, color=yellow, title='doji_dr_up') // 3 SAME TICK same_up = delta > mod_delta*2 and delta[1] > mod_delta[1]*2 and delta[2] > mod_delta[2]*2 and is_up same_down = delta*2 < mod_delta and (high-low) > mod_delta*10 and delta[1] > 0 plotshape(same_down, style=shape.triangledown, location=location.abovebar, color=white, title='3_same_down') plotshape(same_down, style=shape.triangledown, location=location.abovebar, color=white, title='3_same_down') plotshape(same_up, style=shape.triangleup, location=location.belowbar, color=yellow, title='3_same_up', offset=2) plotshape(same_up, style=shape.triangleup, location=location.belowbar, color=yellow, title='3_same_up') plotshape(same_up, style=shape.triangleup, location=location.belowbar, color=yellow, title='3_same_up', offset=1) // ichimoku turningPeriods = input(9, minval=1), standardPeriods = input(26, minval=1) leadingSpan2Periods = input(52, minval=1), displacement = input(26, minval=1) donchian(len) => avg(lowest(len), highest(len)) turning = donchian(turningPeriods) standard = donchian(standardPeriods) leadingSpan1 = avg(turning, standard) leadingSpan2 = donchian(leadingSpan2Periods) plot(turning, title = 'Tenkan-Sen (9 Period)', linewidth=4, color=white) plot(standard, title = 'Kinjun-Sen (26 Period)', linewidth=4, color=orange) spanColor = leadingSpan1>=leadingSpan2 ? lime : red p3 = plot(leadingSpan1, title = 'Senkou Span A (26 Period)', linewidth=4, offset = displacement, color=spanColor) p4 = plot(leadingSpan2, title = 'Senkou Span B (52 Period)', linewidth=4, offset = displacement, color=spanColor) fill(p3, p4, color=silver, transp=40, title='Kumo (Cloud)') // direção de tendência //izole dip - Isolated Bottom d02=low d12=low[1] izdip2=low[2] d32=low[3] d42=low[4] h32=high[3] h22=high[2] //izole tepe - Isolated Peak t02=high t12=high[1] iztepe2=high[2] t32=high[3] t42=high[4] L32=low[3] L22=low[2] izotepe1=iff((iztepe2>t02 and iztepe2>=t12 and iztepe2>t32 and iztepe2>t42 and low[1]>min(L32,L22) and low<min(L32,L22)),-1,na) izotepe2=iff(t12>t02 and t12>iztepe2 and t12>t32 and low<min(L22,low[1]),-2,na) izodip1=iff((izdip2<d02 and izdip2<d12 and izdip2<d32 and izdip2<d42 and high[1]<max(h32,h22) and high>max(h32,h22)),1,na) izodip2=iff(d12<d02 and d12<izdip2 and d12<d32 and high>max(h22,high[1]),1,na) plotarrow(izotepe1, colordown=white, offset = -2, transp=60) plotarrow(izotepe2, colordown=white, offset = -1, transp=60) plotarrow(izodip1, colorup=yellow, offset = -2, transp=40) plotarrow(izodip2, colorup=yellow, offset = -1, transp=40) // detector de divergência //@version=2 //Credit to https://www.tradingview.com/script/p3oqCa56-Pekipek-s-PPO-Divergence-BETA/ (I just changed the visuals and added alerts) topbots = input(false, title="Show PPO peak/trough triangles?") long_term_div = input(true, title="Use long term divergences?") div_lookback_period = input(55, minval=1, title="Lookback Period") fastLength1 = input(12, minval=1, title="PPO Fast") slowLength1=input(26, minval=1, title="PPO Slow") signalLength1=input(9,minval=1, title="PPO Signal") smoother = input(2,minval=1, title="PPO Smooth") fastMA1 = ema(source, fastLength1) slowMA1 = ema(source, slowLength1) macd3 = fastMA1 - slowMA1 macd4=(macd3/slowMA1)*100 d = sma(macd4, 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 plotshape(bearish ? d : na, text='▼\nP', style=shape.labeldown, location=location.abovebar, color=maroon, textcolor=white, offset=0) plotshape(bullish ? d : na, text='P\n▲', style=shape.labelup, location=location.belowbar, color=green, textcolor=white, offset=0) plotshape(topbots and greendot ? d : na, text='', style=shape.triangledown, location=location.abovebar, color=maroon, offset=-1) plotshape(topbots and reddot ? d : na, text='', style=shape.triangleup, location=location.belowbar, color=green, offset=-1) //barcolor(bearishdiv1 or bearishdiv2 or bearishdiv3 or bearishdiv4 ? orange : na) //barcolor(bullishdiv1 or bullishdiv2 or bullishdiv3 or bullishdiv4 ? fuchsia : na) //barcolor(#dedcdc) // compra e venda por ema r7=input(100, title="Period", minval=1) b7=ema(close,r7) buy7=close>b7 and low<=b7 and open>b7 or open<b7 and close>b7 sell7=close<b7 and high>=b7 and open<b7 or open>b7 and close<b7 plotshape(buy7, color=green, location=location.belowbar, style=shape.arrowup, transp=10, text="Buy") plotshape(sell7, color=red, location=location.abovebar, style=shape.arrowdown, transp=10, text="Sell") // doji harami pctDw = input(60,minval=0,maxval=90,title="Doji, Min % of Range of Candle for Wicks") pipMin= input(0,minval=0,title="Doji, Previous Candle Min Pip Body Size") sname=input(true,title="Show Price Action Bar Names") cbar = input(false,title="Highlight Harami & Doji Bars") sHm = input(false,title="Show Only Harami Style Doji's") setalm = input(true, title="Generate Alert for Harami & Doji Bars") uha =input(true, title="Use Heikin Ashi Candles for Calculations") bars = input(3,minval=1,maxval=3,step=1, title="Doji, Number of Lookback Bars") // // Use only Heikinashi Candles for all calculations srcclose = uha ? security(heikinashi(syminfo.tickerid), timeframe.period, close) : close srcopen = uha ? security(heikinashi(syminfo.tickerid), timeframe.period, open) : open srchigh = uha ? security(heikinashi(syminfo.tickerid), timeframe.period, high) : high srclow = uha ?security(heikinashi(syminfo.tickerid), timeframe.period, low) : low // pip = syminfo.mintick range = srchigh - srclow // Calculate Doji/Harami Candles pctCDw = (pctDw/2) * 0.01 pctCDb = (100-pctDw) * 0.01 //Lookback Candles for bulls or bears lbBull = bars==1? srcopen[1]>srcclose[1]: bars==2? (srcopen[1]>srcclose[1] and srcopen[2]>srcclose[2]): bars==3?(srcopen[1]>srcclose[1] and srcopen[2]>srcclose[2] and srcopen[3]>srcclose[3]):false lbBear = bars==1? srcopen[1]<srcclose[1]: bars==2? (srcopen[1]<srcclose[1] and srcopen[2]<srcclose[2]): bars==3?(srcopen[1]<srcclose[1] and srcopen[2]<srcclose[2] and srcopen[3]<srcclose[3]):false //Lookback Candle Size only if mininum size is > 0 lbSize = pipMin==0? true : bars==1 ? (abs(srcopen[1]-srcclose[1])>pipMin*pip) : bars==2 ? (abs(srcopen[1]-srcclose[1])>pipMin*pip and abs(srcopen[2]-srcclose[2])>pipMin*pip) : bars==3 ? (abs(srcopen[1]-srcclose[1])>pipMin*pip and abs(srcopen[2]-srcclose[2])>pipMin*pip and abs(srcopen[3]-srcclose[3])>pipMin*pip) : false dojiBu = (srcopen[1] >= max(srcclose,srcopen) and srcclose[1]<=min(srcclose,srcopen)) and lbSize and (abs(srcclose-srcopen)<range*pctCDb and (srchigh-max(srcclose,srcopen))>(pctCDw*range) and (min(srcclose,srcopen)-srclow)>(pctCDw*range))? 1 : 0 dojiBe = (srcclose[1] >= max(srcclose,srcopen) and srcopen[1]<=min(srcclose,srcopen)) and lbSize and (abs(srcclose-srcopen)<range*pctCDb and (srchigh-max(srcclose,srcopen))>(pctCDw*range) and (min(srcclose,srcopen)-srclow)>(pctCDw*range))? 1 : 0 haramiBull = (srcopen<=srcclose or (max(srcclose,srcopen)-min(srcclose,srcopen))<pip*0.5) and lbBull and dojiBu haramiBear = (srcopen>=srcclose or (max(srcclose,srcopen)-min(srcclose,srcopen))<pip*0.5) and lbBear and dojiBe dojiBull = not sHm and not haramiBull and not haramiBear and lbBull and dojiBu dojiBear = not sHm and not haramiBull and not haramiBear and lbBear and dojiBe // plotshape(haramiBear and sname?srchigh:na,title="Bearish Harami",text='Bearish\nHarami',color=red, style=shape.arrowdown,location=location.abovebar) plotshape(haramiBear and cbar?max(srcopen,srcclose):na,title="Bear Colour Harami",color=red, style=shape.circle,location=location.absolute,size=size.normal) // plotshape(haramiBull and sname?srclow:na,title="Bullish Harami",text='Bullish\nHarami',color=green, style=shape.arrowup,location=location.belowbar) plotshape(haramiBull and cbar?max(srcopen,srcclose):na,title="Bull Colour Harami",color=green, style=shape.circle,location=location.absolute,size=size.normal) // plotshape(dojiBear and sname?srchigh:na,title="Bearish Doji",text='Bearish\nDoji',color=fuchsia, style=shape.arrowdown,location=location.abovebar) plotshape(dojiBear and cbar?max(srcopen,srcclose):na,title="Bear Colour Doji",color=fuchsia, style=shape.circle,location=location.absolute,size=size.normal) // plotshape(dojiBull and sname?srclow:na,title="Bullish Doji",text='Bullish\nDoji',color=aqua, style=shape.arrowup,location=location.belowbar) plotshape(dojiBull and cbar?max(srcopen,srcclose):na,title="Bull Colour Doji",color=aqua, style=shape.circle,location=location.absolute,size=size.normal) // Only Alert harami Doji's bcolor = haramiBull ? 1 : haramiBear ? 2 : dojiBull ? 3 : dojiBear ? 4 : 0 baralert = setalm and bcolor>0 alertcondition(baralert,title="PACDOJI Alert",message="PACDOJI Alert") // plotshape(na(baralert[1])?na:baralert[1], transp=0,style=shape.circle,location=location.bottom, offset=-1,title="Bar Alert Confirmed", color=bcolor[1]==1 ? green : bcolor[1]==2? red : bcolor[1]==3? aqua : bcolor[1]==4? fuchsia : na) //