यह अध्ययन परियोजना एक स्केलिंग पुलबैक ट्रेडिंग टूल है जिसमें 1 मिनट, 5 मिनट या 15 मिनट के चार्ट पर पुलबैक और उलटफेर के लिए विश्लेषण और स्केलिंग के लिए आवश्यक अधिकांश संकेतक शामिल हैं। स्थापित उपयोगिताएं हेकिन आशि मोमबत्ती चार्ट हैं। इस टूल के भीतर निम्नलिखित संकेतक शामिल हैंः
बैकटेस्ट
/*backtest start: 2022-05-12 00:00:00 end: 2022-05-18 23:59:00 period: 3m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // study(title="Scalping PullBack Tool R1.1 by JustUncleL", shorttitle="SCALPTOOL R1.1", overlay=true) // // Revision: 1.1 // Original Author: JustUncleL // // Description: // This study project is a Scalping Pullback trading Tool that incorporates the majority of the indicators // needed to analyse and scalp Trends for Pull Backs and reversals intended for lower time frame // charts upto 15min, but it should work just as well on higher time frame charts for // longer term trades. // // This Tool can be used with Heikin Ashi (HA) candle charts or normal candle charts, HA candles // will show a cleaner/smoother looking candle trend but not show true prices. // // Incorporated within this tool are the following indicators: // 1. Trader selectable important EMAs in an EMA style Ribbon: // - Green = fast EMA (default=89) // - Blue = medium EMA (default=200) // - Black = slow EMA (default=600) // 2. The PAC EMA (default=34) High/Low+Close creates the Price Action Channel (PAC). // 3. Fractals // 4. HH, LH, LL, HL finder may help with drawing Trend lines and mini Trend Lines. // 5. Coloured coded Bar high lighting based on the PAC: // - blue = bar closed above PAC // - red = bar closed below PAC // - gray = bar closed inside PAC // - red line = PAC EMA (34) of bar close // 6. Coloured chart Background to indicate Trend direction // (NOTE: slow EMA(600) is not used in this Algo): // - green = Trend direction is up when PAC and fast EMA(89) are above medium EMA(200). // - red = Trend direction is down when PAC and fast EMA(89) are below medium EMA(200). // - yellow = Trend direction is in transition. // 7. Pullback is defined as Price starts outside the PAC and then pulls back into the PAC // closing the opposite side of the PAC centre line, then a recovery arrow can occur. // 8. Coloured Alert Arrows: // - maroon down arrow = Pullback recovery Sell alert // - green up arrow = Pullback recovery Buy alert // 9. Option to force Heikin Ashi candles in Algo calculations. // // Setup and hints: // // - I also add "Sweetspot Gold RN" indicator to the chart as well to help with support and resistance // finding and shows where the important "00" and "0" lines are. // - When price is above the PAC(blue bars) we are only looking to buy as price comes back to the PAC // When price is below the PAC(red bars), we are only looking to sell when price comes back to the PAC // - What we’re looking for when price comes back into the PAC we draw mini Trendlines (TL) uitilising the // Fractals and HH/LL points to guide your TL drawing. // - Now look for the trend to pull back and break the drawn mini TL. That's is where we can place the scalp // trade. // - So we are looking for continuation signals in terms of a strong, momentum driven pullbacks // of the PAC EMA(34). // - The other EMAs are there to check for other Pullbacks when PAC EMA (34) is broken. // - Other than the "SweetSpot Gold RN" indicator, you should not need any other indicator to scalp // for pullbacks. // - If you want to trade shallower Pullbacks for quicker scalps, try reducing the // PAC and EMA combination lengths for example: // * 21 PAC and 55, 144, 377 for fast, medium, slow EMAs // * 13 PAC and 34, 89, 233 for fast, medium, slow EMAs // - Each alert should be evaluated on it's own merits, the alerts are designed to highlight possible // scalping trades from Pullback recoveries around the PAC. // // References: // - [RS]Fractals V8 by RicardoSantos // - Price Action Trading System v0.3 by JustUncleL // - SweetSpot Gold RN by JustUncleL // - http://www.swing-trade-stocks.com/pullbacks.html // - https://www.forexstrategiesresources.com/scalping-forex-strategies/106-1-min-scalping-with-34-exponential-moving-average-channel/ // // Modifications: // 4-Feb-2020 Release R1.1 changes made to provide a more versitile tool // - Upgraded to Pinescript R4 // - Reodered code into more logical blocks // - Added option for PAC filtered Alerts and Alarms. // - Added option to alter the default EMA lengths. // - Added option to Show each EMA line. // - Added option to use Heikin Ashi candles for Algo calculations // even when normal candles are displayed on chart. // // === INPUTS === HiLoLen = input(34, minval=2, title="High Low PAC channel Length") fastEMAlength = input(89, minval=2) mediumEMAlength = input(200, minval=2) slowEMAlength = input(600, minval=2) ShowFastEMA = input(true) ShowMediumEMA = input(true) ShowSlowEMA = input(false) ShowHHLL = input(false) ShowFractals = input(true) filterBW = input(false, title="Show Ideal Fractals Only") ShowBarColor = input(true, title="Show coloured Bars around PAC") ShowBuySell = input(true, title="Show Buy/Sell Alert Arrows") Lookback = input(3, minval=1, title="Pullback Lookback for PAC Cross Check") DelayArrow = input(false, title="Show Alert Arrows Only on Closed Candles") Delay = DelayArrow ? 1 : 0 ShowTrendBGcolor= input(true) UseHAcandles = input(true, title="Use Heikin Ashi Candles in Algo Calculations") // // === /INPUTS === // === BASE FUNCTIONS === haClose = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, close) : close haOpen = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, open) : open haHigh = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, high) : high haLow = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, low) : low // ||--- Fractal Recognition Functions: ---------------------------------------------------------------|| isRegularFractal(mode) => ret = mode == 1 ? high[4] < high[3] and high[3] < high[2] and high[2] > high[1] and high[1] > high[0] : mode == -1 ? low[4] > low[3] and low[3] > low[2] and low[2] < low[1] and low[1] < low[0] : false ret isBWFractal(mode) => ret = mode == 1 ? high[4] < high[2] and high[3] <= high[2] and high[2] >= high[1] and high[2] > high[0] : mode == -1 ? low[4] > low[2] and low[3] >= low[2] and low[2] <= low[1] and low[2] < low[0] : false ret // ||-----------------------------------------------------------------------------------------------------|| // // === /BASE FUNCTIONS === // === SERIES SETUP === // // ||--- Setup Moving Averages and PAC channel: // ||-----------------------------------------------------------------------------------------------------|| fastEMA = ema(haClose, fastEMAlength) mediumEMA = ema(haClose, mediumEMAlength) slowEMA = ema(haClose, slowEMAlength) pacC = ema(haClose, HiLoLen) pacL = ema(haLow, HiLoLen) pacU = ema(haHigh, HiLoLen) TrendDirection = fastEMA > mediumEMA and pacL > mediumEMA ? 1 : fastEMA < mediumEMA and pacU < mediumEMA ? -1 : 0 // ||--- Fractal Recognition: // ||-----------------------------------------------------------------------------------------------------|| filteredtopf = filterBW ? isRegularFractal(1) : isBWFractal(1) filteredbotf = filterBW ? isRegularFractal(-1) : isBWFractal(-1) // ||-----------------------------------------------------------------------------------------------------|| // ||--- Higher Highs, Lower Highs, Higher Lows, Lower Lows -------------------------------------------|| valuewhen_H0 = valuewhen(filteredtopf == true, high[2], 0) valuewhen_H1 = valuewhen(filteredtopf == true, high[2], 1) valuewhen_H2 = valuewhen(filteredtopf == true, high[2], 2) // higherhigh = filteredtopf == false ? false : valuewhen_H1 < valuewhen_H0 and valuewhen_H2 < valuewhen_H0 lowerhigh = filteredtopf == false ? false : valuewhen_H1 > valuewhen_H0 and valuewhen_H2 > valuewhen_H0 valuewhen_L0 = valuewhen(filteredbotf == true, low[2], 0) valuewhen_L1 = valuewhen(filteredbotf == true, low[2], 1) valuewhen_L2 = valuewhen(filteredbotf == true, low[2], 2) // higherlow = filteredbotf == false ? false : valuewhen_L1 < valuewhen_L0 and valuewhen_L2 < valuewhen_L0 lowerlow = filteredbotf == false ? false : valuewhen_L1 > valuewhen_L0 and valuewhen_L2 > valuewhen_L0 // // === /SERIES === // // === PLOTTING === // // Plot the Price Action Channel (PAC) base on EMA high,low and close L = plot(pacL, color=color.gray, linewidth=1, title="High PAC EMA", transp=50) U = plot(pacU, color=color.gray, linewidth=1, title="Low PAC EMA", transp=50) C = plot(pacC, color=color.red, linewidth=2, title="Close PAC EMA", transp=0) fill(L, U, color=color.gray, transp=90, title="Fill HiLo PAC") // Colour bars according to the close position relative to the PAC selected. BARcolor = haClose > pacU ? color.blue : haClose < pacL ? color.red : color.gray barcolor(ShowBarColor ? BARcolor : na, title="Bar Colours") // BGcolor = TrendDirection == 1 ? color.green : TrendDirection == -1 ? color.red : color.yellow bgcolor(ShowTrendBGcolor ? BGcolor : na, transp=90, title="Trend BG Color") // Draw the EMA ribbon plot(ShowFastEMA ? fastEMA : na, color=color.green, linewidth=2, transp=20, title="fastEMA") plot(ShowMediumEMA ? mediumEMA : na, color=color.blue, linewidth=3, transp=20, title="mediumEMA") plot(ShowSlowEMA ? slowEMA : na, color=color.black, linewidth=4, transp=20, title="slowEMA") // plotshape(ShowFractals ? filteredtopf : na, title='Filtered Top Fractals', style=shape.triangledown, location=location.abovebar, color=color.red, offset=-2) plotshape(ShowFractals ? filteredbotf : na, title='Filtered Bottom Fractals', style=shape.triangleup, location=location.belowbar, color=color.lime, offset=-2) // plotshape(ShowHHLL ? higherhigh : na, title='Higher High', style=shape.square, location=location.abovebar, color=color.maroon, text="[HH]", offset=-2) plotshape(ShowHHLL ? lowerhigh : na, title='Lower High', style=shape.square, location=location.abovebar, color=color.maroon, text="[LH]", offset=-2) plotshape(ShowHHLL ? higherlow : na, title='High Low', style=shape.square, location=location.belowbar, color=color.green, text="[HL]", offset=-2) plotshape(ShowHHLL ? lowerlow : na, title='Lower Low', style=shape.square, location=location.belowbar, color=color.green, text="[LL]", offset=-2) // // === /PLOTTING === // === ALERTING === // // Initialise Trading state. TradeDirection = 0 TradeDirection := nz(TradeDirection[1]) // pacExitU = haOpen < pacU and haClose > pacU and barssince(haClose<pacC)<=Lookback pacExitL = haOpen > pacL and haClose < pacL and barssince(haClose>pacC)<=Lookback plotshape(barssince(haClose<pacC),color=na,location=location.bottom,title="barssince(haClose<pacC)") plotshape(barssince(close>pacC),color=na,location=location.bottom,title="barssince(haClose>pacC)") // Buy = TrendDirection == 1 and pacExitU Sell = TrendDirection == -1 and pacExitL // // Keep Current trading state until Pullback occurs or New Recovery. TradeDirection := TradeDirection == 1 and haClose<pacC ? 0 : TradeDirection == -1 and haClose>pacC ? 0 : TradeDirection == 0 and Buy ? 1 : TradeDirection == 0 and Sell ? -1 : TradeDirection // Show buy/sell arrows //plotarrow(ShowBuySell and nz(TradeDirection[1+Delay]) == 0 and TradeDirection[Delay] != 0 ? TradeDirection[Delay] : na, offset=-Delay, // colorup=color.green, colordown=color.maroon, transp=20, minheight=20, maxheight=50, title="Buy/Sell Arrow") // // Create alerts for TradingView Alarm subsystem. Long = nz(TradeDirection[1]) == 0 and TradeDirection == 1 Short = nz(TradeDirection[1]) == 0 and TradeDirection == -1 alertcondition(Long, title="Buy Condition", message="BUY") alertcondition(Short, title="Sell Condition", message="SELL") // // === /ALERTING === // === eof. if Long strategy.entry("Enter Long", strategy.long) else if Short strategy.entry("Enter Short", strategy.short)