
ডোনচিয়ান চ্যানেল ট্রেন্ড ট্র্যাকিং কৌশলটি ডোনচিয়ান চ্যানেলের সূচকগুলির উপর ভিত্তি করে একটি ট্রেন্ড ট্র্যাকিং কৌশল। এটি দামের প্রবণতা সনাক্ত করতে বিভিন্ন দৈর্ঘ্যের ডোনচিয়ান চ্যানেল ব্যবহার করে এবং যখন দাম চ্যানেলটি ভেঙে যায় তখন একটি লেনদেনের সংকেত দেয়।
এই কৌশলটির মূল ধারণা হল দীর্ঘকালীন ডোনচিয়ান চ্যানেল ব্যবহার করে বড় প্রবণতার দিকনির্দেশনা নির্ধারণ করা এবং স্বল্পকালীন ডোনচিয়ান চ্যানেল ব্যবহার করে প্রবেশ এবং বন্ধের সংকেত দেওয়া। এটির উদ্দেশ্য হল মধ্য-লম্বা লাইনের দামের প্রবণতা ধরা এবং বাজারে স্বল্পমেয়াদী ওঠানামা দ্বারা বিভ্রান্ত না হওয়া।
ডোনচিয়ান চ্যানেলের সর্বোচ্চ এবং সর্বনিম্ন সমাপ্তির মূল্য গণনা করুন (যেমন 50 দিন) । দামগুলি যখন চ্যানেলটি ভেঙে যায় তখন উচ্চতর হয় এবং যখন তারা নীচের ট্র্যাকটি ভেঙে যায় তখন নীচে থাকে। এটি মূল প্রবণতা নির্ধারণের ভিত্তি।
একটি সংক্ষিপ্ত সময়ের (যেমন 20 দিন) সর্বোচ্চ বন্ধের মূল্য এবং সর্বনিম্ন বন্ধের মূল্যকে প্রবেশ এবং বন্ধের মানদণ্ড হিসাবে গণনা করুন। যখন দাম দীর্ঘ লাইন চ্যানেলটি ভেঙে দেয়, যদি বন্ধের মূল্যটিও সংক্ষিপ্ত লাইন চ্যানেলটি ভেঙে দেয় তবে প্রবেশটি বেশি / খালি করে দেয়।
যখন একটি মাল্টিপল পজিশন রাখা হয়, যদি দামটি শর্ট লাইনের নীচে নেমে যায় তবে তা বন্ধ হয়ে যায়। যখন খালি পজিশন রাখা হয়, যদি দামটি শর্ট লাইনের উপরে উঠে যায় তবে তা বন্ধ হয়ে যায়।
স্টপ লস পয়েন্টটি N × ATR তে সেট করা হয়েছে। এটি বাজারের অস্থিরতার সাথে স্বয়ংক্রিয়ভাবে সামঞ্জস্য করতে পারে, যা স্টপ লস সক্রিয় হওয়ার সম্ভাবনা হ্রাস করতে সহায়তা করে।
ট্রেডিং শেষ হওয়ার আগে পজিশন খালি করার বিকল্প রয়েছে, বা স্টপ লস হওয়া পর্যন্ত পজিশন ধরে রাখা যায়। এটি একটি ইনপুট প্যারামিটার দ্বারা নিয়ন্ত্রিত হতে পারে।
এই কৌশলটি একই সময়ে প্রবণতা বিচার এবং মুনাফা ক্ষতি বিবেচনা করে, যা মূল্যের প্রবণতাকে ক্যাপচার করে এবং ঝুঁকি নিয়ন্ত্রণ করে, যা মাঝারি এবং দীর্ঘ লাইন অপারেশনের জন্য উপযুক্ত।
দীর্ঘমেয়াদী প্রবণতাকে কার্যকরভাবে সনাক্ত করুন এবং স্বল্পমেয়াদী বাজারের শব্দ দ্বারা বিরক্ত হওয়া এড়ান।
স্বয়ংক্রিয় ক্ষতি প্রতিরোধ ব্যবস্থা একক ক্ষতি সীমাবদ্ধ করতে পারে।
এটিআর স্টপ মার্কেটের অস্থিরতার উপর ভিত্তি করে স্টপ দূরত্বকে সামঞ্জস্য করতে পারে, যাতে স্টপ ক্ষতির সম্ভাবনা কম থাকে।
ট্রেডিং ঝুঁকি পরিচালনার জন্য, আপনি যদি ট্রেড করতে না পারেন তবে স্বয়ংক্রিয়ভাবে পজিশন বন্ধ করতে পারেন।
কৌশলগত ধারণাগুলি সহজ, পরিষ্কার এবং সহজে বোঝা যায়।
ট্রেডিংয়ের খরচ বাড়াতে এবং ক্ষতির সম্ভাবনা বাড়ানোর জন্য, কৌশলগুলি স্পষ্ট ট্রেন্ডিংয়ের অভাবের বাজারে আরও বেশি লেনদেন করে।
যদিও স্টপ লস ব্যবস্থা রয়েছে, তবে অস্বাভাবিক পরিস্থিতিতে, দামের ফাঁকগুলি সরাসরি স্টপ লস পয়েন্টের নীচে চলে যেতে পারে এবং এর ফলে বড় ক্ষতি হতে পারে।
এটিআর হিসাব শুধুমাত্র ঐতিহাসিক তথ্যের উপর ভিত্তি করে করা হয়, যা ভবিষ্যতে চলমান এবং অস্থিরতার সঠিক পূর্বাভাস দিতে পারে না, এবং প্রকৃত স্টপ ডোজের দূরত্ব খুব বড় বা খুব ছোট হতে পারে।
রিয়েল-সিস্টেমে, স্টপ লস অর্ডার কার্যকর করা 100% নিশ্চিত নয়। চরম পরিস্থিতিতে, এটি এড়িয়ে যেতে পারে এবং ক্ষতি হতে পারে।
ডোনচিয়ান চ্যানেল প্যারামিটারগুলিকে সামঞ্জস্য করে ট্রেন্ড সনাক্তকরণের কার্যকারিতা অপ্টিমাইজ করুন।
অন্যান্য সূচক যেমন MACD, KDJ ইত্যাদির সাথে মিলিত হয়ে ট্রেডিং সিগন্যাল নিশ্চিত করে, কৌশলগত স্থিতিশীলতা বাড়ায়।
মুভিং স্টপ বৃদ্ধি করুন, যাতে স্টপ পয়েন্টগুলি দামের সাথে একসাথে চলে যায় এবং ক্ষতি আরও সীমাবদ্ধ করে।
বিভিন্ন পোজিশনের সময়কালের উপর সামগ্রিক কার্যকারিতার প্রভাব পরীক্ষা করা এবং সর্বোত্তম পোজিশনের সময়কাল নির্ধারণ করা।
ট্রেন্ডিং পরিস্থিতিতে পজিশনের আকার পরিবর্তন করতে এবং পজিশনের আকার বাড়াতে বিবেচনা করুন।
ডোনচিয়ান চ্যানেল ট্রেন্ড ট্র্যাকিং কৌশলটি প্রবণতা বিচার এবং ঝুঁকি নিয়ন্ত্রণের সমন্বয় করে, প্রবণতা সনাক্তকরণের মাধ্যমে অতিরিক্ত রিটার্ন অর্জন করে, যখন স্টপ-ড্রপ সিস্টেমটি লেজ ঝুঁকি নিয়ন্ত্রণ করে। এই কৌশলটি মধ্যম এবং দীর্ঘ লাইন মূল্যের প্রবণতা সনাক্ত এবং ক্যাপচার করার জন্য উপযুক্ত, যা প্যারামিটার অপ্টিমাইজেশন এবং সিস্টেমের পরিপূরক হওয়ার পরে স্থিতিশীল ইতিবাচক আয় অর্জন করতে পারে।
/*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=5
strategy(title="Donchian", overlay=true, calc_on_every_tick=true)
// =============================================================================
// VARIABLES
// =============================================================================
donch_string = input.string(title="Lenght", options = ['20/10','50/20', '50/50', '20/20', '100/100'], defval='20/10')
permit_long = input.bool(title = 'Permit long', defval = true)
permit_short = input.bool(title = 'Permit short', defval = true)
risk_percent = input.float(title="Position Risk %", defval=0.5, step=0.25)
stopOffset = input.float(title="ATR mult", defval=2.0, step=0.5)
atrLen = input.int(title="ATR Length", defval=20)
close_in_end = input.bool(title = 'Close in end', defval = true)
permit_stop = input.bool(title = 'Permit stop', defval = true)
// =============================================================================
// CALCULATIONS
// =============================================================================
donch_len_big =
donch_string == '50/20' ? 50 :
donch_string == '50/50' ? 50 :
donch_string == '20/20' ? 20 :
donch_string == '20/10' ? 20 :
donch_string == '100/100' ? 100 :
na
donch_len_small =
donch_string == '50/20' ? 20 :
donch_string == '50/50' ? 50 :
donch_string == '20/20' ? 20 :
donch_string == '20/10' ? 10 :
donch_string == '100/100' ? 100 :
na
big_maxclose = ta.highest(close, donch_len_big)
big_minclose = ta.lowest(close, donch_len_big)
small_maxclose = ta.highest(close, donch_len_small)
small_minclose = ta.lowest(close, donch_len_small)
atrValue = ta.atr(atrLen)[1]
tradeWindow = true
// =============================================================================
// NOTOPEN QTY
// =============================================================================
risk_usd = (risk_percent / 100) * strategy.equity
atr_currency = (atrValue * syminfo.pointvalue)
notopen_qty = risk_usd / (stopOffset * atr_currency)
// =============================================================================
// LONG STOP
// =============================================================================
long_stop_price = 0.0
long_stop_price :=
strategy.position_size > 0 and na(long_stop_price[1]) ? strategy.position_avg_price - stopOffset * atrValue :
strategy.position_size > 0 and strategy.openprofit > risk_usd ? strategy.position_avg_price:
strategy.position_size > 0 ? long_stop_price[1] :
na
// =============================================================================
// SHORT STOP
// =============================================================================
short_stop_price = 0.0
short_stop_price :=
strategy.position_size < 0 and na(short_stop_price[1]) ? strategy.position_avg_price + stopOffset * atrValue :
strategy.position_size < 0 and strategy.openprofit > risk_usd ? strategy.position_avg_price :
strategy.position_size < 0 ? short_stop_price[1] :
na
// =============================================================================
// PLOT BG VERTICAL COLOR
// =============================================================================
cross_up = strategy.position_size <= 0 and close == big_maxclose and close >= syminfo.mintick and tradeWindow and permit_long
cross_dn = strategy.position_size >= 0 and close == big_minclose and close >= syminfo.mintick and tradeWindow and permit_short
bg_color = cross_up ? color.green : cross_dn ? color.red : na
bg_color := color.new(bg_color, 70)
bgcolor(bg_color)
// =============================================================================
// PLOT HORIZONTAL LINES
// =============================================================================
s1 = cross_up ? na : cross_dn ? na : strategy.position_size != 0 ? strategy.position_avg_price : na
s2 = cross_up ? na : cross_dn ? na : strategy.position_size > 0 ? small_minclose : strategy.position_size < 0 ? small_maxclose : na
s3 = cross_up ? na : cross_dn ? na : not permit_stop ? na :
strategy.position_size > 0 ? long_stop_price : strategy.position_size < 0 ? short_stop_price : na
plot(series=big_maxclose, style=plot.style_linebr, color=color.black, linewidth=1, title="Donch Big Maxclose Black")
plot(series=big_minclose, style=plot.style_linebr, color=color.black, linewidth=1, title="Donch Big Minclose Black")
plot(series=s1, style=plot.style_linebr, color=color.yellow, linewidth=2, title="Entry Yellow")
plot(series=s2, style=plot.style_linebr, color=color.red, linewidth=1, title="Donch Small Red")
plot(series=s3, style=plot.style_linebr, color=color.fuchsia, linewidth=2, title="Stop Fuchsia")
// =============================================================================
// ENTRY ORDERS
// =============================================================================
if strategy.position_size <= 0 and close == big_maxclose and close >= syminfo.mintick and tradeWindow and permit_long
strategy.entry("Long", strategy.long, qty=notopen_qty)
if (strategy.position_size >= 0) and close == big_minclose and close >= syminfo.mintick and tradeWindow and permit_short
strategy.entry("Short", strategy.short, qty=notopen_qty)
// =============================================================================
// EXIT ORDERS
// =============================================================================
if strategy.position_size > 0 and permit_stop
strategy.exit(id="Stop", from_entry="Long", stop=long_stop_price)
if strategy.position_size < 0 and permit_stop
strategy.exit(id="Stop", from_entry="Short", stop=short_stop_price)
// ==========
if strategy.position_size > 0 and close == small_minclose and not barstate.islast
strategy.close(id="Long", comment='Donch')
if strategy.position_size < 0 and close == small_maxclose and not barstate.islast
strategy.close(id="Short", comment='Donch')
// ==========
if close_in_end
if not tradeWindow
strategy.close_all(comment='In end')
// =============================================================================
// END
// =============================================================================