یہ سپر ٹرینڈ اشارے پر مبنی ایک رجحان کی پیروی کرنے والی حکمت عملی ہے ، جس میں ایک موافقت پذیر ٹریلنگ اسٹاپ نقصان میکانزم شامل ہے۔ یہ حکمت عملی بنیادی طور پر مارکیٹ کے رجحان کی سمت کی نشاندہی کرنے کے لئے سپر ٹرینڈ اشارے کا استعمال کرتی ہے اور خطرے کو سنبھالنے اور باہر نکلنے کے وقت کو بہتر بنانے کے لئے متحرک طور پر ایڈجسٹ ٹرینڈنگ اسٹاپس کو ملازمت دیتی ہے۔ یہ فیصد پر مبنی ، اے ٹی آر پر مبنی ، اور فکسڈ پوائنٹ اسٹاپس سمیت متعدد اسٹاپ نقصان کے طریقوں کی حمایت کرتی ہے ، جس سے مارکیٹ کے مختلف حالات کے مطابق لچکدار ایڈجسٹمنٹ کی اجازت ملتی ہے۔
حکمت عملی کا بنیادی منطق مندرجہ ذیل اہم عناصر پر مبنی ہے:
یہ ایک اچھی طرح سے ڈیزائن کیا گیا رجحان ہے جس میں قابو پانے والا خطرہ ہے۔ لچکدار اسٹاپ نقصان کے طریقہ کار کے ساتھ سپر ٹرینڈ اشارے کو جوڑ کر ، حکمت عملی خطرہ کو مؤثر طریقے سے کنٹرول کرتے ہوئے اعلی منافع کو برقرار رکھ سکتی ہے۔ حکمت عملی انتہائی ترتیب دینے کے قابل اور مختلف مارکیٹ ماحول میں استعمال کے لئے موزوں ہے ، لیکن اس میں پیرامیٹر کی مکمل اصلاح اور بیک ٹیسٹنگ کی تصدیق کی ضرورت ہے۔ مستقبل میں بہتری کو مزید تکنیکی تجزیہ کے اوزار اور خطرے کے کنٹرول کے اقدامات کو شامل کرکے کیا جاسکتا ہے تاکہ حکمت عملی کے استحکام اور منافع کو مزید بڑھا سکے۔
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-18 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=6 strategy("Supertrend Strategy with Adjustable Trailing Stop [Bips]", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=15) // Inputs atrPeriod = input(10, "ATR Länge", "Average True Range „wahre durchschnittliche Schwankungsbreite“ und stammt aus der technischen Analyse. Die ATR misst die Volatilität eines Instruments oder eines Marktes. Mit ihr kann die Wahrscheinlichkeit für einen Trendwechsel bestimmt werden.", group="Supertrend Settings") factor = input.float(3.0, "Faktor", step=0.1, group="Supertrend Settings") tradeDirection = input.string("Long", "Trade Direction", options=["Both", "Long", "Short"], group="Supertrend Settings") sl_type = input.string("%", "SL Type", options=["%", "ATR", "Absolute"]) // Parameter für ST nur für einstieg -> Beim Ausstieg fragen ob der bool WWert true ist -> Für weniger und längere Trädes sl_perc = input.float(4.0, "% SL", group="Stop Loss Einstellung") atr_length = input.int(10, "ATR Length", group="Stop Loss Einstellung") atr_mult = input.float(2.0, "ATR Mult", group="Stop Loss Einstellung") sl_absol = input.float(10.0, "Absolute SL", group="Stop Loss Einstellung") //-------------------------// // BACKTESTING RANGE fromDay = input.int(defval=1, title="From Day", minval=1, maxval=31, group="Backtesting Einstellung") fromMonth = input.int(defval=1, title="From Month", minval=1, maxval=12, group="Backtesting Einstellung") fromYear = input.int(defval=2016, title="From Year", minval=1970, group="Backtesting Einstellung") toDay = input.int(defval=1, title="To Day", minval=1, maxval=31, group="Backtesting Einstellung") toMonth = input.int(defval=1, title="To Month", minval=1, maxval=12, group="Backtesting Einstellung") toYear = input.int(defval=2100, title="To Year", minval=1970, group="Backtesting Einstellung") startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00) finishDate = timestamp(toYear, toMonth, toDay, 00, 00) time_cond = time >= startDate and time <= finishDate //-------------------------// // Supertrend calculation [_, direction] = ta.supertrend(factor, atrPeriod) // SL values sl_val = sl_type == "ATR" ? atr_mult * ta.atr(atr_length) : sl_type == "Absolute" ? sl_absol : close * sl_perc / 100 // Init Variables var pos = 0 var float trailing_sl = 0.0 // Signals long_signal = nz(pos[1]) != 1 and high > nz(trailing_sl[1]) short_signal = nz(pos[1]) != -1 and low < nz(trailing_sl[1]) // Calculate SL trailing_sl := short_signal ? high + sl_val : long_signal ? low - sl_val : nz(pos[1]) == 1 ? math.max(low - sl_val, nz(trailing_sl[1])) : nz(pos[1]) == -1 ? math.min(high + sl_val, nz(trailing_sl[1])) : nz(trailing_sl[1]) // Position var pos := long_signal ? 1 : short_signal ? -1 : nz(pos[1]) // Entry logic if ta.change(direction) < 0 and time_cond if tradeDirection == "Both" or tradeDirection == "Long" strategy.entry("Long", strategy.long, stop=trailing_sl) else strategy.close_all("Stop Short") if ta.change(direction) > 0 and time_cond if tradeDirection == "Both" or tradeDirection == "Short" strategy.entry("Short", strategy.short, stop=trailing_sl) else strategy.close_all("Stop Long") // Exit logic: Trailing Stop and Supertrend //if strategy.position_size > 0 and not na(trailing_sl) //strategy.exit("SL-Exit Long", from_entry="Long", stop=trailing_sl) //if strategy.position_size < 0 and not na(trailing_sl) //strategy.exit("SL-Exit Short", from_entry="Short", stop=trailing_sl) // Trailing Stop visualization plot(trailing_sl, linewidth = 2, color = pos == 1 ? color.green : color.red) //plot(not na(trailing_sl) ? trailing_sl : na, color=pos == 1 ? color.green : color.red, linewidth=2, title="Trailing Stop")