سپر ٹرینڈ ٹریکنگ سٹاپ نقصان کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-12-19 11:20:15
ٹیگز:

img

جائزہ

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

حکمت عملی منطق

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

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

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

خطرے کا تجزیہ

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

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

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

ذیل میں کچھ ایسی سمتیں ہیں جن میں اس حکمت عملی کو بہتر بنایا جاسکتا ہے:

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

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

  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
        




مزید