یہ سپر ٹرینڈ اشارے پر مبنی بٹ کوائن کے لئے ایک خودکار مقداری تجارتی حکمت عملی ہے۔ یہ مارکیٹ کے رجحانات کا تعین کرنے کے لئے سپر ٹرینڈ اشارے کا استعمال کرتا ہے اور خطرات کو کنٹرول کرنے کے لئے اے ٹی آر اسٹاپ نقصان کے اصول کو یکجا کرتا ہے ، جس سے طویل اور مختصر تجارت ممکن ہوتی ہے۔ اس حکمت عملی کا سب سے بڑا فائدہ یہ ہے کہ اس کا اچھا رسک انعام تناسب اور قابل اعتماد اسٹاپ نقصان کی حکمت عملی ہے ، جو درمیانی سے طویل مدتی ہولڈنگ کے لئے موزوں ہے۔ یہ حکمت عملی 4 گھنٹے کے ٹائم فریم کا استعمال کرتے ہوئے سکے بیس پرو جیسے مین اسٹریم ایکسچینجز پر لاگو کی جاسکتی ہے۔
یہ حکمت عملی مارکیٹ کے رجحانات کی سمت کا تعین کرنے کے لئے سپر ٹرینڈ اشارے کا استعمال کرتی ہے۔ جب سپر ٹرینڈ اشارے نیچے والے رجحان سے اوپر والے رجحان میں بدل جاتا ہے تو یہ لمبا ہوجاتا ہے ، اور جب سپر ٹرینڈ اشارے اوپر والے رجحان سے نیچے والے رجحان میں بدل جاتا ہے تو مختصر ہوجاتا ہے۔
خاص طور پر ، اس حکمت عملی میں پہلے اے ٹی آر کی مدت کا حساب 14 بار کے طور پر کیا جاتا ہے ، اور ہر تجارت کے لئے اسٹاپ نقصان کا فاصلہ اس کو اے ٹی آر اسٹاپ نقصان ضرب (جیسے 1.5x) سے ضرب کرکے طے کیا جاتا ہے۔ اس کے بعد یہ ڈیفالٹ پیرامیٹرز (اے ٹی آر کی مدت = 9 ، سپر ٹرینڈ ضرب = 2.5) کا استعمال کرتے ہوئے سپر ٹرینڈ اشارے کا حساب لگاتا ہے۔ جب سپر ٹرینڈ اشارے کی سمت بدل جاتی ہے تو تجارتی سگنل تیار کیے جاتے ہیں۔
ایک تجارت میں داخل ہونے کے بعد ، اسٹاپ نقصان اے ٹی آر اسٹاپ نقصان سے اوپر یا نیچے طے ہوتا ہے۔ پہلی منافع لینے کی سطح کا حساب خطرہ-انعام تناسب کی بنیاد پر کیا جاتا ہے ، ڈیفالٹ 0.75 پر ہوتا ہے ، جس کا مطلب ہے کہ منافع لینے کا فاصلہ اسٹاپ نقصان کے فاصلے کا 0.75x ہوتا ہے۔ جب قیمت پہلی منافع لینے کی سطح تک پہنچ جاتی ہے تو ، پوزیشن کا 50٪ بند ہوجائے گا ، اور منافع میں تالا لگانے کے لئے اسٹاپ نقصان کو انٹری قیمت (بریک یہاں تک) میں منتقل کردیا جاتا ہے۔ دوسری منافع لینے کی سطح 0.75 خطرہ-انعام تناسب کا استعمال کرتی ہے۔ اگر قیمت اسٹاپ نقصان کو مار دیتی ہے تو ، باقی پوزیشن اسٹاپ نقصان کے ذریعہ بند ہوجائے گی۔
اس طرح، اس حکمت عملی کو کنٹرول سٹاپ نقصان کا خطرہ یقینی بناتا ہے جبکہ جزوی منافع کے ذریعے منافع کو مقفل کرتا ہے، درمیانے اور طویل مدتی سرمایہ کاری کی حکمت عملی کے لئے موزوں.
اس حکمت عملی کا سب سے بڑا فائدہ یہ ہے کہ اس میں درمیانے اور طویل مدتی انعامات کی اجازت دی گئی ہے۔ مخصوص فوائد میں شامل ہیں:
مارکیٹ کے رجحانات کا تعین کرنے، مارکیٹ شور کو فلٹر کرنے اور اہم رجحانات کو پکڑنے کے لئے SuperTrend کا استعمال کرتے ہوئے.
سٹاپ نقصان کی متحرک اے ٹی آر ٹریکنگ، ایک تجارت کے نقصان کو قابل اعتماد طریقے سے کنٹرول کرنا.
منافع میں جزوی طور پر فائدہ اٹھانا، جس کے نتیجے میں اعلی خطرہ انعام کا تناسب.
TP1 کو نشانہ بنانے کے بعد اسٹاپ نقصان کو انٹری قیمت پر منتقل کرنا منافع میں تالا لگاتا ہے اور حکمت عملی کے استحکام کو بڑھا دیتا ہے۔
انتہائی سادہ منطق، سمجھنے اور لاگو کرنے کے لئے آسان، بڑے پیرامیٹر ٹیوننگ کی جگہ کے ساتھ.
دن کے اندر یا اعلی تعدد کے اعداد و شمار کا استعمال کرتے ہوئے اہم تبادلے پر لاگو، اعلی لچک.
اس حکمت عملی میں کچھ خطرات بھی شامل ہیں، بنیادی طور پر مندرجہ ذیل شعبوں میں:
گیپ رسک اسٹاپ نقصان کو متحرک کرنے میں ناکام ، بڑے نقصان کا سامنا کرنا پڑتا ہے۔ خطرے کو کم کرنے کے لئے اے ٹی آر اسٹاپ نقصان ضرب کو بہتر بنا سکتے ہیں۔
سپر ٹرینڈ صحیح رجحان کا تعین کرنے میں ناکام رہتا ہے، جس کے نتیجے میں غلط تجارتی سگنل ہوتے ہیں۔ پیرامیٹرز کو بہتر بنا سکتا ہے۔
منافع تناسب بہت زیادہ لے لو، رجحان کی سواری کرنے کے قابل نہیں. مختلف مارکیٹوں کی بنیاد پر ایڈجسٹ کرنا چاہئے.
تجارت کی تعدد بہت زیادہ یا بہت کم ہوسکتی ہے۔ سپر ٹرینڈ پیرامیٹرز کو ایڈجسٹ کرکے زیادہ سے زیادہ توازن تلاش کرنا چاہئے۔
اس حکمت عملی کو بہتر بنانے کے لئے ابھی بھی کافی گنجائش موجود ہے ، بنیادی طور پر مندرجہ ذیل شعبوں میں:
مختلف ATR سٹاپ نقصان کے طریقوں کی جانچ کریں جیسے فکسڈ ATR، رفتار سٹاپ، بولنگر سٹاپ نقصان وغیرہ.
بہترین پیرامیٹرز کے لئے واچ فارورڈ یا جینیاتی الگورتھم کا استعمال کرتے ہوئے سپر ٹرینڈ پیرامیٹرز کو بہتر بنائیں۔
سٹاپ نقصان کی ایک دوسری پرت شامل کرنا جیسے ڈونچیان چینلز کو روکنے کے لئے زیادہ قابل اعتماد بنانا.
بہترین منافع لینے کے مقابلے میں خطرے کے توازن کے لئے مختلف منافع لینے کے تناسب کی جانچ کریں۔ اسے متحرک بنائیں۔
متحرک سٹاپ نقصان، پوزیشن ایڈجسٹمنٹ وغیرہ کے لئے مشین سیکھنے کی تکنیکوں کی تلاش کریں.
یہ رجحان ، اے ٹی آر متحرک اسٹاپ اور جزوی منافع لینے کے لئے سپر ٹرینڈ پر مبنی مقداری حکمت عملی ہے۔ اس میں متوازن رسک-انعام تناسب ہے ، جو الگو ٹریڈنگ کے لئے موزوں ہے۔ پیرامیٹرز ، اسٹاپ نقصان ، منافع لینے وغیرہ کو بہتر بنانے کے لئے کافی گنجائش ہے۔ یہ طویل مدتی ٹیوننگ اور درخواست کے قابل ہے۔
/*backtest start: 2024-01-06 00:00:00 end: 2024-02-05 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/ // Developed by © StrategiesForEveryone //@version=5 strategy("SuperTrend Strategy for BTCUSD 4H", overlay=true, process_orders_on_close = true, initial_capital = 100, default_qty_type = strategy.cash, precision = 2, slippage = 50, commission_value = 0.03, backtest_fill_limits_assumption = 50) // ------ Date filter (obtained from ZenAndTheArtOfTrading) --------- initial_date = input(title="Initial date", defval=timestamp("10 Feb 2014 13:30 +0000"), group="Time filter", tooltip="Enter the start date and time of the strategy") final_date = input(title="Final date", defval=timestamp("01 Jan 2030 19:30 +0000"), group="Time filter", tooltip="Enter the end date and time of the strategy") dateFilter(int st, int et) => time >= st and time <= et colorDate = input.bool(defval=false, title="Date background", tooltip = "Add color to the period of time of the strategy tester") bgcolor(colorDate and dateFilter(initial_date, final_date) ? color.new(color.blue, transp=90) : na) // ------------ Super Trend ---------- atrPeriod = input(9, "ATR Length SuperTrend") factor = input.float(2.5, "Factor SuperTrend", step = 0.05) [supertrend, direction] = ta.supertrend(factor, atrPeriod) show_supertrend = input.bool(defval = false, title="Show supertrend ?", group = "Appearance") bodyMiddle = plot(show_supertrend ? ((open + close) / 2) : na, display=display.none) upTrend = plot(show_supertrend and direction < 0 ? supertrend : na, "Up Trend", color = color.green, style=plot.style_linebr) downTrend = plot(show_supertrend and direction > 0 ? supertrend : na, "Down Trend", color = color.red, style=plot.style_linebr) fill(bodyMiddle, upTrend, color.new(color.green, 90), fillgaps=false) fill(bodyMiddle, downTrend, color.new(color.red, 90), fillgaps=false) // ---------- Atr stop loss (obtained from garethyeo) source_atr = input(close, title='Source', group = "Atr stop loss", inline = "A") length_atr = input.int(14, minval=1, title='Period', group = "Atr stop loss" , inline = "A") multiplier = input.float(1.5, minval=0.1, step=0.1, title='Atr multiplier', group = "Atr stop loss", inline = "A", tooltip = "Defines the stop loss distance based on the Atr stop loss indicator") shortStopLoss = source_atr + ta.atr(length_atr) * multiplier longStopLoss = source_atr - ta.atr(length_atr) * multiplier show_atr_stoploss = input.bool(defval=false, title="Show Atr stop loss ?", group = "Appearance") plot(show_atr_stoploss ? longStopLoss : na, color=color.white, style = plot.style_circles) plot(show_atr_stoploss ? shortStopLoss : na, color=color.white, style = plot.style_circles) // ------------- Money management -------------- strategy_contracts = strategy.equity / close distance_sl_atr_long = -1 * (longStopLoss - close) / close distance_sl_atr_short = (shortStopLoss - close) / close risk = input.float(2.5, '% Account risk per trade', step=1, group = "Risk management for trades", tooltip = "Percentage of total account to risk per trade") long_amount = strategy_contracts * (risk / 100) / distance_sl_atr_long short_amount = strategy_contracts * (risk / 100) / distance_sl_atr_short // ---------- Risk management --------------- risk_reward_breakeven_long= input.float(title="Risk/reward for breakeven long", defval=0.75, step=0.05, group = "Risk management for trades") risk_reward_take_profit_long= input.float(title="Risk/reward for take profit long", defval=0.75, step=0.05, group = "Risk management for trades") risk_reward_breakeven_short= input.float(title="Risk/reward for break even short", defval=0.75, step=0.05, group = "Risk management for trades") risk_reward_take_profit_short= input.float(title="Risk/reward for take profit short", defval=0.75, step=0.05, group = "Risk management for trades") tp_percent=input.float(title="% of trade for first take profit", defval=50, step=5, group = "Risk management for trades", tooltip = "Closing percentage of the current position when the first take profit is reached.") // ------------ Trade conditions --------------- bought = strategy.position_size > 0 sold = strategy.position_size < 0 long_supertrend=ta.crossover(close, supertrend) short_supertrend=ta.crossunder(close, supertrend) var float sl_long = na var float sl_short = na var float be_long = na var float be_short = na var float tp_long = na var float tp_short = na if not bought sl_long:=na if not sold sl_short:=na // ---------- Strategy ----------- // Long position if not bought and long_supertrend sl_long:=longStopLoss long_stoploss_distance = close - longStopLoss be_long := close + long_stoploss_distance * risk_reward_breakeven_long tp_long:=close+(long_stoploss_distance*risk_reward_take_profit_long) strategy.entry('L', strategy.long, long_amount, alert_message = "Long") strategy.exit("Tp", "L", stop=sl_long, limit=tp_long, qty_percent=tp_percent) strategy.exit('Exit', 'L', stop=sl_long) if high > be_long sl_long := strategy.position_avg_price strategy.exit("Tp", "L", stop=sl_long, limit=tp_long, qty_percent=tp_percent) strategy.exit('Exit', 'L', stop=sl_long) if bought and short_supertrend strategy.close("L", comment="CL") // Short position if not sold and short_supertrend sl_short:=shortStopLoss short_stoploss_distance=shortStopLoss - close be_short:=((short_stoploss_distance*risk_reward_breakeven_short)-close)*-1 tp_short:=((short_stoploss_distance*risk_reward_take_profit_short)-close)*-1 strategy.entry("S", strategy.short, short_amount, alert_message = "Short") strategy.exit("Tp", "S", stop=sl_short, limit=tp_short, qty_percent=tp_percent) strategy.exit("Exit", "S", stop=sl_short) if low < be_short sl_short:=strategy.position_avg_price strategy.exit("Tp", "S", stop=sl_short, limit=tp_short, qty_percent=tp_percent) strategy.exit("Exit", "S", stop=sl_short) if sold and long_supertrend strategy.close("S", comment="CS") // ---------- Draw position on chart ------------- if high>tp_long tp_long:=na if low<tp_short tp_short:=na if high>be_long be_long:=na if low<be_short be_short:=na show_position_on_chart = input.bool(defval=true, title="Draw position on chart ?", group = "Appearance", tooltip = "Activate to graphically display profit, stop loss and break even") position_price = plot(show_position_on_chart? strategy.position_avg_price : na, style=plot.style_linebr, color = color.new(#ffffff, 10), linewidth = 1) sl_long_price = plot(show_position_on_chart and bought ? sl_long : na, style = plot.style_linebr, color = color.new(color.red, 10), linewidth = 1) sl_short_price = plot(show_position_on_chart and sold ? sl_short : na, style = plot.style_linebr, color = color.new(color.red, 10), linewidth = 1) tp_long_price = plot(strategy.position_size>0 and show_position_on_chart? tp_long : na, style = plot.style_linebr, color = color.new(#11eb47, 10), linewidth = 1) tp_short_price = plot(strategy.position_size<0 and show_position_on_chart? tp_short : na, style = plot.style_linebr, color = color.new(#11eb47, 10), linewidth = 1) breakeven_long = plot(strategy.position_size>0 and high<be_long and show_position_on_chart ? be_long : na , style = plot.style_linebr, color = color.new(#00ff40, 60), linewidth = 1) breakeven_short = plot(strategy.position_size<0 and low>be_short and show_position_on_chart ? be_short : na , style = plot.style_linebr, color = color.new(#00ff40, 60), linewidth = 1) position_profit_long = plot(bought and show_position_on_chart and strategy.openprofit>0 ? close : na, style = plot.style_linebr, color = color.new(#4cd350, 10), linewidth = 1) position_profit_short = plot(sold and show_position_on_chart and strategy.openprofit>0 ? close : na, style = plot.style_linebr, color = color.new(#4cd350, 10), linewidth = 1) fill(plot1 = position_price, plot2 = position_profit_long, color = color.new(color.green,90)) fill(plot1 = position_price, plot2 = position_profit_short, color = color.new(color.green,90)) fill(plot1 = position_price, plot2 = sl_long_price, color = color.new(color.red,90)) fill(plot1 = position_price, plot2 = sl_short_price, color = color.new(color.red,90)) fill(plot1 = position_price, plot2 = tp_long_price, color = color.new(color.green,90)) fill(plot1 = position_price, plot2 = tp_short_price, color = color.new(color.green,90))