Aroon + Williams + MA + BB + ADX طاقتور کثیر اشارے کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2024-01-19 14:55:03
ٹیگز:

img

جائزہ

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

حکمت عملی کا اصول

حکمت عملی بنیادی طور پر مضبوط افتتاحی سگنل پیدا کرنے کے لئے مندرجہ ذیل اشارے کا مجموعہ استعمال کرتی ہے:

  1. آرون اشارے: ایک خاص مدت کے دوران ایک تہلکہ خیز اشارے کی تشکیل کے لئے سب سے زیادہ اور سب سے کم قیمتوں کا حساب لگائیں۔ متعدد سائیکل کی لمبائی کے ساتھ آرون اشارے کے امتزاج کے ذریعے رجحان کی سمت کا فیصلہ کرنا۔

  2. ایم اے: رجحان کے موڑ کے مقامات کا تعین کرنے کے لئے قلیل مدتی اور طویل مدتی ایم اے کے کراس کا حساب لگائیں۔

  3. بی بی بینڈ: جب قیمت بی بی بینڈ کی اوپری ریل کو توڑتی ہے تو ، یہ فروخت کا اشارہ ہے۔

  4. ولیمز %R اشارے: اوور بکڈ اور اوور سیلڈ علاقوں میں افتتاحی سگنلز کے طور پر اختلافات پیدا کرنا۔

  5. ADX: رجحان کی طاقت کا اندازہ لگانا۔ ایک خاص پوزیشن سے اوپر ADX افتتاحی سگنل پیدا کرتا ہے۔

مندرجہ بالا اشارے، مختلف سائیکل کی لمبائی کے پیرامیٹرز کے ساتھ، ایک کثیر جہتی فیصلے کا نظام بناتے ہیں جو جب رجحان واضح ہو تو مضبوط افتتاحی سگنل پیدا کرسکتے ہیں.

خاص طور پر، خریداری کی شرائط یہ ہیں:

  1. جب Aroon_1 -85 سے کم ہے
  2. جب ایم اے ایک سنہری صلیب بناتا ہے
  3. جب ولیمز %R کم ہے -99
  4. جب ADX 14 سے زیادہ ہو
  5. جب Aroon_2 -39 سے زیادہ ہے

جب 5 میں سے 3 خریدنے کی شرائط پوری ہوجاتی ہیں تو ، ایک مضبوط خریدنے کا اشارہ پیدا ہوتا ہے۔

فروخت کی شرائط ایک جیسی ہیں ، جس میں 5 فروخت کی شرائط ہیں۔ جب ان میں سے 3 پوری ہوجاتی ہیں تو ، فروخت کا اشارہ پیدا ہوتا ہے۔

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

فوائد کا تجزیہ

اس حکمت عملی کا سب سے بڑا فائدہ اشارے کے اشاروں کا کثیر جہتی امتزاج ہے ، جو ایک اشارے کی وجہ سے غلط اشاروں کے امکان کو بہت کم کرتا ہے ، اس طرح جب رجحان واضح ہوتا ہے تو اعلی معیار کے افتتاحی سگنل پیدا کرنے کے قابل ہوتا ہے۔ یہ اس حکمت عملی کا سب سے بڑا نمایاں مقام ہے۔

دیگر فوائد میں شامل ہیں:

  1. پیرامیٹرز کو مختلف مارکیٹ کی خصوصیات کے مطابق ایڈجسٹ کیا جاسکتا ہے

  2. اشارے کی پیرامیٹر کی ترتیبات سائنسی طور پر معقول اور انتہائی مضبوط ہیں

  3. فیصلے کی درستگی کو بہتر بنانے کے لئے متعدد وقت سائیکلوں کا مجموعہ احساس کیا جاتا ہے

  4. کوڈ کی ساخت واضح اور سمجھنے میں آسان ہے اور ثانوی ترقی

خطرے کا تجزیہ

اس حکمت عملی میں کچھ خطرات بھی ہیں:

  1. اگرچہ متعدد اشارے کا امتزاج فیصلے کے معیار کو بہتر بنا سکتا ہے ، لیکن اس سے حکمت عملی کی پیچیدگی میں بھی اضافہ ہوتا ہے اور زیادہ سے زیادہ اصلاح کا خطرہ بڑھ جاتا ہے۔

  2. پیرامیٹر کی ترتیبات 100٪ کامل نہیں ہیں اور مخصوص مارکیٹ کے حالات میں ناکام ہوسکتی ہیں.

  3. اشارے کے طریقوں کے امتزاج میں اب بھی اصلاح کی گنجائش ہے۔ امتزاج منطق کو مزید بہتر بنایا جاسکتا ہے۔

  4. قلیل مدتی موافقت کے مواقع ضائع ہو سکتے ہیں۔

متعلقہ حل:

  1. پیرامیٹرز کی استحکام کی جانچ کے لئے نمونہ بیک ٹسٹنگ میں اضافہ کریں

  2. زیادہ مارکیٹوں کے مطابق کچھ پیرامیٹرز کو ایڈجسٹ کریں

  3. فیصلے کے معیار کو بہتر بنانے کے لئے اشارے کے انضمام کے طریقہ کار کو بہتر بنائیں

  4. مختصر مدت کی ایڈجسٹمنٹ کو زیادہ سے زیادہ ریکارڈ کرنے کے لئے کچھ اشارے کے پیرامیٹرز کو مناسب طریقے سے مختصر کریں

اصلاح کی ہدایات

اس حکمت عملی کی اصلاح کی بنیادی سمت اشارے کے انضمام کے طریقہ کار کی اصلاح ہے ، جس میں بنیادی طور پر شامل ہیں:

  1. فیصلے کی درستگی کو مزید بہتر بنانے کے لئے ایک اشارے جنگل بنانے کے لئے مزید مختلف اقسام کے اشارے شامل کریں

  2. مارکیٹ کی تبدیلیوں کے مطابق خود کار طریقے سے اپنانے کے لئے اشارے پیرامیٹر کی ترتیبات کو بہتر بنائیں

  3. مشین لرننگ اور دیگر طریقوں کا استعمال کریں تاکہ خود بخود بہترین اشارے انضمام کے حل تلاش کیے جائیں

  4. خطرات پر قابو پانے کے لئے اسٹاپ نقصان کی حکمت عملیوں کو بڑھانا

  5. جذبات کے اشارے کو یکجا کریں، مارکیٹ کی گرمی کا فیصلہ کریں، اور پیرامیٹرز کو متحرک طور پر ایڈجسٹ کریں

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

خلاصہ

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


/*backtest
start: 2023-12-19 00:00:00
end: 2024-01-18 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title="Aroon+Williams+MA2+ADX+Aroon Str.", shorttitle="Aroon+Williams+MA2+ADX+Aroon Str.", overlay=true)
//https://cafe.naver.com/watchbot/1945
//<<빙썸 매각 기념>> 바이낸스 이오스 복합지표	

//Aroon_1
length_1 = input(264, minval=1, title="Length Aroon_1")
upper_1 = 100 * (highestbars(high, length_1+1) + length_1)/length_1
lower_1 = 100 * (lowestbars(low, length_1+1) + length_1)/length_1
midp_1 = 0
oscillator_1 = upper_1 - lower_1
//osc_1 = plot(oscillator_1, color=red)

//Aroon_2
length_2 = input(72, minval=1, title="Length Aroon_2")
upper_2 = 100 * (highestbars(high, length_2+1) + length_2)/length_2
lower_2 = 100 * (lowestbars(low, length_2+1) + length_2)/length_2
midp_2 = 0
oscillator_2 = upper_2 - lower_2
//osc_2 = plot(oscillator_2, color=red)

//Aroon_3
length_3 = input(137, minval=1, title="Length Aroon_3")
upper_3 = 100 * (highestbars(high, length_3+1) + length_3)/length_3
lower_3 = 100 * (lowestbars(low, length_3+1) + length_3)/length_3
midp_3 = 0
oscillator_3 = upper_3 - lower_3
//osc_3 = plot(oscillator_3, color=red)

//Aroon_4
length_4 = input(62, minval=1, title="Length Aroon_4")
upper_4 = 100 * (highestbars(high, length_4+1) + length_4)/length_4
lower_4 = 100 * (lowestbars(low, length_4+1) + length_4)/length_4
midp_4 = 0
oscillator_4 = upper_4 - lower_4
//osc_4 = plot(oscillator_4, color=red)

//Ma double
short_ma_1 = sma(close, 9)
long_ma_1 = sma(close, 21)
// plot(short_ma_1, color = red)
// plot(long_ma_1, color = green)
// plot(cross(short_ma_1, long_ma_1) ? short_ma_1 : na, style = cross, linewidth = 4)

short_ma_2 = sma(close, 9)
long_ma_2 = sma(close, 21)
// plot(short_ma_2, color = red)
// plot(long_ma_2, color = green)
plot(cross(short_ma_2, long_ma_2) ? short_ma_2 : na, transp= 100, title = "ma cross_2", style = cross, linewidth = 4)

//BB
length_bb = input(270, minval=1, title="BB length")
src_bb = input(close, title="Source")
mult_bb = input(2.0, minval=0.001, maxval=50, title="BB mult")
basis_bb = sma(src_bb, length_bb)
dev_bb = mult_bb * stdev(src_bb, length_bb)
upper_bb = basis_bb + dev_bb
lower_bb = basis_bb - dev_bb
// plot(basis_bb, color=red)
// p1 = plot(upper_bb, color=blue)
// p2 = plot(lower_bb, color=blue)
// fill(p1, p2)

//Williams
length_wil = input(130, minval=1, title="Length Williams %R")
upper_wil = highest(length_wil)
lower_wil = lowest(length_wil)
out_wil = 100 * (close - upper_wil) / (upper_wil - lower_wil)
// plot(out_wil)
// band1 = hline(-20)
// band0 = hline(-80)
// fill(band1, band0)



//ADX
adxlen = input(14, title="ADX Smoothing")
dilen = input(145, title="DI Length")
dirmov(len) =>
	up_adx = change(high)
	down_adx = -change(low)
	plusDM = na(up_adx) ? na : (up_adx > down_adx and up_adx > 0 ? up_adx : 0)
    minusDM = na(down_adx) ? na : (down_adx > up_adx and down_adx > 0 ? down_adx : 0)
	truerange = rma(tr, len)
	plus_adx = fixnan(100 * rma(plusDM, len) / truerange)
	minus_adx = fixnan(100 * rma(minusDM, len) / truerange)
	[plus_adx, minus_adx]

adx(dilen, adxlen) =>
	[plus_adx, minus_adx] = dirmov(dilen)
	sum_adx = plus_adx + minus_adx
	adx = 100 * rma(abs(plus_adx - minus_adx) / (sum_adx == 0 ? 1 : sum_adx), adxlen)

sig_adx = adx(dilen, adxlen)

// plot(sig_adx, color=red, title="ADX")


//ADX 2
adxlen_2 = input(14, title="ADX Smoothing")
dilen_2 = input(150, title="DI Length")
dirmov_2(len) =>
	up_adx_2 = change(high)
	down_adx_2 = -change(low)
	plusDM_2 = na(up_adx_2) ? na : (up_adx_2 > down_adx_2 and up_adx_2 > 0 ? up_adx_2 : 0)
    minusDM_2 = na(down_adx_2) ? na : (down_adx_2 > up_adx_2 and down_adx_2 > 0 ? down_adx_2 : 0)
	truerange_2 = rma(tr, len)
	plus_adx_2 = fixnan(100 * rma(plusDM_2, len) / truerange_2)
	minus_adx_2 = fixnan(100 * rma(minusDM_2, len) / truerange_2)
	[plus_adx_2, minus_adx_2]

adx_2(dilen_2, adxlen_2) =>
	[plus_adx_2, minus_adx_2] = dirmov_2(dilen_2)
	sum_adx_2 = plus_adx_2 + minus_adx_2
	adx_2 = 100 * rma(abs(plus_adx_2 - minus_adx_2) / (sum_adx_2 == 0 ? 1 : sum_adx_2), adxlen_2)

sig_adx_2 = adx(dilen_2, adxlen_2)

// plot(sig_adx_2, color=red, title="ADX_2")

//Input Position
//buy position
pos_aroon1 = input(-85, title="Aroon_1 Position Index_Down")
pos_madouble1_short = input(117, title="ma double_1 wma_Short")
pos_madouble1_long =  input(86, title="ma double_1 sma_Long")
pos_wil = input(-99, title="Williams Position Index_Down")
pos_adx= input(14, title="ADX Position Index_Up")
pos_aroon2 = input(-39, title="Aroon_2 Position Index_Up")

//sell position
pos_bb = input(120, title="BB Position Index_Up")
pos_aroon_3 = input(99, title="Aroon_3 Position Index_Up")
pos_madouble2_short= input(88, title="ma double_2 ema_Short")
pos_madouble2_long= input(96, title="ma double_2 sma_Long")
pos_adx_2= input(9, title="ADX_2 Position Index_Up")
pos_aroon_4 = input(35, title="Aroon_4 Position Index_Down")

//Condition
longCondition_aroon_1 = (oscillator_1 <= pos_aroon1)
longCondition_ma2 = (pos_madouble1_short > pos_madouble1_long)
longCondition_wil = (out_wil <= pos_wil)
longCondition_adx = (sig_adx >= pos_adx)
longCondition_aroon_2 = (oscillator_2 >= pos_aroon2)

shortCondition_bb = (close > basis_bb)
shortCondition_aroon_3 = (oscillator_3 >= pos_aroon_3)
shortCondition_ma2 = (pos_madouble2_short < pos_madouble2_long)
shortCondition_adx = (sig_adx_2 >= pos_adx_2)
shortCondition_aroon_4 = (oscillator_4 <= pos_aroon_4)

vl_aroon_1 = 0
vl_ma2 = 0
vl_wil = 0
vl_adx = 0
vl_aroon_2 = 0

if longCondition_aroon_1
    vl_aroon_1 := 1
    
if longCondition_ma2
    vl_ma2 := 3

if longCondition_wil
    vl_wil := 1
    
if longCondition_adx
    vl_adx := -1

if longCondition_aroon_2
    vl_aroon_2 := -1
	

vs_bb = 0
vs_aroon_3 = 0
vs_ma2 = 0
vs_adx = 0
vs_aroon_4 = 0

if shortCondition_bb
    vs_bb := 1

if shortCondition_aroon_3
    vs_aroon_3 := 1
    
if shortCondition_ma2
    vs_ma2 := 3

if shortCondition_adx
    vs_adx := -2

if shortCondition_aroon_4
    vs_aroon_4 := -1

// plotshape(vl_aroon_1, title= "vl_aroon_1", location=location.belowbar, color=green, text="vl_aroon_1")
// plotshape(vl_ma2, title= "vl_ma2", location=location.belowbar, color=green, text="\nvl_ma2")
// plotshape(vl_wil, title= "vl_wil", location=location.belowbar, color=green, text="\n\nvl_wil")
// plotshape(vl_adx, title= "vl_adx", location=location.belowbar, color=green, text="\n\n\nvl_adx")
// plotshape(vl_aroon_2, title= "vl_aroon_2", location=location.belowbar, color=green, text="\n\n\n\nvl_aroon_2")

// plotshape(vs_bb, title= "vs_bb", location=location.abovebar, color=orange, text="vs_bb")
// plotshape(vs_aroon_3, title= "vs_aroon_3", location=location.abovebar, color=orange, text="vs_aroon_3\n")
// plotshape(vs_ma2, title= "vs_ma2", location=location.abovebar, color=orange, text="vs_ma2\n\n")
// plotshape(vs_adx, title= "vs_adx", location=location.abovebar, color=orange, text="vs_adx\n\n\n")
// plotshape(vs_aroon_4, title= "vs_aroon_4", location=location.abovebar, color=orange, text="vs_aroon_4\n\n\n\n")

longCondition = (vl_aroon_1 + vl_ma2 + vl_wil + vl_adx + vl_aroon_2) >= 3 ? true : na
shortCondition = (vs_bb + vs_aroon_3 + vs_ma2 + vs_adx + vs_aroon_4) >= 3 ? true : na

buy = longCondition == 1 ? longCondition : na
sell = shortCondition == 1? shortCondition : na

// plotshape(buy, title= "buy", location=location.bottom, color=green, text="buy")
// plotshape(sell, title= "sell", location=location.top, color=orange, text="sell")


// === BACKTEST RANGE ===
FromMonth = input(defval = 8, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 2014)
ToMonth   = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 2018, title = "To Year", minval = 2014)

strategy.entry("L", strategy.long, when=(buy))
strategy.close("L", when=(sell))
// strategy.entry("S", strategy.short, when=(sell and (time >= timestamp(FromYear, FromMonth, FromDay, 00, 00)) and (time <= timestamp(ToYear, ToMonth, ToDay, 23, 59))))
// strategy.close("S", when=(buy and (time <= timestamp(ToYear, ToMonth, ToDay, 23, 59))))

مزید