ای ایم اے کی واپسی کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-12-21 11:48:54
ٹیگز:

img

جائزہ

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

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

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

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

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

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

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

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

حکمت عملی کے فوائد

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

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

حکمت عملی کے خطرات

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

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

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

اصلاح کی ہدایات

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

  1. مخالف رجحان کی تجارت سے بچنے کے لئے رجحان اشارے کا اضافہ کریں، مثال کے طور پر MACD.
  2. غلط بریک آؤٹ سے بچنے کے لئے ٹریڈنگ حجم اشارے کا اضافہ کریں، مثال کے طور پر OBV.
  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)





//

مزید