এই কৌশলটি বোলিংজার ব্যান্ডের উপর ভিত্তি করে একটি গতির ব্রেকআউট ট্রেডিং সিস্টেম, মূলত মূল্য এবং উপরের বোলিংজার ব্যান্ডের মধ্যে সম্পর্কের মাধ্যমে প্রবণতার সুযোগগুলি ক্যাপচার করে। কৌশলটি একটি অভিযোজিত চলমান গড় টাইপ নির্বাচন প্রক্রিয়া ব্যবহার করে, বাজারের অস্থিরতার বৈশিষ্ট্যগুলি সনাক্ত করতে স্ট্যান্ডার্ড বিচ্যুতি চ্যানেলগুলির সাথে মিলিত, বিশেষত উচ্চ অস্থিরতার বাজারের জন্য উপযুক্ত।
কৌশলটির মূল যুক্তি নিম্নলিখিত মূল উপাদানগুলির উপর ভিত্তি করেঃ
এটি একটি সু-ডিজাইন করা প্রবণতা যা স্পষ্ট যুক্তি সহ কৌশল অনুসরণ করে। এটি বোলিংজার ব্যান্ডগুলির গতিশীল প্রকৃতির মাধ্যমে বাজারের গতি ধরে রাখে এবং ভাল ঝুঁকি নিয়ন্ত্রণ প্রক্রিয়া অন্তর্ভুক্ত করে। কৌশলটি অত্যন্ত কাস্টমাইজযোগ্য এবং প্যারামিটার সমন্বয়ের মাধ্যমে বিভিন্ন বাজারের পরিবেশে অভিযোজিত হতে পারে। লাইভ ট্রেডিং বাস্তবায়নের জন্য, কৌশল উন্নতির জন্য প্রস্তাবিত অপ্টিমাইজেশান দিকগুলি অন্তর্ভুক্ত করার সময় পুঙ্খানুপুঙ্খ প্যারামিটার অপ্টিমাইজেশন এবং ব্যাকটেস্টিং বৈধতা পরিচালনা করার পরামর্শ দেওয়া হয়।
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-11 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Demo GPT - Bollinger Bands", overlay=true, initial_capital=10000, commission_type=strategy.commission.percent, commission_value=0.1, slippage=3, default_qty_type=strategy.percent_of_equity, default_qty_value=100) // Inputs length = input.int(20, minval=1, title="Length") maType = input.string("SMA", "Basis MA Type", options = ["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"]) src = input(close, title="Source") mult = input.float(2.0, minval=0.001, maxval=50, title="StdDev") offset = input.int(0, "Offset", minval=-500, maxval=500) // Date range inputs startYear = input.int(2018, "Start Year", minval=1970, maxval=2100) startMonth = input.int(1, "Start Month", minval=1, maxval=12) startDay = input.int(1, "Start Day", minval=1, maxval=31) endYear = input.int(2069, "End Year", minval=1970, maxval=2100) endMonth = input.int(12, "End Month", minval=1, maxval=12) endDay = input.int(31, "End Day", minval=1, maxval=31) // Time range startTime = timestamp("GMT+0", startYear, startMonth, startDay, 0, 0) endTime = timestamp("GMT+0", endYear, endMonth, endDay, 23, 59) // Moving average function ma(source, length, _type) => switch _type "SMA" => ta.sma(source, length) "EMA" => ta.ema(source, length) "SMMA (RMA)" => ta.rma(source, length) "WMA" => ta.wma(source, length) "VWMA" => ta.vwma(source, length) // Calculate Bollinger Bands basis = ma(src, length, maType) dev = mult * ta.stdev(src, length) upper = basis + dev lower = basis - dev // Plot plot(basis, "Basis", color=#2962FF, offset=offset) p1 = plot(upper, "Upper", color=#F23645, offset=offset) p2 = plot(lower, "Lower", color=#089981, offset=offset) fill(p1, p2, title="Background", color=color.rgb(33, 150, 243, 95)) // Strategy logic: Only go long and flat inDateRange = time >= startTime and time <= endTime noPosition = strategy.position_size == 0 longPosition = strategy.position_size > 0 // Buy if close is above upper band if inDateRange and noPosition and close > upper strategy.entry("Long", strategy.long) // Sell/Exit if close is below lower band if inDateRange and longPosition and close < lower strategy.close("Long")