এই কৌশলটি ষাঁড়ের পতাকা প্যাটার্নের উপর ভিত্তি করে। এটি যখন দাম পতাকার পরিসরের উচ্চতার উপরে ভেঙে যায় তখন এটি কিনে নেয়, পতাকার পরিসরের নীচে স্টপ লস সেট করে এবং ঝুঁকি-প্রতিদান অনুপাত অনুযায়ী মুনাফা লক্ষ্য নির্ধারণ করে। কৌশলটি পতাকার পরিসরের সনাক্তকরণের জন্য সর্বোচ্চ এবং সর্বনিম্ন মূল্য ফাংশন ব্যবহার করে এবং বর্তমান বন্ধের দামের সাথে পূর্ববর্তী মোমবাতির সর্বোচ্চ দামের তুলনা করে ব্রেকআউট নির্ধারণ করে।
এই কৌশলটি ক্লাসিক ষাঁড়ের পতাকা প্যাটার্নের উপর ভিত্তি করে একটি ব্রেকআউট কৌশল, যা পতাকা পরিসীমা এবং মূল্য ব্রেকআউট সনাক্ত করে প্রবণতা অব্যাহত রাখার সুযোগগুলি ক্যাপচার করে। কৌশলটির সুবিধাগুলি স্পষ্ট যুক্তি এবং নিয়ন্ত্রণযোগ্য ঝুঁকি, তবে এটি অস্থির বাজার বা প্রবণতা বিপরীতকরণের ক্ষেত্রে নির্দিষ্ট ঝুঁকিগুলির মুখোমুখি হয়। কৌশলটির দৃust়তা এবং লাভজনকতা বাড়ানোর জন্য সংকেত, গতিশীল পরামিতি, অবস্থান পরিচালনা ইত্যাদির অনুকূলকরণের ক্ষেত্রে উন্নতি করা যেতে পারে।
/*backtest start: 2023-05-22 00:00:00 end: 2024-05-27 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Bull Flag Breakout", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10) // Параметры стратегии riskRewardRatio = 3.0 flagLength = input.int(5, title="Flag Length") stopLossBuffer = input.float(0.01, title="Stop Loss Buffer", step=0.001) // Функция для вычисления стоп-лосса и тейк-профита calcRiskRewardPrice(entryPrice, stopLossPrice, riskRewardRatio) => takeProfitPrice = entryPrice + (entryPrice - stopLossPrice) * riskRewardRatio [stopLossPrice, takeProfitPrice] // Найти минимум и максимум флага flagLow = ta.lowest(low, flagLength) flagHigh = ta.highest(high, flagLength) // Условия для формирования бычьего флага isBullFlag = high[1] < flagHigh and close > high[1] // Условия для входа в сделку if (isBullFlag) entryPrice = close stopLossPrice = flagLow - stopLossBuffer [calculatedStopLoss, calculatedTakeProfit] = calcRiskRewardPrice(entryPrice, stopLossPrice, riskRewardRatio) // Открыть длинную позицию strategy.entry("Bull Flag Long", strategy.long) strategy.exit("Take Profit", "Bull Flag Long", limit=calculatedTakeProfit) strategy.exit("Stop Loss", "Bull Flag Long", stop=calculatedStopLoss) label.new(bar_index, high, "Buy", color=color.green, textcolor=color.white, style=label.style_label_down)