
اس حکمت عملی میں دو انڈیکسوں کے متحرک اوسط ((EMA) کے کراسنگ کو خرید و فروخت کے اشارے کے طور پر استعمال کیا جاتا ہے۔ جب مختصر مدت کے EMA نیچے سے اوپر کی طرف سے طویل مدت کے EMA کو عبور کرتے ہیں تو ، خریدنے کا اشارہ پیدا ہوتا ہے۔ اس کے برعکس ، جب مختصر مدت کے EMA اوپر سے نیچے کی طرف سے طویل مدت کے EMA کو عبور کرتے ہیں تو ، فروخت کا اشارہ پیدا ہوتا ہے۔ اس کے علاوہ ، حکمت عملی یہ بھی فیصلہ کرتی ہے کہ آیا کراسنگ پوائنٹ حالیہ 10 تجارتی ادوار میں سب سے زیادہ قیمت ہے یا کم قیمت ، اس طرح رجحان کی طاقت کی تصدیق ہوتی ہے۔ اگر کراسنگ پوائنٹ سب سے زیادہ ہے تو ، قیمت پس منظر میں سبز دکھائی دیتی ہے ، اگر کم قیمت ہے تو ، سرخ دکھائی دیتی ہے۔ اس کے علاوہ ، حکمت عملی چارٹ پر کراسنگ پوائنٹ کی قیمت بھی دکھاتی ہے۔
اس حکمت عملی میں اشاریہ کی حرکت پذیری اوسط کی کراسنگ کو بنیادی منطق کے طور پر استعمال کیا جاتا ہے ، جبکہ کراسنگ پوائنٹ کی قیمتوں کے حالیہ دورانیے میں رشتہ دار پوزیشنوں کے ساتھ مل کر ، رجحان کی طاقت کا فیصلہ کرنے کے لئے۔ مجموعی طور پر ، حکمت عملی کی منطق واضح ہے ، فوائد واضح ہیں ، لیکن اس میں کچھ حدود اور خطرات بھی موجود ہیں۔ مزید معاون فیصلہ کن اشارے متعارف کرانے ، معقول رسک مینجمنٹ کے اقدامات ترتیب دینے ، کلیدی پیرامیٹرز کو بہتر بنانے کے ذریعہ ، اس حکمت عملی کی استحکام اور منافع بخش صلاحیت کو مزید بہتر بنایا جاسکتا ہے۔
/*backtest
start: 2024-02-01 00:00:00
end: 2024-02-29 23:59:59
period: 1h
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/
// © ZenAndTheArtOfTrading
// @version=5
strategy("ema giao nhau", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// Get user input
emaLength1 = input.int(title="EMA #1 Length", defval=5)
emaLength2 = input.int(title="EMA #2 Length", defval=10)
// Get MAs
ema1 = ta.ema(close, emaLength1)
ema2 = ta.ema(close, emaLength2)
// Draw MAs
plot(ema1, color=color.blue, title="EMA 1")
plot(ema2, color=color.red, title="EMA 2")
// Detect crossovers
bool crossOver = ta.crossover(ema1, ema2)
bool crossUnder = ta.crossunder(ema1, ema2)
bool cross = crossOver or crossUnder
//float crossPrice = ta.valuewhen(cross, close, 0)
float crossPrice = cross ? close : na
// Check if the crossover price is the highest price over the past 10 bars
bool highestPrice = crossOver
for i = 1 to 10
if crossPrice <= close[i]
highestPrice := false
break
// Check if the crossover price is the lowest price over the past 10 bars
bool lowestPrice = crossUnder
for i = 1 to 10
if crossPrice >= close[i]
lowestPrice := false
break
// Flag the bar if it is a high/low close
bgcolor(highestPrice ? color.new(color.green, 50) : na)
bgcolor(lowestPrice ? color.new(color.red, 50) : na)
// Display crossover price
if cross
highestEmaPrice = ema1 > ema2 ? ema1 : ema2
label myLabel = label.new(bar_index, highestEmaPrice, "CrossPrice=" + str.tostring(crossPrice), color=color.white)
if highestPrice and strategy.position_size == 0
strategy.entry(id="Buy", direction=strategy.long)
if lowestPrice and strategy.position_size == 0
strategy.entry(id="Sell", direction=strategy.short)
// Exit trades when short-term EMA is breached
if strategy.position_size > 0 and crossUnder
strategy.close("Buy")
if strategy.position_size < 0 and crossOver
strategy.close("Sell")