
اس حکمت عملی کا بنیادی خیال یہ ہے کہ مختلف ادوار کے Ratio OCHL Averager اشارے کا استعمال کرتے ہوئے متعدد اوسط لائنیں بنائیں ، اور اوسط لائنوں کی کراس شکل کے مطابق خرید و فروخت کے سگنل پیدا کریں۔ یہ قیمت کے رجحانات کو متحرک طور پر پکڑنے کے قابل ہے ، جو درمیانی اور مختصر مدت کے لئے موزوں ہے۔
اس حکمت عملی میں دو مختلف دورانیوں کے Ratio OCHL Averager اشارے کا استعمال کیا گیا ہے ، بالترتیب ایک تیز اور ایک آہستہ لائن کے طور پر۔ Ratio OCHL Averager اشارے کے لئے حساب کتاب کا فارمولا مندرجہ ذیل ہے:
b = abs(close-open)/(high - low)
c = min(max(b, 0), 1)
Ratio OCHL Averager = c*close + (1-c)*前一日Ratio OCHL Averager
جہاں b اس دن کی قیمتوں کے اتار چڑھاو کی نمائندگی کرنے والا تناسب ہے ، اور c اس کی معیاری کاری کے بعد b کا قدر ہے۔ Ratio OCHL Averager اشارے میں چار قیمتوں کی اوسط لائن تشکیل دی گئی ہے ، جس میں کھلنے کی قیمت ، اختتامی قیمت ، اعلی قیمت اور کم قیمت شامل ہے۔
اس حکمت عملی میں تیز لائن کا دورانیہ مختصر اور سست لائن کا دورانیہ لمبا ہوتا ہے۔ جب تیز لائن پر سست لائن عبور ہوتی ہے تو خریدنے کا اشارہ ہوتا ہے ، اور اس کے برعکس جب تیز لائن کے نیچے سست لائن عبور ہوتی ہے تو فروخت کا اشارہ ہوتا ہے۔ مساوی لائن کراسنگ اصول کا استعمال کرتے ہوئے رجحانات کو پکڑنا۔
Ratio OCHL Averager انڈیکیٹر قیمتوں کے اعداد و شمار کو ہموار کرنے کے قابل ہے ، مارکیٹ کے شور کو مؤثر طریقے سے فلٹر کرتا ہے ، جس سے ٹریڈنگ سگنل زیادہ قابل اعتماد ہوجاتے ہیں۔
ڈبل مساوی لائن کراسنگ مختلف دوروں کے ساتھ مل کر رجحان کی سمت کا تعین کرتی ہے ، جس سے نئے رجحان کا آغاز بہتر طور پر کیا جاسکتا ہے۔
مختلف مارکیٹ کے حالات کو ایڈجسٹ کرنے کے لئے تیز اور سست لائنوں کی مدت کے پیرامیٹرز کو ایڈجسٹ کریں.
حکمت عملی کا تصور سادہ اور بدیہی ہے اور اسے سمجھنے میں آسان ہے۔
اسٹاپ نقصان کو روکنے کے لئے لچکدار معیارات کا تعین کریں اور خطرے کو کنٹرول کریں۔
اوسط لکیری کراسنگ حکمت عملی سے زیادہ جعلی سگنل پیدا ہوسکتے ہیں ، جس میں دوسرے تکنیکی اشارے کے ساتھ مل کر فلٹرنگ کی ضرورت ہوتی ہے۔
تیز لائن اور سست لائن کے لئے معقول انتخاب کی ضرورت ہے. پیرامیٹرز کا غلط انتخاب حکمت عملی کی تاثیر کو متاثر کرسکتا ہے۔
ڈبل مساوی لائن کراسنگ حکمت عملی رجحان کی پیروی کی حکمت عملی ہے ، جو زلزلے کی صورتحال کے لئے موزوں نہیں ہے ، اس کا استعمال رجحان کی صورتحال میں کیا جانا چاہئے۔
نقصان کے خطرے کو کم کرنے کے لئے اسٹاپ نقصان کو مناسب طریقے سے ایڈجسٹ کرنے کی ضرورت ہے۔
سگنل کو بہتر بنانے کے لئے سگنل فلٹرنگ کو متحرک اشارے وغیرہ کے ساتھ جوڑنے پر غور کیا جاسکتا ہے۔ مثال کے طور پر MACD ، KDJ وغیرہ
مختلف فاسٹ لائن اور سست لائن دورانیہ پیرامیٹرز کے مجموعے کو جانچ کر سکتے ہیں، بہترین پیرامیٹرز تلاش کرنے کے لئے.
سٹاپ نقصان کی روک تھام کو بہتر بنانے کے لئے، آپ کو بہترین ترتیب تلاش کر سکتے ہیں.
مخصوص مارکیٹ کے حالات میں متحرک ایڈجسٹمنٹ پیرامیٹرز پر غور کیا جاسکتا ہے ، مثال کے طور پر بڑے پیمانے پر اتار چڑھاؤ کے دوران بڑھا ہوا دورانیہ پیرامیٹرز۔
اس حکمت عملی کا مجموعی نظریہ واضح اور سمجھنے میں آسان ہے ، تیزی سے اور اوسطا لائن کراسنگ کے ذریعہ رجحان کی سمت کا فیصلہ کرنا ، ایک متحرک ٹریکنگ حکمت عملی ہے جو درمیانی اور قلیل مدتی تجارت کے لئے موزوں ہے۔ اصلاح کی گنجائش بہت زیادہ ہے ، اس حکمت عملی کے اثر کو مزید بہتر بنانے کے لئے پیرامیٹرز کو ایڈجسٹ کرنے ، سگنل فلٹرنگ وغیرہ کے ذریعہ حکمت عملی کی کارکردگی کو مزید بہتر بنایا جاسکتا ہے۔ مجموعی طور پر ، یہ ایک لچکدار اور عملی رجحان ٹریڈنگ حکمت عملی ہے۔
/*backtest
start: 2023-11-05 00:00:00
end: 2023-11-12 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title="[XC] Adaptive Strategy V3 - Ratio OCHL Averager no repaint",shorttitle="R_OHCL", overlay=true, currency=currency.EUR,initial_capital=10000,
default_qty_value=100, default_qty_type=strategy.percent_of_equity , calc_on_every_tick=false, calc_on_order_fills=true)
// ╔═ SETTINGS ╗
//░░░░░░░░░░░░░░░░░ ╚════════════════════════════╝ ░░░░░░░░░░░░░░░░░░░░░░░░
strategy_1 = input ( defval=true , type=input.bool , title="STRATEGY 1? —>" )
Recursive = input(false)
RES201 = "Min",RES202= "D",RES203 = "W",RES204 = "M"
//++ Resolution 1 ++
inp_resolution1 = input(600, minval=1, title="Resolution Line 1")
restype1 = input ( defval="Min" , type=input.string , title= "Resolution Line 1" , options=[ "Min","D","W","M"])
multiplier1 = restype1 == "Min" ? "" : restype1 == "D" ? "D" : restype1 == "W" ? "W" : "M"
resolution1 = tostring(inp_resolution1)+ multiplier1
//++ Resolution 2 ++
inp_resolution2 = input(1440, minval=1, title="Resolution Line 2")
restype2 = input ( defval="Min" , type=input.string , title= "Resolution Line 2" , options=["Min","D","W","M"])
multiplier2 = restype2 == "Min" ? "" : restype2 == "D" ? "D" : restype2 == "W" ? "W" : "M"
resolution2 = tostring(inp_resolution2)+ multiplier2
StopLoss = input(defval = 500 , title = "Stop Loss", minval = 0)
TakeProfit = input(defval = 2500 , title = "Take Profit", minval = 0)
// === RISK MANAGEMENT VALUE PREP ===
// if an input is less than 1, assuming not wanted so we assign 'na' value to disable it.
useTakeProfit = TakeProfit >= 1 ? TakeProfit : na
useStopLoss = StopLoss >= 1 ? StopLoss : na
// ╔═ BACKTEST RANGE ╗
//░░░░░░░░░░░░░░░░░ ╚════════════════════════════╝ ░░░░░░░░░░░░░░░░░░░░░░░░
line_breakBTR = input ( defval = true , type=input.bool , title="BACKTEST RANGE —" )
FromYear = input ( defval = 2019, title = "From Year", minval = 2017)
FromMonth = input ( defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay = input ( defval = 2, title = "From Day", minval = 1, maxval = 31)
//FromHour = input ( defval = 1, title = "From Hour", minval = 1, maxval = 24)
ToYear = input ( defval = 9999, title = "To Year", minval = 2017)
//ToHour = input ( defval = 0, title = "From Hour", minval = 0, maxval = 24)
ToMonth = input ( defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay = input ( defval = 1, title = "To Day", minval = 1, maxval = 31)
// === FUNCTION EXAMPLE ===
start = timestamp(syminfo.timezone, FromYear, FromMonth, FromDay, 0, 00) // backtest start window
finish = timestamp(syminfo.timezone, ToYear , ToMonth , ToDay , 0, 59) // backtest finish window
window() => time >= start and time <= finish ? true : false // create function "within window of time"
// ╔═ INDICATOR ╗
//░░░░░░░░░░░░░░░░░ ╚════════════════════════════╝ ░░░░░░░░░░░░░░░░░░░░░░░░
// "Ratio OCHL Averager" -> alexgrover / tradingview.com/script/RGAtOI6h-Ratio-OCHL-Averager-An-Alternative-to-VWAP/
rochla( res,Recursive)=>
//Recursive = false
H = security(syminfo.tickerid,res,high[1],gaps = barmerge.gaps_off, lookahead = barmerge.lookahead_on)
L = security(syminfo.tickerid,res,low[1] ,gaps = barmerge.gaps_off, lookahead = barmerge.lookahead_on)
d = 0.
//----
a = Recursive ? nz(d[1],open) : open
b = abs(close-a)/(H - L)
c = b > 1 ? 1 : b
d := c*close+(1-c)*nz(d[1],close)
strat1_line1=rochla(resolution1,Recursive)
strat1_line2=rochla(resolution2,Recursive)
plot(strat1_line1, title="Ratio OCHL Averager 1", color=#DAA520,linewidth=2,transp=0)
plot(strat1_line2, title="Ratio OCHL Averager 2", color=#B22222,linewidth=2,transp=0)
// ╔═ STRATEGY 1 ╗
//░░░░░░░░░░░░░░░░░ ╚════════════════════════════╝ ░░░░░░░░░░░░░░░░░░░░░░░░
trading_strat1_line1 = strategy_1 == 1 ? strat1_line1 : na
trading_strat1_line2 = strategy_1 == 1 ? strat1_line2 : na
longCross = crossunder (trading_strat1_line2, trading_strat1_line1) ? true : false
shortCross = crossover (trading_strat1_line2, trading_strat1_line1) ? true : false
plot( longCross ? trading_strat1_line1 : na , title = "Long" , color=color.aqua, style=plot.style_circles, linewidth=5, offset= 0)
plot( shortCross ? trading_strat1_line2 : na , title = "Short" , color=color.red , style=plot.style_circles, linewidth=5, offset= 0)
// ╔═ Backtest 1 ╗
//░░░░░░░░░░░░░░░░░ ╚════════════════════════════╝ ░░░░░░░░░░░░░░░░░░░░░░░░
strategy.exit("close",loss = useStopLoss, profit = useTakeProfit)
if longCross and window() and strategy_1 == 1
strategy.entry("Go Long", strategy.long)
if shortCross and window() and strategy_1 == 1
strategy.entry("Go Short", strategy.short)
//end