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


تخلیق کی تاریخ: 2023-12-21 11:48:54 آخر میں ترمیم کریں: 2023-12-21 11:48:54
کاپی: 2 کلکس کی تعداد: 877
1
پر توجہ دیں
1623
پیروکار

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

جائزہ

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

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

اس حکمت عملی میں تین ای ایم اے منحنی خطوط کا استعمال کیا گیا ہے:

  • EMA1: قیمت کی واپسی کی حمایت / مزاحمت کی سطح کا تعین کرنے کے لئے استعمال کیا جاتا ہے ، جس میں مختصر دورانیہ ہوتا ہے ، اور اس کی ڈیفالٹ مدت 33 ہے۔
  • EMA2: جزوی الٹ سگنل کو فلٹر کرنے کے لئے استعمال کیا جاتا ہے ، جس کی مدت EMA1 سے 5 گنا ہے ، اور اس کی ڈیفالٹ مدت 165 ہے۔
  • EMA3: مجموعی طور پر رجحان کی سمت کا تعین کرنے کے لئے استعمال کیا جاتا ہے ، اس کی مدت EMA1 سے 11 گنا ہے ، جس میں 365 ادوار کی ڈیفالٹ ہوتی ہے۔

ٹریڈنگ سگنل کی پیداوار مندرجہ ذیل منطق پر عمل کرتی ہے:

ایک سے زیادہ سگنل: قیمت کے اوپر ای ایم اے 1 کے قیام کے بعد واپسی ہوتی ہے ، ای ایم اے 1 کے اوپر ایک اعلی کم نقطہ بنتا ہے ، واپسی کی شدت ای ایم اے 2 کو چھو نہیں سکتی ہے۔ شرط پوری ہونے کے بعد ، ای ایم اے 1 کو دوبارہ پہننے پر زیادہ کریں۔

خالی سر کا اشارہ: قیمت کے نیچے ای ایم اے 1 کے بعد واپسی ہوتی ہے ، ای ایم اے 1 کے نیچے ایک اور کم اونچائی ہوتی ہے ، واپسی کی شدت ای ایم اے 2 کو نہیں چھوتی ہے۔ شرط پوری ہونے کے بعد ، دوبارہ نیچے ای ایم اے 1 کے نیچے جانے پر خالی کریں۔

اسٹاپ نقصان کا طریقہ کم سے کم قیمت / زیادہ سے زیادہ قیمت کو دوبارہ ترتیب دینا ہے۔ اسٹاپ نقصان کی ترتیب 2 گنا ہے۔

اسٹریٹجک فوائد

یہ حکمت عملی مندرجہ ذیل فوائد رکھتی ہے:

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

اسٹریٹجک رسک

اس حکمت عملی میں کچھ خطرات بھی ہیں:

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

ای ایم اے کی مدت کو ایڈجسٹ کرنے، حد کی حد کی حد کو ایڈجسٹ کرنے، اور دیگر اشارے فلٹر سگنل کے ساتھ مل کر پیرامیٹرز کو بہتر بنانے کے لئے استعمال کیا جا سکتا ہے.

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

اس حکمت عملی کو مندرجہ ذیل پہلوؤں سے بہتر بنایا جاسکتا ہے:

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

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2023-11-20 00:00:00
end: 2023-12-20 00:00:00
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/
// created by Space Jellyfish
//@version=4

strategy("EMA pullback strategy", overlay = true, initial_capital=10000, commission_value = 0.075)

target_stop_ratio = input(title="Take Profit Stop Loss ratio", type=input.float, defval=2.06, minval=0.5, maxval=100)
riskLimit_low =  input(title="lowest risk per trade", type=input.float, defval=0.008, minval=0, maxval=100)
riskLimit_high =  input(title="highest risk per trade", type=input.float, defval=0.02, minval=0, maxval=100)
//give up the trade, if the risk is smaller than limit, adjust position size if risk is bigger than limit

ema_pullbackLevel_period = input(title="EMA1 for pullback level Period", type=input.integer, defval=33, minval=1, maxval=10000)
ema_pullbackLimiit_period = input(title="EMA2 for pullback limit Period", type=input.integer, defval=165, minval=1, maxval=10000)
ema_trend_period = input(title="EMA3 for trend Period", type=input.integer, defval=365, minval=1, maxval=10000)

startDate = input(title="Start Date", type=input.integer, defval=1, minval=1, maxval=31)
startMonth = input(title="Start Month", type=input.integer, defval=1, minval=1, maxval=12)
startYear = input(title="Start Year", type=input.integer, defval=2018, minval=2008, maxval=2200)

inDateRange = (time >= timestamp(syminfo.timezone, startYear, startMonth, startDate, 0, 0))

ema_pullbackLevel = ema(close, ema_pullbackLevel_period)
ema_pullbackLimit = ema(close, ema_pullbackLimiit_period)
ema_trendDirection = ema(close, ema_trend_period)

//ema pullback 
float pricePullAboveEMA_maxClose = na
float pricePullAboveEMA_maxHigh = na

float pricePullBelowEMA_minClose = na
float pricePullBelowMA_minLow = na

if(crossover(close, ema_pullbackLevel))
    pricePullAboveEMA_maxClose := close
    pricePullAboveEMA_maxHigh := high
else
    pricePullAboveEMA_maxClose := pricePullAboveEMA_maxClose[1]
    pricePullAboveEMA_maxHigh := pricePullAboveEMA_maxHigh[1]

if(close > pricePullAboveEMA_maxClose)
    pricePullAboveEMA_maxClose := close
if(high > pricePullAboveEMA_maxHigh)
    pricePullAboveEMA_maxHigh := high

if(crossunder(close, ema_pullbackLevel))
    pricePullBelowEMA_minClose := close
    pricePullBelowMA_minLow := low
else
    pricePullBelowEMA_minClose :=pricePullBelowEMA_minClose[1]
    pricePullBelowMA_minLow:=pricePullBelowMA_minLow[1]
    
if(close < pricePullBelowEMA_minClose)
    pricePullBelowEMA_minClose := close
if(low < pricePullBelowMA_minLow)
    pricePullBelowMA_minLow := low


long_strategy = crossover(close, ema_pullbackLevel) and pricePullBelowEMA_minClose < ema_pullbackLimit and ema_pullbackLevel>ema_trendDirection 
short_strategy = crossunder(close, ema_pullbackLevel) and pricePullAboveEMA_maxClose > ema_pullbackLimit and ema_pullbackLevel<ema_trendDirection


var open_long_or_short = 0// long = 10000, short = -10000, no open = 0

//check if position is closed
if(strategy.position_size == 0)
    open_long_or_short := 0
else
    open_long_or_short := open_long_or_short[1]

float risk_long = na
float risk_short = na
float stopLoss = na
float takeProfit = na
float entry_price = na

float entryContracts = 0



risk_long := risk_long[1]
risk_short := risk_short[1]
    
//open a position determine the position size
if (strategy.position_size == 0 and long_strategy and inDateRange)
    risk_long := (close - pricePullBelowMA_minLow) / close

    if(risk_long < riskLimit_high)
        entryContracts := strategy.equity / close
    else
        entryContracts := (strategy.equity * riskLimit_high / risk_long)/close
    
    if(risk_long > riskLimit_low)
        strategy.entry("long", strategy.long, qty = entryContracts, when = long_strategy)


    open_long_or_short := 10000
    
if (strategy.position_size == 0 and short_strategy and inDateRange)
    risk_short := (pricePullAboveEMA_maxHigh - close) / close
    if(risk_short < riskLimit_high)
        entryContracts := strategy.equity / close
    else
        entryContracts := (strategy.equity * riskLimit_high / risk_short)/close

    if(risk_short > riskLimit_low)
        strategy.entry("short", strategy.short, qty = entryContracts, when = short_strategy)

    
    open_long_or_short := -10000

//take profit / stop loss
if(open_long_or_short == 10000)

    stopLoss :=   strategy.position_avg_price*(1 - risk_long)
    takeProfit :=  strategy.position_avg_price*(1 + target_stop_ratio * risk_long)
    entry_price := strategy.position_avg_price
    strategy.exit("Long exit","long", limit = takeProfit , stop = stopLoss)
    
if(open_long_or_short == -10000)
    stopLoss :=  strategy.position_avg_price*(1 + risk_short)
    takeProfit :=  strategy.position_avg_price*(1 - target_stop_ratio * risk_short)
    entry_price := strategy.position_avg_price
    strategy.exit("Short exit","short", limit = takeProfit, stop = stopLoss)



plot(ema_pullbackLevel, color=color.aqua,  title="ema pullback level")
plot(ema_pullbackLimit, color=color.purple,  title="ema pullback limit")
plot(ema_trendDirection, color=color.white,  title="ema trend")

plot(entry_price, color = color.yellow, linewidth = 1, style = plot.style_linebr)
plot(stopLoss, color = color.red, linewidth = 1, style = plot.style_linebr)
plot(takeProfit, color = color.green, linewidth = 1, style = plot.style_linebr)





//