
এই কৌশলটি VWAP এবং EMA এর উপর ভিত্তি করে ট্রেন্ডের দিকনির্দেশের জন্য ব্যবহৃত হয়, যেখানে VWAP প্রচলিত মূল্যের প্রতিনিধিত্ব করে এবং EMA200 মধ্য-দীর্ঘ প্রবণতার প্রতিনিধিত্ব করে। VWAP এবং EMA200 এর উপরে দাম যখন বেশি হয় এবং VWAP এবং EMA200 এর নীচে শূন্য হয়, তখন এটি একটি প্রচলিত প্রবণতা অনুসরণ করার কৌশল।
কৌশলটির মূল যুক্তি হল VWAP এবং EMA ব্যবহার করে মূল্য প্রবণতা নির্ধারণ করা।
সুতরাং, এই কৌশলটি প্রথমে বিচার করে যে দামটি একই সাথে ভিডাব্লুএপি এবং ইএমএ 200 এর চেয়ে বেশি কিনা, যদি তা হয় তবে আরও বেশি করুন; যদি দামটি একই সাথে ভিডাব্লুএপি এবং ইএমএ 200 এর চেয়ে কম হয় তবে খালি করুন। দেখা যায় যে এই কৌশলটি মূলত ভিডাব্লুএপি এবং ইএমএর উপর নির্ভর করে ক্রয়-বিক্রয় সিদ্ধান্তের বিচার করে।
এছাড়াও, কৌশলটি একটি স্টপ-অফ-লস পয়েন্টও সেট করে। এটি একটি স্টপ-অফ-লস হিসাবে প্রবেশের দামের 3.5% এবং স্টপ-অফ-লস হিসাবে 1.4% এবং একটি স্টপ-অফ-লস হিসাবে প্রবেশের দামের 2.5% এবং স্টপ-অফ-লস হিসাবে 0.9% সেট করে। এটি অত্যধিক ক্ষতি এড়াতে পারে।
এই কৌশলটির সবচেয়ে বড় সুবিধা হল যে VWAP এবং EMA ব্যবহার করে প্রবণতা নির্ণয় করা খুবই নির্ভরযোগ্য।
সুতরাং, VWAP এবং EMA ব্যবহার করে ট্রেন্ড নির্ধারণের নির্ভরযোগ্যতা খুব বেশি। যখন উভয়ই ট্রেন্ড নির্ধারণের সাথে সামঞ্জস্যপূর্ণ হয়, তখন অপারেশন করার সাফল্যের হার খুব বেশি।
এছাড়া, স্টপ-অফ-স্টপ পয়েন্ট সেট করলে, একক ক্ষতির পরিমাণ বেশি হওয়া এড়ানো যায়।
এই কৌশলটির প্রধান ঝুঁকি হল VWAP এবং EMA-র ভুল সংকেত প্রেরণ।
এছাড়াও, স্টপ লস সেটিংটি ভুল হতে পারে এবং একক ক্ষতির ঝুঁকি এখনও রয়েছে।
উপরের সমস্যাগুলি সমাধান করার জন্য, আমরা VWAP এবং EMA এর প্যারামিটার সেটিংগুলিকে অপ্টিমাইজ করতে পারি যাতে তারা নতুন প্রবণতার সূচনাকে আরও ভালভাবে সনাক্ত করতে পারে।
এই কৌশলটি মূলত নিম্নলিখিত দিকগুলি থেকে অপ্টিমাইজ করা যেতে পারেঃ
সামগ্রিকভাবে এই কৌশলটি একটি খুব নির্ভরযোগ্য প্রবণতা অনুসরণকারী কৌশল। এটি ভিডাব্লুএপি এবং ইএমএ ব্যবহার করে প্রবণতার দিকনির্দেশের জন্য, চিন্তাভাবনাটি পরিষ্কার এবং সহজ, যখন উভয়ই সম্মতিযুক্ত সংকেত দেয় তখন প্রবেশের সাফল্যের সম্ভাবনা রয়েছে। যুক্তিসঙ্গতভাবে স্টপ লস সেট করে ঝুঁকি নিয়ন্ত্রণ করা যায়। আমরা এখনও বিভিন্ন উপায়ে (প্যারামিটার অপ্টিমাইজেশন, সূচক বৃদ্ধি, স্টপ লস অভিযোজন, পজিশন ম্যানেজমেন্ট ইত্যাদি) এই কৌশলটি আরও উন্নত করতে পারি যাতে এটি আরও ভাল পারফরম্যান্স করতে পারে।
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//26m Binance BTCUSDTPERP
//@version=4
strategy("VWAP Trend Follower", initial_capital=100, overlay=true, commission_type=strategy.commission.percent, commission_value=0.04, default_qty_type = strategy.percent_of_equity, default_qty_value = 90, currency = currency.USD )
/// INITIALISE STRATEGY ///
price=close[1]
vprice=vwap(price)
trend=ema(price, 200)
/// RISK MANAGEMENT ///
long_tp_inp = input(3.5, title='Long Take Profit %',step=0.1)/100
long_sl_inp = input(1.4, title='Long Stop Loss %',step=0.1)/100
short_tp_inp = input(2.5, title='Short Take Profit %',step=0.1)/100
short_sl_inp = input(0.9, title='Short Stop Loss %',step=0.1)/100
long_take_level = strategy.position_avg_price * (1 + long_tp_inp)
long_stop_level = strategy.position_avg_price * (1 - long_sl_inp)
short_take_level = strategy.position_avg_price * (1 - short_tp_inp)
short_stop_level = strategy.position_avg_price * (1 + short_sl_inp)
//long_trailing = input(5, title='Trailing Stop Long',step=0.1) / 100
//short_trailing = input(5, title='Trailing Stop short',step=0.1) / 100
/// STRATEGY CONDITIONS ///
aLong= price > trend and price > vprice
entry_long = aLong and aLong[2] and aLong[1]
aShort= price < trend and price < vprice
entry_short = aShort and aShort[2] and aShort[1]
//exit_long =
//exit_short =
//entry_price_long=valuewhen(entry_long,close,0)
//entry_price_short=valuewhen(entry_short,close,0)
/// PLOTTING ///
plot(vprice, color=#5875E1, linewidth=2)
plot(trend, color=#D965E1, linewidth=1)
plotshape(series=aLong, color=#71E181,style=shape.labelup)
plotshape(series=aShort, color=#E18BA5,style=shape.labeldown)
//plot(long_take_level, color=#00E676, linewidth=2)
//plot(long_stop_level, color=#FF5252, linewidth=1)
//plot(short_take_level, color=#4CAF50, linewidth=2)
//plot(short_stop_level, color=#FF5252, linewidth=1)
/// PERIOD ///
testStartYear = input(2019, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testStopYear = input(2020, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)
testPeriod() => true
//// STRATEGY EXECUTION ////
if testPeriod()
if strategy.position_size == 0 or strategy.position_size > 0
strategy.entry(id="Long", long=true, when=entry_long, comment="Long")
strategy.exit("Take Profit/ Stop Loss","Long", limit=long_take_level, stop=long_stop_level,comment="Exit Long")//,trail_points=entry_price_long * long_trailing / syminfo.mintick, trail_offset=entry_price_long * long_trailing / syminfo.mintick)
// strategy.close(id="Long", when=exit_long, comment = "Exit Long")
if strategy.position_size == 0 or strategy.position_size < 0
strategy.entry(id="Short", long=false, when=entry_short, comment = "Short")
strategy.exit("Take Profit/ Stop Loss","Short", limit=short_take_level , stop=short_stop_level,comment = "Exit Short")//, trail_points=entry_price_short * short_trailing / syminfo.mintick, trail_offset=entry_price_short * short_trailing / syminfo.mintick)
// strategy.close(id="Short", when=exit_short, comment = "Exit Short")