ডনচিয়ান চ্যানেলের ব্রেকআউট ট্রেডিং কৌশল

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

img

সারসংক্ষেপ

ডনচিয়ান চ্যানেল ব্রেকআউট ট্রেডিং কৌশল একটি নির্দিষ্ট সময়ের মধ্যে সর্বোচ্চ এবং সর্বনিম্ন দামের চ্যানেল গণনা করে এবং চ্যানেল ব্রেকআউটগুলির উপর ভিত্তি করে দীর্ঘ এবং স্বল্প বাণিজ্য করে বর্তমান মূল্য প্রবণতা বিচার করে। এই কৌশলটি অত্যন্ত অস্থির স্টক এবং ক্রিপ্টোকারেন্সিগুলির জন্য উপযুক্ত।

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

এই কৌশলটি সর্বশেষ ইতিহাসের সময়কালে সর্বোচ্চ মূল্য পিসিম্যাক্স এবং সর্বনিম্ন মূল্য পিসিমিন গণনা করে একটি চ্যানেল তৈরি করে। চ্যানেলের উপরের এবং নীচের রেলের জন্য গণনার পদ্ধতিগুলি হ'লঃ

উপরের রেল yh = pcmax - (pcmax - pcmin) * (100 - শতাংশDev)/100

নিম্ন রেল yl = pcmin + (pcmax - pcmin) * শতাংশDev/100

যেখানে %Dev ডিফল্ট 13.

যখন দাম উপরের রেলটি ভেঙে যায় তখন একটি দীর্ঘ সংকেত উৎপন্ন হয়। যখন দাম নিম্ন রেলটি ভেঙে যায় তখন একটি সংক্ষিপ্ত সংকেত উৎপন্ন হয়।

ট্রেডিং সিগন্যাল তৈরির নির্দিষ্ট যুক্তি হলঃ

  1. উপরের রেল ভাঙা কিনা তা নির্ধারণ করতে boundup = high > yh

  2. bounddn = low < yl নিম্ন রেল ভাঙা কিনা তা নির্ধারণ করতে

  3. upsign = sma(bounddn, 2) == 1 নিম্ন রেলের ধ্রুবক ব্রেকআউট নির্ধারণের জন্য bounddn এর sma ব্যবহার করে

  4. dnsign = sma(boundup, 2) == 1 উপরের রেলের ধ্রুবক ব্রেকআউট নির্ধারণের জন্য boundup এর sma ব্যবহার করে

  5. exitup = dnsign উপরের রেলের ব্রেকআউট আউট সংকেত উৎপন্ন করে

  6. exitdn = নিম্ন রেলের আপসাইন ব্রেকআউট আউট সংকেত উৎপন্ন করে

  7. যদি নিম্ন রেলের আপসাইন ব্রেকআউট দীর্ঘ সংকেত উৎপন্ন করে

  8. যদি উপরের রেলের ডিএনসাইন ব্রেকআউট শর্ট সিগন্যাল তৈরি করে

অপ্রয়োজনীয় ওভার নাইট পজিশন এড়াতে কৌশলটি ট্রেডিংয়ের শুরু ও শেষের সময় নির্ধারণ করে।

কৌশলটির সুবিধা

  1. প্রবণতা নির্ধারণের জন্য ডনচিয়ান চ্যানেল ব্যবহার করে, ভাল ব্যাকটেস্ট ফলাফল

  2. উভয় দীর্ঘ এবং সংক্ষিপ্ত সংকেত আছে, দ্বি-মুখী ট্রেডিং অনুমতি দেয়

  3. সিগন্যাল ফিল্টার করতে এবং খারাপ ট্রেড এড়াতে এসএমএ ব্যবহার করে

  4. ঝুঁকি নিয়ন্ত্রণের জন্য অপশনাল স্টপ লস

  5. রাতারাতি ঝুঁকি এড়ানোর জন্য ট্রেডিংয়ের শুরু এবং শেষের সময় নির্ধারণ করুন

কৌশলটির ঝুঁকি

  1. ইতিহাস এবং শতাংশDev পরামিতি সংবেদনশীল, বিভিন্ন পণ্যের জন্য অপ্টিমাইজেশান প্রয়োজন

  2. পরিসীমা-সীমাবদ্ধ বাজারে মিথ্যা সংকেত সৃষ্টি করতে পারে

  3. অর্ডার ম্যানেজমেন্ট বিবেচনা করে না, লাইভ ট্রেডিংয়ে লাভজনকতা প্রভাবিত হতে পারে

  4. পজিশনের সাইজিং, ওভার-সাইজিং পজিশনের ঝুঁকি বিবেচনা করে না

  5. অর্থ ব্যবস্থাপনা বিবেচনা করে না, যুক্তিসঙ্গত ট্রেডিং মূলধন প্রয়োজন

উন্নতির ধারণাগুলি

  1. বিভিন্ন পণ্যের জন্য ইতিহাস এবং শতাংশDev পরামিতি অপ্টিমাইজ করুন

  2. বিভিন্ন বাজারে মিথ্যা সংকেত এড়ানোর জন্য ফিল্টার যোগ করুন

  3. একক অবস্থান আকার নিয়ন্ত্রণ করতে অবস্থান আকার মডিউল যোগ করুন

  4. মোট পজিশনের আকার সীমাবদ্ধ করতে অর্থ ব্যবস্থাপনা মডিউল যোগ করুন

  5. সর্বোত্তম অর্ডার কার্যকরকরণের জন্য অর্ডার ম্যানেজমেন্ট যুক্ত করুন

সিদ্ধান্ত

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


/*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)

আরো