
এই কৌশলটি মূল্য এবং চলমান গড়ের সাথে ক্রস করার উপর ভিত্তি করে ক্রয় এবং বিক্রয় সংকেত উত্পন্ন করে। এটি একাধিক ধরণের চলমান গড় সরবরাহ করে এবং মিথ্যা ব্রেকআপগুলি ফিল্টার করার জন্য একটি পারমিট প্যারামিটার সরবরাহ করে। এই কৌশলটি মূল্যের প্রবণতার বিপরীত দিকগুলি ক্যাপচার করার জন্য এবং প্রবণতা অনুসরণ করার জন্য ডিজাইন করা হয়েছে।
এই কৌশলটি দামের ক্লোজিং মূল্যের উপর ভিত্তি করে, N দৈর্ঘ্যের একটি চলমান গড় গণনা করে। সাধারণ চলমান গড়ের ধরনগুলির মধ্যে রয়েছে সহজ চলমান গড় (SMA), সূচকীয় চলমান গড় (EMA), ভারসাম্যযুক্ত চলমান গড় (WMA) ইত্যাদি। তারপরে একটি বৈষম্য স্তর সেট করুন, যেমন 5%, এবং এটি উপরের ট্র্যাকিংয়ের জন্য (চলমান গড়ের 1.05 গুণ) এবং নীচের ট্র্যাকিংয়ের জন্য (চলমান গড়ের 0.95 গুণ) গণনা করুন। যখন দামের ক্লোজিংয়ের উপরে দামটি ট্র্যাকিংয়ের উপরে থাকে, তখন একটি কেনা সংকেত উত্পন্ন হয়; যখন দামের ক্লোজিংয়ের নীচে ট্র্যাকিংয়ের নীচে থাকে, তখন একটি বিক্রয় সংকেত উত্পন্ন হয়। এইভাবে, একটি বুল প্যারামিটার সংক্ষিপ্ত লাইন অপারেশনাল অফার করা হয়।
এই কৌশলটি সামগ্রিকভাবে একটি প্রচলিত প্রবণতা অনুসরণকারী কৌশল। এটি প্রবণতা নির্ধারণের জন্য দাম এবং চলমান গড়ের সাথে সম্পর্ক ব্যবহার করে এবং কিছু নমনীয়তা সরবরাহ করে। প্যারামিটার অপ্টিমাইজেশন এবং যথাযথ সংকেত ফিল্টারিংয়ের মাধ্যমে এটি একটি কার্যকর পরিমাণে কার্যকর কৌশল হতে পারে।
/*backtest
start: 2023-12-26 00:00:00
end: 2024-01-25 00:00:00
period: 1h
basePeriod: 15m
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/
// © RafaelPiccolo
//@version=4
strategy("Price X MA Cross", overlay=true)
typ = input("HMA", "MA Type", options=["SMA", "EMA", "WMA", "HMA", "VWMA", "RMA", "TEMA"])
len = input(100, minval=1, title="Length")
src = input(close, "Source", type=input.source)
tol = input(0, minval=0, title="Tolerance (%)", type=input.float)
shortOnly = input(false, "Short only")
tema(src, len)=>
ema1 = ema(src, len)
ema2 = ema(ema1, len)
ema3 = ema(ema2, len)
return = 3 * (ema1 - ema2) + ema3
getMAPoint(type, len, src)=>
return = type == "SMA" ? sma(src, len) : type == "EMA" ? ema(src, len) : type == "WMA" ? wma(src, len) : type == "HMA" ? hma(src, len) : type == "VWMA" ? vwma(src, len) : type == "RMA" ? rma(src, len) : tema(src, len)
ma = getMAPoint(typ, len, src)
upperTol = ma * (1 + tol/100)
lowerTol = ma * (1 - tol/100)
longCondition = crossover(close, upperTol)
shortCondition = crossunder(close, lowerTol)
if (shortCondition)
strategy.entry("Short", strategy.short)
if (longCondition)
if (shortOnly)
strategy.close("Short")
else
strategy.entry("Long", strategy.long)
plot(ma, "Moving Average", close > ma ? color.green : color.red, linewidth = 2)
t1 = plot(tol > 0 ? upperTol : na, transp = 70)
t2 = plot(tol > 0 ? lowerTol : na, transp = 70)
fill(t1, t2, color = tol > 0 ? color.blue : na)