ট্রেন্ড মোমেন্টামের উপর ভিত্তি করে পরিমাণগত ট্রেডিং কৌশল


সৃষ্টির তারিখ: 2023-09-14 20:38:49 অবশেষে সংশোধন করুন: 2023-09-14 20:38:49
অনুলিপি: 1 ক্লিকের সংখ্যা: 711
1
ফোকাস
1617
অনুসারী

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

১, কৌশলগত নীতি

এই কৌশলটির মূল বিচারক হলেন:

  1. EMA গড় লাইন, যা বিভিন্ন সময়ের মধ্যে দামের প্রবণতা নির্ধারণ করে;

  2. MACD, স্বল্পমেয়াদী গতিশীলতা পরিবর্তিত হয়েছে কিনা তা নির্ধারণ করে;

  3. আরএসআই (RSI) - ওভার-বয় ওভার-সোল্ডের মধ্যে রয়েছে কিনা তা নির্ধারণ করে।

  4. ATR, স্টপ লস এবং স্টপ পজিশন গণনা করুন

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

যখন স্বল্পমেয়াদী ইএমএ গড়রেখার একাধিক বিপরীত হয়, তখন এটি সংকলন হিসাবে বিবেচিত হয় এবং এটি দীর্ঘমেয়াদী ইএমএ অতিক্রম না হওয়া পর্যন্ত প্রবেশ করা হয়।

MACDImplement momentum change judgement, RSI avoids top touch bottom ATR set stop loss stop stop control single risk

দ্বিতীয়, কৌশলগত সুবিধা

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

আরেকটি সুবিধা হল স্টপ লস স্টপ সেটিং, যা ট্রেন্ডকে মুনাফা অর্জনের জন্য লক করে দেয় এবং ঝুঁকি নিয়ন্ত্রণ করে।

শেষ পর্যন্ত, EMA চক্রটি স্তরবিন্যস্ত হয়, যা ধীরে ধীরে বিভিন্ন মাত্রার প্রবণতায় প্রবেশ করতে পারে।

তৃতীয়, সম্ভাব্য ঝুঁকি

কিন্তু এই কৌশলটি নিম্নলিখিত ঝুঁকিগুলিও বহন করেঃ

প্রথমত, প্রবণতা নির্ধারণে বিলম্ব হতে পারে, যার ফলে ফাঁকা কার্ডের সম্ভাবনা রয়েছে।

দ্বিতীয়ত, অত্যধিক চরমপন্থী হওয়ার ঝুঁকিতে থাকা।

অবশেষে, মানসিক প্রস্তুতির মাধ্যমে চাপ থেকে বেরিয়ে আসতে হবে।

বিষয়বস্তুঃ

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

কৌশল সোর্স কোড
/*backtest
start: 2023-08-14 00:00:00
end: 2023-08-30 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("QuantCat Mom Finder Strateg (1H)", overlay=true)

//Series to sum the amount of crosses in EMA for sideways trend/noise filtering
//can change EMA lengths, can change to SMA's/WMA's e.t.c

lookback_value = 60
minMA = 20
midMA = 40
maxMA = 60

ema25_crossover = (crossover(close, ema(close, minMA))) == true ? 1 : 0
ema25_crossover_sum = sum(ema25_crossover, lookback_value) ///potentially change lookback value to alter results

ema50_crossover = (crossover(close, ema(close, midMA))) == true ? 1 : 0
ema50_crossover_sum = sum(ema50_crossover, lookback_value) ///potentially change lookback value to alter results

ema75_crossover = (crossover(close, ema(close, maxMA))) == true ? 1 : 0
ema75_crossover_sum = sum(ema75_crossover, lookback_value) ///potentially change lookback value to alter results

ema25_crossunder = (crossunder(close, ema(close, minMA))) == true ? 1 : 0
ema25_crossunder_sum = sum(ema25_crossunder, lookback_value) ///potentially change lookback value to alter results

ema50_crossunder = (crossunder(close, ema(close, midMA))) == true ? 1 : 0
ema50_crossunder_sum = sum(ema50_crossunder, lookback_value) ///potentially change lookback value to alter results

ema75_crossunder = (crossunder(close, ema(close, maxMA))) == true ? 1 : 0
ema75_crossunder_sum = sum(ema75_crossunder, lookback_value) ///potentially change lookback value to alter results4


//Boolean series declaration
//can change amount of times crossed over the EMA verification to stop sideways trend filtering (3)

maxNoCross=2

macdmidlinebull=-0.5
macdmidlinebear=0.5
[macdLine, signalLine, histLine] = macd(close, 12, 26, 9)

//---------------
//Series Creation

bullishMacd = (macdLine > signalLine) and (macdLine > macdmidlinebull) ? true : false

bearishMacd = (macdLine < signalLine) and (macdLine < macdmidlinebear) ? true : false

bullRsiMin = 50 //53 initial values
bullRsiMax = 60 //61
bearRsiMin = 40 //39
bearRsiMax = 50 //47

basicBullCross25bool = ((ema25_crossover_sum < ema50_crossover_sum) 
     and (ema25_crossover_sum < ema75_crossover_sum) 
     and (ema25_crossover_sum < maxNoCross) 
     and crossover(close, ema(close, minMA)) and (rsi(close, 14) > bullRsiMin)
     and (rsi(close, 14) < bullRsiMax) and (bullishMacd == true)) ? true : false
  
basicBullCross50bool = ((ema50_crossover_sum < ema25_crossover_sum) 
     and (ema50_crossover_sum < ema75_crossover_sum) 
     and (ema50_crossover_sum < maxNoCross) 
     and crossover(close, ema(close, midMA)) and (rsi(close, 14) > bullRsiMin)
     and (basicBullCross25bool == false) 
     and (rsi(close, 14) < bullRsiMax) and (bullishMacd == true)) ? true : false
  
basicBullCross75bool = ((ema75_crossover_sum < ema25_crossover_sum) 
     and (ema75_crossover_sum < ema50_crossover_sum) 
     and (ema75_crossover_sum < maxNoCross) 
     and crossover(close, ema(close, maxMA)) and (rsi(close, 14) > bullRsiMin)
     and (basicBullCross25bool == false) and (basicBullCross50bool == false)
     and (rsi(close, 14) < bullRsiMax) and (bullishMacd == true)) ? true : false
     
basicBearCross25bool = ((ema25_crossunder_sum < ema50_crossunder_sum) 
     and (ema25_crossunder_sum < ema75_crossunder_sum) 
     and (ema25_crossunder_sum < maxNoCross) 
     and crossunder(close, ema(close, minMA)) and (rsi(close, 14) <bearRsiMax)
     and (rsi(close, 14) > bearRsiMin) and (bearishMacd == true)) ? true : false
  
basicBearCross50bool = ((ema50_crossunder_sum < ema25_crossunder_sum) 
     and (ema50_crossunder_sum < ema75_crossover_sum) 
     and (ema50_crossunder_sum < maxNoCross) 
     and crossunder(close, ema(close, midMA)) and (rsi(close, 14) < bearRsiMax)
     and (basicBearCross25bool == false) 
     and (rsi(close, 14) > bearRsiMin) and (bearishMacd == true)) ? true : false
  
basicBearCross75bool = ((ema75_crossunder_sum < ema25_crossunder_sum) 
     and (ema75_crossunder_sum < ema50_crossunder_sum) 
     and (ema75_crossunder_sum < maxNoCross) 
     and crossunder(close, ema(close, maxMA)) and (rsi(close, 14) < bearRsiMax)
     and (basicBearCross25bool == false) and (basicBearCross50bool == false)
     and (rsi(close, 14) > bearRsiMin) and (bearishMacd == true)) ? true : false

//STRATEGY
//can change lookback input on ATR

atrLkb = input(14, minval=1, title='ATR Stop Period')
atrRes = input("D",  title='ATR Resolution')
atr = security(syminfo.tickerid, atrRes, atr(atrLkb))


longCondition = (basicBullCross25bool or basicBullCross50bool or basicBullCross75bool) == true
if (longCondition)
    strategy.entry("Long", strategy.long)

shortCondition = (basicBearCross25bool or basicBearCross50bool or basicBearCross75bool) == true
if (shortCondition)
    strategy.entry("Short", strategy.short)
    
   
// Calc ATR Stops
// can change atr multiplier to affect stop distance/tp distance, and change "close" to ema values- could try ema 50

stopMult = 0.6 //0.6 is optimal

longStop = na
longStop :=  shortCondition ? na : longCondition and strategy.position_size <=0 ? close - (atr * stopMult) : longStop[1] 
shortStop = na
shortStop := longCondition ? na : shortCondition and strategy.position_size >=0 ? close + (atr * stopMult) : shortStop[1]

//Calc ATR Target

targetMult = 2.2 //2.2 is optimal for crypto x/btc pairs

longTarget = na
longTarget :=  shortCondition ? na : longCondition and strategy.position_size <=0 ? close + (atr*targetMult) : longTarget[1]
shortTarget = na
shortTarget := longCondition ? na : shortCondition and strategy.position_size >=0 ? close - (atr*targetMult) : shortTarget[1]

// Place the exits

strategy.exit("Long ATR Stop", "Long", stop=longStop, limit=longTarget)
strategy.exit("Short ATR Stop", "Short", stop=shortStop, limit=shortTarget)

//Bar color series

longColour = longCondition ? lime : na
shortColour = shortCondition ? red : na
    
// Plot the stoplosses and targets

plot(longStop, style=linebr, color=red, linewidth=2,     title='Long ATR Stop')
plot(shortStop, style=linebr, color=red, linewidth=2,  title='Short ATR Stop')
plot(longTarget, style=linebr, linewidth=2, color=lime,  title='Long ATR Target')
plot(shortTarget, linewidth=2, style=linebr, color=lime,  title='Long ATR Target')

barcolor(color=longColour)
barcolor(color=shortColour)

alertcondition(((basicBullCross25bool or basicBullCross50bool or basicBullCross75bool)==true), title='Long Entry', message='Bullish Momentum Change!')
alertcondition(((basicBearCross25bool or basicBearCross50bool or basicBearCross75bool)==true), title='Short Entry', message='Bearish Momentum Change!')