এই নিবন্ধে একটি পরিমাণগত কৌশল সম্পর্কে বিস্তারিত আলোচনা করা হবে যা ট্রেন্ডের দিকনির্দেশের জন্য লেনদেনের অনুপাতের উপর ভিত্তি করে। এই কৌশলটি একটি বহুমুখী লেনদেনের গড় লাইন গণনা করে একটি ক্রয়-বিক্রয় সংকেত তৈরি করে।
১, কৌশলগত নীতি
এই কৌশলটির কেন্দ্রীয় সূচক হল অতিরিক্ত লেনদেনের পরিমাণ। নিম্নলিখিত পদক্ষেপগুলি গণনা করা হয়েছেঃ
গণনা করা হয় যেদিনের লেনদেনের পরিমাণ (Volume) ।
যদি K লাইনটি বহুদিকের হয়, তবে লেনদেনের পরিমাণটি বহুদিকের লেনদেনের পরিমাণ হিসাবে লেখা হবে।
K লাইনটি খালি মাথা হিসাবে বিচার করা হলে, লেনদেনের পরিমাণটি খালি দিকের লেনদেনের পরিমাণ হিসাবে লেখা হবে।
যথাক্রমে বহুভুজ এবং শূন্যভুজ বিনিময় পরিমাণের চলমান গড় গণনা করুন।
যখন একাধিক পক্ষের চলমান গড়ের উপর ফাঁকা পক্ষের চলমান গড় অতিক্রম করে, তখন একটি ক্রয় সংকেত উৎপন্ন হয়; বিপরীতভাবে একটি বিক্রয় সংকেত উৎপন্ন হয়।
মূল্য পরিবর্তনের হার সূচক দ্বারা ফিল্টার করা হয়, এবং শুধুমাত্র যখন দাম একটি স্পষ্ট প্রবণতা দেখা দেয় তখনই লেনদেন করা হয়।
সিগন্যালের উপর ভিত্তি করে স্টপ লস স্টপ পয়েন্ট, মুনাফা লক করতে।
এইভাবে, প্রবণতার দিকনির্দেশের জন্য লেনদেনের পরিমাণের একটি ফাঁকা অনুপাত নির্ধারণ করা হয় এবং মূল্য পরিবর্তনের হার সূচক দ্বারা পরিস্রাবণ করা হয়, যা সংকেতের গুণমানকে উন্নত করতে পারে। স্টপ লস স্টপ সেটিংটি প্রতিটি লেনদেনের জন্য নিয়ন্ত্রণযোগ্য ক্ষতিও করে।
দ্বিতীয়, কৌশলগত সুবিধা
এই কৌশলটির সবচেয়ে বড় সুবিধা হল ট্রেডিং ভলিউম ব্যবহার করে ট্রেন্ডের দিক নির্ধারণ করা, যা ট্রেন্ড নির্ধারণের অন্যতম মৌলিক পদ্ধতি। ট্রেডিং ভলিউম বাজারের অংশগ্রহণকারীদের আচরণকে প্রতিফলিত করতে পারে।
এছাড়াও, লেনদেনের পরিমাণের সূচকটি বিরতির সংকেতকে আরও আগে প্রতিফলিত করতে পারে, এটি আরও সংবেদনশীল। এটি কেবলমাত্র মূল্যের সূচক ব্যবহারের তুলনায় প্রবণতার বিপরীতে আরও আগে ধরতে পারে।
শেষ অবধি, মূল্য পরিবর্তনের হার সূচকগুলির সাথে সংযুক্ত ফিল্টারিংয়ের ফলে সংকেতের গুণমানও উন্নত হয়েছে।
তৃতীয়, সম্ভাব্য ঝুঁকি
যদিও এই কৌশলটির কিছু সুবিধা রয়েছে, তবে নিম্নলিখিত ঝুঁকিগুলি সম্পর্কেও সতর্ক হওয়া উচিতঃ
প্রথমত, ভুল সংকেত এড়াতে ট্র্যাফিক সূচকের প্যারামিটারগুলি সাবধানে সেট করুন।
দ্বিতীয়ত, কেবলমাত্র একটি সূচকের উপর নির্ভর করা মূল্যকে অবৈধ করে দেয়। একাধিক সূচকের সমন্বয় যাচাই করা উচিত।
অবশেষে, স্টপ লস সেটিং খুব কাছাকাছি থাকলে স্টপ লস ভেঙে যাওয়ার ঝুঁকি থাকে।
বিষয়বস্তুঃ
এই নিবন্ধে একটি পরিমাণগত কৌশল সম্পর্কে বিস্তারিত আলোচনা করা হয়েছে যা ট্রেডিং অনুপাতের ট্রেন্ডিং ট্রেন্ডিং ব্যবহার করে। এটি একটি ট্রেডিং সিগন্যাল তৈরি করতে পারে যা একটি বহুমুখী ট্রেডিং গড় লাইন গণনা করে। এই কৌশলটি কিছু অগ্রাধিকার রয়েছে, তবে এটি অন্যান্য সূচকগুলির সাথেও যাচাই করা দরকার। এছাড়াও, যথাযথ প্যারামিটার সেট এবং কঠোর তহবিল পরিচালনা তার কার্যকারিতার মূল চাবিকাঠি। সামগ্রিকভাবে, এই কৌশলটি ট্রেডিং ট্রেন্ডিং ট্রেন্ডিং ব্যবহারের জন্য একটি অনন্য ধারণা সরবরাহ করে, তবে আরও উন্নতি করা দরকার।
/*backtest
start: 2023-08-14 00:00:00
end: 2023-09-13 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
// Based on Volume Flow v3 indicator by oh92
strategy("Volume Flow BF", overlay=false, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.0)
/////////////// Time Frame ///////////////
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay, 0, 0)
testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay, 0, 0)
testPeriod() => true
maType = input(title="Moving Average Type", options=["Simple", "Exponential", "Double Exponential"], defval="Simple")
length = input(6, title="MA Length")
x = input(3.1, title="Factor For Breakout Candle")
// Basic Volume Calcs //
vol = volume
bull = close>open?vol:0
bear = open>close?vol:0
// Double EMA Function //
dema(src, len) => (2 * ema(src, len) - ema(ema(src, len), len))
// BULL Moving Average Calculation
bullma = maType == "Exponential" ? ema(bull, length) :
maType == "Double Exponential" ? dema(bull, length) :
sma(bull, length)
// BEAR Moving Average Calculation //
bearma = maType == "Exponential" ? ema(bear, length) :
maType == "Double Exponential" ? dema(bear, length) :
sma(bear, length)
///////////// Rate Of Change /////////////
source = close
roclength = input(12, minval=1)
pcntChange = input(2, minval=1)
roc = 100 * (source - source[roclength]) / source[roclength]
emaroc = ema(roc, roclength / 2)
isMoving() => emaroc > (pcntChange / 2) or emaroc < (0 - (pcntChange / 2))
/////////////// Strategy ///////////////
long = bullma > bearma and isMoving()
short = bullma < bearma and isMoving()
last_long = 0.0
last_short = 0.0
last_long := long ? time : nz(last_long[1])
last_short := short ? time : nz(last_short[1])
long_signal = crossover(last_long, last_short)
short_signal = crossover(last_short, last_long)
last_open_long_signal = 0.0
last_open_short_signal = 0.0
last_open_long_signal := long_signal ? open : nz(last_open_long_signal[1])
last_open_short_signal := short_signal ? open : nz(last_open_short_signal[1])
last_long_signal = 0.0
last_short_signal = 0.0
last_long_signal := long_signal ? time : nz(last_long_signal[1])
last_short_signal := short_signal ? time : nz(last_short_signal[1])
in_long_signal = last_long_signal > last_short_signal
in_short_signal = last_short_signal > last_long_signal
last_high = 0.0
last_low = 0.0
last_high := not in_long_signal ? na : in_long_signal and (na(last_high[1]) or high > nz(last_high[1])) ? high : nz(last_high[1])
last_low := not in_short_signal ? na : in_short_signal and (na(last_low[1]) or low < nz(last_low[1])) ? low : nz(last_low[1])
sl_inp = input(2.0, title='Stop Loss %') / 100
tp_inp = input(900.0, title='Take Profit %') / 100
take_level_l = strategy.position_avg_price * (1 + tp_inp)
take_level_s = strategy.position_avg_price * (1 - tp_inp)
since_longEntry = barssince(last_open_long_signal != last_open_long_signal[1])
since_shortEntry = barssince(last_open_short_signal != last_open_short_signal[1])
slLong = in_long_signal ? strategy.position_avg_price * (1 - sl_inp) : na
slShort = strategy.position_avg_price * (1 + sl_inp)
long_sl = in_long_signal ? slLong : na
short_sl = in_short_signal ? slShort : na
/////////////// Execution ///////////////
if testPeriod()
strategy.entry("Long", strategy.long, when=long)
strategy.entry("Short", strategy.short, when=short)
strategy.exit("Long Ex", "Long", stop=long_sl, limit=take_level_l, when=since_longEntry > 0)
strategy.exit("Short Ex", "Short", stop=short_sl, limit=take_level_s, when=since_shortEntry > 0)
///////////// Plotting /////////////
bgcolor(isMoving() ? long ? color.green : short ? color.red : na : color.white, transp=80)
bgcolor(long_signal ? color.lime : short_signal ? color.red : na, transp=30)
plot(bullma, color=color.lime, linewidth=1, transp=0, title="Bull MA", transp=10)
plot(bearma, color=color.red, linewidth=1, transp=0, title="Bear MA", transp=10)