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