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

ڈونچیئن چینل بریک آؤٹ ٹریڈنگ حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-11-08 12:31:56
ٹیگز:

img

جائزہ

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

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

یہ حکمت عملی پچھلے تاریخی ادوار کے دوران سب سے زیادہ قیمت پی سی میکس اور سب سے کم قیمت پی سی منٹ کا حساب کتاب کرکے ایک چینل تیار کرتی ہے۔ چینل کے اوپری اور نچلے ریل کے لئے حساب کتاب کے طریقے یہ ہیں:

اوپری ریل yh = pcmax - (pcmax - pcmin) * (100 - فیصدDev) / 100

نچلی ریل yl = pcmin + (pcmax - pcmin) * فیصدDev/100

جہاں فیصد ڈیو 13 پر ڈیفالٹ کرتا ہے.

ایک لمبا سگنل اس وقت پیدا ہوتا ہے جب قیمت اوپری ریل کو توڑتی ہے۔ ایک مختصر سگنل اس وقت پیدا ہوتا ہے جب قیمت نچلی ریل کو توڑتی ہے۔

ٹریڈنگ سگنل پیدا کرنے کے لئے مخصوص منطق یہ ہے:

  1. boundup = high > yh اگر اوپری ریل ٹوٹ گیا ہے کا تعین کرنے کے لئے

  2. bounddn = کم < yl کم ریل ٹوٹ گیا ہے کہ آیا کا تعین کرنے کے لئے

  3. upsign = sma(bounddn، 2) == 1 کم ریل کی مستقل توڑ کا تعین کرنے کے لئے bounddn کے sma کا استعمال کرتا ہے

  4. dnsign = sma(boundup، 2) == 1 اوپری ریل کی مستقل توڑ کا تعین کرنے کے لئے boundup کے sma کا استعمال کرتا ہے

  5. exitup = dnsign اوپری ریل کا بریک آؤٹ آؤٹ سگنل پیدا کرتا ہے

  6. exitdn = upsign نچلی ریل کے بریک آؤٹ سے باہر نکلنے کا اشارہ پیدا ہوتا ہے

  7. اگر نیچے ریل کے اپسائن بریک آؤٹ طویل سگنل پیدا کرتا ہے

  8. اگر dnsign بریک آؤٹ اوپری ریل مختصر سگنل پیدا کرتا ہے

حکمت عملی غیر ضروری راتوں رات پوزیشنوں سے بچنے کے لئے تجارت کے آغاز اور اختتام کے اوقات بھی طے کرتی ہے۔

حکمت عملی کے فوائد

  1. رجحانات کا تعین کرنے کے لئے Donchian چینل کا استعمال کرتا ہے، اچھا backtest نتائج

  2. دونوں طویل اور مختصر سگنل ہے، دو طرفہ ٹریڈنگ کی اجازت دیتا ہے

  3. سگنل فلٹر کرنے اور خراب تجارت سے بچنے کے لئے ایس ایم اے کا استعمال کرتا ہے

  4. خطرہ کنٹرول کرنے کے لئے اختیاری سٹاپ نقصان

  5. راتوں رات کے خطرات سے بچنے کے لئے تجارت کے آغاز اور اختتام کے اوقات مقرر کریں

اسٹریٹجی کے خطرات

  1. تاریخ اور فیصد ڈیو پیرامیٹرز کے لئے حساس، مختلف مصنوعات کے لئے اصلاح کی ضرورت ہے

  2. رینج سے منسلک مارکیٹوں میں غلط سگنل پیدا کر سکتا ہے

  3. آرڈر مینجمنٹ پر غور نہیں کرتا، براہ راست ٹریڈنگ میں منافع کو متاثر کر سکتا ہے

  4. غیر منقولہ سرمایہ کاری کے لئے غیر منقولہ سرمایہ کاری کی شرح

  5. منی مینجمنٹ پر غور نہیں کرتا، مناسب تجارتی سرمایہ کی ضرورت ہے

بہتری کے خیالات

  1. مختلف مصنوعات کے لئے تاریخ اور فیصد ڈیو پیرامیٹرز کو بہتر بنائیں

  2. مختلف مارکیٹوں میں غلط سگنل سے بچنے کے لئے فلٹرز شامل کریں

  3. واحد پوزیشن سائز کو کنٹرول کرنے کے لئے پوزیشن سائزنگ ماڈیول شامل کریں

  4. کل پوزیشن کے سائز کو محدود کرنے کے لئے منی مینجمنٹ ماڈیول شامل کریں

  5. بہترین آرڈر عملدرآمد کے لئے آرڈر مینجمنٹ شامل کریں

نتیجہ

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


/*backtest
start: 2023-10-31 00:00:00
end: 2023-11-07 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

////////////////////////////////////////////////////////////
//  Copyright by AlexInc v1.0 02/07/2018  @aav_1980
// PriceChannel strategy
// If you find this script helpful, you can also help me by sending donation to 
// BTC 16d9vgFvCmXpLf8FiKY6zsy6pauaCyFnzS
// LTC LQ5emyqNRjdRMqHPHEqREgryUJqmvYhffM
////////////////////////////////////////////////////////////
//@version=3
strategy("AlexInc PriceChannel Str", overlay=false)
history = input(20)
percentDev = input(13)
capital = input(100)

needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
usestoploss = input(true, defval = true, title = "Stop Loss")
stoplossmult = input(3.8, defval = 3.8, minval = 1, maxval = 10, title = "Stop loss multiplicator")


fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

bodymin = min( open, close)
bodymax = max(open, close)

pcmax = highest(bodymax, history)
pcmin = lowest(bodymin, history)

yh = ((pcmax - pcmin) / 100 * (100 - percentDev)) + pcmin
yl = ((pcmax - pcmin) / 100 * percentDev) + pcmin

plot(pcmax)
plot(pcmin)
plot(yh)
plot(yl)

//1
bounddn = low < yl ? 1 : 0
boundup = high > yh ? 1 : 0
upsign = sma(bounddn, 2) == 1
dnsign = sma(boundup, 2) == 1
//2
//upsign = crossover(bodymin, yl)
//dnsign = crossunder(bodymax , yh)


exitup = dnsign
exitdn = upsign

lot = strategy.equity / close * capital / 100


xATR = atr(history)
nLoss = usestoploss ? stoplossmult * xATR : na

stop_level_long = 0.0
stop_level_long := nz(stop_level_long[1])

stop_level_short = 0.0
stop_level_short := nz(stop_level_short[1])

pos = strategy.position_size
if pos >0 and pos[1] <= 0 //crossover(pos, 0.5)
    stop_level_long = strategy.position_avg_price - nLoss
if pos < 0 and pos[1] >= 0 //crossunder(pos, -0.5)
    stop_level_short = strategy.position_avg_price + nLoss
if pos == 0    
    stop_level_long = bodymin - nLoss
    stop_level_short = bodymax + nLoss

//plot(bodymax + nLoss, color=red)
//plot(bodymin - nLoss, color=red)
plot(stop_level_long, color=red)
plot(stop_level_short, color=red)

if upsign
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot)

if dnsign
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)

if true
    strategy.close_all()


//if strategy.position_size != 0
//    strategy.exit("Exit Long", from_entry = "Long", stop = stop_level_long)
//    strategy.exit("Exit Short", from_entry = "Short", stop = stop_level_short)

مزید