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


تخلیق کی تاریخ: 2023-12-19 11:20:15 آخر میں ترمیم کریں: 2023-12-19 11:20:15
کاپی: 0 کلکس کی تعداد: 607
1
پر توجہ دیں
1621
پیروکار

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

جائزہ

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

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

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

طاقت کا تجزیہ

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

خطرے کا تجزیہ

جب اسٹاپ قیمت میں بڑی ایڈجسٹمنٹ ہوتی ہے تو ، اسٹاپ نقصان کو مارنے کے امکانات بڑھ جاتے ہیں۔ اس کے علاوہ ، روبوٹ ٹریڈنگ کو سرور کے حادثے ، نیٹ ورک کی خرابی اور دیگر تکنیکی خطرات کا بھی سامنا کرنا پڑتا ہے۔

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

اصلاح کی سمت

اس حکمت عملی کو مندرجہ ذیل پہلوؤں میں بہتر بنایا جاسکتا ہے:

  1. غلط سگنل سے بچنے کے لئے انٹری سگنل کو فلٹر کرنے کے لئے اشارے یا شرائط شامل کریں۔ مثال کے طور پر ، MACD اشارے شامل کیے جاسکتے ہیں۔

  2. ATR پیرامیٹرز کے مختلف مجموعوں کی جانچ کی جا سکتی ہے تاکہ بہترین پیرامیٹرز کو تلاش کیا جا سکے۔

  3. اسٹاپ لاسٹ ٹریکنگ کی حد کو بہتر بنانے اور بہترین توازن کا پتہ لگانے کے لئے۔

  4. اس کے علاوہ، آپ کو زیادہ سے زیادہ سٹاپ نقصان کی قیمتوں میں اضافہ کر سکتے ہیں.

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

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2023-11-18 00:00:00
end: 2023-12-18 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/
// © arminomid1375
//@version=5
strategy('Mizar_BOT_super trend', overlay=true, default_qty_value=100, currency=currency.USD, default_qty_type=strategy.percent_of_equity, initial_capital=100, max_bars_back=4000)


//===== INPUTS ==========================================================================//

factor = input.float(4.5, title='ATR Factor', step=0.1,group = 'ATR')
period = input.int(59, minval=1, maxval=100, title='ATR Period',group = 'ATR')
up = (high + low) / 2 - factor * ta.atr(period)
down = (high + low) / 2 + factor * ta.atr(period)
trend_up = 0.0
trend_up := close[1] > trend_up[1] ? math.max(up, trend_up[1]) : up
trend_down = 0.0
trend_down := close[1] < trend_down[1] ? math.min(down, trend_down[1]) : down
trend = 0.0
trend := close > trend_down[1] ? 1 : close < trend_up[1] ? -1 : nz(trend[1], 1)
tsl = trend == 1 ? trend_up : trend_down
line_color = trend == 1 ? 'green' : 'red'
long_signal = trend == 1 and trend[1] == -1
short_signal = trend == -1 and trend[1] == 1
background = true


//ss =  input.float(defval=15.0, minval=0.0, title=' stop loss %',group = 'stop loss')
use_sl = input(title='trailing stop ?', defval=true,group = 'stop loss')
initial_sl_pct = input.float(defval=15.0, minval=0.0, title='trailing stop %',group = 'stop loss')

Tpactive1 = input(title='Take profit1 On/Off ?', defval=true, group='take profit')
tp1percent = input.float(5.0, title='TP1 %', group='take profit') *100
tp1amt = input.int(10, title='TP1 Amount %', group='take profit')
Tpactive2 = input(title='Take profit2 On/Off ?', defval=true, group='take profit')
tp2percent = input.float(10, title='TP2 %', group='take profit') *100
tp2amt = input.int(15, title='TP2 Amount %', group='take profit')
Tpactive3 = input(title='Take profit3 On/Off ?', defval=true, group='take profit')
tp3percent = input.float(15, title='TP3 %', group='take profit')*100
tp3amt = input.int(20, title='TP3 Amount %', group='take profit')

//===== TIMEFRAME ==========================================================================//

from_month = input.int(defval=1, title='From Month', minval=1, maxval=12)
from_day = input.int(defval=1, title='From Day', minval=1, maxval=31)
from_year = input.int(defval=2019, title='From Year', minval=2017)
to_month = input.int(defval=1, title='To Month', minval=1, maxval=12)
to_day = input.int(defval=1, title='To Day', minval=1, maxval=31)
to_year = input.int(defval=9999, title='To Year', minval=2017)
start = timestamp(from_year, from_month, from_day, 00, 00)

finish = timestamp(to_year, to_month, to_day, 23, 59)
window() =>
    time >= start and time <= finish ? true : false

//===== PLOTS ==========================================================================//

// Line
line_plot = plot(tsl, color=trend == 1 ? color.green : color.red, linewidth=2, title='Trend Line')
// Labels
plotshape(long_signal and window() ? up : na, title='Buy', text='Buy', location=location.absolute, style=shape.labelup, size=size.normal, color=color.new(color.green, 0), textcolor=color.new(color.white, 0))
plotshape(short_signal and window() ? down : na, title='Sell', text='Sell', location=location.absolute, style=shape.labeldown, size=size.normal, color=color.new(color.red, 0), textcolor=color.new(color.white, 0))
// Circles
plotshape(long_signal and window() ? up : na, title='Uptrend starts', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.green, 0))
plotshape(short_signal and window() ? down : na, title='Downtrend starts', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.red, 0))
// Background
long_fill = background ? trend == 1 ? color.green : na : na
short_fill = background ? trend == -1 ? color.red : na : na
candle_plot = plot(ohlc4, title='Price Line', color=trend == 1 ? long_fill : short_fill, linewidth=2, transp=90)
fill(candle_plot, line_plot, title='Long Background', color=long_fill, transp=90)
fill(candle_plot, line_plot, title='Short Background', color=short_fill, transp=90)

//===== GLOBAL ==========================================================================//

var entry_price = 0.0
var updated_entry_price = 0.0
var sl_price = 0.0

longString = "Input your custom alert message here.\nAnd put {{strategy.order.alert_message}} in the message box."
longclose = "Input your custom alert message here.\nAnd put {{strategy.order.alert_message}} in the message box."
shortString = "Input your custom alert message here.\nAnd put {{strategy.order.alert_message}} in the message box."
shortclose = "Input your custom alert message here.\nAnd put {{strategy.order.alert_message}} in the message box."


longAlertMessage = input(title="Long Alert Message", defval="long", group="Alert Messages", tooltip=longString)
longcloseAlertMessage = input(title="Long close Alert Message", defval="long", group="Alert Messages", tooltip=longclose)
shortAlertMessage = input(title="Short Alert Message", defval="short", group="Alert Messages", tooltip=shortString)
shortcloseAlertMessage = input(title="Short close Alert Message", defval="short", group="Alert Messages", tooltip=shortclose)


has_open_trade() =>
    strategy.position_size != 0
has_no_open_trade() =>
    strategy.position_size == 0

is_long() =>
    strategy.position_size > 0 ? true : false
is_short() =>
    strategy.position_size < 0 ? true : false

plot(use_sl ? has_no_open_trade() ? close : sl_price : na, color=has_no_open_trade() ? na : color.blue, title='Stop Loss')

strategy_close() =>
    if is_long()
        strategy.close('Long')
        alert(longcloseAlertMessage)
    if is_short()
        strategy.close('Short')
        alert(shortcloseAlertMessage)

    
    
strategy_long() =>
    strategy.entry('Long', strategy.long)    

    

strategy_short() =>
    strategy.entry('Short', strategy.short)

sl_pct = initial_sl_pct
if long_signal or is_long() and not(short_signal or is_short())
    sl_pct := initial_sl_pct * -1
    sl_pct

//===== STRATEGY ==========================================================================//


crossed_sl = false
if is_long() and use_sl
    crossed_sl := close <= sl_price
    crossed_sl
if is_short() and use_sl
    crossed_sl := close >= sl_price
    crossed_sl

terminate_operation = window() and has_open_trade() and crossed_sl

if terminate_operation and not(long_signal or short_signal)  // Do not close position if trend is flipping anyways.
    entry_price := 0.0
    updated_entry_price := entry_price
    sl_price := 0.0
    strategy_close()



start_operation = window() and (long_signal or short_signal)

if start_operation
    entry_price := close
    updated_entry_price := entry_price
    sl_price := entry_price + entry_price * sl_pct / 100
    if long_signal
        strategy_long()
        if Tpactive1==true
            strategy.exit('TPL1','Long', qty_percent=tp1amt,profit =tp1percent)

        alert(shortcloseAlertMessage)
        alert(longAlertMessage)
    

    if short_signal
        strategy_short()
        if Tpactive1==true
            strategy.exit('TPL1','Short', qty_percent=tp1amt,profit =tp1percent)

        alert(longcloseAlertMessage)
        alert(shortAlertMessage)


//===== TRAILING ==========================================================================//

if is_long() and use_sl
    strategy_pct = (close - updated_entry_price) / updated_entry_price * 100.00
    if strategy_pct > 1
        sl_pct += strategy_pct - 1.0
        new_sl_price = updated_entry_price + updated_entry_price * sl_pct / 100
        sl_price := math.max(sl_price, new_sl_price)
        updated_entry_price := sl_price
        updated_entry_price
        

if is_short() and use_sl
    strategy_pct = (close - updated_entry_price) / updated_entry_price * 100.00
    if strategy_pct < -1
        sl_pct += strategy_pct + 1.0
        new_sl_price = updated_entry_price + updated_entry_price * sl_pct / 100
        sl_price := math.min(sl_price, new_sl_price)
        updated_entry_price := sl_price
        updated_entry_price