ڈبل EMA تیز اور سست لائن کراس اوور حکمت عملی


تخلیق کی تاریخ: 2024-02-22 16:18:39 آخر میں ترمیم کریں: 2024-02-22 16:18:39
کاپی: 0 کلکس کی تعداد: 726
1
پر توجہ دیں
1617
پیروکار

ڈبل EMA تیز اور سست لائن کراس اوور حکمت عملی

جائزہ

ڈبل ای ایم اے کراس اوور اسٹریٹجی (انگریزی: Dual EMA Crossover Strategy) ایک مقدار کی تجارت کی حکمت عملی ہے جس میں دو مختلف ادوار پر مبنی ای ایم اے اوسط لائن کراس کی بنیاد پر پوزیشن کھولنے اور پوزیشن حاصل کرنے کی حکمت عملی ہے۔ یہ حکمت عملی آسان ، موثر اور آسانی سے سمجھنے میں آسان ہے ، اور یہ مقدار کی تجارت کی ایک عام حکمت عملی ہے۔

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

اس حکمت عملی میں دو ای ایم اے اوسط لائنیں استعمال کی گئیں ، ایک 25 دوروں کی ای ایم اے لائن ، ایک تیز لائن کے طور پر ، اور ایک 50 دوروں کی ای ایم اے لائن ، ایک سست لائن کے طور پر۔ تیز لائن پر سست لائن کو عبور کرتے وقت ، زیادہ کام کریں اور تیز لائن کے نیچے سست لائن کو عبور کرتے وقت ، خالی کریں۔

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

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

طاقت کا تجزیہ

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

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

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

خطرے کا تجزیہ

ڈبل ای ایم اے کی سست اور تیز لائن کراسنگ کی حکمت عملی میں کچھ خطرات بھی ہیں:

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

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

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

اصلاح کی سمت

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

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

ان اصلاحات سے منافع کی شرح اور جیت کی شرح میں اضافہ ہوسکتا ہے جبکہ حکمت عملی کو سادہ اور واضح رکھا جاسکتا ہے۔

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2024-01-22 00:00:00
end: 2024-02-21 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// SEMA-X(SEMA CROSS) [AB] : Simple EMA cross strategy Alert & Backtest
// 1. 2 EMA cross
// 2. Next candle entry
// 3. TP & SL

//@version=5
strategy("SEMA-X", "SEMA-X", overlay=false, margin_long=1,
 initial_capital=1000000, default_qty_type=strategy.percent_of_equity, default_qty_value=100,
 commission_type=strategy.commission.percent, commission_value=0.075, slippage=3)

//****************************************************************************//
// Input
//****************************************************************************//
// EMA length
emaLen25 = input.int(25, "Short", minval=1, confirm=true, group="[EMA]----------", inline="1")
emaLen50 = input.int(50, "Long",  minval=1, confirm=true, group="[EMA]----------", inline="1")

// TP & SL
isLong   = input.bool(true, "Long - ",    confirm=true, group="[TP & SL(%)]----------", inline="1")
tpLong   = input.float(2, "TP", minval=0, confirm=true, group="[TP & SL(%)]----------", inline="1")*0.01
slLong   = input.float(2, "SL", minval=0, confirm=true, group="[TP & SL(%)]----------", inline="1")*0.01
isShort  = input.bool(false, "Short - ",  confirm=true, group="[TP & SL(%)]----------", inline="2")
tpShort  = input.float(2, "TP", minval=0, confirm=true, group="[TP & SL(%)]----------", inline="2")*0.01
slShort  = input.float(2, "SL", minval=0, confirm=true, group="[TP & SL(%)]----------", inline="2")*0.01

// Backtest period
sTime = input(timestamp("0001-01-01"), "Start", group="[Backtest]----------")
eTime = input(timestamp("9999-01-01"), "End",   group="[Backtest]----------")
inDateRange   = true
periodBg      = input.bool(false, "Backtest BGcolor", confirm=true, group="[Backtest]----------", inline="1")
bgLong        = input.bool(false, "Position BGcolor", confirm=true, group="[Backtest]----------", inline="1")
periodBgColor = periodBg and inDateRange ? color.new(color.green, 95) : na
bgcolor(periodBgColor, title="Backtest BGcolor")
bgColorLong   = bgLong and strategy.position_size>0 ? color.new(color.green, 95) : na
bgcolor(bgColorLong, title="Position BGcolor")

// IRISBOT
exchange = input.string("binance",  "Exchange", confirm=true, group="[IRISBOT]----------", inline="2", options=["binance", "bybit", "upbit"])
account  = input.string("account1", "Account",  confirm=true, group="[IRISBOT]----------", inline="2")
symbol   = input.string("BTC/USDT", "Symbol",   confirm=true, group="[IRISBOT]----------", inline="3")
strategy = input.string("sema-x",   "Strategy", confirm=true, group="[IRISBOT]----------", inline="3")
token    = input.string("token",    "Token",    confirm=true, group="[IRISBOT]----------", inline="4")
stRatio  = input.float(100.0,       "Ratio(%)", confirm=true, group="[IRISBOT]----------", inline="5", tooltip="하나의 거래소에서 이 전략을 몇 % 비중으로 투자할 것인가?") * 0.01
leverage = input.float(1,           "Leverage", confirm=true, group="[IRISBOT]----------", inline="5")
isPlotMsg = input.bool(false, "View alert msg", confirm=true, group="[IRISBOT]----------", inline="6")

//****************************************************************************//
// Process
//****************************************************************************//
ema25=ta.ema(close, emaLen25)
ema50=ta.ema(close, emaLen50)

// Entry condition
longCondition  = isLong and ta.crossover(ema25, ema50)
shortCondition = isShort and ta.crossunder(ema25, ema50)

// Entry price
var price=0.0
var pricePlot=0.0
if (longCondition or shortCondition) and strategy.position_size == 0
    price:=close
pricePlot:=price
if (strategy.position_size==0)
    pricePlot:=na

// Amount
amount = str.tostring(stRatio*100)

// IRISBOT alert msg (for auto trading, you can change this for autoview, tvextbot, thanksbot, etc webhookbot)
msgLong  = '{"exchange":"'+exchange+'","account":"'+account+'","strategy":"'+strategy+'","symbol":"'+symbol+'","type":"market","side":"buy","amount":"'+amount+'%","leverage":"'+str.tostring(leverage)+'","token":"'+token+'"}'
msgShort = '{"exchange":"'+exchange+'","account":"'+account+'","strategy":"'+strategy+'","symbol":"'+symbol+'","type":"market","side":"sell","amount":"'+amount+'%","leverage":"'+str.tostring(leverage)+'","token":"'+token+'"}'
msgExit  = '{"exchange":"'+exchange+'","account":"'+account+'","strategy":"'+strategy+'","symbol":"'+symbol+'","type":"market","side":"close","token":"'+token+'"}'

// Entry signal
if inDateRange
    strategy.entry("L", strategy.long,  when=longCondition,  comment="L", alert_message=msgLong)
    strategy.entry("S", strategy.short, when=shortCondition, comment="S", alert_message=msgShort)
    strategy.exit("XL", "L", profit=price*tpLong/syminfo.mintick,  loss=price*slLong/syminfo.mintick,  comment="X", alert_message=msgExit)
    strategy.exit("XS", "S", profit=price*tpShort/syminfo.mintick, loss=price*slShort/syminfo.mintick, comment="X", alert_message=msgExit)

//****************************************************************************//
// Plot
//****************************************************************************//
// Alert msg plot
var msgTable = table.new(position = position.bottom_right, columns = 2, rows = 3, bgcolor = color.new(color.blue, 80), border_width = 1)
if isPlotMsg
    if isLong
        table.cell(msgTable, 0, 0, "Long",  text_halign = text.align_left)
        table.cell(msgTable, 1, 0, msgLong,  text_halign = text.align_left)
    
    if isShort
        table.cell(msgTable, 0, 1, "Short", text_halign = text.align_left, bgcolor=color.new(color.red, 80))
        table.cell(msgTable, 1, 1, msgShort, text_halign = text.align_left, bgcolor=color.new(color.red, 80))
    
    if isLong or isShort
        table.cell(msgTable, 0, 2, "Exit",  text_halign = text.align_left, bgcolor=color.new(color.purple, 80))
        table.cell(msgTable, 1, 2, msgExit,  text_halign = text.align_left, bgcolor=color.new(color.purple, 80))

// EMA
e0=plot(ema25, "Short", color.green)
e1=plot(ema50, "Long", color.red)
fill(e0, e1, ema25>ema50 ? color.new(color.green, 50) : color.new(color.red, 50), "EMA BG")

// TP & SL
p0=plot(pricePlot, "Entry", color.black, style=plot.style_linebr)
p1=plot(pricePlot*(strategy.position_size>0 ? 1+tpLong : 1-tpShort), "TP", color.new(color.green, 50), style=plot.style_linebr)
p2=plot(pricePlot*(strategy.position_size>0 ? 1-slLong : 1+slShort), "SL", color.new(color.red, 50), style=plot.style_linebr)
fill(p0, p1, color.new(color.green, 80), "TP BG")
fill(p0, p2, color.new(color.red, 80), "SL BG")