اے ٹی آر اور حرکت پذیر اوسط کراس اوور ہائبرڈ حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-09-26 17:22:21
ٹیگز:

جائزہ

یہ حکمت عملی اوسط حقیقی رینج (اے ٹی آر) اشارے اور بڑھتی ہوئی اوسط کراس اوور کو یکجا کرتی ہے تاکہ اعلی جیت کی شرح کے لئے رجحان سگنل کی نشاندہی کی جاسکے۔

منطق

  • اپ ٹرینڈ کی تصدیق کے لئے زیادہ وقت کے فریم پر قیمت کی اتار چڑھاؤ کا تعین کرنے کے لئے اے ٹی آر کا استعمال کریں
  • کم ٹائم فریم پر تیز اور سست حرکت پذیر اوسط کا حساب لگائیں ، جب تیز ایم اے سست ایم اے کے اوپر عبور کرے تو طویل ہوجائیں ، جب تیز ایم اے سست ایم اے سے نیچے عبور کرے تو مختصر ہوجائیں
  • اے ٹی آر طویل مدتی فریم پر مجموعی رجحان کی نشاندہی کرتا ہے۔ ایم اے کراس اوور کم مدتی فریم پر مخصوص انٹری پوائنٹس کی نشاندہی کرتا ہے۔
  • ATR RMA ہموار، لمبائی اور ہموار adjustable کے ساتھ حساب کیا جاتا ہے
  • MA کراس اوور دو SMAs پر مشتمل ہے، لمبائی کو ایڈجسٹ کیا جا سکتا ہے

فوائد

  • اے ٹی آر مؤثر طریقے سے ہلچل مچانے والی چالوں کو فلٹر کر سکتا ہے، غیر ضروری تجارت سے بچ سکتا ہے
  • ایم اے کراس اوور قلیل مدتی رجحان تبادلہ پوائنٹس کو درست طریقے سے طے کرتا ہے
  • اے ٹی آر پر آر ایم اے ہموار کرنے سے جھکاو کم ہوجاتا ہے ، زیادہ طویل مدتی رجحان پر زیادہ مستحکم فیصلہ ہوتا ہے
  • مشترکہ استعمال سے وِچساؤ سے بچتا ہے اور مواقع کو پکڑتا ہے
  • مختلف مصنوعات اور ٹائم فریموں پر اصلاح کے لئے سایڈست پیرامیٹرز
  • مستحکم منافع کے لئے متوقع مجموعی طور پر اعلی جیت کی شرح

خطرات

  • اے ٹی آر رجحان کا فیصلہ تاخیر کا شکار ہے ، ابتدائی رجحان کا آغاز ناکام ہوسکتا ہے
  • ایم اے کراس اوور متعدد ایڈجسٹمنٹ کا شکار، زیادہ فروخت سگنل
  • پیرامیٹر ٹیوننگ انتہائی اہم، غلط ترتیبات سے زیادہ / کم ٹریڈنگ کا باعث بنتی ہے
  • مصنوعات کے مطابق بہترین پیرامیٹر سیٹ کے لئے تاریخی ڈیٹا تجزیہ کی ضرورت ہے
  • نقصانات کو محدود کرنے کے لئے کافی فنڈز کو یقینی بنانے کے لئے پوزیشن کی تدریجی سائزنگ پر غور کریں

بہتر مواقع

  • اے ٹی آر کے لئے اضافی / متبادل اشارے کی تلاش کریں، مثال کے طور پر رجحان کی طاقت کے لئے بولنگر بینڈ
  • دیگر مجموعوں کے ساتھ MA کراس اوور کو بڑھانا، مثال کے طور پر EMA، رفتار کے اشارے
  • جھوٹے بریک آؤٹ سے بچنے کے لئے بریک آؤٹ کی تصدیق کے طریقہ کار کو شامل کریں
  • پیرامیٹر کی اصلاح کا حکم: ATR لمبائی/سلیم > MA لمبائی > سٹاپ نقصان/پائدا لینے کا حکم
  • دارالحکومت کے انتظام کی حکمت عملیوں کو ضم کرنے پر غور کریں، مثال کے طور پر فکسڈ جزوی، متحرک پوزیشن سائزنگ
  • حکمت عملی کے استحکام اور زیادہ سے زیادہ استعمال کا اندازہ کرنے کے لئے وسیع پیمانے پر بیک ٹسٹنگ

نتیجہ

یہ حکمت عملی رجحان کی سمت اور انٹری پوائنٹس کی نشاندہی کرنے میں اے ٹی آر اور ایم اے کراس اوور کی طاقتوں کا مکمل استعمال کرتی ہے۔ پیرامیٹر ٹوننگ کے ذریعے ، یہ مختلف مارکیٹ کے ماحول کے مطابق ڈھال سکتا ہے۔ براہ راست ٹیسٹنگ مستقل منافع بخش اور اعلی جیت کی شرح ثابت کرتی ہے۔ تاہم ، محتاط کارروائیوں کے لئے رسک کنٹرول ضروری ہے۔ مزید ڈیٹا کی توثیق اس کی توسیع اور ایک مضبوط کوانٹم سسٹم میں بہتر بنانے کی ضمانت دے گی۔


/*backtest
start: 2023-08-26 00:00:00
end: 2023-09-25 00:00:00
period: 1h
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/
// © Phoenix085

//@version=4
strategy("Phoenix085-Strategy_ATR+MovAvg", shorttitle="Strategy_ATR+MovAvg", overlay=true)

// // ######################>>>>>>>>>>>>Inputs<<<<<<<<<<<#########################
// // ######################>>>>>>>>>>>>Strategy Inputs<<<<<<<<<<<#########################

TakeProfitPercent = input(50, title="Take Profit %", type=input.float, step=.25)
StopLossPercent = input(5, title="Stop Loss %", type=input.float, step=.25)

ProfitTarget = (close * (TakeProfitPercent / 100)) / syminfo.mintick
LossTarget = (close * (StopLossPercent / 100)) / syminfo.mintick

len_S = input(title="Shorter MA Length", defval=8, minval=1)
len_L = input(title="Longer MA Length", defval=38, minval=1)

TF = input(defval="", title="Session TF for calc only", type=input.session,options=[""])
TF_ = "1"

if TF == "3"
    TF_ == "1"
else 
    if TF == "5" 
        TF_ == "3"
    else 
        if TF == "15"
            TF_ == "5"
        else 
            if TF == "30"
                TF_ == "15"
            else 
                if TF == "1H"
                    TF_ == "30"
                else 
                    if TF == "2H"
                        TF_ == "1H"
                    else 
                        if TF == "4H"
                            TF_ == "3H"
                        else 
                            if TF == "1D"
                                TF_ == "4H"
                            else
                                if TF == "1W"
                                    TF_ == "1H"
                                else 
                                    if TF == "1M"
                                        TF_ == "1W"
                                    else
                                        if TF =="3H"
                                            TF_ == "2H"

Src = security(syminfo.tickerid, TF, close[1], barmerge.lookahead_on)

Src_ = security(syminfo.tickerid, TF_, close, barmerge.lookahead_off)

// ######################>>>>>>>>>>>>ATR Inputs<<<<<<<<<<<#########################
length = input(title="ATR Length", defval=4, minval=1)
smoothing = input(title="ATR Smoothing", defval="RMA", options=["RMA", "SMA", "EMA", "WMA"])


// //######################>>>>>>>>>>>>Custom Functions Declarations<<<<<<<<<<<#########################



// ######################>>>>>>>>>>>>ATR<<<<<<<<<<<#########################

ma_function(source, length) =>
	if smoothing == "RMA"
		rma(Src, length)
	else
		if smoothing == "SMA"
			sma(Src, length)
		else
			if smoothing == "EMA"
				ema(Src, length)
			else
				wma(Src, length)

ATR=ma_function(tr(true), length)


// //######################>>>>>>>>>>>>Conditions<<<<<<<<<<<#########################
ATR_Rise = ATR>ATR[1] and ATR[1]<ATR[2] and ATR[2]<ATR[3]

longCondition = crossover(sma(Src_, len_S), sma(Src_, len_L)) and sma(Src_, len_L) < sma(Src_, len_S) and (sma(Src_, len_S) < Src_[1])
shortCondition = crossunder(sma(Src_, len_S), sma(Src_, len_L)) and sma(Src_, len_L) > sma(Src_, len_S) 

plot(sma(Src_, len_S), color=color.lime, transp=90)
col = longCondition ? color.lime : shortCondition ? color.red : color.gray
plot(sma(Src_, len_L),color=col,linewidth=2)


bool IsABuy = longCondition 
bool IsASell = shortCondition

// // ######################>>>>>>>>>>>>Strategy<<<<<<<<<<<#########################

testStartYear = input(2015, "Backtest Start Year", minval=1980)
testStartMonth = input(1, "Backtest Start Month", minval=1, maxval=12)
testStartDay = input(1, "Backtest Start Day", minval=1, maxval=31)
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, 0, 0)

testStopYear = input(9999, "Backtest Stop Year", minval=1980)
testStopMonth = input(12, "Backtest Stop Month", minval=1, maxval=12)
testStopDay = input(31, "Backtest Stop Day", minval=1, maxval=31)
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)

testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false
inDateRange = true

bgcolor(inDateRange ? color.green : na, 90)
// //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<//

// // ######################>>>>>>LongEntries<<<<<<<#########################
if inDateRange and ATR_Rise and IsABuy 
    strategy.entry("longCondition",true,when = longCondition)
    strategy.close("shortCondition")
    strategy.exit("Take Profit or Stop Loss", "longCondition",trail_points = close * 0.05 / syminfo.mintick ,trail_offset = close * 0.05 / syminfo.mintick, loss = LossTarget)
// strategy.risk.max_drawdown(10, strategy.percent_of_equity)
    
// // ######################>>>>>>ShortEntries<<<<<<<#########################
if inDateRange and ATR_Rise and IsASell  
    strategy.entry("shortCondition",false,when = shortCondition)
    strategy.exit("Take Profit or Stop Loss", "shortCondition",trail_points = close * 0.05 / syminfo.mintick ,trail_offset = close * 0.05 / syminfo.mintick, loss = LossTarget)
    strategy.close("longCondition")

مزید