অস্থিরতার প্রবণতা ট্র্যাকিং কৌশল

লেখক:চাওঝাং, তারিখঃ 2024-02-18 10:07:29
ট্যাগঃ

img

সারসংক্ষেপ

এই কৌশলটি মূল্যের প্রবণতা এবং অতিরিক্ত ক্রয় / অতিরিক্ত বিক্রয় পরিস্থিতি নির্ধারণের জন্য ওয়েভ ট্রেন্ড সূচক ব্যবহার করে। এটি সংকেতগুলি ফিল্টার করতে আরএসআই সূচককে একত্রিত করে এবং অতিরিক্ত ক্রয় / অতিরিক্ত বিক্রয় স্তরে প্রতি-প্রবণতা অপারেশন করার জন্য একটি প্রবণতা ট্র্যাকিং পদ্ধতি গ্রহণ করে।

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

কৌশলটি মূল্যের প্রবণতা দিক নির্ধারণের জন্য ওয়েভট্রেন্ড সূচক ব্যবহার করে। ওয়েভট্রেন্ড সূচকটি রেইনবো সূচকের উপর ভিত্তি করে উন্নত করা হয়েছে। এটি হেইকিন-আশি চলমান গড় এবং দামের পরম মানের মধ্যে পার্থক্য গণনা করে দামের প্রবণতা দিক বিচার করে। এটি ওভারকপ/ওভারসোল্ড পরিস্থিতি নির্ধারণের জন্য আরএসআই সূচককে একত্রিত করে ট্রেডিং সংকেত তৈরি করে।

বিশেষ করে, কৌশল মধ্যে WaveTrend সূত্র হলঃ

esa = ema(hlc3, 10)
d = ema(abs(hlc3 - esa), 10) 
ci = (hlc3 - esa) / (0.015 * d)
wt = ema(ci, 21)

যেখানে esa হল হিসাবকৃত হেকিন-আশি চলমান গড়, d হল হেকিন-আশি চলমান গড় এবং মূল্যের পরম মানের মধ্যে পার্থক্যের গড়। ci হল তথাকথিত অভিযোজনশীল পরিসীমা, যা মূল্যের অস্থিরতা প্রতিফলিত করে। wt হল ci এর চলমান গড়, যা মূল্যের প্রবণতার দিক নির্ধারণ করে এবং দীর্ঘ এবং স্বল্প সময়ের জন্য মূল সূচক।

আরএসআই সূচকটি অতিরিক্ত ক্রয়/অতিরিক্ত বিক্রয় পরিস্থিতি নির্ধারণের জন্য ব্যবহৃত হয়। কোডের আরএসআই গণনার সূত্রটি হলঃ

rsiup = rma(max(change(close), 0), 14)
rsidown = rma(-min(change(close), 0), 14)
rsi = rsidown == 0 ? 100 : rsiup == 0 ? 0 : 100 - (100 / (1 + rsiup / rsidown)) 

এর মান 0 থেকে 100 এর মধ্যে। 70 এর উপরে বেশি কেনা হয় এবং 30 এর নিচে বেশি বিক্রি হয়।

এই দুটি সূচকের সাথে মিলিয়ে, যখন আরএসআই 25 এর নীচে এবং ওয়েভট্রেন্ড -60 এর নীচে থাকে, তখন এটি লম্বা হওয়ার জন্য oversold হয়। যখন আরএসআই 75 এর উপরে এবং ওয়েভট্রেন্ড 60 এর উপরে থাকে, তখন এটি লম্বা হওয়ার জন্য overbought হয়।

সুবিধা বিশ্লেষণ

এই কৌশলটির সুবিধাগুলির মধ্যে রয়েছেঃ

  1. WaveTrend সূচক সঠিকভাবে এবং নির্ভরযোগ্যভাবে মূল্য প্রবণতা দিক নির্ধারণ করতে পারেন।
  2. আরএসআই ফিল্টার অপ্রয়োজনীয় ট্রেড এড়াতে পারে এবং জয়ের হার বাড়িয়ে তুলতে পারে।
  3. প্রবণতা ট্র্যাকিং পদ্ধতি মূল্য প্রবণতা ধরা থেকে মুনাফা সর্বাধিক করতে পারেন।
  4. কৌশলগত ধারণাটি সহজ এবং পরিষ্কার, প্যারামিটারগুলি বিভিন্ন পণ্য এবং বাজারের জন্য সামঞ্জস্য করার জন্য নমনীয়।
  5. লাইভ ট্রেডিংয়ে সহজেই বাস্তবায়ন ও পরীক্ষা করা যায়, আরও অপ্টিমাইজেশনের জন্য ভালো।

ঝুঁকি বিশ্লেষণ

এছাড়াও কিছু ঝুঁকি আছেঃ

  1. ওয়েভট্রেন্ড এবং আরএসআই উভয়ই কিছুটা পিছিয়ে আছে, মূল্য বিপরীত পয়েন্ট মিস করতে পারে।
  2. ফিল্টার থাকা সত্ত্বেও পার্শ্ববর্তী বাজারে এখনও মিথ্যা সংকেত দেখা দিতে পারে।
  3. একক ক্ষতি নিয়ন্ত্রণের জন্য কার্যকর স্টপ লস পদ্ধতির অভাব।
  4. যুক্তিসঙ্গত প্যারামিটার টিউনিংয়ের প্রয়োজন বৈশিষ্ট্য এবং ট্রেডিং ফ্রিকোয়েন্সির সাথে মেলে।

সমাধান:

  1. সংকেত সঠিকতা উন্নত করতে সংমিশ্রণ অপ্টিমাইজেশনের জন্য সূচক যোগ করুন।
  2. একক ক্ষতি নিয়ন্ত্রণের জন্য স্টপ লস কৌশল যুক্ত করুন।
  3. কৌশলটি সামঞ্জস্য করার জন্য সর্বোত্তম প্যারামিটার সমন্বয় খুঁজুন।

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

কৌশলটি নিম্নলিখিত দিকগুলিতে অপ্টিমাইজ করা যেতে পারেঃ

  1. সিগন্যালের নির্ভুলতা উন্নত করতে বিচার সূচক পরিবর্তন বা যোগ করুন, যেমন এমএসিডি, কেডি ইত্যাদি।

  2. প্যারামিটার সেটিংস অপ্টিমাইজ করুন বিভিন্ন পণ্য অভিযোজিত করতে, যেমন মসৃণ সময়কাল সামঞ্জস্য করুন।

  3. একক ক্ষতি নিয়ন্ত্রণের জন্য ট্র্যাকিং স্টপ লস কৌশল যোগ করুন, যেমন শতাংশ স্টপ লস, ট্রেলিং স্টপ লস ইত্যাদি।

  4. বিভিন্ন পিরামিডিং কৌশল বিবেচনা করুন, উদাহরণস্বরূপ, নির্দিষ্ট পরিমাণের পরিবর্তে মার্টিঙ্গেল।

  5. বিচারের নির্ভুলতা উন্নত করতে অভিযোজনযোগ্য পরিসীমা পরামিতিগুলি অপ্টিমাইজ করুন।

সিদ্ধান্ত

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


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy(title = "Noro's WaveTrender Strategy v1.0", shorttitle = "WaveTrender str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 10)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
usemar = input(false, defval = false, title = "Use Martingale")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
showarr = input(true, defval = true, title = "Show Arrows")
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")

//RSI
rsiup = rma(max(change(close), 0), 14)
rsidown = rma(-min(change(close), 0), 14)
rsi = rsidown == 0 ? 100 : rsiup == 0 ? 0 : 100 - (100 / (1 + rsiup / rsidown))

//WaveTrend
esa = ema(hlc3, 10)
d = ema(abs(hlc3 - esa), 10)
ci = (hlc3 - esa) / (0.015 * d)
wt = ema(ci, 21)

//Body
body = abs(close - open)
abody = sma(body, 10)

//Signals
bar = close > open ? 1 : close < open ? -1 : 0
overs = rsi < 25 and wt < -60
overb = rsi > 75 and wt > 60
up1 = (strategy.position_size == 0 or close < strategy.position_avg_price) and overs and bar == -1
dn1 = (strategy.position_size == 0 or close > strategy.position_avg_price) and overb and bar == 1
exit = (strategy.position_size > 0 and overs == false) or (strategy.position_size < 0 and overb == false)

//Arrows
col = exit ? black : up1 or dn1 ? blue : na
needup = up1
needdn = dn1
needexitup = exit and strategy.position_size < 0
needexitdn = exit and strategy.position_size > 0
plotarrow(showarr and needup ? 1 : na, colorup = blue, colordown = blue, transp = 0)
plotarrow(showarr and needdn ? -1 : na, colorup = blue, colordown = blue, transp = 0)
plotarrow(showarr and needexitup ? 1 : na, colorup = black, colordown = black, transp = 0)
plotarrow(showarr and needexitdn ? -1 : na, colorup = black, colordown = black, transp = 0)

//Trading
profit = exit ? ((strategy.position_size > 0 and close > strategy.position_avg_price) or (strategy.position_size < 0 and close < strategy.position_avg_price)) ? 1 : -1 : profit[1]
mult = usemar ? exit ? profit == -1 ? mult[1] * 2 : 1 : mult[1] : 1
lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 * mult : lot[1]

if up1
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot)

if dn1
    if strategy.position_size > 0
        strategy.close_all()
        
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot)
    
if exit
    strategy.close_all()

আরো