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


تخلیق کی تاریخ: 2023-09-19 22:14:24 آخر میں ترمیم کریں: 2023-09-19 22:14:24
کاپی: 0 کلکس کی تعداد: 729
1
پر توجہ دیں
1617
پیروکار

جائزہ

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

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

  1. RSI کی قدر کا حساب لگانے کے لئے 14 دوروں کی لمبائی
  2. RSI کے مطابق اسٹوک RSI اشارے کا حساب لگایا گیا ہے ، اسٹوکاسٹک لمبائی 14 ، ہموار K 3 ، ہموار D 1
  3. جب اسٹوک RSI اوور سیل زون سے اوپری خرید زون میں داخل ہوتا ہے تو ، زیادہ داخل ہوتا ہے
  4. اسٹوک آر ایس آئی اوورلوڈ زون سے اوورلوڈ زون میں گرنے کے بعد ، اسٹاک کو خالی کرنے کے لئے داخل ہوتا ہے
  5. زیادہ سے زیادہ 5 بار پوزیشن میں شامل کرنے کے لئے ڈوپلیکیٹ پوزیشننگ کا استعمال کریں
  6. اسٹاپ نقصان کا تعین کریں اور ہر جمع کرنے کے بعد اسٹاپ نقصان کا سراغ لگائیں
  7. جب اسٹاپ نقصان کا آغاز ہوتا ہے تو کم ہوجاتا ہے
  8. سٹاپ نقصان اور ٹریکنگ سٹاپ نقصان کے مطابق پوزیشن کا انتظام کریں

طاقت کا تجزیہ

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

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

خطرے کا تجزیہ

اس حکمت عملی کے کچھ خطرات بھی ہیں جن کے بارے میں آگاہ ہونا ضروری ہے:

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

اصلاح کی سمت

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

  1. RSI پیرامیٹرز کو بہتر بنائیں اور بہترین لمبائی تلاش کریں۔
  2. اسٹوک پیرامیٹرز کو بہتر بنائیں ، بہترین K ، D دورانیہ کا مجموعہ تلاش کریں۔
  3. غلط تجارت سے بچنے کے لئے دیگر اشارے فلٹر سگنل شامل کریں.
  4. متحرک طور پر پوزیشنوں کی تعداد کو ایڈجسٹ کریں ، مارکیٹ کے مطابق پوزیشنوں کی گہرائی کو ایڈجسٹ کریں۔
  5. اسٹاپ نقصان کی شرح کو کم کرنے کے لئے اسٹاپ نقصان کی ترتیب کی منطق کو بہتر بنائیں
  6. پیسے کے انتظام کے اصولوں کے مطابق پوزیشنوں کو کنٹرول کرنے کے لئے پوزیشن مینجمنٹ ماڈیول شامل کریں۔
  7. فیس کنٹرول ماڈیول میں شامل ہوں ، جو زیادہ سے زیادہ ٹرانزیکشن فریکوئنسی کو کنٹرول کرے گا۔

خلاصہ کریں۔

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

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

// This script was created for educational purposes only.
// © mcristianrios

// FEEL FREE TO DROP A COMMENT AND A LIKE IF YOU USE IT OR IT SERVES YOU WELL

//@version=4
//strategy(title="Pyramiding Strategy To Study [mcristianrios]", commission_type=strategy.commission.cash_per_contract, commission_value=0.0002, overlay=true, default_qty_value=1000, initial_capital=100, calc_on_order_fills=false, currency="USD", overlay=true, pyramiding=5)
// study(title="Pyramiding Strategy To Study [mcristianrios]", overlay=true)

int pyramiding            = input(1,  'Pyramiding', minval=1, maxval=5)
int slPips                = input(80, 'SL Pips')
int ttPips                = input(60, 'Trail Trig')
int trailOffset           = input(60, 'Trail Offset')

// === PYRAMIDING DECLARATION === {
var int   longPyramiding  = 0
var int   shortPyramiding = 0

// To save init of operation price
var float close1          = na
var float close2          = na
var float close3          = na
var float close4          = na
var float close5          = na

// How far did the Trailing Stop Get?
var float far1            = na
var float far2            = na
var float far3            = na
var float far4            = na
var float far5            = na
// }

// === STOCHASTIC RSI === {
smoothK                   = input(3, minval=1)
smoothD                   = input(1, minval=1)
lengthRSI                 = input(14, minval=1)
lengthStoch               = input(14, minval=1)
src                       = input(close, title="RSI Source")

rsi1                      = rsi(src, lengthRSI)
k                         = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d                         = sma(k, smoothD)
// }

// === SOME CONDITION TO TAKE A POSITION === {
goLong  = k[1] < 80 and k >= 80 and longPyramiding  < pyramiding
goShort = k[1] > 20 and k <= 20 and shortPyramiding < pyramiding
// }

// === PYRAMIDING SIMULATION === {
var string lastOperation = ''
if (goLong  and lastOperation != 'LONG') or (goShort and lastOperation != 'SHORT')
    // RESET
    longPyramiding           := 0
    shortPyramiding          := 0
    far1                     := na
    far2                     := na
    far3                     := na
    far4                     := na
    far5                     := na
    close1                   := na
    close2                   := na
    close3                   := na
    close4                   := na
    close5                   := na

// === SUM ONE INTO 'LONG' OR 'SHORT' PYRAMIDING AND REMEMBER LAST OPERATION TYPE === {
isCallOrShort = if goLong and longPyramiding < pyramiding
    lastOperation := 'LONG'
    longPyramiding := longPyramiding + 1

    true
else
    isShort = if goShort and shortPyramiding < pyramiding
        lastOperation := 'SHORT'
        shortPyramiding := shortPyramiding + 1

        true
    else
        false

    isShort
// }

// === SAVE CURRENT PRICE === {
if isCallOrShort
    if na(close1)
        close1 := close
    else
        if na(close2)
            close2 := close
        else
            if na(close3)
                close3 := close
            else
                if na(close4)
                    close4 := close
                else
                    if na(close5)
                        close5 := close
// }

if longPyramiding > 0
    // If Trail Stop was not triggered and distance is achieved saved it
    if na(far1) and high > close1 + syminfo.mintick * 10 * ttPips
        far1 := high
    if na(far2) and high > close2 + syminfo.mintick * 10 * ttPips
        far2 := high
    if na(far3) and high > close3 + syminfo.mintick * 10 * ttPips
        far3 := high
    if na(far4) and high > close4 + syminfo.mintick * 10 * ttPips
        far4 := high
    if na(far5) and high > close5 + syminfo.mintick * 10 * ttPips
        far5 := high
    
    // Update how far our position went
    if not na(far1) and high > far1
        far1 := high
    if not na(far2) and high > far2
        far2 := high
    if not na(far3) and high > far3
        far3 := high
    if not na(far4) and high > far4
        far4 := high
    if not na(far5) and high > far5
        far5 := high
        
    /// === SL not na(trailing stop) ? Use Trailing Stop : Use Default Stop Loss === {
    if not na(close1) and (not na(far1) ? low <= far1 - syminfo.mintick * 10 * trailOffset : low <= close1 - syminfo.mintick * 10 * slPips)
        longPyramiding := longPyramiding - 1
        close1         := na
        far1           := na
    if not na(close2) and (not na(far2) ? low <= far2 - syminfo.mintick * 10 * trailOffset : low <= close2 - syminfo.mintick * 10 * slPips)
        longPyramiding := longPyramiding - 1
        close2         := na
        far2           := na
    if not na(close3) and (not na(far3) ? low <= far3 - syminfo.mintick * 10 * trailOffset : low <= close3 - syminfo.mintick * 10 * slPips)
        longPyramiding := longPyramiding - 1
        close3         := na
        far3           := na
    if not na(close4) and (not na(far4) ? low <= far4 - syminfo.mintick * 10 * trailOffset : low <= close4 - syminfo.mintick * 10 * slPips)
        longPyramiding := longPyramiding - 1
        close4         := na
        far4           := na
    if not na(close5) and (not na(far5) ? low <= far5 - syminfo.mintick * 10 * trailOffset : low <= close5 - syminfo.mintick * 10 * slPips)
        longPyramiding := longPyramiding - 1
        close5         := na
        far5           := na
    // }

// Log when long pyramiding changed
if longPyramiding[1] != longPyramiding[2]
    label.new(bar_index, high, tostring(longPyramiding[1]), xloc.bar_index, yloc.price, size = size.normal, color=color.blue, textcolor=color.white)

if shortPyramiding > 0
    // If Trail Stop was not triggered and distance is achieved saved it
    if na(far1) and low < close1 - syminfo.mintick * 10 * ttPips
        far1 := low
    if na(far2) and low < close2 - syminfo.mintick * 10 * ttPips
        far2 := low
    if na(far3) and low < close3 - syminfo.mintick * 10 * ttPips
        far3 := low
    if na(far4) and low < close4 - syminfo.mintick * 10 * ttPips
        far4 := low
    if na(far5) and low < close5 - syminfo.mintick * 10 * ttPips
        far5 := low
    
    // Update how far our position went
    if not na(far1) and low < far1
        far1 := low
    if not na(far2) and low < far2
        far2 := low
    if not na(far3) and low < far3
        far3 := low
    if not na(far4) and low < far4
        far4 := low
    if not na(far5) and low < far5
        far5 := low
        
    /// === SL not na(trailing stop) ? Use Trailing Stop : Use Default Stop Loss === {
    if not na(close1) and (not na(far1) ? high >= far1 + syminfo.mintick * 10 * trailOffset : high >= close1 + syminfo.mintick * 10 * slPips)
        shortPyramiding := shortPyramiding - 1
        close1          := na
        far1            := na
    if not na(close2) and (not na(far2) ? high >= far2 + syminfo.mintick * 10 * trailOffset : high >= close2 + syminfo.mintick * 10 * slPips)
        shortPyramiding := shortPyramiding - 1
        close2          := na
        far2            := na
    if not na(close3) and (not na(far3) ? high >= far3 + syminfo.mintick * 10 * trailOffset : high >= close3 + syminfo.mintick * 10 * slPips)
        shortPyramiding := shortPyramiding - 1
        close3          := na
        far3            := na
    if not na(close4) and (not na(far4) ? high >= far4 + syminfo.mintick * 10 * trailOffset : high >= close4 + syminfo.mintick * 10 * slPips)
        shortPyramiding := shortPyramiding - 1
        close4          := na
        far4            := na
    if not na(close5) and (not na(far5) ? high >= far5 + syminfo.mintick * 10 * trailOffset : high >= close5 + syminfo.mintick * 10 * slPips)
        shortPyramiding := shortPyramiding - 1
        close5          := na
        far5            := na
    // }

// Log when long pyramiding changed
if shortPyramiding[1] != shortPyramiding[2]
    label.new(bar_index, high + syminfo.mintick * 10 * 22, tostring(shortPyramiding[1]), xloc.bar_index, yloc.price, size = size.normal, color=color.red, textcolor=color.white)
// }

// === COMMENT IF STUDY === {
strategy.entry("Long",  strategy.long,  when = goLong  and longPyramiding  <= pyramiding)
strategy.entry("Short", strategy.short, when = goShort and shortPyramiding <= pyramiding)

strategy.exit("Exit Long",  "Long",  loss=slPips * 10, trail_points=ttPips * 10, trail_offset=trailOffset * 10)
strategy.exit("Exit Short", "Short", loss=slPips * 10, trail_points=ttPips * 10, trail_offset=trailOffset * 10)
// }

// === UNCOMMENT IF STUDY === {
// plot(ttPips,      title='TrailTrig',   color=na, display=display.none)
// plot(trailOffset, title='TrailOffset', color=na, display=display.none)
// plot(slPips,      title='LossPips',    color=na, display=display.none)

// string longTradeId     = 'tradeid=long{{ticker}}_PYRAMIDING_[MCRISTIANRIOS]'
// string shortTradeId    = 'tradeid=short{{ticker}}_PYRAMIDING_[MCRISTIANRIOS]'
// string basicTrade      = 'tradesymbol={{ticker}} sl={{plot("LossPips")}} trailtrig={{plot("TrailTrig")}} traildist={{plot("TrailOffset")}}'

// alertcondition(goLong  and longPyramiding  <= pyramiding, title='Long',   message='long '  + basicTrade + ' ' + longTradeId)
// alertcondition(goShort and shortPyramiding <= pyramiding, title='Short',  message='short ' + basicTrade + ' ' + shortTradeId)

// alertcondition(goLong  and longPyramiding  <= pyramiding, title='XShort', message='closepart part=1 ' + shortTradeId)
// alertcondition(goShort and shortPyramiding <= pyramiding, title='XLong',  message='closepart part=1 ' + longTradeId)
// }

// Background color for backtest
bgcolor(goLong[1] ? color.lime : goShort[1] ? color.red : na, transp=70)