
শক-ব্রেকিং কৌশল হল এমন একটি কৌশল যা মূল্যে শক-ব্রেকিংয়ের ফর্ম ব্যবহার করে ক্রয়-বিক্রয় পরিচালনা করে যখন দামগুলি সমালোচনামূলক সমর্থন বা প্রতিরোধের পয়েন্টগুলি ভেঙে দেয়। এই কৌশলটি একাধিক প্রযুক্তিগত সূচককে সংযুক্ত করে যা মূল ব্যবসায়ের সুযোগগুলি সনাক্ত করে।
এই কৌশলটি মূলত চারটি প্রযুক্তিগত সূচকের উপর ভিত্তি করে তৈরি করা হয়েছে, যার মধ্যে রয়েছে ব্রিনের মধ্যবর্তী রেখা, ৪৮ দিনের সরল চলমান গড় (এসএমএ), এমএসিডি এবং এডিএক্স।
৪৮ দিনের এসএমএ অতিক্রম করার সময় বা অতিক্রম করার সময় ট্রেডিং সুযোগ বিবেচনা করুন;
যখন ক্লোজ-অফ প্রাইসটি বুলিনের মধ্যবর্তী রেখাকে অতিক্রম করে, তখন এটি একটি প্রবেশের সংকেত হিসাবে কাজ করে;
ট্রেন্ডের দিকনির্দেশনা নির্ধারণের জন্য সহায়ক সূচক হিসেবে MACD 0 এর চেয়ে বড় বা এর চেয়ে ছোট;
ADX 25 এর চেয়ে বড় হওয়া উচিত, যাতে অ-প্রবণতা ফিল্টার করা যায়।
এই চারটি শর্ত পূরণ হলে, অতিরিক্ত কাজ করুন বা খালি করুন।
এটি একটি কৌশল যা প্রবণতা এবং অস্থিরতার সূচকগুলিকে একত্রিত করে। এর প্রধান সুবিধা হলঃ
৪৮ দিনের এসএমএ-তে অতিরিক্ত ঘন ঘন লেনদেন ফিল্টার করা হয়, যা মধ্য ও দীর্ঘ লাইন ট্রেন্ডকে লক করে দেয়।
বুলিন ব্যান্ডের মধ্যরেখার ব্রেকআউটগুলি মূল সমর্থনকারী প্রতিরোধের ব্রেকআউটগুলি ধরে রাখে, যার একটি শক্তিশালী ক্ষতি-থামানোর বৈশিষ্ট্য রয়েছে;
MACD ট্রেডিংয়ের ক্ষেত্রে বিপরীতমুখী ট্রেডিং এড়াতে বড় ট্রেডিংয়ের দিকনির্দেশনা দেয়।
এডিএক্স অপ্রচলিত বাজারগুলিকে ফিল্টার করে এবং কৌশলগত সাফল্যের হার বাড়ায়।
সামগ্রিকভাবে, এই কৌশলটি ট্রেডিং ফ্রিকোয়েন্সি নিয়ন্ত্রণ, গুরুত্বপূর্ণ পয়েন্টগুলি ধরে রাখা, প্রবণতা নির্ধারণ এবং অকার্যকর পরিস্থিতিগুলি ফিল্টার করার মতো অনেকগুলি ক্ষেত্রে অপ্টিমাইজ করা হয়েছে।
এই কৌশলটি নিম্নলিখিত ঝুঁকির সাথে জড়িতঃ
ব্রিন বন্ডের মাঝের লাইনটি প্রায়শই বাজারের অস্থিরতার সময় ট্রেডিংয়ের সুযোগ সৃষ্টি করে এবং সম্ভবত অতিরিক্ত লেনদেনের কারণ হয়।
এডিএক্স সূচক প্রবণতা এবং অকার্যকরতার বিচার করার ক্ষেত্রেও কিছু ত্রুটি রয়েছে;
প্রত্যাহারের ঝুঁকি অনেক বেশি, এবং কিছু ঝুঁকি সহ্য করার ক্ষমতা আছে এমন বিনিয়োগকারীদের জন্য উপযুক্ত।
এই কৌশলটি নিম্নলিখিত দিকগুলি থেকে আরও উন্নত করা যেতে পারেঃ
এটিআর সূচক বৃদ্ধি, স্টপ লস সেট, একক স্টপ লস কমানো;
বুলিন বেন্ডের প্যারামিটার অপ্টিমাইজ করুন, মধ্যম লাইনটি কম ঘন ঘন ট্রিগার করুন;
ট্রেডিং ভলিউম বা প্রবণতা শক্তির সূচক বৃদ্ধি প্রবণতা শক্তিশালী এবং দুর্বলতা বিপরীত হওয়া এড়াতে।
সামগ্রিকভাবে বলা যায়, এই ঝড়ের বিপর্যয়ের কৌশলটি সামগ্রিকভাবে পরিপক্ক এবং ঝড়ের পরিস্থিতিতে গুরুত্বপূর্ণ লেনদেনের পয়েন্টগুলিকে কার্যকরভাবে ধরে রাখে। এটি প্রবণতা এবং ঝড়ের সূচকগুলির সাথে মিলিত হয়, ঝুঁকি এবং উপার্জনের মধ্যে ভারসাম্য বজায় রাখে। আরও অপ্টিমাইজেশনের মাধ্যমে, আরও স্থিতিশীল অতিরিক্ত উপার্জন আশা করা যায়।
/*backtest
start: 2023-12-11 00:00:00
end: 2023-12-12 00:00:00
period: 10m
basePeriod: 1m
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/
// © 03.freeman
//Volatility Traders Minds Strategy (VTM Strategy)
//I found this startegy on internet, with a video explaingin how it works.
//Conditions for entry:
//1 - Candles must to be above or bellow the 48 MA (Yellow line)
//2 - Candles must to break the middle of bollinger bands
//3 - Macd must to be above or bellow zero level;
//4 - ADX must to be above 25 level
//@version=4
strategy("Volatility Traders Minds Strategy (VTM Strategy)", shorttitle="VTM",overlay=true)
source = input(close)
//MA
ma48 = sma(source,48)
//MACD
fastLength = input(12)
slowlength = input(26)
MACDLength = input(9)
MACD = ema(source, fastLength) - ema(source, slowlength)
aMACD = ema(MACD, MACDLength)
delta = MACD - aMACD
//BB
length = input(20, minval=1)
mult = input(2.0, minval=0.001, maxval=50)
basis = sma(source, length)
dev = mult * stdev(source, length)
upper = basis + dev
lower = basis - dev
//ADX
adxThreshold = input(title="ADX Threshold", type=input.integer, defval=25, minval=1)
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
dirmov(len) =>
up = change(high)
down = -change(low)
plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
truerange = rma(tr, len)
plus = fixnan(100 * rma(plusDM, len) / truerange)
minus = fixnan(100 * rma(minusDM, len) / truerange)
[plus, minus]
adx(dilen, adxlen) =>
[plus, minus] = dirmov(dilen)
sum = plus + minus
adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
sig = adx(dilen, adxlen)
// Strategy: (Thanks to JayRogers)
// === STRATEGY RELATED INPUTS ===
//tradeInvert = input(defval = false, title = "Invert Trade Direction?")
// the risk management inputs
inpTakeProfit = input(defval = 0, title = "Take Profit Points", minval = 0)
inpStopLoss = input(defval = 0, title = "Stop Loss Points", minval = 0)
inpTrailStop = input(defval = 0, title = "Trailing Stop Loss Points", minval = 0)
inpTrailOffset = input(defval = 0, title = "Trailing Stop Loss Offset Points", minval = 0)
// === RISK MANAGEMENT VALUE PREP ===
// if an input is less than 1, assuming not wanted so we assign 'na' value to disable it.
useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na
useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na
useTrailStop = inpTrailStop >= 1 ? inpTrailStop : na
useTrailOffset = inpTrailOffset >= 1 ? inpTrailOffset : na
// === STRATEGY - LONG POSITION EXECUTION ===
enterLong() => close>ma48 and close>basis and delta>0 and sig>adxThreshold // functions can be used to wrap up and work out complex conditions
//exitLong() => jaw>teeth or jaw>lips or teeth>lips
strategy.entry(id = "Buy", long = true, when = enterLong() ) // use function or simple condition to decide when to get in
//strategy.close(id = "Buy", when = exitLong() ) // ...and when to get out
// === STRATEGY - SHORT POSITION EXECUTION ===
enterShort() => close<ma48 and close<basis and delta<0 and sig>adxThreshold
//exitShort() => jaw<teeth or jaw<lips or teeth<lips
strategy.entry(id = "Sell", long = false, when = enterShort())
//strategy.close(id = "Sell", when = exitShort() )
// === STRATEGY RISK MANAGEMENT EXECUTION ===
// finally, make use of all the earlier values we got prepped
strategy.exit("Exit Buy", from_entry = "Buy", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)
strategy.exit("Exit Sell", from_entry = "Sell", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)
// === Backtesting Dates === thanks to Trost
testPeriodSwitch = input(false, "Custom Backtesting Dates")
testStartYear = input(2020, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testStartHour = input(0, "Backtest Start Hour")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,testStartHour,0)
testStopYear = input(2020, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testStopHour = input(23, "Backtest Stop Hour")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,testStopHour,0)
testPeriod() =>
time >= testPeriodStart and time <= testPeriodStop ? true : false
isPeriod = testPeriodSwitch == true ? testPeriod() : true
// === /END
if not isPeriod
strategy.cancel_all()
strategy.close_all()