وسائل لوڈ ہو رہے ہیں... لوڈنگ...

کثیر اشارے پر مبنی کراس سائیکل ثالثی کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2024-01-29 11:10:33
ٹیگز:

img

جائزہ

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

حکمت عملی منطق

اس حکمت عملی میں استعمال ہونے والے تین تکنیکی اشارے کیلٹنر چینل (KC) ، اتار چڑھاؤ اسٹاپ (Vstop) ، اور ولیمز ایلیگیٹر (WAE) ہیں۔ کیلٹنر چینل کا استعمال اس بات کا تعین کرنے کے لئے کیا جاتا ہے کہ کیا قیمتیں چینل کی حد سے باہر ہیں اور اس طرح تجارتی سگنل تیار کرتے ہیں۔ اتار چڑھاؤ اسٹاپ کا استعمال متحرک طور پر اسٹاپ نقصان کی پوزیشنوں کو ایڈجسٹ کرنے کے لئے کیا جاتا ہے تاکہ غیر ضروری اسٹاپ نقصان کو کم کرتے ہوئے اسٹاپ نقصان کو یقینی بنایا جاسکے۔ ولیمز ایلیگیٹر اشارے کا استعمال اس بات کا تعین کرنے کے لئے کیا جاتا ہے کہ کیا قیمتیں مضبوط رجحان میں ہیں۔ خاص طور پر:

  1. جب قیمت Keltner Channel کے اوپری ریل سے زیادہ ہوتی ہے ، تو اسے تیزی کا اشارہ سمجھا جاتا ہے۔ جب قیمت Keltner Channel کے نچلے ریل سے کم ہوتی ہے ، تو اسے bearish سگنل سمجھا جاتا ہے۔

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

  3. ولیمز ایلیگیٹر اشارے کا حساب MACD اور بولنگر بینڈ چینل کی چوڑائی کے حساب سے کیا جاتا ہے کہ کیا قیمتیں مضبوط اپ ٹرینڈ یا ڈاؤن ٹرینڈ میں ہیں۔

ان تین اشارے کو یکجا کرکے ، مختلف ٹائم فریموں میں سگنلوں کی کراس توثیق کی جاتی ہے۔ اس سے غلط فیصلے کا امکان کم ہوجاتا ہے اور ایک بہتر حکمت عملی منطق بنتی ہے۔

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

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

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

خطرے کا تجزیہ

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

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

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

اس حکمت عملی کی اصلاح کی جگہ بنیادی طور پر دو پہلوؤں پر مرکوز ہے: پیرامیٹر ٹوننگ اور اسٹاپ نقصان کی حکمت عملیوں کو بہتر بنانا۔ خاص طور پر ، مندرجہ ذیل پہلوؤں پر غور کیا جاسکتا ہے۔

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

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

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

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

خلاصہ

اس حکمت عملی میں کیلٹنر چینل ، Volatility Stop اور Williams Alligator کے امتزاج کے ذریعے ایک کراس سائیکل آربراجیج سسٹم بنایا گیا ہے۔ کثیر اشارے کا امتزاج سگنل کی درستگی کو بہتر بناتا ہے اور متحرک اسٹاپ نقصان کے خطرات کو کنٹرول کرتا ہے۔ لیکن پیرامیٹرز کی ترتیب اور اصلاح میں بہتری کی گنجائش ہے۔ مجموعی طور پر ، اس حکمت عملی میں مضبوط سائنسیت ہے اور مزید تحقیق اور درخواست کے قابل ہے۔


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

//@version=4
strategy("QuarryLake", overlay=true)  ///Ultilized modified full kelly for this strategy = 36%

///Keltner channel///
nPeriod = input(title="Keltner Period", type=input.integer, defval=200, minval=1)
Mult = input(title="Keltner Mult", type=input.integer, defval=5, minval=1)
xPrice = ema(hlc3, nPeriod)
xMove = ema(high - low, nPeriod)
xMoveMult = xMove * Mult
xUpper = xPrice + xMoveMult
xLower = xPrice - xMoveMult

// plot(xPrice, color=red, title="KSmid")
p1 = plot(xUpper, color=color.white, title="KSup")
p2 = plot(xLower, color=color.white, title="KSdn")
fill(p1, p2, color=close > xUpper ? color.green : close < xLower ? color.red : color.white)

kclongcondition = close > xUpper
kcshortcondition = close < xLower
kccloselongcondition = crossunder(close, xUpper)
kccloseshortcondition = crossover(close, xLower)

///Volatility Stop///
length = input(title="Vstop length", type=input.integer, defval=3, minval=1)
mult1 = 1.5

atr_ = atr(length)
max1 = 0.0
min1 = 0.0
is_uptrend_prev = false
stop = 0.0
vstop_prev = 0.0
vstop1 = 0.0
is_uptrend = false
is_trend_changed = false
max_ = 0.0
min_ = 0.0
vstop = 0.0
max1 := max(nz(max_[1]), close)
min1 := min(nz(min_[1]), close)
is_uptrend_prev := nz(is_uptrend[1], true)
stop := is_uptrend_prev ? max1 - mult1 * atr_ : min1 + mult1 * atr_
vstop_prev := nz(vstop[1])
vstop1 := is_uptrend_prev ? max(vstop_prev, stop) : min(vstop_prev, stop)
is_uptrend := close - vstop1 >= 0
is_trend_changed := is_uptrend != is_uptrend_prev
max_ := is_trend_changed ? close : max1
min_ := is_trend_changed ? close : min1
vstop := is_trend_changed ? is_uptrend ? max_ - mult1 * atr_ : min_ + mult1 * atr_ : 
   vstop1

plot(vstop, color=is_uptrend ? color.green : color.red, style=plot.style_line, linewidth=1)

vstoplongcondition = close > vstop
vstoplongclosecondition = crossunder(close, vstop)
vstopshortcondition = close < vstop
vstopshortclosecondition = crossover(close, vstop)

///Waddah Attar Explosion///
sensitivity = input(150, title="Sensitivity")
fastLength = input(20, title="FastEMA Length")
slowLength = input(40, title="SlowEMA Length")
channelLength = input(20, title="BB Channel Length")
mult = input(2.0, title="BB Stdev Multiplier")
DEAD_ZONE = nz(rma(tr(true), 100)) * 3.7
calc_macd(source, fastLength, slowLength) =>
    fastMA = ema(source, fastLength)
    slowMA = ema(source, slowLength)
    fastMA - slowMA
calc_BBUpper(source, length, mult) =>
    basis = sma(source, length)
    dev = mult * stdev(source, length)
    basis + dev
calc_BBLower(source, length, mult) =>
    basis = sma(source, length)
    dev = mult * stdev(source, length)
    basis - dev
t1 = (calc_macd(close, fastLength, slowLength) - 
   calc_macd(close[1], fastLength, slowLength)) * sensitivity
t2 = (calc_macd(close[2], fastLength, slowLength) - 
   calc_macd(close[3], fastLength, slowLength)) * sensitivity
e1 = calc_BBUpper(close, channelLength, mult) - 
   calc_BBLower(close, channelLength, mult)
trendUp = t1 >= 0 ? t1 : 0
trendDown = t1 < 0 ? -1 * t1 : 0

waelongcondition = trendUp and trendUp > DEAD_ZONE and trendUp > e1
waeshortcondition = trendDown and trendDown > DEAD_ZONE and trendDown > e1

///Long Entry///
longcondition = kclongcondition and vstoplongcondition and waelongcondition
if longcondition
    strategy.entry("Long", strategy.long)

///Long exit///
closeconditionlong = kccloselongcondition or vstoplongclosecondition
if closeconditionlong
    strategy.close("Long")

///Short Entry///
shortcondition = kcshortcondition and vstopshortcondition and waeshortcondition
if shortcondition
    strategy.entry("Short", strategy.short)

///Short exit///
closeconditionshort = kccloseshortcondition or vstopshortclosecondition
if closeconditionshort
    strategy.close("Short")

///Free Hong Kong, the revolution of our time///


مزید