এই কৌশলটি ট্রেডিং ভলিউমের চলমান গড় এবং স্ট্যান্ডার্ড ডিভিয়েশন ব্যবহার করে একটি ট্রেডিং ভলিউম মডেল তৈরি করে এবং ভলিউম স্বাভাবিক হলে ট্রেডিং সিগন্যাল তৈরি করতে দামের চলমান গড়ের সাথে প্রবণতা দিক নির্ধারণ করে। এটি ভলিউম অস্বাভাবিক হলে ভুল সংকেত এড়াতে ট্রেডিং ভলিউমের উপরের এবং নীচের সীমাও নির্ধারণ করে।
মূল যুক্তি হল ট্রেডিং ভলিউম মডেল তৈরি করা এবং দামের প্রবণতা বিচার করা।
কৌশলটি ট্রেডিং ভলিউম মডেল এবং মূল্য প্রবণতা একত্রিত করে যখন ভলিউম অস্বাভাবিক হয় তখন মূল্য প্রবণতা অনুসরণ করা এড়াতে, যা কিছু মিথ্যা সংকেত ফিল্টার করতে পারে।
সমাধান:
এই কৌশলটির সামগ্রিক যুক্তি স্পষ্ট, ভলিউম ব্যবহার করে মিথ্যা প্রবণতা অনুসরণ করা এড়ানো এবং এন্ট্রি সংকেতগুলি তুলনামূলকভাবে নির্ভরযোগ্য। তবে কৌশলটি নিজেই সম্প্রসারণের জন্য বড় জায়গা সহ সহজ। আরও সূচক, মেশিন লার্নিং, স্টপ লস এবং অন্যান্য মডিউল যুক্ত করে এটি স্থিতিশীলতা এবং প্রবণতা ধরার ক্ষমতা আরও উন্নত করতে পারে। এটি একটি সাধারণ প্রবণতা পশ্চাদ্ধাবন কৌশল। অপ্টিমাইজেশনের পরে, এটি একটি খুব ব্যবহারিক পরিমাণগত কৌশল হয়ে উঠতে পারে।
/*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")