بٹ کوائن کے لئے سپر ٹرینڈ مقداری تجارتی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2024-02-06 12:09:09
ٹیگز:

img

جائزہ

یہ سپر ٹرینڈ اشارے پر مبنی بٹ کوائن کے لئے ایک خودکار مقداری تجارتی حکمت عملی ہے۔ یہ مارکیٹ کے رجحانات کا تعین کرنے کے لئے سپر ٹرینڈ اشارے کا استعمال کرتا ہے اور خطرات کو کنٹرول کرنے کے لئے اے ٹی آر اسٹاپ نقصان کے اصول کو یکجا کرتا ہے ، جس سے طویل اور مختصر تجارت ممکن ہوتی ہے۔ اس حکمت عملی کا سب سے بڑا فائدہ یہ ہے کہ اس کا اچھا رسک انعام تناسب اور قابل اعتماد اسٹاپ نقصان کی حکمت عملی ہے ، جو درمیانی سے طویل مدتی ہولڈنگ کے لئے موزوں ہے۔ یہ حکمت عملی 4 گھنٹے کے ٹائم فریم کا استعمال کرتے ہوئے سکے بیس پرو جیسے مین اسٹریم ایکسچینجز پر لاگو کی جاسکتی ہے۔

حکمت عملی کا اصول

یہ حکمت عملی مارکیٹ کے رجحانات کی سمت کا تعین کرنے کے لئے سپر ٹرینڈ اشارے کا استعمال کرتی ہے۔ جب سپر ٹرینڈ اشارے نیچے والے رجحان سے اوپر والے رجحان میں بدل جاتا ہے تو یہ لمبا ہوجاتا ہے ، اور جب سپر ٹرینڈ اشارے اوپر والے رجحان سے نیچے والے رجحان میں بدل جاتا ہے تو مختصر ہوجاتا ہے۔

خاص طور پر ، اس حکمت عملی میں پہلے اے ٹی آر کی مدت کا حساب 14 بار کے طور پر کیا جاتا ہے ، اور ہر تجارت کے لئے اسٹاپ نقصان کا فاصلہ اس کو اے ٹی آر اسٹاپ نقصان ضرب (جیسے 1.5x) سے ضرب کرکے طے کیا جاتا ہے۔ اس کے بعد یہ ڈیفالٹ پیرامیٹرز (اے ٹی آر کی مدت = 9 ، سپر ٹرینڈ ضرب = 2.5) کا استعمال کرتے ہوئے سپر ٹرینڈ اشارے کا حساب لگاتا ہے۔ جب سپر ٹرینڈ اشارے کی سمت بدل جاتی ہے تو تجارتی سگنل تیار کیے جاتے ہیں۔

ایک تجارت میں داخل ہونے کے بعد ، اسٹاپ نقصان اے ٹی آر اسٹاپ نقصان سے اوپر یا نیچے طے ہوتا ہے۔ پہلی منافع لینے کی سطح کا حساب خطرہ-انعام تناسب کی بنیاد پر کیا جاتا ہے ، ڈیفالٹ 0.75 پر ہوتا ہے ، جس کا مطلب ہے کہ منافع لینے کا فاصلہ اسٹاپ نقصان کے فاصلے کا 0.75x ہوتا ہے۔ جب قیمت پہلی منافع لینے کی سطح تک پہنچ جاتی ہے تو ، پوزیشن کا 50٪ بند ہوجائے گا ، اور منافع میں تالا لگانے کے لئے اسٹاپ نقصان کو انٹری قیمت (بریک یہاں تک) میں منتقل کردیا جاتا ہے۔ دوسری منافع لینے کی سطح 0.75 خطرہ-انعام تناسب کا استعمال کرتی ہے۔ اگر قیمت اسٹاپ نقصان کو مار دیتی ہے تو ، باقی پوزیشن اسٹاپ نقصان کے ذریعہ بند ہوجائے گی۔

اس طرح، اس حکمت عملی کو کنٹرول سٹاپ نقصان کا خطرہ یقینی بناتا ہے جبکہ جزوی منافع کے ذریعے منافع کو مقفل کرتا ہے، درمیانے اور طویل مدتی سرمایہ کاری کی حکمت عملی کے لئے موزوں.

فوائد کا تجزیہ

اس حکمت عملی کا سب سے بڑا فائدہ یہ ہے کہ اس میں درمیانے اور طویل مدتی انعامات کی اجازت دی گئی ہے۔ مخصوص فوائد میں شامل ہیں:

  1. مارکیٹ کے رجحانات کا تعین کرنے، مارکیٹ شور کو فلٹر کرنے اور اہم رجحانات کو پکڑنے کے لئے SuperTrend کا استعمال کرتے ہوئے.

  2. سٹاپ نقصان کی متحرک اے ٹی آر ٹریکنگ، ایک تجارت کے نقصان کو قابل اعتماد طریقے سے کنٹرول کرنا.

  3. منافع میں جزوی طور پر فائدہ اٹھانا، جس کے نتیجے میں اعلی خطرہ انعام کا تناسب.

  4. TP1 کو نشانہ بنانے کے بعد اسٹاپ نقصان کو انٹری قیمت پر منتقل کرنا منافع میں تالا لگاتا ہے اور حکمت عملی کے استحکام کو بڑھا دیتا ہے۔

  5. انتہائی سادہ منطق، سمجھنے اور لاگو کرنے کے لئے آسان، بڑے پیرامیٹر ٹیوننگ کی جگہ کے ساتھ.

  6. دن کے اندر یا اعلی تعدد کے اعداد و شمار کا استعمال کرتے ہوئے اہم تبادلے پر لاگو، اعلی لچک.

خطرے کا تجزیہ

اس حکمت عملی میں کچھ خطرات بھی شامل ہیں، بنیادی طور پر مندرجہ ذیل شعبوں میں:

  1. گیپ رسک اسٹاپ نقصان کو متحرک کرنے میں ناکام ، بڑے نقصان کا سامنا کرنا پڑتا ہے۔ خطرے کو کم کرنے کے لئے اے ٹی آر اسٹاپ نقصان ضرب کو بہتر بنا سکتے ہیں۔

  2. سپر ٹرینڈ صحیح رجحان کا تعین کرنے میں ناکام رہتا ہے، جس کے نتیجے میں غلط تجارتی سگنل ہوتے ہیں۔ پیرامیٹرز کو بہتر بنا سکتا ہے۔

  3. منافع تناسب بہت زیادہ لے لو، رجحان کی سواری کرنے کے قابل نہیں. مختلف مارکیٹوں کی بنیاد پر ایڈجسٹ کرنا چاہئے.

  4. تجارت کی تعدد بہت زیادہ یا بہت کم ہوسکتی ہے۔ سپر ٹرینڈ پیرامیٹرز کو ایڈجسٹ کرکے زیادہ سے زیادہ توازن تلاش کرنا چاہئے۔

اصلاح کی ہدایات

اس حکمت عملی کو بہتر بنانے کے لئے ابھی بھی کافی گنجائش موجود ہے ، بنیادی طور پر مندرجہ ذیل شعبوں میں:

  1. مختلف ATR سٹاپ نقصان کے طریقوں کی جانچ کریں جیسے فکسڈ ATR، رفتار سٹاپ، بولنگر سٹاپ نقصان وغیرہ.

  2. بہترین پیرامیٹرز کے لئے واچ فارورڈ یا جینیاتی الگورتھم کا استعمال کرتے ہوئے سپر ٹرینڈ پیرامیٹرز کو بہتر بنائیں۔

  3. سٹاپ نقصان کی ایک دوسری پرت شامل کرنا جیسے ڈونچیان چینلز کو روکنے کے لئے زیادہ قابل اعتماد بنانا.

  4. بہترین منافع لینے کے مقابلے میں خطرے کے توازن کے لئے مختلف منافع لینے کے تناسب کی جانچ کریں۔ اسے متحرک بنائیں۔

  5. متحرک سٹاپ نقصان، پوزیشن ایڈجسٹمنٹ وغیرہ کے لئے مشین سیکھنے کی تکنیکوں کی تلاش کریں.

نتیجہ

یہ رجحان ، اے ٹی آر متحرک اسٹاپ اور جزوی منافع لینے کے لئے سپر ٹرینڈ پر مبنی مقداری حکمت عملی ہے۔ اس میں متوازن رسک-انعام تناسب ہے ، جو الگو ٹریڈنگ کے لئے موزوں ہے۔ پیرامیٹرز ، اسٹاپ نقصان ، منافع لینے وغیرہ کو بہتر بنانے کے لئے کافی گنجائش ہے۔ یہ طویل مدتی ٹیوننگ اور درخواست کے قابل ہے۔


/*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))


مزید