পরিমাণগত প্রবণতা অনুসরণ কৌশল


সৃষ্টির তারিখ: 2024-02-01 11:42:22 অবশেষে সংশোধন করুন: 2024-02-01 11:42:22
অনুলিপি: 0 ক্লিকের সংখ্যা: 524
1
ফোকাস
1617
অনুসারী

পরিমাণগত প্রবণতা অনুসরণ কৌশল

ওভারভিউ

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

কৌশল নীতি

  • ব্রাইন ব্যান্ড ব্যবহার করা হয় প্রবণতা গঠনের ভিত্তি হিসাবে মূল্যগুলি ব্রাইন ব্যান্ডের উপরে বা নীচে ট্র্যাকের কাছাকাছি রয়েছে কিনা তা নির্ধারণ করার জন্য
  • আরএসআই-এর সাথে যুক্ত হয়ে ওভার-বই ওভার-সোল্ড অঞ্চলে থাকলে ভুয়া ব্রেকডাউন এড়ানো যায়
  • ADX ব্যবহার করে প্রবণতার শক্তি নির্ণয় করুন, প্রবণতা শক্তিশালী হলেই সংকেত দিন
  • MACD ব্যবহার করে স্বল্পমেয়াদী এবং দীর্ঘমেয়াদী প্রবণতার সামঞ্জস্য নির্ণয় করা
  • শুধুমাত্র নির্দিষ্ট ট্রেডিং সময়ের মধ্যে ট্রেডিং

মাল্টি-ইনডিকেটর প্যাকেজের মাধ্যমে বিচার করুন, মূল্যের প্রবণতা সঠিকভাবে সনাক্ত করুন, যখন প্রবণতা ঘটে তখন সময়মতো অনুসরণ করুন, অতিরিক্ত উপার্জন অর্জন করুন।

সামর্থ্য বিশ্লেষণ

এই কৌশলটির সবচেয়ে বড় সুবিধা হল যে সূচক সমন্বয়টি ব্যাপক এবং সঠিকভাবে বিচার করা হয়, যা মূল্যের প্রবণতাকে কার্যকরভাবে সনাক্ত করতে পারে এবং একটি একক সূচকের কারণে মিথ্যা সংকেত এড়াতে পারে।

বিশেষ করে, এর সুবিধাগুলো হলঃ

  1. ব্রিন বন্ডের সাহায্যে দামের ঘাটতি ও দুর্বলতা নির্ণয় করা যায়
  2. আরএসআই ওভারবয় এড়াতে ওভারসোল্ড এড়ায়
  3. এডিএক্স ট্রেন্ডের মাত্রা নির্ধারণ করে, শুধুমাত্র শক্তিশালী ট্রেন্ড অনুসরণ করে
  4. MACD এর সংক্ষিপ্ত ও দীর্ঘ লাইন সামঞ্জস্য
  5. রাতারাতি ঝুঁকি এড়াতে ট্রেডিংয়ের সময়সীমা নির্ধারণ করুন

এই প্যাকেজটি ব্যবহার করে, আপনি আপনার কৌশলকে স্থিতিশীল করতে পারবেন, যাতে আপনার ভুল সংকেত কম হয় এবং আপনার কৌশল স্থিতিশীল হয়।

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

এই কৌশলটির প্রধান ঝুঁকিগুলো হলোঃ

  1. হঠাৎ ঘটনার কারণে সূচকটি ব্যর্থ হয়েছে
  2. এই ভূমিকম্পে অনেক ভুয়া সংকেত তৈরি হয়েছে।

ঝুঁকির জন্য, একাধিক সূচকের উপর নির্ভরশীলতার কারণে, একক সূচকের ব্যর্থতার সমস্যাটি কিছুটা এড়ানো যায়, তবে ঝুঁকি নিয়ন্ত্রণ ব্যবস্থাটি উন্নত করা দরকার।

ঝুঁকি 2 এর জন্য, প্যারামিটারগুলি যথাযথভাবে সামঞ্জস্য করা যেতে পারে, লেনদেনের ব্যাপ্তি সংক্ষিপ্ত করা যায়, লেনদেনের ফ্রিকোয়েন্সি হ্রাস করা যায় এবং ঝুঁকি হ্রাস করা যায়।

অপ্টিমাইজেশান দিক

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

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

ক্রমাগত অপ্টিমাইজেশনের মাধ্যমে, কৌশলগত প্যারামিটারগুলির দৃঢ়তা ক্রমাগত উন্নত করা এবং মিথ্যা সংকেতের সম্ভাবনা হ্রাস করা।

সারসংক্ষেপ

এই কৌশলটি সামগ্রিকভাবে প্রবণতা সংকেত সনাক্ত করার জন্য শক্তিশালী এবং সূচক সমন্বয় দ্বারা বিচার করে, মূল্য প্রবণতা কার্যকরভাবে সনাক্ত করতে পারে।

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

কৌশল সোর্স কোড
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 00:00:00
period: 5h
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/
// © abilash.s.90


dIMinusCalc(adxLen) =>
    
    smoothedTrueRange = 0.0
    smoothedDirectionalMovementMinus = 0.0
    dIMinus = 0.0
    trueRange = 0.0
    directionalMovementMinus = 0.0
    
    trueRange := max(max(high-low, abs(high-nz(close[1]))), abs(low-nz(close[1])))
    directionalMovementMinus := nz(low[1])-low > high-nz(high[1]) ? max(nz(low[1])-low, 0): 0
    
    smoothedTrueRange := nz(smoothedTrueRange[1]) - (nz(smoothedTrueRange[1])/adxLen) + trueRange
    smoothedDirectionalMovementMinus := nz(smoothedDirectionalMovementMinus[1]) - (nz(smoothedDirectionalMovementMinus[1])/adxLen) + directionalMovementMinus
    
    dIMinus := smoothedDirectionalMovementMinus / smoothedTrueRange * 100
    
    dIMinus

dIPlusCalc(adxLen) =>
    
    smoothedTrueRange = 0.0
    smoothedDirectionalMovementPlus = 0.0
    dIPlus =  0.0
    trueRange = 0.0
    directionalMovementPlus = 0.0
    
    trueRange := max(max(high-low, abs(high-nz(close[1]))), abs(low-nz(close[1])))
    directionalMovementPlus := high-nz(high[1]) > nz(low[1])-low ? max(high-nz(high[1]), 0): 0
    
    smoothedTrueRange := nz(smoothedTrueRange[1]) - (nz(smoothedTrueRange[1])/adxLen) + trueRange
    smoothedDirectionalMovementPlus := nz(smoothedDirectionalMovementPlus[1]) - (nz(smoothedDirectionalMovementPlus[1])/adxLen) + directionalMovementPlus
    
    dIPlus := smoothedDirectionalMovementPlus / smoothedTrueRange * 100
    
    dIPlus
    
    
Adx(adxLen) =>
    dIPlus =  0.0
    dIMinus = 0.0
    dX = 0.0
    aDX = 0.0
    dIPlus := dIPlusCalc(adxLen)
    dIMinus := dIMinusCalc(adxLen)
    dX := abs(dIPlus-dIMinus) / (dIPlus+dIMinus)*100
    aDX := sma(dX, adxLen)
    
    aDX
    
BarInSession(sess) => time(timeframe.period, sess) != 0


//@version=4
strategy("Bollinger Band + RSI + ADX + MACD", overlay=true)

//Session

session = input(title="Trading Session", type=input.session, defval="0930-1500")

sessionColor = BarInSession(session) ? color.green : na

bgcolor(color=sessionColor, transp=95)

// Bollinger Bands
src = input(high, title="Bollinger Band Source", type=input.source)
length = input(3, minval=1, type=input.integer, title="Bollinger Band Length")
mult = input(4.989, minval=0.001, maxval=50, step=0.001, type=input.float, title="Bollinger Band Std Dev")
basis = sma(src, length)
dev = mult * stdev(src, length)
upper = basis + dev
lower = basis - dev


plot(upper, title="Bollinger Band Upper", color=color.red)
plot(lower, title="Bollinger Band Lower", color=color.green)

// RSI
rsiSrc = input(close, title="RSI Source", type=input.source)
rsiLength = input(16, minval=1, type=input.integer, title="RSI Length")
rsiComparator = input(39.2, title="RSI Comparator", type=input.float, step=0.1)

rsi = rsi(rsiSrc, rsiLength)

// ADX
adxLength = input(14, minval=1, type=input.integer, title="ADX Length")
adxComparator = input(14, minval=1, type=input.integer, title="ADX Comparator")

adx = Adx(adxLength)

// Heikinashi

haClose = security(heikinashi(syminfo.ticker), timeframe.period, close)
haOpen = security(heikinashi(syminfo.ticker), timeframe.period, open)

nextHaOpen = (haOpen + haClose) / 2

//MACD

macdCalcTypeProcessed = input(title="MACD Source", type=input.source, defval=high)
fast = input(12, title="MACD Fast")
slow = input(20, title="MACD Slow")
signalLen = input(15, title="MACD Signal")

fastMA = ema(macdCalcTypeProcessed, fast)
slowMA = ema(macdCalcTypeProcessed, slow)
macd = fastMA - slowMA
signal = sma(macd, signalLen)



longCondition() =>
    (low < lower) and (rsi[0] > rsiComparator) and (adx > adxComparator) and (close > nextHaOpen) and BarInSession(session) and macd > signal

stop = (close - max((low - (low * 0.0022)), (close - (close * 0.0032)))) / syminfo.mintick
target = (max(upper, (close + (close * 0.0075))) - close) / syminfo.mintick


strategy.entry("SX,LE", strategy.long, when=longCondition(), comment="SX,LE")
strategy.close_all(when=(not BarInSession(session)))
strategy.exit("LX", from_entry="SX,LE", profit=target, loss=stop)