
ڈبل ای ایم اے کراس اوور اسٹریٹجی (انگریزی: Dual EMA Crossover Strategy) ایک مقدار کی تجارت کی حکمت عملی ہے جس میں دو مختلف ادوار پر مبنی ای ایم اے اوسط لائن کراس کی بنیاد پر پوزیشن کھولنے اور پوزیشن حاصل کرنے کی حکمت عملی ہے۔ یہ حکمت عملی آسان ، موثر اور آسانی سے سمجھنے میں آسان ہے ، اور یہ مقدار کی تجارت کی ایک عام حکمت عملی ہے۔
اس حکمت عملی میں دو ای ایم اے اوسط لائنیں استعمال کی گئیں ، ایک 25 دوروں کی ای ایم اے لائن ، ایک تیز لائن کے طور پر ، اور ایک 50 دوروں کی ای ایم اے لائن ، ایک سست لائن کے طور پر۔ تیز لائن پر سست لائن کو عبور کرتے وقت ، زیادہ کام کریں اور تیز لائن کے نیچے سست لائن کو عبور کرتے وقت ، خالی کریں۔
زیادہ کرنے کے بعد ، اسٹاپ کو داخلے کی قیمت کا 2٪ اور اسٹاپ کو داخلے کی قیمت کا 2٪ مقرر کریں ، اور جب قیمت اسٹاپ یا اسٹاپ نقصان تک پہنچ جاتی ہے تو ، پوزیشن کو صاف کریں۔
اس حکمت عملی کا بنیادی مقصد مارکیٹ کے رجحانات اور الٹ کے بارے میں فیصلہ کرنے کے لئے ای ایم اے کی تیز رفتار اور سست رفتار لائنوں کے کراس کا استعمال کرنا ہے۔ اس کا تعین کرنے کے لئے بولی مارکیٹ کا تعین کریں اور زیادہ کریں ، اور اس کا تعین کرنے کے لئے بیئر مارکیٹ کا تعین کریں اور خالی کریں۔ منافع کو لاک کرنے اور خطرے کو کنٹرول کرنے کے لئے اسٹاپ نقصان کی ترتیب۔
ڈبل ای ایم اے سست رفتار لائن کراسنگ حکمت عملی کے درج ذیل فوائد ہیں:
مجموعی طور پر ، یہ حکمت عملی واضح منطق کے ساتھ مارکیٹ کا فیصلہ کرتی ہے ، EMA کی اپنی خوبیوں کا استعمال کرتی ہے ، اور خطرے کو قابو میں رکھنے کی پیش گوئی کے ساتھ ، اچھے وسط اور مختصر منافع حاصل کرتی ہے۔
ڈبل ای ایم اے کی سست اور تیز لائن کراسنگ کی حکمت عملی میں کچھ خطرات بھی ہیں:
ان خطرات کو مندرجہ ذیل طریقوں سے بہتر بنایا جاسکتا ہے:
اس حکمت عملی میں مندرجہ ذیل اہم اصلاحات شامل ہیں:
ان اصلاحات سے منافع کی شرح اور جیت کی شرح میں اضافہ ہوسکتا ہے جبکہ حکمت عملی کو سادہ اور واضح رکھا جاسکتا ہے۔
ڈبل ای ایم اے سست رفتار لائن کراسنگ حکمت عملی مجموعی طور پر ایک بہت ہی عملی مقدار کی تجارت کی حکمت عملی ہے۔ یہ سمجھنے اور عمل درآمد میں آسان ہے ، مارکیٹ کے رجحانات کو مؤثر طریقے سے پکڑتا ہے۔ اس کے ساتھ ساتھ اس میں کچھ اصلاح کی گنجائش بھی ہے ، جس سے پیرامیٹرز کی ایڈجسٹمنٹ اور امتزاج کے ذریعہ منافع کی شرح کو مزید بڑھایا جاسکتا ہے۔ اس طرح کی سادہ اور براہ راست حکمت عملی کا نظریہ سرمایہ کاروں کے لئے سیکھنے اور استعمال کرنے کے قابل ہے۔
/*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")