ڈبل تھرو اشارے کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-09-25 17:34:46
ٹیگز:

جائزہ

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

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

یہ حکمت عملی بنیادی طور پر تین حسب ضرورت اشارے پر مبنی ہے:

  1. ڈبل تھرو اشارے (ٹرینڈ): 1, 0, -1 تین ریاستوں کو واپس کرتے ہوئے، بولش اور bearish رجحانات کا تعین کرنے کے لئے قیمت اور overbought / oversold چینل کے درمیان تعلقات کا حساب لگاتا ہے.

  2. Overbought/Oversold Channel (Tsl): ATR کے حوالے سے اوپری اور نچلی ریلوں کا حساب لگاتا ہے۔ اوپری ریل کو توڑنے کو overbought سمجھا جاتا ہے ، اور نچلی ریل کو توڑنے کو oversold سمجھا جاتا ہے۔

  3. بنیادی چلتی اوسط لائن (ایم اے): اختتامی قیمت کی 20 مدت کی سادہ چلتی اوسط کا حساب لگاتا ہے۔

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

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

لانگ ٹریڈنگ کی مخصوص حکمت عملی مندرجہ ذیل ہیں:

  1. ڈبل زور اشارے > 0، قیمت اوپر ریل، جس رجحان کے بعد سے تعلق رکھتا ہے، طویل جانے کے ذریعے توڑنے کے لئے بڑھتی ہے.

  2. ڈبل زور اشارے < 0، قیمت نیچے ریل، رجحان الٹ سے تعلق رکھتا ہے جس کے ذریعے توڑنے کے لئے گر جاتا ہے، مختصر جانا.

  3. اختتامی قیمت > افتتاحی قیمت > محور کی سطح ، جسے طویل عرصے تک جانے کے لئے محور کو توڑنے کے طور پر سمجھا جاتا ہے ، طویل عرصے تک جانا.

  4. اختتامی قیمت اوپری ریل سے ٹوٹ جاتی ہے ، اور اختتامی قیمت > حرکت پذیر اوسط لائن ، طویل ہوجاتی ہے۔

مختصر تجارت کی حکمت عملی مندرجہ ذیل ہیں:

  1. ڈبل زور اشارے < 0، قیمت نیچے ریل، رجحان کی پیروی کرنے سے تعلق رکھتا ہے جس کے ذریعے توڑنے کے لئے گر جاتا ہے، مختصر جانا.

  2. ڈبل تھرو اشارے > 0، قیمت اوپر ریل، رجحان الٹ سے تعلق رکھتا ہے جس کے ذریعے توڑنے کے لئے بڑھ جاتا ہے، طویل جانا.

  3. افتتاحی قیمت > اختتامی قیمت < محور کی سطح ، جسے مختصر ہونے کے لئے محور کو توڑنے کے طور پر سمجھا جاتا ہے ، مختصر ہوجائیں۔

  4. اختتامی قیمت نچلی ریل سے ٹوٹ جاتی ہے، اور اختتامی قیمت < حرکت پذیر اوسط لائن، مختصر ہو جاتی ہے۔

باہر نکلنے کی حکمت عملی آسان ہے جب قیمت ایک بار پھر اوور بک / اوور سیل چینل سے گزر جاتی ہے تو نقصان کو روکنا۔

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

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

  1. ڈبل تھرو اشارے مارکیٹ کے رجحان کو درست طریقے سے تعین کر سکتے ہیں اور حکمت عملی کا بنیادی اشارے ہے.

  2. اشارے کے ساتھ مل کر اوور بکڈ / اوور سیلڈ چینل ممکنہ واپسی کے مواقع کا پتہ لگاسکتا ہے۔

  3. بنیادی حرکت پذیر اوسط لائن غلط بریک آؤٹ سے بچنے کے لئے ایک معاون فلٹرنگ سگنل کے طور پر کام کر سکتی ہے۔

  4. محور نقطہ دوہری دھکا اشارے کے ساتھ مل کر اعلی امکان ٹریڈنگ مقامات تشکیل دیتا ہے.

  5. اس میں زیادہ منافع کے مواقع کے لئے رجحان کی پیروی اور الٹ ٹریڈنگ کی صلاحیتیں ہیں.

  6. زیادہ خریدنے/زیادہ فروخت کرنے کا چینل سٹاپ نقصان آسان اور واضح ہے، جو رسک کنٹرول کے لیے فائدہ مند ہے۔

خطرے کا تجزیہ

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

  1. دوہری دھکا اشارے غلط سگنل دے سکتے ہیں، اور دوسرے اشارے کے ساتھ فلٹر کرنے کی ضرورت ہے.

  2. بریکآؤٹ ٹریڈنگ میں پھنسنے کا امکان ہوتا ہے، لہذا سخت سٹاپ نقصان کی ضرورت ہوتی ہے۔

  3. غیر مناسب حرکت پذیر اوسط مدت کی ترتیب رجحانات کو نظر انداز کر سکتی ہے یا غلط سگنل پیدا کر سکتی ہے۔

  4. محور پوائنٹس کو امکان کی وشوسنییتا کی تصدیق کے لئے بیک ٹیسٹنگ کی ضرورت ہے۔

  5. زیادہ خریدنے / زیادہ فروخت چینل کو مختلف مصنوعات کو اپنانے کے لئے پیرامیٹرز کی اصلاح کی ضرورت ہے.

  6. اشارے کے پیرامیٹرز کی عدم مطابقت سے اکثر تجارت ہوسکتی ہے۔

ان خطرات سے نمٹنے کے لیے درج ذیل اقدامات کئے جا سکتے ہیں:

  1. دوسرے اشارے کو یکجا کریں جیسے K- لائن، حجم دوہری دھکا اشارے سگنل کی تصدیق کرنے کے لئے.

  2. فوری سٹاپ نقصان کے لیے اوور بکڈ/ اوور سیلڈ چینل سٹاپ نقصان کی حکمت عملی پر سختی سے عمل کریں۔

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

  4. مکمل طور پر pivot نقطہ حکمت عملی امکان backtest.

  5. ہر پروڈکٹ کے لئے بہترین مجموعہ تلاش کرنے کے لئے پیرامیٹرز کو بہتر بنائیں.

  6. اشارے کے پیرامیٹرز کو ایڈجسٹ کریں تاکہ مجموعی نظام کو آسانی سے چلایا جاسکے۔

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

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

  1. مشین لرننگ الگورتھم کو بڑھانا تاکہ دوہری تھرو اشارے کو بڑے اعداد و شمار کے ساتھ تربیت دی جاسکے۔ اس سے درستگی میں بہتری آسکتی ہے اور جھوٹے سگنل کم ہوسکتے ہیں۔

  2. مارکیٹ کی اتار چڑھاؤ کی بنیاد پر چینل پیرامیٹرز کو خود بخود ایڈجسٹ کرنے کے لئے موافقت پذیر چینلز شامل کریں۔ اس سے بریک آؤٹ کی درستگی میں اضافہ ہوسکتا ہے۔

  3. داخلہ اور باہر نکلنے کی حکمت عملی کو بہتر بنانے کے لئے زیادہ متغیر اشارے نکالنے کے لئے گہری سیکھنے کا استعمال کریں.

  4. اعلی درجے کی سٹاپ نقصان الگورتھم شامل کریں جو سٹاپ نقصان کے رجحانات کو ٹریک کرسکتے ہیں، واپسی کی طرف سے روکنے سے بچنے کے لۓ.

  5. مجموعی حکمت عملی استحکام کو بہتر بنانے کے لئے پیرامیٹر کی اصلاح اور مجموعہ ٹیسٹ انجام دیں.

  6. زیادہ سائنسی خطرے کے کنٹرول کے لئے خطرے کے انتظام کے ماڈیولز شامل کریں.

خلاصہ

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


/*backtest
start: 2023-08-25 00:00:00
end: 2023-09-24 00:00:00
period: 2h
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/
// © amysojexson

//@version=3
strategy(title="Pivots strategy", overlay=true)

// Input settings
// Create a pull-down menu for the pivot type
pivotType = input(title="Pivot Type",
     options=["Daily", "Intraday", "Weekly"], defval="Daily")

// Make toggles for pivot level options
plotPP   = input(title="Plot PP", type=bool, defval=true)
plotS1R1 = input(title="Plot S1 and R1", type=bool, defval=true)
plotS2R2 = input(title="Plot S2 and R2", type=bool, defval=true)
plotS3R3 = input(title="Plot S3 and R3", type=bool, defval=true)
plotTCBC = input(title="Plot S3 and R3", type=bool, defval=true)
// Configure session options
sessRange = input(title="Trading Session",  defval="0800-1600")
showSess  = input(title="Highlight Session?", type=bool, defval=false)

// Enable or disable pivot labels
showLabels = input(title="Show Labels?", type=bool, defval=false)

// Step 2. Calculate indicator values
// Create a function to fetch daily and weekly data
GetData(res, data) =>
    security(syminfo.tickerid, res, data[1],
         lookahead=barmerge.lookahead_on)

// Fetch daily and weekly price data
dailyHigh  = GetData("D", high)
dailyLow   = GetData("D", low)
dailyClose = GetData("D", close)

weeklyHigh  = GetData("W", high)
weeklyLow   = GetData("W", low)
weeklyClose = GetData("W", close)

// Determine session pivot data
// First see how the price bar relates to
// the session time range
inSession = not na(time(timeframe.period, sessRange)[1])
sessStart = inSession and not inSession[1]
sessEnd   = not inSession and inSession[1]

// Determine session price data
sessHigh  = 0.0
sessLow   = 0.0
sessClose = 0.0

sessHigh := sessStart ? high :
     inSession ? max(high, sessHigh[1]) : na
sessLow := sessStart ? low :
     inSession ? min(low, sessLow[1]) : na
sessClose := sessEnd ? close[1] : na

// Compute high, low, close from previous intra-day session
highPrevSess  = 0.0
lowPrevSess   = 0.0
closePrevSess = 0.0

highPrevSess  := sessEnd ? fixnan(sessHigh) : highPrevSess[1]
lowPrevSess   := sessEnd ? fixnan(sessLow) : lowPrevSess[1]
closePrevSess := sessEnd ? fixnan(sessClose) : closePrevSess[1]

// Now figure out which kind of price data
// to use for the pivot calculation
theHigh = if (pivotType == "Daily")
    dailyHigh
else
    if (pivotType == "Intraday")
        highPrevSess
    else
        weeklyHigh

theLow = if (pivotType == "Daily")
    dailyLow
else
    if (pivotType == "Intraday")
        lowPrevSess
    else
        weeklyLow

theClose = if (pivotType == "Daily")
    dailyClose
else
    if (pivotType == "Intraday")
        closePrevSess
    else
        weeklyClose

// Finally calculate the pivot levels
pp = (theHigh + theLow + theClose) / 3
bc= (theHigh + theLow)/2
tc= (pp-bc)+pp

r1 = pp+(.382*(theHigh-theLow))
s1 = pp-(.382*(theHigh-theLow))
r2 = pp +(.618*(theHigh-theLow))
s2 = pp -(.618*(theHigh-theLow))
r3 = pp +(1*(theHigh-theLow))
s3 = pp -(1*(theHigh-theLow))

// Step 3. Output indicator data
// Plot the various pivot levels
plot(series=plotS3R3 ? r3 : na, title="R3",
     style=circles, linewidth=1, color=#0023FF)
plot(series=plotS2R2 ? r2 : na, title="R2",
     style=circles, linewidth=1, color=#1E90FF)
plot(series=plotS1R1 ? r1 : na, title="R1",
     style=circles, linewidth=1, color=#09E0F3)

plot(series=plotTCBC ? tc : na, title="TC",
     style=circles, linewidth=.75, color=#FF00D1)
plot(series=plotPP ? pp : na, title="PP",
     style=circles, linewidth=1, color=#000000)
plot(series=plotTCBC ? bc : na, title="BC",
     style=circles, linewidth=.75, color=#FF00D1)

plot(series=plotS1R1 ? s1 : na, title="S1",
     style=circles, linewidth=1, color=#09E0F3)
plot(series=plotS2R2 ? s2 : na, title="S2",
     style=circles, linewidth=1, color=#1E90FF)
plot(series=plotS3R3 ? s3 : na, title="S3",
     style=circles, linewidth=1, color=#0023FF)

// Display the pivot names on the chart, if applicable
newPivots = (showLabels == false) ? false :
     (pivotType == "Intraday") ? sessEnd :
     (pivotType == "Daily") ? dayofmonth != dayofmonth[1] :
     dayofweek == monday and dayofmonth != dayofmonth[1]

plotchar(series=newPivots and plotS3R3 ? r3 : na,
     char='', text="R3", offset=1,
     location=location.absolute,
     color=#0023FF, title="R3 label")

plotchar(series=newPivots and plotS2R2 ? r2 : na,
     char='', text="R2", offset=1,
     location=location.absolute,
     color=#1E90FF, title="R2 label")

plotchar(series=newPivots and plotS1R1 ? r1 : na,
     char='', text="R1", offset=1,
     location=location.absolute,
     color=#09E0F3, title="R1 label")

plotchar(series=newPivots and plotTCBC ? r1 : na,
     char='', text="TC", offset=1,
     location=location.absolute,
     color=#FF00D1, title="TC label")
     
plotchar(series=newPivots and plotTCBC ? r1 : na,
     char='', text="BC", offset=1,
     location=location.absolute,
     color=#FF00D1, title="BC label")

plotchar(series=newPivots and plotS1R1 ? s1 : na,
     char='', text="S1", offset=1,
     location=location.absolute,
     color=#09E0F3, title="S1 label")

plotchar(series=newPivots and plotS2R2 ? s2 : na,
     char='', text="S2", offset=1,
     location=location.absolute,
     color=#1E90FF, title="S2 label")

plotchar(series=newPivots and plotS3R3 ? s3 : na,
     char='', text="S3", offset=1,
     location=location.absolute,
     color=#0023FF, title="S3 label")

// Highlight the intra-day price data session on the chart
bgcolor(color=showSess and inSession and (pivotType == "Intraday") ?
     orange : na, transp=95)

// Step 4. Create indicator alerts
alertcondition(condition=cross(close, s3),
     title="Pivot S3 Cross",
     message="Prices crossed Pivot S3 level")

alertcondition(condition=cross(close, s2),
     title="Pivot S2 Cross",
     message="Prices crossed Pivot S2 level")

alertcondition(condition=cross(close, s1),
     title="Pivot S1 Cross",
     message="Prices crossed Pivot S1 level")
     
alertcondition(condition=cross(close, tc),
     title="Pivot TC Cross",
     message="Prices crossed Pivot TC level")

alertcondition(condition=cross(close, pp),
     title="Pivot PP Cross",
     message="Prices crossed the main Pivot Point level")
     
alertcondition(condition=cross(close, bc),
     title="Pivot BC Cross",
     message="Prices crossed Pivot BC level")

alertcondition(condition=cross(close, r1),
     title="Pivot R1 Cross",
     message="Prices crossed Pivot R1 level")

alertcondition(condition=cross(close, r2),
     title="Pivot R2 Cross",
     message="Prices crossed Pivot R2 level")

alertcondition(condition=cross(close, r3),
     title="Pivot R3 Cross",
     message="Prices crossed Pivot R3 level")
    
MA = sma(close, 20)
plot(MA, color=red)

Factor				= input(2, type=float)
Pd					= input(10, minval=1,maxval = 100)
Up					= hl2-(Factor*atr(Pd))
Dn					= hl2+(Factor*atr(Pd))
TrendUp				= 0.0
TrendUp				:= close[1]>TrendUp[1]? max(Up,TrendUp[1]) : Up
TrendDown			= 0.0
TrendDown			:= close[1]<TrendDown[1]? min(Dn,TrendDown[1]) : Dn
Trend				= 0.0
Trend 				:= close > TrendDown[1] ? 1: close< TrendUp[1]? -1: nz(Trend[1],1)
Tsl 				= Trend==1? TrendUp: TrendDown

plot(Tsl, color=blue)

if close>open
    if open<pp
        if close>pp
            if close>MA
                strategy.entry("long", true) 
if close<open
    if open>pp
        if close<pp
            if close<MA
                strategy.entry("short", false) 
                
strategy.close("long", when = open<Tsl)
strategy.close("short", when = open>Tsl)

مزید