ڈبل ایکسپونیشل موونگ ایوریج کیپچر کی حکمت عملی


تخلیق کی تاریخ: 2023-12-13 15:28:50 آخر میں ترمیم کریں: 2023-12-13 15:28:50
کاپی: 0 کلکس کی تعداد: 618
1
پر توجہ دیں
1621
پیروکار

ڈبل ایکسپونیشل موونگ ایوریج کیپچر کی حکمت عملی

جائزہ

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

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

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

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

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

اس پالیسی کے قواعد یہ ہیں: جب مختصر اوسط نیچے سے اوپر کی طرف سے لمبی اوسط کو توڑتا ہے اور بند ہونے والی قیمتوں میں بلین کی پٹریوں سے ٹکرا جاتا ہے تو ، زیادہ کام کریں۔ جب مختصر اوسط اوپر سے نیچے کی طرف لمبی اوسط سے ٹکرا جاتا ہے اور بند ہونے والی قیمتوں میں بلین کی پٹریوں سے نیچے کی طرف جاتا ہے تو ، خالی ہوجاتا ہے۔

زیادہ کرنے کے بعد اسٹاپ نقصان پچھلے n دن کی کم ترین قیمت ہے ، اور اسٹاپ نقصان پوزیشن کھولنے کی قیمت کا 1.6 گنا ہے۔ خالی کرنے کے بعد اسٹاپ نقصان پچھلے n دن کی اعلی ترین قیمت ہے ، اور اسٹاپ نقصان پوزیشن کھولنے کی قیمت کا 1.6 گنا ہے۔

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

طاقت کا تجزیہ

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

خطرے کا تجزیہ

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

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

اصلاح کی سمت

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

خلاصہ کریں۔

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

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

// This close code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © AugustoErni

//@version=5
strategy('Bollinger Bands Modified (Stormer)', overlay=true)

bbL                   = input.int(20, title='BB Length/Comprimento da Banda de Bollinger', minval=1, step=1, tooltip='Calculate the length of bollinger bands./Calcula o comprimento das bandas de bollinger.')
mult                  = input.float(0.38, title='BB Standard Deviation/Desvio Padrão da Banda de Bollinger', minval=0.01, step=0.01, tooltip='Calculate the standard deviation of bollinger bands./Calcula o desvio padrão das bandas de bollinger.')
emaL                  = input.int(80, title='EMA Length/Comprimento da Média Móvel Exponencial', minval=1, step=1, tooltip='Calculate the length of EMA./Calcula o comprimento da EMA.')
highestHighL          = input.int(7, title='Highest High Length/Comprimento da Alta Maior', minval=1, step=1, tooltip='Fetches the highest high candle from length input. Use to set stop loss for short position./Obtém a vela de maior alta com base na medida fornecida. Usa para definir o stop loss para uma posição curta.')
lowestLowL            = input.int(7, title='Lowest Low Length/Comprimento da Baixa Menor', minval=1, step=1, tooltip='Fetches the lowest low candle from length input. Use to set stop loss for long position./Obter a vela de menor baixa com base na medida fornecida. Usa para definir o stop loss para uma posição longa.')
targetFactor          = input.float(1.6, title='Target Take Profit/Objetivo de Lucro Alvo', minval=0.1, step=0.1, tooltip='Calculate the take profit factor when entry position./Calcula o fator do alvo lucro ao entrar na posição.')
emaTrend              = input.bool(true, title='Check Trend EMA/Verificar Tendência da Média Móvel Exponencial', tooltip='Use EMA as trend verify for opening position./Usa a EMA como verificação de tendência para abrir posição.')
crossoverCheck        = input.bool(false, title='Add Another Crossover Check/Adicionar Mais uma Verificação de Cruzamento Superior', tooltip='This option is to add one more veryfication attempt to check if price is crossover upper bollinger band./Esta opção é para adicionar uma verificação adicional para avaliar se o preço cruza a banda superior da banda de bollinger.')
crossunderCheck       = input.bool(false, title='Add Another Crossunder Check/Adicionar Mais uma Verificação de Cruzamento Inferior', tooltip='This option is to add one more veryfication attempt to check if price is crossunder lower bollinger band./Esta opção é para adicionar uma verificação adicional para avaliar se o preço cruza a banda inferior da banda de bollinger.')
insideBarPatternCheck = input.bool(true, title='Show Inside Bar Pattern/Mostrar Padrão de Inside Bar', tooltip='This option is to show possible inside bar pattern./Esta opção é para mostrar um possível padrão de inside bar.')

[middle, upper, lower] = ta.bb(close, bbL, mult)
ema                    = ta.ema(close, emaL)
highestHigh            = ta.highest(high, highestHighL)
lowestLow              = ta.lowest(low, lowestLowL)
isCrossover            = ta.crossover(close, upper) ? 1 : 0
isCrossunder           = ta.crossunder(close, lower) ? 1 : 0

isPrevBarHighGreaterCurBarHigh = high[1] > high ? 1 : 0
isPrevBarLowLesserCurBarLow    = low[1] < low ? 1 : 0
isInsideBar                    = isPrevBarHighGreaterCurBarHigh and isPrevBarLowLesserCurBarLow ? 1 : 0

isBarLong  = ((close - open) > 0) ? 1 : 0
isBarShort = ((close - open) < 0) ? 1 : 0

isLongCross  = crossoverCheck ? ((isBarLong and not isBarShort) and (open < upper and close > upper)) ? 1 : 0 : isCrossover ? 1 : 0
isShortCross = crossunderCheck ? ((isBarShort and not isBarLong) and (close < lower and open > lower)) ? 1 : 0 : isCrossunder ? 1 : 0

isCandleAboveEma = close > ema ? 1 : 0
isCandleBelowEma = close < ema ? 1 : 0

isLongCondition  = emaTrend ? isLongCross and isCandleAboveEma ? 1 : 0 : isLongCross
isShortCondition = emaTrend ? isShortCross and isCandleBelowEma ? 1 : 0 : isShortCross

isPositionNone  = strategy.position_size == 0 ? 1 : 0
isPositionLong  = strategy.position_size > 0 ? 1 : 0
isPositionShort = strategy.position_size < 0 ? 1 : 0

var float enterLong     = 0.0
var float stopLossLong  = 0.0
var float targetLong    = 0.0
var float enterShort    = 0.0
var float stopLossShort = 0.0
var float targetShort   = 0.0
var bool isLongEntry    = false
var bool isShortEntry   = false

if (isPositionNone)
    isLongEntry   := false
    isShortEntry  := false
    enterLong     := 0.0
    stopLossLong  := 0.0
    targetLong    := 0.0
    enterShort    := 0.0
    stopLossShort := 0.0
    targetShort   := 0.0
if (isPositionShort or isPositionNone)
    isLongEntry  := false
    enterLong    := 0.0
    stopLossLong := 0.0
    targetLong   := 0.0
if (isPositionLong or isPositionNone)
    isShortEntry  := false
    enterShort    := 0.0
    stopLossShort := 0.0
    targetShort   := 0.0
if (isPositionLong and isLongEntry)
    isLongEntry   := true
    isShortEntry  := false
    enterShort    := 0.0
    stopLossShort := 0.0
    targetShort   := 0.0
if (isPositionShort and isShortEntry)
    isShortEntry := true
    isLongEntry  := false
    enterLong    := 0.0
    stopLossLong := 0.0
    targetLong   := 0.0

if (isLongCondition and not isLongEntry)
    isLongEntry  := true
    enterLong    := close
    stopLossLong := lowestLow
    targetLong   := (enterLong + (math.abs(enterLong - stopLossLong) * targetFactor))
    alertMessage = '{ "side/lado": "buy", "entry/entrada": ' + str.tostring(enterLong) + ', "stop": ' + str.tostring(stopLossLong) + ', "target/alvo": ' + str.tostring(targetLong) + ' }'
    alert(alertMessage)
    strategy.entry('Long', strategy.long)
    strategy.exit('Exit Long', 'Long', stop=stopLossLong, limit=targetLong)

if (isShortCondition and not isShortEntry)
    isShortEntry  := true
    enterShort    := close
    stopLossShort := highestHigh
    targetShort   := (enterShort - (math.abs(enterShort - stopLossShort) * targetFactor))
    alertMessage = '{ "side/lado": "sell", "entry/entrada": ' + str.tostring(enterShort) + ', "stop": ' + str.tostring(stopLossShort) + ', "target/alvo": ' + str.tostring(targetShort) + ' }'
    alert(alertMessage)
    strategy.entry('Short', strategy.short)
    strategy.exit('Exit Short', 'Short', stop=stopLossShort, limit=targetShort)

plot(upper, title='Upper Band', color=color.blue)
plot(middle, title='Middle Band', color=color.gray)
plot(lower, title='Lower Band', color=color.blue)
plot(ema, title='EMA', color=color.white)

barcolor(insideBarPatternCheck and isInsideBar and isBarLong ? color.lime : insideBarPatternCheck and isInsideBar and isBarShort ? color.maroon : na, title='Inside Bar Color in Long Bar Long and in Short Bar Short/Cor do Inside Bar em Barra Longa Longa e em Barra Curta Curta')

tablePosition    = position.bottom_right
tableColumns     = 2
tableRows        = 5
tableFrameWidth  = 1
tableBorderColor = color.gray
tableBorderWidth = 1

tableInfoTrade = table.new(position=tablePosition, columns=tableColumns, rows=tableRows, frame_width=tableFrameWidth, border_color=tableBorderColor, border_width=tableBorderWidth)

table.cell(table_id=tableInfoTrade, column=0, row=0)
table.cell(table_id=tableInfoTrade, column=1, row=0)

table.cell(table_id=tableInfoTrade, column=0, row=1, text='Entry Side/Lado da Entrada', text_color=color.white)
table.cell(table_id=tableInfoTrade, column=0, row=2, text=isLongEntry ? 'LONG' : isShortEntry ? 'SHORT' : 'NONE/NENHUM', text_color=color.yellow)

table.cell(table_id=tableInfoTrade, column=1, row=1, text='Entry Price/Preço da Entrada', text_color=color.white)
table.cell(table_id=tableInfoTrade, column=1, row=2, text=isLongEntry ? str.tostring(enterLong) : isShortEntry ? str.tostring(enterShort) : 'NONE/NENHUM', text_color=color.blue)

table.cell(table_id=tableInfoTrade, column=0, row=3, text='Take Profit Price/Preço Alvo Lucro', text_color=color.white)
table.cell(table_id=tableInfoTrade, column=0, row=4, text=isLongEntry ? str.tostring(targetLong) : isShortEntry ? str.tostring(targetShort) : 'NONE/NENHUM', text_color=color.green)

table.cell(table_id=tableInfoTrade, column=1, row=3, text='Stop Loss Price/Preço Stop Loss', text_color=color.white)
table.cell(table_id=tableInfoTrade, column=1, row=4, text=isLongEntry ? str.tostring(stopLossLong) : isShortEntry ? str.tostring(stopLossShort) : 'NONE/NENHUM', text_color=color.red)