ডনচিয়ান চ্যানেলের উপর ভিত্তি করে কৌশল অনুসরণ করে প্রবণতা

লেখক:চাওঝাং, তারিখঃ ২০২৩-১০-৩১ 17:44:19
ট্যাগঃ

img

সারসংক্ষেপ

পুলিং কৌশল হল ডনচিয়ান চ্যানেলের উপর ভিত্তি করে একটি প্রবণতা অনুসরণকারী কৌশল। এটি প্রবণতা দিকটি সনাক্ত করতে এবং pullbacks এ প্রবেশ করতে দ্রুত এবং ধীর ডনচিয়ান চ্যানেল ব্যবহার করে। এই কৌশলটির সুবিধাগুলি হ'ল এটি প্রবণতা স্বয়ংক্রিয়ভাবে ট্র্যাক করতে পারে এবং প্রবণতা পরিবর্তনের সময় সময় হ্রাস করতে পারে। তবে এটিতে ড্রডাউন এবং স্টপ লস হওয়ার ঝুঁকিও রয়েছে।

কৌশলগত যুক্তি

কৌশলটি প্রথমে দ্রুত চ্যানেলের সময়কালকে 20 বার এবং ধীর চ্যানেলের সময়কালকে 50 বার হিসাবে সংজ্ঞায়িত করে। দ্রুত চ্যানেলটি স্টপ লস মূল্য নির্ধারণের জন্য ব্যবহৃত হয়, যখন ধীর চ্যানেলটি প্রবণতা দিক এবং প্রবেশের সময় নির্ধারণের জন্য ব্যবহৃত হয়।

প্রথমত, দ্রুত চ্যানেলের সর্বোচ্চ উচ্চ এবং সর্বনিম্ন নিম্ন গণনা করা হয়, এবং মাঝের পয়েন্টটি স্টপ লস লাইন হিসাবে নেওয়া হয়। একই সময়ে, ধীর চ্যানেলের সর্বোচ্চ উচ্চ এবং সর্বনিম্ন নিম্ন গণনা করা হয়, এবং চ্যানেলের শীর্ষ এবং নীচের অংশটি প্রবেশের লাইন হিসাবে ব্যবহৃত হয়।

যখন মূল্য ধীর চ্যানেলের শীর্ষে ভেঙে যায়, তখন লং যান। যখন মূল্য ধীর চ্যানেলের নীচে ভেঙে যায়, তখন শর্ট যান। অবস্থান প্রবেশ করার পরে, দ্রুত চ্যানেলের মাঝখানে স্টপ লস সেট করুন।

সুতরাং ধীর চ্যানেলটি প্রধান প্রবণতার দিক নির্ধারণ করে, যখন দ্রুত চ্যানেলটি স্টপ লস পয়েন্ট নির্ধারণের জন্য একটি ছোট পরিসরের মধ্যে ছোট ছোট ব্রেকআউটগুলি ট্র্যাক করে। যখন প্রধান প্রবণতা বিপরীত হয়, তখন স্টপ লস উপলব্ধি করতে দামটি প্রথমে দ্রুত চ্যানেলের স্টপ লস লাইনটি ভেঙে দেবে।

সুবিধা

  • স্বয়ংক্রিয়ভাবে প্রবণতা ট্র্যাক করুন এবং সময়মতো ক্ষতি কমানো। ডাবল চ্যানেল কাঠামো স্বয়ংক্রিয়ভাবে প্রবণতা ট্র্যাক করতে পারে এবং প্রবণতা বিপরীত হলে দ্রুত ক্ষতি কমানো যায়।

  • কিছু প্রবণতা ফিল্টারিং প্রভাব সঙ্গে pullbacks এ প্রবেশ করুন। শুধুমাত্র যখন মূল্য চ্যানেল সীমানা মাধ্যমে বিরতি গ্রহণ কিছু বাস্তব প্রবণতা ছাড়া মিথ্যা breakouts ফিল্টার করতে পারেন।

  • নিয়ন্ত্রণযোগ্য ঝুঁকি। বন্ধ হ্রাস দূরত্ব একক হ্রাস নিয়ন্ত্রণ করতে পারেন।

ঝুঁকি

  • প্রবণতা অনুসরণকারী কৌশলগুলির তুলনামূলকভাবে বড় পরিমাণে ড্রাউনডাউন থাকতে পারে যার জন্য মানসিক প্রস্তুতি প্রয়োজন।

  • স্টপ লস খুব কাছাকাছি। দ্রুত চ্যানেল সময়কাল সংক্ষিপ্ত তাই স্টপ লস কাছাকাছি, বন্ধ হওয়ার প্রবণ। আমরা যথাযথভাবে দ্রুত চ্যানেল সময়কাল শিথিল করতে পারি।

  • ডাবল চ্যানেল কাঠামো অতিরিক্ত এন্ট্রি তৈরি করতে পারে, যার জন্য যুক্তিসঙ্গত অবস্থান আকার প্রয়োজন।

অপ্টিমাইজেশান নির্দেশাবলী

  • এন্ট্রি ফিল্টার যোগ করুন। আমরা প্রবেশাধিকার প্রবণতা শক্তি ছাড়া ব্রেকআউট ফিল্টার করার জন্য এন্ট্রি শর্তাবলী মধ্যে অস্থিরতা ইত্যাদি যোগ করতে পারেন।

  • চ্যানেল প্যারামিটার অপ্টিমাইজ করুন। আমরা পদ্ধতিগতভাবে চ্যানেল প্যারামিটার সমন্বয় খুঁজে পেতে পারেন।

  • একাধিক টাইমফ্রেম একত্রিত করা। উচ্চতর সময়সীমার উপর প্রধান প্রবণতা নির্ধারণ এবং কম সময়সীমার উপর বাণিজ্য।

  • গতিশীল স্টপ লস দূরত্ব বাজার অস্থিরতার উপর ভিত্তি করে গতিশীলভাবে স্টপ দূরত্ব সামঞ্জস্য করুন।

সংক্ষিপ্তসার

পুলিং কৌশল একটি সাধারণ প্রবণতা অনুসরণকারী কৌশল। এটি প্রবণতার দিক নির্ধারণ করতে মূল্য চ্যানেল ব্যবহার করে এবং ঝুঁকি নিয়ন্ত্রণের জন্য স্টপ লস সেট করে। কৌশলটির কিছু সুবিধা রয়েছে তবে ড্রডাউন এবং স্টপ লসের সমস্যাগুলিও খুব কাছাকাছি। আমরা চ্যানেলের পরামিতিগুলি সামঞ্জস্য করে, ফিল্টারগুলি যুক্ত করে ইত্যাদির মাধ্যমে এটি অনুকূল করতে পারি। তবে আমাদের লক্ষ্য করা উচিত যে প্রবণতা অনুসরণকারী কৌশলগুলির জন্য ড্রডাউন সহ্য করার জন্য শক্তিশালী মনোবিজ্ঞানের প্রয়োজন।


/*backtest
start: 2023-09-30 00:00:00
end: 2023-10-30 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2020

//@version=4
strategy("Noro's RiskTurtle Strategy", shorttitle = "RiskTurtle str", overlay = true, default_qty_type = strategy.percent_of_equity, initial_capital = 100, default_qty_value = 100, commission_value = 0.1)

//Settings
needlong  = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
risk      = input(2, minval = 0.1, maxval = 99, title = "Risk size, %")
fast      = input(20, minval = 1, title = "Fast channel (for stop-loss)")
slow      = input(50, minval = 1, title = "Slow channel (for entries)")
showof    = input(true, defval = true, title = "Show offset")
showll    = input(true, defval = true, title = "Show lines")
showdd    = input(true, defval = true, title = "Show label (drawdown)")
showbg    = input(true, defval = true, title = "Show background")
fromyear  = input(1900, defval = 1900, 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")

//Donchian price channel fast
hf = highest(high, fast)
lf = lowest(low, fast)
center = (hf + lf) / 2

//Donchian price chennal slow
hs = highest(high, slow)
ls = lowest(low, slow)

//Lines
colorpc = showll ? color.blue : na
colorsl = showll ? color.red : na
offset = showof ? 1 : 0
plot(hs, offset = offset, color = colorpc, title = "Slow channel high")
plot(ls, offset = offset, color = colorpc, title = "Slow channel low")
plot(center, offset = offset, color = colorsl, title = "Fast channel stop-loss")

//Background
size = strategy.position_size
colorbg = showbg == false ? na : size > 0 ? color.lime : size < 0 ? color.red : na
bgcolor(colorbg, transp = 70)

//Var
loss = 0.0
maxloss = 0.0
equity = 0.0
truetime = true

//Lot size
risksize = -1 * risk
risklong = ((center / hs) - 1) * 100
coeflong = abs(risksize / risklong)
lotlong = (strategy.equity / close) * coeflong
riskshort = ((center / ls) - 1) * 100
coefshort = abs(risksize / riskshort)
lotshort = (strategy.equity / close) * coefshort

//Orders
strategy.entry("Long", strategy.long, lotlong, stop = hs, when = needlong and strategy.position_size == 0 and hs > 0 and truetime)
strategy.entry("Short", strategy.short, lotshort, stop = ls, when = needshort and strategy.position_size == 0 and ls > 0 and truetime)
strategy.exit("LongExit", "Long", stop = center, when = needlong and strategy.position_size > 0)
strategy.exit("Short", stop = center, when = needshort and strategy.position_size < 0)
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()
    strategy.cancel("Long")
    strategy.cancel("Short")
    
if showdd

    //Drawdown
    max = 0.0
    max := max(strategy.equity, nz(max[1]))
    dd = (strategy.equity / max - 1) * 100
    min = 100.0
    min := min(dd, nz(min[1]))
    
    //Max loss size
    equity := strategy.position_size == 0 ? strategy.equity : equity[1]
    loss := equity < equity[1] ? ((equity / equity[1]) - 1) * 100 : 0
    maxloss := min(nz(maxloss[1]), loss)
    
    //Label
    min := round(min * 100) / 100
    maxloss := round(maxloss * 100) / 100
    labeltext = "Drawdown: " + tostring(min) + "%" + "\nMax.loss " + tostring(maxloss) + "%"
    var label la = na
    label.delete(la)
    tc = min > -100 ? color.white : color.red
    osx = timenow + round(change(time)*10)
    osy = highest(100)
    // la := label.new(x = osx, y = osy, text = labeltext, xloc = xloc.bar_time, yloc = yloc.price, color = color.black, style = label.style_labelup, textcolor = tc)

আরো