
ایک واپسی کی واپسی کی حکمت عملی ایک حکمت عملی ہے جو رجحان کی واپسی کو پکڑنے کے لئے میڈ لائن ، MACD ، RSI اور ADX جیسے اشارے کا استعمال کرتی ہے ، اور واپسی کے مرحلے میں داخل ہوتی ہے۔ یہ خاص طور پر ایکشنسٹ کنگ پر مبنی ہے ، اور اس کی عام واپسی کی خصوصیات کا استعمال کرتے ہوئے واپسی کا کام کرتا ہے۔
یہ حکمت عملی ای ایم اے کی مساوی لائن کا استعمال کرتی ہے تاکہ مجموعی رجحان کی سمت کا تعین کیا جاسکے۔ اس کے علاوہ ، اس حکمت عملی کا مقصد اس بات کا تعین کرنا ہے کہ جب قیمت مضبوط علاقوں سے کمزوری والے علاقوں میں واپس آجائے تو رجحان کا رخ موڑنے کا موقع موجود ہے۔
غلط فہمی کو فلٹر کرنے کے لئے ، حکمت عملی میں MACD اشارے شامل کریں تاکہ قلیل مدتی الٹ سگنل کا فیصلہ کیا جاسکے۔ MACD مطلق قیمت ایک خاص حد سے زیادہ ہونے پر ، الٹ ہونے کا موقع زیادہ سمجھا جاتا ہے۔ اس کے ساتھ ہی ، ADX کی قیمت کو کسی خاص سطح سے زیادہ کی ضرورت ہوتی ہے ، اس بات کو یقینی بنانا کہ یہ فی الحال رجحان کی مارکیٹ میں ہے نہ کہ بازار کو ختم کرنا۔
آخر میں ، آر ایس آئی اشارے کا کام اوورلوڈ زون میں خریدنے سے بچنے اور اوورلوڈ زون میں فروخت کرنے سے بچنے کے لئے ہے۔ آر ایس آئی کی قیمت صرف ایک مخصوص حد تک محدود ہونے پر ہی سگنل دیتی ہے۔
ہر بار ای ایم اے کی اوسط لائن کراس ہونے پر ، حکمت عملی کی تجارت کی تعداد صفر ہے۔ اس کے علاوہ ، ہر بار کراس ہونے والی زیادہ سے زیادہ تجارت کی تعداد مقرر کی جاسکتی ہے ، تاکہ بار بار تجارت سے بچا جاسکے۔
جب شرائط پوری ہوجائیں تو ، اسٹاپ نقصان اور اسٹاپ اسٹاپ تناسب کے مطابق ایک ٹرسٹ ترتیب دیں اور ریورس تجارت کریں۔
اس حکمت عملی کا سب سے بڑا فائدہ ای ایم اے کی طرف سے تعمیر کردہ مضبوط اور کمزور علاقوں کا استعمال کرنا ہے، جس میں شدت پسندوں کے پیچھے ہٹنے کی خصوصیت کو پکڑنے کے لئے استعمال کیا جاتا ہے. غلط اندراج کو فلٹر کرنے کے لئے ایک سے زیادہ اشارے کا استعمال کرتے ہوئے، اعلی وشوسنییتا.
اس حکمت عملی میں رجحان کا فیصلہ شامل کیا گیا ہے تاکہ غیر ضروری الٹ کو کم کیا جاسکے۔ اس کے علاوہ ، ہر ای ایم اے کراسنگ پر زیادہ سے زیادہ تجارت کو کنٹرول کیا جاسکتا ہے ، جس سے بار بار تجارت میں بڑے نقصانات کو روکا جاسکتا ہے۔
اس حکمت عملی کا سب سے بڑا خطرہ یہ ہے کہ جب بادشاہ واپس نہ آئے۔ اگر بادشاہ براہ راست ای ایم اے کو توڑ کر اوپر یا نیچے چلا جاتا ہے تو یہ حکمت عملی غلط سگنل پیدا کرے گی اور واپسی میں داخل ہوگی۔ اس وقت نقصان کو کنٹرول کرنے کے لئے اسٹاپ نقصان کی ضرورت ہے۔
اس کے علاوہ ، غیر معقول اشارے کے پیرامیٹرز سگنل کے معیار میں کمی کا سبب بن سکتے ہیں۔ مارکیٹ کے مختلف حالات کے مطابق آپٹیمائزیشن پیرامیٹرز کو بار بار جانچنے کی ضرورت ہے۔
آخر میں ، اسٹاپ نقصان کی حد بہت زیادہ مقرر کرنا ، یا الٹ جانے کے بعد شدت پسند جھٹکے جاری رکھنا ، انفرادی نقصان کو بڑھا سکتا ہے۔ اس کے لئے مناسب اسٹاپ نقصان اور خطرے کے انتظام میں اضافہ کی ضرورت ہے۔
یہ حکمت عملی مندرجہ ذیل پہلوؤں سے بہتر بنائی جا سکتی ہے۔
مختلف مارکیٹوں اور پیرامیٹرز کی جانچ کرنا تاکہ ای ایم اے رجحانات کا زیادہ درست اندازہ لگاسکے۔
MACD پیرامیٹرز کو بہتر بنانے کے لئے تاکہ اس کے ریورس سگنل کو زیادہ درست اور قابل اعتماد بنایا جاسکے۔
RSI پیرامیٹرز کی حد کو ایڈجسٹ کریں تاکہ زیادہ خرید و فروخت والے علاقوں سے بچا جاسکے۔
اسٹاپ نقصان کی روک تھام کے تناسب کو بہتر بنانا ، ایک بار کے نقصان کا خطرہ کم کرنا
پیچھے ہٹنا اور پیچھے ہٹنا بادشاہ کی حکمت عملی خاص طور پر متحرک بادشاہ کی پیچھے ہٹنے کی خصوصیت کے لئے پیچھے ہٹنے کی مشق کرتی ہے ، جو قلیل مدتی الٹ جانے کے مواقع کو مؤثر طریقے سے پکڑ سکتی ہے۔ یہ ای ایم اے کے متعدد فلٹرز کا استعمال کرتے ہوئے رجحان کی سمت اور طاقت کا تعین کرتا ہے۔ اور ایم اے سی ڈی ، آر ایس آئی جیسے اشارے کے ساتھ داخلے کی تصدیق ، اعلی وشوسنییتا ہے۔ پیرامیٹرز کی جانچ اور اصلاح کے ذریعہ ، مختلف مارکیٹ کے حالات کے مطابق ڈھالنے کے قابل ، یہ ایک بہت ہی عملی رجحان الٹ حکمت عملی ہے۔
/*backtest
start: 2023-09-16 00:00:00
end: 2023-10-16 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © npietronuto1
//@version=5
strategy("Hulk Scalper x35 Leverage", shorttitle = "Smash Pullback Strat", overlay=true, initial_capital=100, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//RSI
rsiLength = input.int(20)
RsiTopInput = input.int(2)
RsiBotInput = input.int(-2)
// toprsiLine = hline(RsiTopInput, title = "Rsi Top Line", linestyle = hline.style_solid)
// botrsiLine = hline(RsiBotInput, title = "Rsi Bottom Line", linestyle = hline.style_solid)
rsi = ta.rsi(close, rsiLength)
rsiWeighted = rsi - 50 //Zeros Rsi to look nicer
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
dirmov(len) =>
up = ta.change(high)
down = -ta.change(low)
plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
truerange = ta.rma(ta.tr, len)
plus = fixnan(100 * ta.rma(plusDM, len) / truerange)
minus = fixnan(100 * ta.rma(minusDM, len) / truerange)
[plus, minus]
adx(dilen, adxlen) =>
[plus, minus] = dirmov(dilen)
sum = plus + minus
adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
sig = adx(dilen, adxlen)
ADXfilterlevel = input.int(33, title = "ADX filter amount")
// plot(sig, color=color.red, title="ADX")
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//MACD
FastMacdLength = input.int(12, group = "MACD")
SlowMacdLength = input.int(26, group = "MACD")
SignalLength = input.int(11, group = "MACD")
MacdTickAmountNeeded = input.float(5.45, title = "Tick Amount for entry", group = "MACD")
res = input.timeframe("1", group = "MACD")
// bullishgrow_col = input.color(defval = #3179f5)
// bullishweaken_col = input.color(defval = #00e1ff)
// bearishweaken_col = input.color(defval = #ff01f1)
// bearishgrow_col = input.color(defval = #9d00e5)
[FastMacd, SlowMacd, Macdhist] = ta.macd(close, FastMacdLength, SlowMacdLength, SignalLength)
//Pull MACD from Lower timeframe
MACD = request.security(syminfo.tickerid, res, Macdhist, gaps = barmerge.gaps_on)
//Grow and Fall Color
// getgrow_fall_col(Value) =>
// if Value >= 0
// if Value >= Value[1]
// color.new(bullishgrow_col, transp = 10)
// else if Value <= Value[1]
// color.new(bullishweaken_col, transp = 10)
// else if Value <= 0
// if Value <= Value[1]
// color.new(bearishgrow_col, transp = 10)
// else if Value >= Value[1]
// color.new(bearishweaken_col, transp = 10)
//CONDITIONS that check if MACD is overbought or oversold
MACDisAboveBand = MACD > MacdTickAmountNeeded
MACDisBelowBand = MACD < MacdTickAmountNeeded*-1
//Plot
// plot(MACD, style = plot.style_columns, color = getgrow_fall_col(MACD))
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//EMAs
//Inputs
EmaFastLength = input.int(50, title = "Ema Fast Length")
EmaSlowLength = input.int(200, title = "Ema Slow Length")
StrongUpTrendCol = input.color(color.rgb(74, 255, 163))
//WeakUptrend = input.color(color.rgb(74, 255, 163, 50))
StrongDownTrendCol = input.color(color.rgb(255, 71, 84))
//WeakDownTrend = input.color(color.rgb(255, 71, 84, 50))
//Calculations
emaFast= ta.ema(close, EmaFastLength)
emaSlow= ta.ema(close, EmaSlowLength)
emaDist=emaFast-emaSlow
EmaLengthFraction = emaDist/4
emafrac5 = emaSlow + EmaLengthFraction
emafrac4 = emaSlow + EmaLengthFraction*2
emafrac3 = emaSlow + EmaLengthFraction*3
emafrac2 = emaSlow + EmaLengthFraction*4
UptrendCol_DowntrendCol= emaFast>=emaSlow ? StrongUpTrendCol:StrongDownTrendCol
//Plot
ema1p = plot(emaFast, color = color.new(#000000, transp = 100))
ema2p = plot(emafrac2, color = color.new(#000000, transp = 100))
ema3p = plot(emafrac3, color = color.new(#000000, transp = 100))
ema4p = plot(emafrac4, color = color.new(#000000, transp = 100))
ema5p = plot(emafrac5, color = color.new(#000000, transp = 100))
ema6p = plot(emaSlow, color = color.new(#000000, transp = 100))
fill(ema2p,ema3p, color = color.new(UptrendCol_DowntrendCol, 70))
fill(ema3p,ema4p, color = color.new(UptrendCol_DowntrendCol, 60))
fill(ema4p,ema5p, color = color.new(UptrendCol_DowntrendCol, 50))
fill(ema5p,ema6p, color = color.new(UptrendCol_DowntrendCol, 40))
//Conditons
FastEma_above_SlowEma = emaFast > emaSlow
FastEma_below_SlowEma = emaFast < emaSlow
emaCrossEvent = ta.crossover(emaFast, emaSlow) or ta.crossover(emaSlow, emaFast)
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//Trade Cap per EMA X
//Inputs
MaxTrades_PerCross_Checkbox = input.bool(true, "Limit Trades Per Cross", group = "Filters")
TrdCount = 0//Variable that keeps current trade count
if(TrdCount[1] > 0)//Passes variable on to current candle
TrdCount := TrdCount[1]
//Reset trade count if EMAs X
emaXevent = ta.crossover(emaFast, emaSlow) or ta.crossover(emaSlow, emaFast) // Check for EMA cross
if(emaXevent)
TrdCount := 0
//Conditions
MaxTrades = input.int(6)
IsMaxTrades_BelowCap = TrdCount[1] < MaxTrades //Condition that applies max trade count
if(not MaxTrades_PerCross_Checkbox)
IsMaxTrades_BelowCap := true
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//STRATEGY LOGIC
//Parameters
TakeProfitInput = input.float(0.0135, title = "Take Profit %", group = "TP/SL")
StopLossInput = input.float(0.011, title = "Stop Loss %", group = "TP/SL")
//TP/SL calculations
Long_takeProfit = close * (1 + TakeProfitInput)
Long_stopLoss = close * (1 - StopLossInput)
Short_takeProfit = close * (1 - TakeProfitInput)
Short_stopLoss = close * (1 + StopLossInput)
//LONG and Short
LongConditionPt1 = close > emaSlow and MACDisBelowBand and sig > ADXfilterlevel
LongConditionPt2 = FastEma_above_SlowEma and IsMaxTrades_BelowCap and strategy.position_size == 0
//Checks if Rsi Inbetween Lines
LongConditionPt3 = rsiWeighted < RsiTopInput and rsiWeighted > RsiBotInput
ShortConditionPt1 = close < emaSlow and MACDisAboveBand and sig > ADXfilterlevel
ShortConditionPt2 = FastEma_below_SlowEma and IsMaxTrades_BelowCap and strategy.position_size == 0
//Checks if Rsi Inbetween Lines
ShortConditionPt3 = rsiWeighted < RsiTopInput and rsiWeighted > RsiBotInput
// longCondition = FastEma_above_SlowEma and MACDisBelowBand and IsMaxTrades_BelowCap and rsiWeighted < RsiTopInput and strategy.position_size == 0
longCondition = LongConditionPt1 and LongConditionPt2 and LongConditionPt3
if(longCondition)
strategy.entry("long", strategy.long)
strategy.exit("exit", "long", limit = Long_takeProfit, stop = Long_stopLoss)
TrdCount := TrdCount + 1//ADD to Max Trades Count
alert("Go Long with TP at" + str.tostring(Long_takeProfit) + "and SL at" + str.tostring(Long_stopLoss), alert.freq_once_per_bar_close)
shortCondition = ShortConditionPt1 and ShortConditionPt2 and ShortConditionPt3
if(shortCondition )
strategy.entry("short", strategy.short)
strategy.exit("exit", "short", limit = Short_takeProfit, stop = Short_stopLoss)
TrdCount := TrdCount + 1 //ADD to Max Trades Count
alert("Go Short with TP at" + str.tostring(Short_takeProfit) + "and SL at" + str.tostring(Short_stopLoss), alert.freq_once_per_bar_close)