اس حکمت عملی کا بنیادی خیال مختلف ٹائم فریم کے تناسب او سی ایچ ایل اوسط اشارے کی بنیاد پر متعدد چلتی اوسط کی تعمیر کرنا اور کراس اوور کی بنیاد پر تجارتی سگنل تیار کرنا ہے۔ یہ متحرک طور پر قیمت کے رجحان کو پکڑ سکتا ہے اور درمیانی مدتی تجارت کے لئے موزوں ہے۔
اس حکمت عملی میں دو تناسب او سی ایچ ایل اوسط اشارے استعمال کیے جاتے ہیں جن میں تیز اور سست لائنوں کے طور پر مختلف ٹائم فریم ہوتے ہیں۔ تناسب او سی ایچ ایل اوسط کا حساب اس طرح کیا جاتا ہے:
b = abs(close-open)/(high - low)
c = min(max(b, 0), 1)
Ratio OCHL Averager = c*close + (1-c)*previous Ratio OCHL Averager
یہاں b دن کے اندر قیمتوں کی نقل و حرکت کا تناسب ہے اور c معمول b ہے۔ تناسب OCHL اوسط میں چلتی اوسط کی تعمیر کے لئے کھلی ، بند ، اعلی اور کم قیمتوں کو شامل کیا گیا ہے۔
یہ حکمت عملی تیز لائن کے لئے ایک مختصر مدت اور سست لائن کے لئے ایک طویل مدت طے کرتی ہے۔ جب تیز لائن سست لائن کے اوپر عبور کرتی ہے تو خرید کا اشارہ پیدا ہوتا ہے ، اور جب تیز لائن نیچے عبور کرتی ہے تو فروخت کا اشارہ ہوتا ہے۔ یہ چلتی اوسط کراس اوور منطق کے ذریعہ رجحان کو پکڑتا ہے۔
ریشو او سی ایچ ایل اوسط قیمت کے اعداد و شمار کو ہموار کرتا ہے اور مارکیٹ کے شور کو فلٹر کرتا ہے ، جس سے تجارتی سگنل زیادہ قابل اعتماد ہوتا ہے۔
مختلف ٹائم فریم کے ساتھ مل کر دوہری چلتی اوسط کراس اوور ایک نئے رجحان کے آغاز کا بہتر اندازہ کرسکتا ہے۔
تیز رفتار اور سست لائن کی مدت کو مختلف مارکیٹ کے حالات کے مطابق ایڈجسٹ کیا جا سکتا ہے.
حکمت عملی کا منطق سادہ اور بدیہی ہے۔ سمجھنے اور لاگو کرنے میں آسان ہے۔
سٹاپ نقصان اور منافع لے لو کو خطرات کو کنٹرول کرنے کے لئے لچکدار طریقے سے مقرر کیا جا سکتا ہے.
چلتی اوسط کراس اوور سے بہت زیادہ غلط سگنل پیدا ہوسکتے ہیں۔ فلٹریشن کے لئے دیگر تکنیکی اشارے کی ضرورت ہوسکتی ہے۔
تیز رفتار اور سست لائن کے ادوار کو معقول حد تک منتخب کیا جانا چاہئے، ورنہ یہ حکمت عملی کی کارکردگی کو متاثر کر سکتا ہے.
یہ ایک رجحان کی پیروی کرنے والی حکمت عملی ہے جو رینج سے منسلک مارکیٹ کے لئے موزوں نہیں ہے۔ رجحان کے حالات میں استعمال کیا جانا چاہئے۔
نقصانات کو کم کرنے اور منافع کی سطح کو بہتر بنانے کے لئے اسٹاپ نقصان اور منافع لینے کو مناسب طریقے سے ایڈجسٹ کیا جانا چاہئے۔
سگنل فلٹرنگ اور معیار کو بہتر بنانے کے لیے ایم اے سی ڈی، کے ڈی جے جیسے رفتار کے اشارے کو یکجا کرنے پر غور کریں۔
بہترین پیرامیٹرز تلاش کرنے کے لئے مختلف تیز رفتار اور سست لائن مدت کے مجموعے کی جانچ کریں.
سٹاپ نقصان کو بہتر بنائیں اور بیک ٹیسٹ کے نتائج کی بنیاد پر منافع لیں.
کچھ مارکیٹ کے حالات میں پیرامیٹرز کو متحرک طور پر ایڈجسٹ کرنے پر غور کریں ، مثال کے طور پر ، حد سے محدود مارکیٹ میں مدت میں اضافہ کریں۔
اس حکمت عملی میں رجحان کی سمت کا تعین کرنے کے لئے تیز اور سست حرکت پذیر اوسط کراس اوور کا استعمال کرنے کا واضح منطق ہے۔ یہ ایک متحرک رجحان کی پیروی کرنے والی حکمت عملی ہے جو درمیانی مدت کی تجارت کے لئے موزوں ہے۔ پیرامیٹرز ٹوننگ ، سگنل فلٹریشن وغیرہ کے ذریعہ اصلاح کے لئے ابھی بھی بہت زیادہ گنجائش ہے۔ مجموعی طور پر یہ ایک لچکدار اور عملی رجحان ٹریڈنگ کی حکمت عملی ہے۔
/*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