قیمت کے فرق کی بنیاد پر ٹریلنگ اسٹاپ نقصان کی حکمت عملی


تخلیق کی تاریخ: 2023-11-28 13:53:16 آخر میں ترمیم کریں: 2023-11-28 13:53:16
کاپی: 0 کلکس کی تعداد: 655
1
پر توجہ دیں
1617
پیروکار

قیمت کے فرق کی بنیاد پر ٹریلنگ اسٹاپ نقصان کی حکمت عملی

جائزہ

اس حکمت عملی میں قیمت کے وقفے کا اصول استعمال کیا جاتا ہے ، جس میں کم سے کم حد کو توڑنے پر خریدنا ہوتا ہے ، اور کم سے کم قیمت کو روکنے اور منافع کمانے کے لئے رکنے اور روکنے کے احکامات مرتب کیے جاتے ہیں۔

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

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

  1. N گھنٹوں میں کم سے کم قیمت کو بائنڈنگ قیمت کے طور پر شمار کریں
  2. ریئل ٹائم قیمت بائنڈنگ قیمت کے مقابلے میں کم ہے جب خریدنے کا فیصد مقرر کیا جاتا ہے تو زیادہ اندراج ہوتا ہے
  3. سیٹ اپ سٹاپ ٹکٹ کے طور پر داخلہ کی قیمت ضرب فروخت سیٹ اپ فی صد
  4. سٹاپ نقصان کی شرح سے شروع ہونے والی قیمت کو کم کرنے کے لئے شروع ہونے والی قیمت کو ضرب کرنے کے لئے اسٹاپ نقصان کی شرح مقرر کریں
  5. حکمت عملی کے حقوق اور مفادات کی فیصد
  6. کم از کم قیمتوں میں متحرک سٹاپ نقصان کی لائن کا سراغ لگانا
  7. سٹاپ سٹاپ یا سٹاپ نقصان

حکمت عملی کا تجزیہ

یہ حکمت عملی مندرجہ ذیل فوائد رکھتی ہے:

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

حکمت عملی کے خطرے کا تجزیہ

اس حکمت عملی کے کچھ خطرات بھی ہیں:

  1. خلا میں کامیابی ممکن نہیں، دوبارہ کوشش ممکن
  2. نقصان یا سٹاپ کی غلط سیٹ اپ کی وجہ سے جلد نقصان یا سٹاپ کی زیادہ سے زیادہ نقصان ہو سکتا ہے
  3. مارکیٹ میں تبدیلیوں کے مطابق پیرامیٹرز کو باقاعدگی سے بہتر بنانے کی ضرورت ہے
  4. محدود اقسام کے لئے موزوں، کچھ اقسام کے لئے ممکنہ طور پر غیر مؤثر
  5. کچھ انسانی مداخلت کی ضرورت ہے

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

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

  1. مشین لرننگ الگورتھم کو شامل کریں اور پیرامیٹرز کو خودکار طور پر بہتر بنائیں۔
  2. مزید نقصانات کو روکنے کے طریقوں کو شامل کریں، جیسے کہ منتقل نقصانات، لٹکا ہوا نقصانات وغیرہ.
  3. اسٹاپ نقصان کی روک تھام کی منطق کو بہتر بنانا ، اسمارٹ اور ہموار اسٹاپ نقصان کی روک تھام
  4. سگنل کی وشوسنییتا کا تعین کرنے کے لئے مزید اشارے کے ساتھ ، غلط سگنل کو فلٹر کریں
  5. مزید اقسام کو بڑھانا اور حکمت عملی کی عالمگیریت میں اضافہ کرنا

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2022-11-21 00:00:00
end: 2023-11-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

strategy(title="Squeeze Backtest by Shaqi v1.0", overlay=true, pyramiding=0, currency="USD", process_orders_on_close=true, commission_type=strategy.commission.percent, commission_value=0.075, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=100, backtest_fill_limits_assumption=0)
strategy.risk.allow_entry_in(strategy.direction.long)

R0 = "6 Hours"
R1 = "12 Hours"
R2 = "24 Hours"
R3 = "48 Hours"
R4 = "1 Week"
R5 = "2 Weeks"
R6 = "1 Month"
R7 = "Maximum"


buyPercent = input( title="Buy, %",         type=input.float,   defval=3,       minval=0.01,                        step=0.01,  inline="Percents",  group="Squeeze Settings") * 0.01
sellPercent = input(title="Sell, %",        type=input.float,   defval=1,       minval=0.01,                        step=0.01,  inline="Percents",  group="Squeeze Settings") * 0.01
stopPercent = input(title="Stop Loss, %",   type=input.float,   defval=1,       minval=0.01,        maxval=100,     step=0.01,  inline="Percents",  group="Squeeze Settings") * 0.01
isMaxBars = input(  title="Max Bars To Sell",               type=input.bool,    defval=true ,                                   inline="MaxBars",   group="Squeeze Settings")
maxBars = input(    title="",       type=input.integer, defval=2,     minval=0,           maxval=1000, step=1,                  inline="MaxBars",   group="Squeeze Settings")
bind = input(       title="Bind",           type=input.source,  defval=close,                                                                       group="Squeeze Settings")
isRange = input(    title="Fixed Range",               type=input.bool,    defval=true,                                         inline="Range",     group="Backtesting Period")
rangeStart = input( title="",                       defval=R4,      options=[R0, R1, R2, R3, R4, R5, R6, R7],                   inline="Range",     group="Backtesting Period")
periodStart = input(title="Backtesting Start", type=input.time,    defval=timestamp("01 Aug 2021 00:00 +0000"),                                     group="Backtesting Period")
periodEnd = input(  title="Backtesting End",   type=input.time,    defval=timestamp("01 Aug 2022 00:00 +0000"),                                     group="Backtesting Period")

int startDate = na
int endDate = na
if isRange
    if rangeStart == R0
        startDate := timenow - 21600000
        endDate := timenow
    else if rangeStart == R1
        startDate := timenow - 43200000
        endDate := timenow
    else if rangeStart == R2
        startDate := timenow - 86400000
        endDate := timenow
    else if rangeStart == R3
        startDate := timenow - 172800000
        endDate := timenow
    else if rangeStart == R4
        startDate := timenow - 604800000
        endDate := timenow
    else if rangeStart == R5
        startDate := timenow - 1209600000
        endDate := timenow
    else if rangeStart == R6
        startDate := timenow - 2592000000
        endDate := timenow
    else if rangeStart == R7
        startDate := time
        endDate := timenow
else 
    startDate := periodStart
    endDate := periodEnd

afterStartDate = (time >= startDate)
beforeEndDate = (time <= endDate)
notInTrade = strategy.position_size == 0
inTrade = strategy.position_size > 0

barsFromEntry = barssince(strategy.position_size[0] > strategy.position_size[1])
entry = strategy.position_size[0] > strategy.position_size[1]
entryBar = barsFromEntry == 0
notEntryBar = barsFromEntry != 0
buyLimitPrice = bind - bind * buyPercent
buyLimitFilled = low <= buyLimitPrice
sellLimitPriceEntry = buyLimitPrice * (1 + sellPercent)
sellLimitPrice = strategy.position_avg_price * (1 + sellPercent)

stopLimitPriceEntry = buyLimitPrice - buyLimitPrice * stopPercent
stopLimitPrice = strategy.position_avg_price - strategy.position_avg_price * stopPercent

if afterStartDate and beforeEndDate and notInTrade
    strategy.entry("BUY", true, limit = buyLimitPrice)
    strategy.exit("INSTANT", limit = sellLimitPriceEntry, stop = stopLimitPriceEntry)
strategy.cancel("INSTANT", when = inTrade)
if isMaxBars
    strategy.close("BUY", when = barsFromEntry >= maxBars, comment = "Don't Sell")
strategy.exit("SELL", limit = sellLimitPrice, stop = stopLimitPrice)

showStop = stopPercent <= 0.03

plot(showStop ? stopLimitPrice : na, title="Stop Loss Limit Order", style=plot.style_linebr, color=color.red, linewidth=1)
plot(sellLimitPrice, title="Take Profit Limit Order", style=plot.style_linebr, color=color.purple, linewidth=1)
plot(strategy.position_avg_price, title="Buy Order Filled Price", style=plot.style_linebr, color=color.blue, linewidth=1)
plot(buyLimitPrice, title="Trailing Buy Limit Order", style=plot.style_stepline, color=color.new(color.blue, 30), offset=1)