ڈونگ چیان ٹرانسمیشن ایک ٹرینڈ ٹریکنگ حکمت عملی ہے جو ڈونگ چیان ٹرانسمیشن پر مبنی ہے۔ یہ حکمت عملی مختلف ادوار کی اعلی ترین اور کم ترین قیمتوں کا استعمال کرتی ہے تاکہ کثیر اور خالی سر کے داخلے کے مقامات اور اسٹاپ نقصانات کا تعین کیا جاسکے۔
حکمت عملی کے داخلے کا قاعدہ یہ ہے: جب قیمت مخصوص مدت (جیسے 20 دن) کی اعلی ترین قیمت کو توڑتی ہے تو زیادہ خریدیں؛ جب قیمت مخصوص مدت (جیسے 10 دن) کی کم ترین قیمت کو توڑتی ہے تو اسے خالی کردیں۔
EXIT قاعدہ یہ ہے کہ: کثیر پوزیشنیں درمیانی یا نچلے راستے پر رک جاتی ہیں۔ خالی پوزیشنیں درمیانی یا اوپری راستے پر رک جاتی ہیں۔ درمیانی راستہ ایک مخصوص مدت (جیسے 10 دن) کی اعلی ترین قیمت اور کم ترین قیمت کا اوسط ہے۔
فرض کریں کہ تجارت کی قسم BTCUSDT ہے ، پیرامیٹرز کی ترتیب مندرجہ ذیل ہے:
اس کے بعد ، آپ کو اپنے اکاؤنٹ کو دوبارہ کھولنے کی ضرورت ہوگی۔
متحرک طور پر ایڈجسٹ انٹری اور سٹاپ نقصان کی مدت کے پیرامیٹرز کی طرف سے، مختلف مارکیٹ کے دوروں میں بہتر بنانے کے لئے، رجحان سازی کے حالات میں بہتر منافع حاصل کرنے کے لئے.
ڈونگ چیان چینل توڑنے کی حکمت عملی کو ٹرینڈ کی سمت کا تعین کرنے کے لئے توڑنے کے لئے استعمال کیا جاتا ہے ، اسٹاپ نقصان کو چینل کے وسط پوائنٹ یا نیچے کی طرف مقرر کیا جاتا ہے ، اور اس سے خطرہ کو مؤثر طریقے سے کنٹرول کیا جاسکتا ہے۔ پیرامیٹرز کی اصلاح کی ترتیب کے ذریعہ ، حکمت عملی کو رجحان سازی میں گرفت کی شرح میں اضافہ کیا جاسکتا ہے۔ تاہم ، اس سے بچنے کے لئے توڑنے کی افادیت کے فیصلے اور محتاط استعمال پر توجہ دی جانی چاہئے۔
/*backtest
start: 2023-08-14 00:00:00
end: 2023-09-13 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Donchian Channel Strategy", overlay=true, default_qty_type= strategy.percent_of_equity, initial_capital = 1000, default_qty_value = 20, commission_type=strategy.commission.percent, commission_value=0.036)
//Long optopns
buyPeriodEnter = input(10, "Channel Period for Long enter position")
buyPeriodExit = input(10, "Channel Period for Long exit position")
isMiddleBuy = input(true, "Is exit on Base Line? If 'no' - exit on bottom line")
takeProfitBuy = input(2.5, "Take Profit (%) for Long position")
isBuy = input(true, "Allow Long?")
//Short Options
sellPeriodEnter = input(20, "Channel Period for Short enter position")
sellPeriodExit = input(20, "Channel Period for Short exit position")
isMiddleSell = input(true, "Is exit on Base Line? If 'no' - exit on upper line")
takeProfitSell = input(2.5, "Take Profit (%) for Short position")
isSell = input(true, "Allow Short?")
// Test Start
startYear = input(2005, "Test Start Year")
startMonth = input(1, "Test Start Month")
startDay = input(1, "Test Start Day")
startTest = timestamp(startYear,startMonth,startDay,0,0)
//Test End
endYear = input(2050, "Test End Year")
endMonth = input(12, "Test End Month")
endDay = input(30, "Test End Day")
endTest = timestamp(endYear,endMonth,endDay,23,59)
timeRange = time > startTest and time < endTest ? true : false
// Long&Short Levels
BuyEnter = highest(buyPeriodEnter)
BuyExit = isMiddleBuy ? ((highest(buyPeriodExit) + lowest(buyPeriodExit)) / 2): lowest(buyPeriodExit)
SellEnter = lowest(sellPeriodEnter)
SellExit = isMiddleSell ? ((highest(sellPeriodExit) + lowest(sellPeriodExit)) / 2): highest(sellPeriodExit)
// Plot Data
plot(BuyEnter, style=plot.style_line, linewidth=2, color=color.blue, title="Buy Enter")
plot(BuyExit, style=plot.style_line, linewidth=1, color=color.blue, title="Buy Exit", transp=50)
plot(SellEnter, style=plot.style_line, linewidth=2, color=color.red, title="Sell Enter")
plot(SellExit, style=plot.style_line, linewidth=1, color=color.red, title="Sell Exit", transp=50)
// Calc Take Profits
TakeProfitBuy = 0.0
TakeProfitSell = 0.0
if strategy.position_size > 0
TakeProfitBuy := strategy.position_avg_price*(1 + takeProfitBuy/100)
if strategy.position_size < 0
TakeProfitSell := strategy.position_avg_price*(1 - takeProfitSell/100)
// Long Position
if isBuy and timeRange
strategy.entry("Long", strategy.long, stop = BuyEnter, when = strategy.position_size == 0)
strategy.exit("Long Exit", "Long", stop=BuyExit, limit = TakeProfitBuy, when = strategy.position_size > 0)
// Short Position
if isSell and timeRange
strategy.entry("Short", strategy.short, stop = SellEnter, when = strategy.position_size == 0)
strategy.exit("Short Exit", "Short", stop=SellExit, limit = TakeProfitSell, when = strategy.position_size < 0)
// Close & Cancel when over End of the Test
if time > endTest
strategy.close_all()
strategy.cancel_all()