
এই কৌশলটি ADX সূচকের গতিশীল পরিবর্তনগুলি অনুসরণ করে, বাজারের প্রবণতাগুলির প্রাথমিক পরিবর্তনগুলি ক্যাপচার করে, প্রবণতাটির সময়মত ট্র্যাকিংয়ের জন্য। ADX যখন নিম্ন থেকে দ্রুত বৃদ্ধি পায়, তখন বোঝা যায় যে প্রবণতা তৈরি হচ্ছে, এটি প্রবেশের জন্য একটি দুর্দান্ত সময়।
এই কৌশলটি মূলত এডিএক্স সূচকের গতিশীল পরিবর্তনের উপর ভিত্তি করে প্রবণতার বিকাশের বিচার করে। এডিএক্স সূচকটি যখন কম থাকে, তখন প্রবণতার পরিবর্তন হয় না; যখন এডিএক্স নিম্ন থেকে দ্রুত উঠে আসে, তখন একটি প্রবণতা তৈরি হচ্ছে। কৌশলটি এডিএক্সের দ্রুত উত্থান পর্যবেক্ষণ করে প্রবণতার বিকাশকে ক্যাপচার করে।
বিশেষ করে, কৌশলগত প্রবেশের জন্য নিম্নলিখিত শর্তগুলি অন্তর্ভুক্ত করা হয়েছেঃ
যখন উপরের শর্তগুলি একসাথে পূরণ করা হয়, তখন প্রবণতা তৈরি হচ্ছে এবং আরও বেশি কিছু করা হচ্ছে; যখন চলমান গড়টি অতিক্রম করা হয়, তখন সমতল অবস্থান। দুটি চলমান গড় ব্যবহার করে, প্রবণতার বিকাশকে আরও সঠিকভাবে বিচার করা যেতে পারে।
স্টপ-ড্রপ শর্তগুলিও একই রকম, যখন এডিএক্স দ্রুত নিচে নেমে আসে, তখন এটি খালি হয়; যখন দামগুলি চলমান গড়ের নীচে চলে যায়, তখন এটি খালি হয়।
এই কৌশলটির সবচেয়ে বড় সুবিধা হ’ল সময়মতো প্রবণতার বিকাশকে ক্যাপচার করা। traditionalতিহ্যবাহী পদ্ধতিতে কেবল এডিএক্সের মানের দিকে নজর দেওয়া হয়, প্রবণতাটি নিশ্চিত করার জন্য প্রায়শই এডিএক্স 20 বা 25 এর উপরে উঠার জন্য অপেক্ষা করা হয়, যা সেরা প্রবেশের সময়টি মিস করে। এই কৌশলটি এডিএক্সের দ্রুত উত্থান অনুসরণ করে প্রবণতার বিকাশকে ব্যাপকভাবে ধরে রাখতে পারে।
এছাড়াও, কৌশলটি চলমান গড়ের সাহায্যে কার্যকরভাবে ত্রুটিযুক্ত নির্ণয়ের ফিল্টার করতে এবং কৌশলটির স্থিতিশীলতা উন্নত করতে পারে।
এই কৌশলটির সবচেয়ে বড় ঝুঁকি হল ADX সূচক নিজেই পিছিয়ে রয়েছে। যদিও দ্রুত উত্থানের ধাপ অনুসরণ করে পিছিয়ে থাকাটি সংক্ষিপ্ত করা যেতে পারে, তবুও কিছু পিছিয়ে থাকা রয়েছে। এর ফলে কিছু দ্রুত পাল্টে যাওয়া বাজার ধরা যায় না।
এছাড়াও, এডিএক্স সূচকটি প্রবণতা নির্ণয়ের ক্ষেত্রে শতভাগ নির্ভুল নয় এবং কিছু ভুল নির্ণয়ও অনিবার্য। যদিও চলমান গড়ের প্রবর্তনটি কিছু গোলমাল ফিল্টার করতে পারে, তবে এটি আরও অপ্টিমাইজ করা দরকার।
এই কৌশলটির অপ্টিমাইজেশনের জন্য অনেক জায়গা রয়েছে, মূল বিষয় হ’ল এডিএক্স সূচকগুলির ক্যাপচারের নির্ভুলতা আরও বাড়ানো। মেশিন লার্নিং এবং অন্যান্য পদ্ধতিগুলি প্রবর্তন করা বিবেচনা করা যেতে পারে, এডিএক্স পরিবর্তনের পরে সম্ভাব্যতা বন্টন নির্ধারণের জন্য মডেলগুলি প্রশিক্ষণ দেওয়া যেতে পারে। পরীক্ষার অপ্টিমাইজেশনের জন্য বিভিন্ন প্যারামিটার সমন্বয় এবং অন্যান্য সহায়ক সূচকগুলির মতো পদ্ধতিগুলিও চেষ্টা করা যেতে পারে।
এই গতিশীল উত্থান ADX প্রবণতা ট্র্যাকিং কৌশল, ADX দ্রুত উত্থান বাজার পরিবর্তন পয়েন্ট ক্যাপচার দ্বারা প্রবণতা উপর সময়মত ট্র্যাকিং অর্জনের জন্য. সবচেয়ে বড় সুবিধা হল সময় অত্যন্ত চটপটে, কার্যকরভাবে প্রবণতা প্রথম দিকে ধরা যায়। একই সময়ে, একটি নির্দিষ্ট সম্ভাব্যতা ভুল বিচার ঝুঁকি আছে, পরবর্তীতে ক্রমাগত অপ্টিমাইজেশন পরীক্ষা প্রয়োজন।
/*backtest
start: 2023-12-03 00:00:00
end: 2023-12-10 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © dhilipthegreat
//@version=4
//Rising ADX strategy
strategy(title="Rising ADX strategy", overlay=false)
adxlen = input(14, title="ADX Length", minval=1)
threshold = input(10, title="threshold", minval=5)
hline(threshold, color=color.black, linestyle=hline.style_dashed)
atype = input(2,minval=1,maxval=7,title="1=SMA, 2=EMA, 3=WMA, 4=HullMA")
malen=input(20, title="Moving average 1 ",minval=1, maxval=50)
avg = atype == 1 ? sma(close,malen) : atype == 2 ? ema(close,malen) : atype == 3 ? wma(close,malen) : atype == 4 ? hma(close,malen) : na
atype2 = input(2,minval=1,maxval=7,title="1=SMA, 2=EMA, 3=WMA, 4=HullMA")
malen2=input(20, title="Moving average 2",minval=1, maxval=200)
avg2 = atype2 == 1 ? sma(close,malen2) : atype2 == 2 ? ema(close,malen2) : atype2 == 3 ? wma(close,malen2) : atype2 == 4 ? hma(close,malen2) : na
//ADX&DI
dilen = 14
dirmov(len,_high,_low,_tr) =>
up = change(_high)
down = -change(_low)
plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
truerange = rma(_tr, len)
plus = fixnan(100 * rma(plusDM, len) / truerange)
minus = fixnan(100 * rma(minusDM, len) / truerange)
[plus, minus]
adx(dilen, adxlen,_high,_low,_tr) =>
[plus, minus] = dirmov(dilen,_high,_low,_tr)
sum = plus + minus
adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
[plus, minus] = dirmov(dilen,high,low,tr)
sig = adx(dilen, adxlen,high,low,tr)
prev_sig = adx(dilen, adxlen,high[1],low[1],tr)
plot(sig ? sig : na, color = rising(sig, 1) ? color.lime : falling(sig, 1) ? color.orange : color.purple, title="ADX",linewidth=2)
//////
longCondition= sig > threshold and rising(sig, 1) and falling(prev_sig, 1) and close > avg and close > avg2
barcolor(longCondition ? color.yellow: na)
Long_side = input(true, "Long side")
if Long_side
strategy.entry(id="Long", long=true, when= longCondition and strategy.position_size<1)
exitCondition= (rising(prev_sig, 1) and falling(sig, 1)) or close < avg and close < avg2
strategy.close(id="Long",comment="L exit", qty=strategy.position_size , when= exitCondition) //close all
shortCondition= sig > threshold and rising(sig, 1) and falling(prev_sig, 1) and close < avg and close < avg2
barcolor(shortCondition ? color.gray: na)
Short_side = input(true, "Short side")
if Short_side
strategy.entry(id="Short", long=false, when= shortCondition and strategy.position_size<1)
sell_exitCondition= (rising(prev_sig, 1) and falling(sig, 1)) or close > avg and close > avg2
strategy.close(id="Short",comment="S exit", qty=strategy.position_size , when= sell_exitCondition) //close all
barcolor(strategy.position_size>1 ? color.lime: na)
bgcolor(strategy.position_size>1 ? color.lime: na)
barcolor(strategy.position_size<0 ? color.orange: na)
bgcolor(strategy.position_size<0 ? color.orange: na)