
এই কৌশলটি লেনদেনের পরিমাণের চলমান গড় এবং স্ট্যান্ডার্ড ডিফারেনশিয়াল ব্যবহার করে লেনদেনের পরিমাণের মডেল তৈরি করে, দামের চলমান গড়ের সাথে ট্রেন্ডের দিক নির্ধারণ করে এবং লেনদেনের পরিমাণ স্বাভাবিক হলে লেনদেনের সংকেত দেয়। লেনদেনের পরিমাণের উচ্চ-নিম্ন সীমাও রয়েছে, যাতে লেনদেনের পরিমাণ অস্বাভাবিক হলে ভুল সংকেত দেওয়া যায়।
এর মূল যুক্তি হল লেনদেনের পরিমাণ এবং মূল্য প্রবণতা নির্ণয় করা।
এই কৌশলটি লেনদেনের পরিমাণ এবং মূল্যের প্রবণতা মডেলের সাথে মিলিত হয় যাতে লেনদেনের পরিমাণ অস্বাভাবিক হলে মূল্যের প্রবণতা অনুসরণ করা এড়ানো যায় এবং কিছু মিথ্যা সংকেত ফিল্টার করা যায়।
ঝুঁকি মোকাবিলার উপায়ঃ
এই কৌশলটির সামগ্রিক চিন্তাভাবনা পরিষ্কার, ট্রেডিং ভলিউম ব্যবহার করে মিথ্যা প্রবণতা অনুসরণ করা এড়ানো, প্রবেশের সংকেত তুলনামূলকভাবে নির্ভরযোগ্য। তবে কৌশলটি নিজেই সহজ এবং বিস্তৃত স্থান রয়েছে, আরও সূচক, মেশিন লার্নিং, স্টপ লস এবং অন্যান্য মডিউল যুক্ত করে অপ্টিমাইজ করা যায়, যা স্থিতিশীলতা এবং প্রবণতা ক্যাপচার করার ক্ষমতা আরও বাড়িয়ে তুলতে পারে। এই কৌশলটি একটি সাধারণ প্রবণতা ট্র্যাকিং কৌশল, অপ্টিমাইজ করা হলে এটি একটি খুব কার্যকর পরিমাণগত কৌশল হতে পারে।
/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-20 00:00:00
period: 1d
basePeriod: 1h
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/
// © dongyun
//@version=4
strategy("交易量底部标准差系统", overlay=true)
options = input(1,'')
length = input(40,'')
nlow = input(5,'')
factor = input(1.0,'')
vavg = 0.0
vavgn = 0.0
vsd = 0.0
lowlimit = 0.0
uplimit = 0.0
mavg = 0.0
aror = 0.0
adjvol = 0.0
savevol = 0.0
//Find average volume, replacing bad values
adjvol := volume
if (volume != 0)
savevol := volume
else
savevol := savevol[1]
adjvol := savevol
// Replace high volume days because they distort standard deviation
if (adjvol > 2 * factor * nz(vsd[1]))
adjvol := savevol
else
adjvol := adjvol[1]
vavg := sma(adjvol,length)
vsd := stdev(adjvol,length)
vavgn := sma(adjvol,nlow)
// Extreme volume limits
lowlimit := vavg - factor * vsd
uplimit := vavg + 2 * factor * vsd
// System rules based on moving average trend
mavg := sma(close,length/2)
// Only enter on new trend signals
if (options == 2)
if (mavg > mavg[1] and mavg[1] <= mavg[2])
strategy.entry("Long", strategy.long)
if (mavg<mavg[1] and mavg[1]>=mavg[2])
strategy.entry("Short", strategy.short)
else
if (mavg > mavg[1] and vavgn > lowlimit)
strategy.entry("Long", strategy.long)
if (mavg < mavg[1] and vavgn > lowlimit)
strategy.entry("Short", strategy.short)
// Exit on low volume
if (options != 1)
if (mavg<mavg[1] or (strategy.position_size > 0 and vavgn<= lowlimit))
strategy.close("Long")
if (mavg>mavg[1] or (strategy.position_size > 0 and vavgn<= lowlimit))
strategy.close("Short")
else
if (mavg < mavg[1])
strategy.close("Long")
if (mavg > mavg[1])
strategy.close("Short")