ইন্টিগ্রেটেড মাল্টি-স্ট্র্যাটেজি কোন্টিটেটিভ ট্রেডিং সিস্টেম

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

এই নিবন্ধটি আপনাকে ক্রিপ্টোকারেন্সিগুলির জন্য Integrated Multi-Strategy Quantitative Trading System নামে একটি পরিমাণগত ট্রেডিং কৌশল সম্পর্কে জানায়। এই কৌশলটি একাধিক কৌশলগুলির একটি পোর্টফোলিও তৈরির জন্য একাধিক একক কৌশলগুলির সুবিধাগুলিকে একীভূত করে, উচ্চতর স্থিতিশীলতা এবং বৈচিত্র্য অর্জনের লক্ষ্যে।

এই কৌশলটি চারটি সাধারণ পরিমাণগত ট্রেডিং কৌশলকে অন্তর্ভুক্ত করেঃ

  1. চ্যানেল ব্রেকআউট কৌশলঃ একটি নির্দিষ্ট সময়ের মধ্যে সর্বোচ্চ এবং সর্বনিম্ন দামের ভিত্তিতে উপরের এবং নীচের চ্যানেল তৈরি করুন এবং যখন দাম চ্যানেলের বাইরে যায় তখন অবস্থান নিন।

  2. গতির কৌশলঃ নির্দিষ্ট সময়ের মধ্যে দামের পরিবর্তনের উপর ভিত্তি করে গতি নির্ধারণ করুন, যখন দাম দ্রুত বৃদ্ধি পায় তখন দীর্ঘ যান, যখন দাম দ্রুত হ্রাস পায় তখন সংক্ষিপ্ত যান।

  3. এমএসিডি কৌশলঃ এমএসিডি গোল্ডেন ক্রস এবং ডেড ক্রসের উপর ভিত্তি করে লং এবং শর্ট পজিশন নির্ধারণ করুন।

  4. হারামি প্যাটার্ন কৌশলঃ নির্দিষ্ট ক্যান্ডেলস্টিক প্যাটার্ন চিনতে এবং টার্নিং পয়েন্টের চারপাশে বাণিজ্য করে সম্ভাব্য ভবিষ্যতের বিপরীতগুলি সনাক্ত করুন।

এই কৌশলগুলির প্রত্যেকটিরই সুবিধা রয়েছে। একসাথে, তারা আরও স্থিতিশীল রিটার্ন অর্জন করতে পারে। বিশেষতঃ

চ্যানেল ব্রেকআউট কৌশল বাজারের প্রবণতা ক্যাপচার করতে পারে; গতি কৌশল স্বল্পমেয়াদী প্রবণতা সময়মত ট্র্যাক করতে পারে; MACD কৌশল মাঝারি মেয়াদী প্রবণতা বিপরীত সনাক্ত করতে পারে; হারামি কৌশল মূল বিপরীত পয়েন্ট নির্ধারণ করতে পারে।

এগুলিকে একটি কৌশলতে একীভূত করা আপনাকে ট্রেন্ডিং মার্কেটগুলির সময় উত্থান এবং পতনকে হত্যা করতে এবং inflection পয়েন্টগুলির চারপাশে বিপরীত অবস্থানগুলি খুলতে দেয়। এদিকে, বিভিন্ন কৌশলগুলি ঝুঁকি বৈচিত্র্য অর্জন করতে পারে।

অবশ্যই, এই ধরনের বহু-কৌশল সমন্বয়ের কিছু অসুবিধা রয়েছেঃ

  1. কৌশলটি খুব জটিল এবং পরামিতিগুলি সামঞ্জস্য করা কঠিন।

  2. কিছু কৌশলগুলির মধ্যে দ্বন্দ্ব থাকতে পারে।

  3. এটি ব্যবসায়ের ঘনত্ব এবং লেনদেনের খরচ বৃদ্ধি করে।

  4. ব্যাকটেস্টিং এর ফলাফল একক কৌশল থেকেও খারাপ হতে পারে।

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

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


/*backtest
start: 2023-09-07 00:00:00
end: 2023-09-14 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3

//Channel breakout
strategy("all_strategy", overlay=true)

length = input(title="Length", minval=1, maxval=1000, defval=5)

upBound = highest(high, length)
downBound = lowest(low, length)

if (not na(close[length]))
    strategy.entry("ChBrkLE", strategy.long, stop=upBound + syminfo.mintick, comment="ChBrkLE")
    strategy.entry("ChBrkSE", strategy.short, stop=downBound - syminfo.mintick, comment="ChBrkSE")

//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)


//Momentum
length1 = input(12)
price = close

momentum(seria, length) =>
    mom = seria - seria[length1]
    mom

mom0 = momentum(price, length1)
mom1 = momentum( mom0, 1)

if (mom0 > 0 and mom1 > 0)
    strategy.entry("MomLE", strategy.long, stop=high+syminfo.mintick, comment="MomLE")
else
    strategy.cancel("MomLE")

if (mom0 < 0 and mom1 < 0)
    strategy.entry("MomSE", strategy.short, stop=low-syminfo.mintick, comment="MomSE")
else
    strategy.cancel("MomSE")

//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)


//MACD Strategy
fastLength = input(12)
slowlength = input(26)
MACDLength = input(9)

MACD = ema(close, fastLength) - ema(close, slowlength)
aMACD = ema(MACD, MACDLength)
delta = MACD - aMACD

if (crossover(delta, 0))
    strategy.entry("MacdLE", strategy.long, comment="MacdLE")

if (crossunder(delta, 0))
    strategy.entry("MacdSE", strategy.short, comment="MacdSE")

//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)


//Harami

pctDw = input(60,minval=0,maxval=90,title="Doji, Min % of Range of Candle for Wicks")
pipMin= input(0,minval=0,title="Doji, Previous Candle Min Pip Body Size")
sname=input(true,title="Show Price Action Bar Names")
cbar = input(false,title="Highlight Harami & Doji Bars")
sHm    = input(false,title="Show Only Harami Style Doji's")
setalm = input(true, title="Generate Alert for Harami & Doji Bars")
uha   =input(true, title="Use Heikin Ashi Candles for Calculations")
bars = input(3,minval=1,maxval=3,step=1, title="Doji, Number of Lookback Bars")
//
// Use only Heikinashi Candles for all calculations
srcclose = uha ? security(heikinashi(syminfo.tickerid), timeframe.period, close) : close
srcopen = uha ? security(heikinashi(syminfo.tickerid), timeframe.period, open) : open
srchigh = uha ? security(heikinashi(syminfo.tickerid), timeframe.period, high) : high
srclow = uha ?security(heikinashi(syminfo.tickerid), timeframe.period, low) : low

//
pip = syminfo.mintick
range = srchigh - srclow


// Calculate Doji/Harami Candles
pctCDw = (pctDw/2) * 0.01
pctCDb = (100-pctDw) * 0.01

//Lookback Candles for bulls or bears
lbBull = bars==1? srcopen[1]>srcclose[1]: bars==2? (srcopen[1]>srcclose[1] and srcopen[2]>srcclose[2]): bars==3?(srcopen[1]>srcclose[1] and srcopen[2]>srcclose[2] and srcopen[3]>srcclose[3]):false
lbBear = bars==1? srcopen[1]<srcclose[1]: bars==2? (srcopen[1]<srcclose[1] and srcopen[2]<srcclose[2]): bars==3?(srcopen[1]<srcclose[1] and srcopen[2]<srcclose[2] and srcopen[3]<srcclose[3]):false

//Lookback Candle Size only if mininum size is > 0
lbSize = pipMin==0? true : bars==1 ? (abs(srcopen[1]-srcclose[1])>pipMin*pip) :
  bars==2 ? (abs(srcopen[1]-srcclose[1])>pipMin*pip and abs(srcopen[2]-srcclose[2])>pipMin*pip) :
  bars==3 ? (abs(srcopen[1]-srcclose[1])>pipMin*pip and abs(srcopen[2]-srcclose[2])>pipMin*pip and abs(srcopen[3]-srcclose[3])>pipMin*pip) :
  false

dojiBu = (srcopen[1] >= max(srcclose,srcopen) and srcclose[1]<=min(srcclose,srcopen)) and lbSize and
  (abs(srcclose-srcopen)<range*pctCDb and (srchigh-max(srcclose,srcopen))>(pctCDw*range) and (min(srcclose,srcopen)-srclow)>(pctCDw*range))? 1 : 0

dojiBe = (srcclose[1] >= max(srcclose,srcopen) and srcopen[1]<=min(srcclose,srcopen)) and lbSize and
  (abs(srcclose-srcopen)<range*pctCDb and (srchigh-max(srcclose,srcopen))>(pctCDw*range) and (min(srcclose,srcopen)-srclow)>(pctCDw*range))? 1 : 0
  
haramiBull = (srcopen<=srcclose or (max(srcclose,srcopen)-min(srcclose,srcopen))<pip*0.5) and lbBull and dojiBu
haramiBear = (srcopen>=srcclose or (max(srcclose,srcopen)-min(srcclose,srcopen))<pip*0.5) and lbBear and dojiBe

dojiBull = not sHm and not haramiBull and not haramiBear and lbBull and dojiBu
dojiBear = not sHm and not haramiBull and not haramiBear and lbBear and dojiBe

//
plotshape(haramiBear and sname?srchigh:na,title="Bearish Harami",text='Bearish\nHarami',color=red, style=shape.arrowdown,location=location.abovebar)
plotshape(haramiBear and cbar?max(srcopen,srcclose):na,title="Bear Colour Harami",color=red, style=shape.circle,location=location.absolute,size=size.normal)
//
plotshape(haramiBull and sname?srclow:na,title="Bullish Harami",text='Bullish\nHarami',color=green, style=shape.arrowup,location=location.belowbar)
plotshape(haramiBull and cbar?max(srcopen,srcclose):na,title="Bull Colour Harami",color=green, style=shape.circle,location=location.absolute,size=size.normal)
//
plotshape(dojiBear and sname?srchigh:na,title="Bearish Doji",text='Bearish\nDoji',color=fuchsia, style=shape.arrowdown,location=location.abovebar)
plotshape(dojiBear and cbar?max(srcopen,srcclose):na,title="Bear Colour Doji",color=fuchsia, style=shape.circle,location=location.absolute,size=size.normal)
//
plotshape(dojiBull and sname?srclow:na,title="Bullish Doji",text='Bullish\nDoji',color=aqua, style=shape.arrowup,location=location.belowbar)
plotshape(dojiBull and cbar?max(srcopen,srcclose):na,title="Bull Colour Doji",color=aqua, style=shape.circle,location=location.absolute,size=size.normal)

// Only Alert harami Doji's
bcolor = haramiBull ? 1 : haramiBear ? 2 : dojiBull ? 3 : dojiBear ? 4 : 0
baralert = setalm and bcolor>0
alertcondition(baralert,title="PACDOJI Alert",message="PACDOJI Alert")

//
plotshape(na(baralert[1])?na:baralert[1], transp=0,style=shape.circle,location=location.bottom, offset=-1,title="Bar Alert Confirmed", 
  color=bcolor[1]==1 ? green : bcolor[1]==2? red : bcolor[1]==3? aqua : bcolor[1]==4? fuchsia : na)

//EOF

আরো