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

مصنف:چاؤ ژانگ، تاریخ: 2023-12-01 14:47:57
ٹیگز:

img

جائزہ

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

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

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

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

  1. ٹی ایم او خریدنے کا اشارہ دیتا ہے، یعنی تیزی کا فرق اور ایم اے اے اپنی زیادہ سے زیادہ حد کو ظاہر کرتا ہے
  2. TMO فروخت کا اشارہ دیتا ہے۔ یعنی bearish divergence اور AMA اس کا min extremity دکھاتا ہے۔
  3. اس کے علاوہ سائز میں توسیع کرنے کے لئے تازہ ترین 3 موم بتیوں کے جسم کی ضرورت ہوتی ہے

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

فوائد

اس حکمت عملی کے فوائد میں شامل ہیں:

  1. اشارے کا مجموعہ سگنل کی درستگی کو بہتر بناتا ہے۔ ٹی ایم او اور اے ایم اے غلط سگنل کو کم کرنے اور درستگی کو بہتر بنانے کے لئے ایک دوسرے کی توثیق کرتے ہیں۔

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

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

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

خطرات

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

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

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

  3. پیرامیٹر کی اصلاح کا مشکل خطرہ۔ حکمت عملی میں متعدد پیرامیٹرز شامل ہیں۔ پیرامیٹرز کا بہترین مجموعہ تلاش کرنا مشکل ہوسکتا ہے۔

اصلاح

اسٹریٹیجی کو مندرجہ ذیل شعبوں میں مزید بہتر بنایا جاسکتا ہے:

  1. غلط سگنل کو دور کرنے اور سگنل کے معیار کو مزید بہتر بنانے کے لئے حجم جیسے زیادہ فلٹر اشارے شامل کریں۔

  2. سٹاپ نقصان کے قوانین پر ترمیم کی جانچ کریں تاکہ اسے کم جارحانہ بنایا جاسکے ، مثال کے طور پر اسٹاپ نقصان کو چلانے سے پہلے تصدیق کی سلاخوں کو شامل کریں۔

  3. اشارے کے لئے بہترین پیرامیٹر مجموعہ تلاش کرنے کے لئے پیرامیٹر کی اصلاح کریں ، جس سے زیادہ شور کو فلٹر کرنے اور جیت کی شرح میں اضافہ کرنے میں مدد مل سکتی ہے۔ بنیادی طور پر TMO لمبائی ، AMA لمبائی اور ضرب کو بہتر بنائیں۔

  4. اس حکمت عملی کی منطق کے لئے بہترین فٹ مارکیٹ کی حالت کو تلاش کرنے کے لئے مختلف مصنوعات اور ٹائم فریموں میں بیک ٹیسٹ اور تجارت کریں.

نتیجہ

یہ حکمت عملی TMO اور AMA کے تجارتی سگنلز کو ابتدائی رجحان کی نقل و حرکت پر قبضہ کرکے رینج سے منسلک مارکیٹوں میں اسکیلپ میں جوڑتی ہے۔ اس کے پاس سگنل کی اعلی درستگی ، ابتدائی رجحان کی گرفتاری اور موثر رسک کنٹرول کے فوائد ہیں۔ پیرامیٹرز اور حکمت عملی کے قوانین پر مزید اصلاحات اسے انتہائی عملی انٹرا ڈے اسکیلپنگ حکمت عملی بنا سکتی ہیں۔


/*backtest
start: 2023-11-23 00:00:00
end: 2023-11-30 00:00:00
period: 10m
basePeriod: 1m
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/
// © Kaspricci

//@version=5
strategy("TradeIQ - Crazy Scalping Trading Strategy [Kaspricci]", overlay=true, initial_capital = 1000, currency = currency.USD)

headlineTMO = "TMO Settings"

tmoLength   = input.int(7, "TMO Length", minval = 1, group = headlineTMO)
tmoSource   = input.source(close, "TMO Source", group = headlineTMO)

// calculate values
osc         = ta.mom(ta.sma(ta.sma(tmoSource, tmoLength), tmoLength), tmoLength)

// determine color of historgram
oscColor    = osc > osc[1] and osc > 0 ? #00c42b : osc < osc[1] and osc > 0 ? #4ee567 : osc < osc[1] and osc < 0 ? #ff441f : osc > osc[1] and osc < 0 ? #c03920 : na

// plot histogram
//plot(osc, "OSC", oscColor, linewidth = 3, style = plot.style_histogram)

// conditon to find highs and lows
up          = ta.highest(tmoSource, tmoLength)
dn          = ta.lowest(tmoSource, tmoLength)

// define conditions to be used for finding divergence
phosc = ta.crossunder(ta.change(osc), 0)
plosc = ta.crossover (ta.change(osc), 0)

// test for divergence
bear = osc > 0 and phosc and ta.valuewhen(phosc,osc,0) < ta.valuewhen(phosc,osc,1) and ta.valuewhen(phosc,up,0) > ta.valuewhen(phosc,up,1) ? 1 : 0
bull = osc < 0 and plosc and ta.valuewhen(plosc,osc,0) > ta.valuewhen(plosc,osc,1) and ta.valuewhen(plosc,dn,0) < ta.valuewhen(plosc,dn,1) ? 1 : 0

// -------------------------------------------------------------------------------------------------------------

headlineAMA = "AMA Settings"

amaSource   = input.source(defval = close, title = "AMA Source", group = headlineAMA)
amaLength   = input.int(defval = 50, title = "AMA Length", minval = 2, group = headlineAMA)


amaMulti    = input.float(defval = 2.0, title = "Factor", minval = 1)

amaShowCd   = input(defval = true , title = "As Smoothed Candles")
amaShowEx   = input(defval = true,   title = "Show Alternating Extremities")

amaAlpha    = input.float(1.0, "Lag",       minval=0, step=.1, tooltip='Control the lag of the moving average (higher = more lag)', group= 'AMA Kernel Parameters')
amaBeta     = input.float(0.5, "Overshoot", minval=0, step=.1, tooltip='Control the overshoot amplitude of the moving average (higher = overshoots with an higher amplitude)', group='AMA Kernel Parameters')

// -------------------------------------------------------------------------------------------------------------

headlineSL = "Stop Loss Settings"

slLength    = input.int(defval = 10, title = "SL Period", minval = 1, group = headlineSL, tooltip = "Number of bars for swing high / low")

// -------------------------------------------------------------------------------------------------------------

var b       = array.new_float(0)
var float x = na

if barstate.isfirst
    for i = 0 to amaLength - 1
        x := i / (amaLength - 1)
        w = math.sin(2 * 3.14159 * math.pow(x, amaAlpha)) * (1 - math.pow(x, amaBeta))
        array.push(b, w)

// local function to filter the source
filter(series float x) =>
    sum = 0.

    for i = 0 to amaLength - 1
        sum := sum + x[i] * array.get(b,i)
    
    sum / array.sum(b)

// apply filter function on source series

srcFiltered = filter(amaSource)

deviation   = ta.sma(math.abs(amaSource - srcFiltered), amaLength) * amaMulti

upper       = srcFiltered + deviation
lower       = srcFiltered - deviation

//----
crossHigh   = ta.cross(high, upper)
crossLow    = ta.cross(low, lower)

var os      = 0
os          := crossHigh ? 1 : crossLow ? 0 : os[1]

ext         = os * upper + (1 - os) * lower

//----
os_css = ta.rsi(srcFiltered, amaLength) / 100

extColor    = os == 1 ? #30FF85 : #ff1100

plot(srcFiltered, "MA", amaShowCd ? na : color.black, 2, editable = false)
plot(amaShowEx ? ext : na, "Extremities", ta.change(os) ? na : extColor, 2, editable=false)

// handle smoothed candles
var float h = na
var float l = na
var float c = na
var float body = na

if amaShowCd
    h := filter(high)
    l := filter(low)
    c := filter(amaSource)
    body := math.abs(math.avg(c[1], c[2]) - c)

ohlc_os = ta.rsi(c, amaLength) / 100

plotcandle(math.avg(c[1], c[2]), h, l, c, "Smooth Candles", #434651, bordercolor = na, editable = false, display = amaShowCd ? display.all : display.none)

// -------------------------------------------------------------------------------------------------------------

plotshape(bull ? ext : na, "Bullish Circle", shape.circle,    location.absolute, color = #00c42b, size=size.tiny)
plotshape(bear ? ext : na, "Bearish Circle", shape.circle,    location.absolute, color = #ff441f, size=size.tiny)
plotshape(bull ? ext : na, "Bullish Label",  shape.labeldown, location.absolute, color = #00c42b, text="Buy", textcolor=color.white, size=size.tiny)
plotshape(bear ? ext : na, "Bearish Label",  shape.labelup,   location.absolute, color = #ff441f, text="Sell", textcolor=color.white, size=size.tiny)

// -------------------------------------------------------------------------------------------------------------

candleSizeIncreasing = body[2] < body[1] and body[1] < body[0]

longEntryCond   = os == 1 and bull
shortEntryCond  = os == 0 and bear

longEntry       = strategy.opentrades == 0 and candleSizeIncreasing and not candleSizeIncreasing[1] and ta.barssince(longEntryCond)  < ta.barssince(os == 0) and ta.barssince(longEntryCond) < ta.barssince(bear)
shortEntry      = strategy.opentrades == 0 and candleSizeIncreasing and not candleSizeIncreasing[1] and ta.barssince(shortEntryCond) < ta.barssince(os == 1) and ta.barssince(shortEntryCond) < ta.barssince(bull)

longExit        = strategy.opentrades > 0 and strategy.position_size > 0 and (bear or os == 0)
shortExit       = strategy.opentrades > 0 and strategy.position_size < 0 and (bull or os == 1)

recentSwingHigh = ta.highest(high, slLength) // highest high of last candles
recentSwingLow  = ta.lowest(low,   slLength) // lowest low of recent candles

bgcolor(longEntry  ? color.rgb(76, 175, 79, 90) : na)
bgcolor(shortEntry ? color.rgb(255, 82, 82, 90) : na)

slLong          = (close - recentSwingLow) / syminfo.mintick  // stop loss in ticks
slShort         = (recentSwingHigh - close) / syminfo.mintick // stop loss in ticks

newOrderID         = str.tostring(strategy.closedtrades + strategy.opentrades + 1)
curOrderID         = str.tostring(strategy.closedtrades + strategy.opentrades)

alertMessageForEntry = "Trade {0} - New {1} Entry at price: {2} with stop loss at: {3}"

if (longEntry)
    alertMessage = str.format(alertMessageForEntry, newOrderID, "Long", close, recentSwingLow)
    
    strategy.entry(newOrderID, strategy.long, alert_message = alertMessage)
    strategy.exit("Stop Loss Long", newOrderID, loss = slLong, alert_message = "Stop Loss for Trade " + newOrderID)

if(longExit)
    strategy.close(curOrderID, alert_message = "Close Trade " + curOrderID)

if (shortEntry)
    alertMessage = str.format(alertMessageForEntry, newOrderID, "Short", close, recentSwingLow)

    strategy.entry(newOrderID, strategy.short, alert_message = alertMessage)
    strategy.exit("Stop Loss Short", newOrderID, loss = slShort, alert_message = "Stop Loss for Trade " + newOrderID)

if(shortExit)
    strategy.close(curOrderID, alert_message = "Close Trade " + curOrderID)

مزید