
کثیر فیکٹر خود کار طریقے سے متحرک ٹریکنگ حکمت عملی مارکیٹ کے رجحانات اور اہم معاون مزاحمت کی سطح کی شناخت کرنے کے لئے متعدد تکنیکی اشارے کو مربوط کرکے کریپٹو کرنسیوں جیسے اعلی اتار چڑھاؤ والے اثاثوں پر خودکار تجارت کو ممکن بناتا ہے۔ اس حکمت عملی میں آر ایس آئی ، ایم اے سی ڈی ، اسٹوکاسٹک جیسے اشارے کا استعمال کرتے ہوئے خرید و فروخت کے وقت کا فیصلہ کیا جاتا ہے ، جبکہ قیمت میں تبدیلی کی فیصد کے ساتھ مل کر زیادہ درست شکل کی شناخت کی جاتی ہے۔
ملٹی فیکٹر آڈاپٹیو موشن ٹریکنگ حکمت عملی کا بنیادی حصہ متعدد تکنیکی اشارے کے مربوط استعمال میں ہے۔ یہ حکمت عملی بنیادی طور پر مندرجہ ذیل اجزاء پر کام کرتی ہے۔
آر ایس آئی اشارے اوور بیو اور اوور سیل کا فیصلہ کرتا ہے۔ مختلف پیرامیٹرز کے ساتھ مل کر عام آر ایس آئی سگنل یا کونر آر ایس آئی سگنل کو بہتر بنانے کی نشاندہی کی جاسکتی ہے ، تاکہ یہ معلوم کیا جاسکے کہ واپسی کا موقع موجود ہے یا نہیں۔
MACD اشارے رجحان کی سمت کا تعین کرنے میں مدد کرتا ہے۔ جب MACD لائن کو عبور کرتا ہے یا سگنل لائن کو عبور کرتا ہے تو خریدنے اور بیچنے کے سگنل پیدا ہوتے ہیں۔
اسٹاکسٹک اشارے اوورلوڈ اوور سیل زون کی نشاندہی کرتا ہے۔ K لائن اور D لائن کا گولڈ فورک اور ڈیڈ فورک مجموعہ سگنل فیصلہ کرتا ہے کہ آیا اس کا رخ موڑ لیا گیا ہے۔
قیمت میں تبدیلی کا فیصد چیک کریں کہ آیا حقیقی توڑ ہے۔ کسی خاص دورانیے میں اعلی ترین قیمت ، کم ترین قیمت ، اختتامی قیمت وغیرہ میں تبدیلی کا فیصد حساب لگائیں ، فیصلہ کریں کہ آیا یہ حقیقی توڑ ہے۔
ای ایم اے اشارے بڑے پیمانے پر اوور ہاؤسنگ کا فیصلہ کرتے ہیں۔ تیز لائن پر سست لائن کو پائیڈ سگنل کے طور پر پار کریں ، اور نیچے کو پائیڈ سگنل کے طور پر۔
یہ حکمت عملی مارکیٹ کے زیادہ خالی حالت کے مطابق زیادہ سے زیادہ کاؤک آؤٹ کرنے کا انتخاب کرتی ہے ، اور پوزیشن میں داخل ہونے کے بعد اسٹاپ نقصان کا بندوبست کرتی ہے ، تاکہ خطرے کو مؤثر طریقے سے کنٹرول کیا جاسکے۔ جب الٹ سگنل ظاہر ہوتا ہے تو خالی پوزیشن چھوڑنے کا انتخاب کریں۔ فیصلہ سازی کے پورے عمل میں متعدد عوامل کے فیصلے کو بھرپور طور پر شامل کیا گیا ہے ، تاکہ زیادہ درست فیصلہ کیا جاسکے۔
اس حکمت عملی کے درج ذیل فوائد ہیں:
ملٹی فیکٹر ڈرائیو میں فیصلہ کرنے کا فائدہ ہے۔ ایک ہی اشارے کے مقابلے میں ، ملٹی میٹرکس کا مجموعہ ایک دوسرے کی تصدیق کرسکتا ہے ، جس سے نتائج زیادہ درست اور قابل اعتماد ہوجاتے ہیں ، اور اس طرح غیر ضروری ٹرانزیکشن لاگت کو بچایا جاتا ہے۔
شرائط سختی سے غلط تجارت سے بچنے کے لئے۔ حکمت عملی نے خرید و فروخت کی شرائط کے لئے سخت تقاضے طے کیے ہیں ، جس میں متعدد اشارے ایک ساتھ سگنل جاری کرنے کی ضرورت ہوتی ہے ، تاکہ بہت سارے شور کو فلٹر کیا جاسکے اور غلط تجارت سے بچایا جاسکے۔
خود کو اپنانے سے ہیپر پیرامیٹرز میں انسانی مداخلت کو کم کیا جاتا ہے۔ حکمت عملی میں شامل اشارے کے پیرامیٹرز کو متحرک طور پر گننے کی صلاحیت ، حکمت عملی کے پیرامیٹرز کو زیادہ سائنسی مقصد بنانے کے لئے ہیپر پیرامیٹرز کی ذہنیت کو منتخب کرنے سے گریز کرتی ہے۔
اسٹاپ نقصان کی روک تھام کے طریقہ کار کا خطرہ کنٹرول کریں۔ حکمت عملی پوزیشن کھولنے کے بعد اصل وقت میں اسٹاپ نقصان کی روک تھام کی پوزیشن کا حساب لگاتی ہے اور اس کی نقشہ تیار کرتی ہے ، جس سے ایک ہی نقصان کو مؤثر طریقے سے کنٹرول کیا جاسکتا ہے ، اور پوزیشن کے پھوٹ پڑنے سے بچایا جاسکتا ہے۔
اس حکمت عملی میں کچھ خطرات بھی ہیں جن سے بچنے کی ضرورت ہے:
اشارے کی غلطی سے سگنل جاری ہونے کا امکان۔ اگرچہ کثیر اشارے کی توثیق سے غلط سگنل کی شرح میں نمایاں کمی واقع ہوسکتی ہے ، لیکن اس کا امکان موجود ہے۔ اس سے غیر ضروری نقصان ہوسکتا ہے۔
اسٹاپ نقصان کے خلاف ورزی کا خطرہ۔ انتہائی حالات میں ، قیمتوں میں تیزی سے کمی واقع ہوسکتی ہے ، جس کی وجہ سے اصل اسٹاپ نقصان آسانی سے ٹوٹ جاتا ہے ، جس سے زیادہ نقصان ہوتا ہے۔
پیرامیٹرز کی اصلاح سے زیادہ سے زیادہ اصلاح۔ متحرک پیرامیٹرز ، اگرچہ مصنوعی انتخاب سے متعلق موضوعیت سے بچنے کے باوجود ، پیرامیٹرز کی ضرورت سے زیادہ اصلاح کی وجہ سے عام کرنے کی صلاحیت کو ضائع کرسکتے ہیں۔
اس کا حل کیا ہے؟
ملٹی فیکٹر ایڈاپٹیو موٹ ٹریسنگ حکمت عملی میں مندرجہ ذیل کئی قابل اصلاح جہتیں ہیں:
فیصلہ کرنے والے عوامل کی تعداد میں اضافہ کریں۔ مزید مختلف اقسام کے اشارے سگنل فیصلے ، جیسے اتار چڑھاؤ کی شرح ، تجارت کا حجم وغیرہ کے معاون فیصلے کے ساتھ۔
اسٹاپ نقصان کے طریقہ کار کو بہتر بنانے کے لئے الگورتھم۔ مزید اعلی درجے کی اسٹاپ نقصان کے الگورتھم جیسے ٹریکنگ اسٹاپ ، شاک اسٹاپ متعارف کروائے جاسکتے ہیں ، جس سے اسٹاپ نقصان کے خلاف ورزی کی امکانات کو مزید کم کیا جاسکتا ہے۔
مشین لرننگ ماڈل متعارف کروانا۔ آر این این ، ایل ایس ٹی ایم اور دیگر ماڈلز کا استعمال کرتے ہوئے تاریخی اعداد و شمار کو ماڈلنگ کرنا ، جو خرید و فروخت کے فیصلے میں معاون ہے۔
حکمت عملی انضمام۔ متعدد ذیلی حکمت عملیوں کو اپنانے اور انضمام کے ل integrated انضمام کے ل integrated انضمام کے ل integrated انضمام کے ل integrated انضمام کے ل integrated انضمام کے ل integrated انضمام کے ل more زیادہ مستحکم مجموعی کارکردگی حاصل کی جاسکتی ہے۔
کثیر عنصر خود کار طریقے سے متحرک ٹریکنگ حکمت عملی کو متعدد تکنیکی اشارے کا استعمال کرتے ہوئے خرید و فروخت کے وقت کی نشاندہی کی گئی ہے۔ یہ حکمت عملی ایک ہی اشارے کے مقابلے میں زیادہ درست ہے ، جبکہ خود کار طریقے سے موافقت اور روکنے کے طریقہ کار کے خطرات پر قابو پانے والے پیرامیٹرز ہیں۔ مزید معاون فیصلہ کن عوامل ، اعلی درجے کی روک تھام کے الگورتھم اور مشین لرننگ جیسے طریقوں کو متعارف کرانے کے ذریعہ اس حکمت عملی کی تاثیر کو مزید بڑھا دیا جاسکتا ہے۔
/*backtest
start: 2023-12-04 00:00:00
end: 2023-12-11 00:00:00
period: 3m
basePeriod: 1m
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/
//@version=4
// ██████╗██████╗ ███████╗ █████╗ ████████╗███████╗██████╗ ██████╗ ██╗ ██╗
//██╔════╝██╔══██╗██╔════╝██╔══██╗╚══██╔══╝██╔════╝██╔══██╗ ██╔══██╗╚██╗ ██╔╝
//██║ ██████╔╝█████╗ ███████║ ██║ █████╗ ██║ ██║ ██████╔╝ ╚████╔╝
//██║ ██╔══██╗██╔══╝ ██╔══██║ ██║ ██╔══╝ ██║ ██║ ██╔══██╗ ╚██╔╝
//╚██████╗██║ ██║███████╗██║ ██║ ██║ ███████╗██████╔╝ ██████╔╝ ██║
// ╚═════╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ ╚═╝ ╚══════╝╚═════╝ ╚═════╝ ╚═╝
//███████╗ ██████╗ ██╗ ██╗ ██╗████████╗██╗ ██████╗ ███╗ ██╗███████╗ ██╗ █████╗ ███████╗ █████╗
//██╔════╝██╔═══██╗██║ ██║ ██║╚══██╔══╝██║██╔═══██╗████╗ ██║██╔════╝███║██╔══██╗╚════██║██╔══██╗
//███████╗██║ ██║██║ ██║ ██║ ██║ ██║██║ ██║██╔██╗ ██║███████╗╚██║╚██████║ ██╔╝╚█████╔╝
//╚════██║██║ ██║██║ ██║ ██║ ██║ ██║██║ ██║██║╚██╗██║╚════██║ ██║ ╚═══██║ ██╔╝ ██╔══██╗
//███████║╚██████╔╝███████╗╚██████╔╝ ██║ ██║╚██████╔╝██║ ╚████║███████║ ██║ █████╔╝ ██║ ╚█████╔╝
//╚══════╝ ╚═════╝ ╚══════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝╚══════╝ ╚═╝ ╚════╝ ╚═╝ ╚════╝
strategy(shorttitle='Ain1 No Label',title='All in One Strategy no RSI Label', overlay=true, scale=scale.left, initial_capital = 1000, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type=strategy.commission.percent, commission_value=0.18, calc_on_every_tick=true)
kcolor = color.new(#0094FF, 60)
dcolor = color.new(#FF6A00, 60)
// ----------------- Strategy Inputs -------------------------------------------------------------
//Backtest dates with auto finish date of today
start = input(defval = timestamp("01 April 2021 00:00 -0500"), title = "Start Time", type = input.time)
finish = input(defval = timestamp("31 December 2021 00:00 -0600"), title = "End Time", type = input.time)
window() => true // create function "within window of time"
// Strategy Selection - Long, Short, or Both
stratinfo = input(true, "Long/Short for Mixed Market, Long for Bull, Short for Bear")
strat = input(title="Trade Types", defval="Long/Short", options=["Long Only", "Long/Short", "Short Only"])
strat_val = strat == "Long Only" ? 1 : strat == "Long/Short" ? 0 : -1
// Risk Management Inputs
sl= input(10.0, "Stop Loss %", minval = 0, maxval = 100, step = 0.01)
stoploss = sl/100
tp = input(20.0, "Target Profit %", minval = 0, maxval = 100, step = 0.01)
TargetProfit = tp/100
useXRSI = input(false, "Use RSI crossing back, select only one strategy")
useCRSI = input(false, "Use Tweaked Connors RSI, select only one")
RSIInfo = input(true, "These are the RSI Strategy Inputs, RSI Length applies to MACD, set OB and OS to 45 for using Stoch and EMA strategies.")
length = input(14, "RSI Length", minval=1)
overbought= input(62, "Overbought")
oversold= input(35, "Oversold")
cl1 = input(3, "Connor's MA Length 1", minval=1, step=1)
cl2 = input(20, "Connor's MA Lenght 2", minval=1, step=1)
cl3 = input(50, "Connor's MA Lenght 3", minval=1, step=1)
// MACD and EMA Inputs
useMACD = input(false, "Use MACD Only, select only one strategy")
useEMA = input(false, "Use EMA Only, select only one strategy (EMA uses Stochastic inputs too)")
MACDInfo=input(true, "These are the MACD strategy variables")
fastLength = input(5, minval=1, title="EMA Fast Length")
slowLength = input(10, minval=1, title="EMA Slow Length")
ob_min = input(52, "Overbought Lookback Minimum Value", minval=0, maxval=200)
ob_lb = input(25, "Overbought Lookback Bars", minval=0, maxval=100)
os_min = input(50, "Oversold Lookback Minimum Value", minval=0, maxval=200)
os_lb = input(35, "Oversold Lookback Bars", minval=0, maxval=100)
source = input(title="Source", type=input.source, defval=close)
RSI = rsi(source, length)
// Price Movement Inputs
PriceInfo = input(true, "Price Change Percentage Cross Check Inputs for all Strategies, added logic to avoid early sell")
lkbk = input(5,"Max Lookback Period")
// EMA and SMA Background Inputs
useStoch = input(false, "Use Stochastic Strategy, choose only one")
StochInfo = input(true, "Stochastic Strategy Inputs")
smoothK = input(3, "K", minval=1)
smoothD = input(3, "D", minval=1)
k_mode = input("SMA", "K Mode", options=["SMA", "EMA", "WMA"])
high_source = input(high,"High Source")
low_source= input(low,"Low Source")
HTF = input("","Curernt or Higher time frame only", type=input.resolution)
// Selections to show or hide the overlays
showZones = input(true, title="Show Bullish/Bearish Zones")
showStoch = input(true, title="Show Stochastic Overlays")
showRSIBS = input(true, title="Show RSI Buy Sell Zones")
showMACD = input(true, title="Show MACD")
color_bars=input(true, "Color Bars")
// ------------------ Dynamic RSI Calculation ----------------------------------------
AvgHigh(src,cnt,val) =>
total = 0.0
count = 0
for i = 0 to cnt
if src[i] > val
count := count + 1
total := total + src[i]
round(total / count)
RSI_high = AvgHigh(RSI, ob_lb, ob_min)
AvgLow(src,cnt,val) =>
total = 0.0
count = 0
for i = 0 to cnt
if src[i] < val
count := count + 1
total := total + src[i]
round(total / count)
RSI_low = AvgLow(RSI, os_lb, os_min)
// ------------------ Price Percentage Change Calculation -----------------------------------------
perc_change(lkbk) =>
overall_change = ((close[0] - open[lkbk]) / open[lkbk]) * 100
highest_high = 0.0
lowest_low = 0.0
for i = lkbk to 0
highest_high := i == lkbk ? high : high[i] > high[(i + 1)] ? high[i] : highest_high[1]
lowest_low := i == lkbk ? low : low[i] < low[(i + 1)] ? low[i] : lowest_low[1]
start_to_high = ((highest_high - open[lkbk]) / open[lkbk]) * 100
start_to_low = ((lowest_low - open[lkbk]) / open[lkbk]) * 100
previous_to_high = ((highest_high - open[1])/open[1])*100
previous_to_low = ((lowest_low-open[1])/open[1])*100
previous_bar = ((close[1]-open[1])/open[1])*100
[overall_change, start_to_high, start_to_low, previous_to_high, previous_to_low, previous_bar]
// Call the function
[overall, to_high, to_low, last_high, last_low, last_bar] = perc_change(lkbk)
// Plot the function
//plot(overall*50, color=color.white, title='Overall Percentage Change', linewidth=3)
//plot(to_high*50, color=color.green,title='Percentage Change from Start to High', linewidth=2)
//plot(to_low*50, color=color.red, title='Percentage Change from Start to Low', linewidth=2)
//plot(last_high*100, color=color.teal, title="Previous to High", linewidth=2)
//plot(last_low*100, color=color.maroon, title="Previous to Close", linewidth=2)
//plot(last_bar*100, color=color.orange, title="Previous Bar", linewidth=2)
//hline(0, title='Center Line', color=color.orange, linewidth=2)
true_dip = overall < 0 and to_high > 0 and to_low < 0 and last_high > 0 and last_low < 0 and last_bar < 0
true_peak = overall > 0 and to_high > 0 and to_low > 0 and last_high > 0 and last_low < 0 and last_bar > 0
alertcondition(true_dip, title='True Dip', message='Dip')
alertcondition(true_peak, title='True Peak', message='Peak')
// ------------------ Background Colors based on EMA Indicators -----------------------------------
// Uses standard lengths of 9 and 21, if you want control delete the constant definition and uncomment the inputs
haClose(gap) => (open[gap] + high[gap] + low[gap] + close[gap]) / 4
rsi_ema = rsi(haClose(0), length)
v2 = ema(rsi_ema, length)
v3 = 2 * v2 - ema(v2, length)
emaA = ema(rsi_ema, fastLength)
emaFast = 2 * emaA - ema(emaA, fastLength)
emaB = ema(rsi_ema, slowLength)
emaSlow = 2 * emaB - ema(emaB, slowLength)
//plot(rsi_ema, color=color.white, title='RSI EMA', linewidth=3)
//plot(v2, color=color.green,title='v2', linewidth=2)
//plot(v3, color=color.red, title='v3', linewidth=2)
//plot(emaFast, color=color.teal, title="EMA Fast", linewidth=2)
//plot(emaSlow, color=color.maroon, title="EMA Slow", linewidth=2)
EMABuy = crossunder(emaFast, v2) and window()
EMASell = crossover(emaFast, emaSlow) and window()
alertcondition(EMABuy, title='EMA Buy', message='EMA Buy Condition')
alertcondition(EMASell, title='EMA Sell', message='EMA Sell Condition')
// bullish signal rule:
bullishRule =emaFast > emaSlow
// bearish signal rule:
bearishRule =emaFast < emaSlow
// current trading State
ruleState = 0
ruleState := bullishRule ? 1 : bearishRule ? -1 : nz(ruleState[1])
ruleColor = ruleState==1 ? color.new(color.blue, 90) : ruleState == -1 ? color.new(color.red, 90) : ruleState == 0 ? color.new(color.gray, 90) : na
bgcolor(showZones ? ruleColor : na, title="Bullish/Bearish Zones")
// ------------------ Stochastic Indicator Overlay -----------------------------------------------
// Calculation
// Use highest highs and lowest lows
h_high = highest(high_source ,lkbk)
l_low = lowest(low_source ,lkbk)
stoch = stoch(RSI, RSI_high, RSI_low, length)
k =
k_mode=="EMA" ? ema(stoch, smoothK) :
k_mode=="WMA" ? wma(stoch, smoothK) :
sma(stoch, smoothK)
d = sma(k, smoothD)
k_c = change(k)
d_c = change(d)
kd = k - d
// Plot
signalColor = k>oversold and d<overbought and k>d and k_c>0 and d_c>0 ? kcolor :
k<overbought and d>oversold and k<d and k_c<0 and d_c<0 ? dcolor : na
kp = plot(showStoch ? k : na, "K", color=kcolor)
dp = plot(showStoch ? d : na, "D", color=dcolor)
fill(kp, dp, color = signalColor, title="K-D")
signalUp = showStoch ? not na(signalColor) and kd>0 : na
signalDown = showStoch ? not na(signalColor) and kd<0 : na
//plot(signalUp ? kd : na, "Signal Up", color=kcolor, transp=90, style=plot.style_columns)
//plot(signalDown ? (kd+100) : na , "Signal Down", color=dcolor, transp=90, style=plot.style_columns, histbase=100)
//StochBuy = crossover(k, d) and kd>0 and to_low<0 and window()
//StochSell = crossunder(k,d) and kd<0 and to_high>0 and window()
StochBuy = crossover(k, d) and window()
StochSell = crossunder(k, d) and window()
alertcondition(StochBuy, title='Stoch Buy', message='K Crossing D')
alertcondition(StochSell, title='Stoch Sell', message='D Crossing K')
// -------------- Add Price Movement -------------------------
// Calculations
h1 = vwma(high, length)
l1 = vwma(low, length)
hp = h_high[1]
lp = l_low[1]
// Plot
var plot_color=#353535
var sig = 0
if (h1 >hp)
sig:=1
plot_color:=color.lime
else if (l1 <lp)
sig:=-1
plot_color:=color.maroon
//plot(1,title = "Price Movement Bars", style=plot.style_columns,color=plot_color)
//plot(sig,title="Signal 1 or -1",display=display.none)
// --------------------------------------- RSI Plot ----------------------------------------------
// Plot Oversold and Overbought Lines
over = hline(oversold, title="Oversold", color=color.green)
under = hline(overbought, title="Overbought", color=color.red)
fillcolor = color.new(#9915FF, 90)
fill(over, under, fillcolor, title="Band Background")
// Show RSI and EMA crosses with arrows and RSI Color (tweaked Connors RSI)
// Improves strategy setting ease by showing where EMA 5 crosses EMA 10 from above to confirm overbought conditions or trend reversals
// This shows where you should enter shorts or exit longs
// Tweaked Connors RSI Calculation
connor_ob = overbought
connor_os = oversold
ma1 = sma(close,cl1)
ma2 = sma(close, cl2)
ma3 = sma(close, cl3)
// Buy Sell Zones using tweaked Connors RSI (RSI values of 80 and 20 for Crypto as well as ma3, ma20, and ma50 are the tweaks)
RSI_SELL = ma1 > ma2 and open > ma3 and RSI >= connor_ob and true_peak and window()
RSI_BUY = ma2 < ma3 and ma3 > close and RSI <= connor_os and true_dip and window()
alertcondition(RSI_BUY, title='Connors Buy', message='Connors RSI Buy')
alertcondition(RSI_SELL, title='Connors Sell', message='Connors RSI Sell')
// Color Definition
col = useCRSI ? (close > ma2 and close < ma3 and RSI <= connor_os ? color.lime : close < ma2 and close > ma3 and RSI <= connor_ob ? color.red : color.yellow ) : color.yellow
// Plot colored RSI Line
plot(RSI, title="RSI", linewidth=3, color=col)
//------------------- MACD Strategy -------------------------------------------------
[macdLine, signalLine, _] = macd(close, fastLength, slowLength, length)
bartrendcolor = macdLine > signalLine and k > 50 and RSI > 50 ? color.teal : macdLine < signalLine and k < 50 and RSI < 50 ? color.maroon : macdLine < signalLine ? color.yellow : color.gray
barcolor(color = color_bars ? bartrendcolor : na)
MACDBuy = macdLine>signalLine and RSI<RSI_low and overall<0 and window()
MACDSell = macdLine<signalLine and RSI>RSI_high and overall>0 and window()
//plotshape(showMACD ? MACDBuy: na, title = "MACD Buy", style = shape.arrowup, text = "MACD Buy", color=color.green, textcolor=color.green, size=size.small)
//plotshape(showMACD ? MACDSell: na, title = "MACD Sell", style = shape.arrowdown, text = "MACD Sell", color=color.red, textcolor=color.red, size=size.small)
MACColor = MACDBuy ? color.new(color.teal, 50) : MACDSell ? color.new(color.maroon, 50) : na
bgcolor(showMACD ? MACColor : na, title ="MACD Signals")
// -------------------------------- Entry and Exit Logic ------------------------------------
// Entry Logic
XRSI_OB = crossunder(RSI, overbought) and overall<0 and window()
RSI_OB = RSI>overbought and true_peak and window()
XRSI_OS = crossover(RSI, oversold) and overall>0 and window()
RSI_OS = RSI<oversold and true_dip and window()
alertcondition(XRSI_OB, title='Reverse RSI Sell', message='RSI Crossing back under OB')
alertcondition(XRSI_OS, title='Reverse RSI Buy', message='RSI Crossing back over OS')
alertcondition(RSI_OS, title='RSI Buy', message='RSI Crossover OS')
alertcondition(RSI_SELL, title='RSI Sell', message='RSI Crossunder OB')
// Strategy Entry and Exit with built in Risk Management
GoLong = strategy.position_size==0 and strat_val > -1 and rsi_ema > RSI and k < d ? (useXRSI ? XRSI_OS : useMACD ? MACDBuy : useCRSI ? RSI_BUY : useStoch ? StochBuy : RSI_OS) : false
GoShort = strategy.position_size==0 and strat_val < 1 and rsi_ema < RSI and d < k ? (useXRSI ? XRSI_OB : useMACD ? MACDSell : useCRSI ? RSI_SELL : useStoch ? StochSell : RSI_OB) : false
if (GoLong)
strategy.entry("LONG", strategy.long)
if (GoShort)
strategy.entry("SHORT", strategy.short)
longStopPrice = strategy.position_avg_price * (1 - stoploss)
longTakePrice = strategy.position_avg_price * (1 + TargetProfit)
shortStopPrice = strategy.position_avg_price * (1 + stoploss)
shortTakePrice = strategy.position_avg_price * (1 - TargetProfit)
//plot(series=(strategy.position_size > 0) ? longTakePrice : na, color=color.green, style=plot.style_circles, linewidth=3, title="Long Take Profit")
//plot(series=(strategy.position_size < 0) ? shortTakePrice : na, color=color.green, style=plot.style_circles, linewidth=3, title="Short Take Profit")
//plot(series=(strategy.position_size > 0) ? longStopPrice : na, color=color.red, style=plot.style_cross, linewidth=2, title="Long Stop Loss")
//plot(series=(strategy.position_size < 0) ? shortStopPrice : na, color=color.red, style=plot.style_cross, linewidth=2, title="Short Stop Loss")
if (strategy.position_size > 0)
strategy.exit(id="Exit Long", from_entry = "LONG", stop = longStopPrice, limit = longTakePrice)
if (strategy.position_size < 0)
strategy.exit(id="Exit Short", from_entry = "SHORT", stop = shortStopPrice, limit = shortTakePrice)
CloseLong = strat_val > -1 and strategy.position_size > 0 and rsi_ema > RSI and d > k ? (useXRSI ? XRSI_OB : useMACD ? MACDSell : useCRSI ? RSI_SELL : RSI_OB) : false
if(CloseLong)
strategy.close("LONG")
CloseShort = strat_val < 1 and strategy.position_size < 0 and rsi_ema < RSI and k > d ? (useXRSI ? XRSI_OS : useMACD ? MACDBuy : useCRSI ? RSI_BUY : RSI_OS) : false
if(CloseShort)
strategy.close("SHORT")