وسائل لوڈ ہو رہے ہیں... لوڈنگ...

انٹرا ڈے حکمت عملی کے بعد ایم اے سی ڈی رجحان

مصنف:چاؤ ژانگ، تاریخ: 2023-12-19 11:16:44
ٹیگز:

img

جائزہ

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

حکمت عملی منطق

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

  1. جب قیمت ایکسپونینشل موونگ ایوریج (ای ایم اے) لائن سے اوپر نکلتی ہے تو طویل عرصے تک جائیں، اور جب یہ نیچے نکلتا ہے تو مختصر ہوجائیں؛

  2. جب ایم اے سی ڈی فاسٹ لائن سست لائن سے اوپر ہو اور اس سے نیچے ہو تو مختصر ہو جائیں۔

  3. جب ولیم اشارے کی تیز رفتار ایم اے لائن سست ایم اے لائن سے اوپر ہو اور اس کے برعکس طویل عرصے تک جائیں؛

  4. ان تینوں منظرناموں کے مجموعے کو داخلے کے شرائط کے طور پر استعمال کریں۔

  5. واپسی سگنل پر باہر نکلیں.

مجموعی طور پر رجحان کی سمت کے لئے ای ایم اے اور قلیل مدتی رفتار کے لئے ایم اے سی ڈی کو جوڑ کر ، یہ حکمت عملی منافع کے لئے مناسب انٹری پوائنٹس پر قیمت کے رجحان کی نقل و حرکت کو پکڑ سکتی ہے۔ ولیمز انڈیکیٹر زیادہ سے زیادہ خریدی / زیادہ فروخت کی سطحوں کا اندازہ کرکے جھوٹے بریک آؤٹ سے بچنے میں بھی مدد کرتا ہے۔

فوائد

یہ کثیر اشارے کا کمبو ڈھانچہ ایک عام قلیل مدتی رجحان بناتا ہے جس میں مندرجہ ذیل حکمت عملی کے ساتھ اہم کنارے جیسے:

  1. جھوٹے سگنل کو کم کرنے کے لئے ٹرپل کراس تصدیق؛

  2. اہم رجحان کے لئے ای ایم اے، مختصر مدت کی رفتار کے لئے ایم اے سی ڈی؛

  3. ولیمز اشارے غیر مستحکم چالوں کے دوران سب سے اوپر یا نیچے ماہی گیری کا پیچھا کرنے سے بچتا ہے؛

  4. ریورس کمبو یقینی بناتا ہے کہ خطرہ کنٹرول باہر نکلنے کے ساتھ سیدھ میں ہے.

خطرات

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

  1. پیچیدہ ڈھانچہ پیرامیٹر ٹیوننگ کو چیلنج کرتا ہے؛

  2. اکثر قلیل مدتی تجارت سے ٹرانزیکشن کے اخراجات میں اضافہ ہو سکتا ہے۔

  3. حقیقی رجحان کے الٹ پوائنٹس کا پتہ لگانے میں ناکامی نقصانات کا باعث بن سکتی ہے۔

اہم تخفیف پیرامیٹر کی اصلاح اور منافع کے مجموعے کو زیادہ سے زیادہ کرنے اور زیادہ سے زیادہ واحد تجارت کے نقصان کو کنٹرول کرنے کے لئے نقصان کو روکنے کے لئے ہیں.

بہتر مواقع

حکمت عملی کو بہتر بنانے کے اہم پہلو:

  1. زیادہ سے زیادہ پیرامیٹر کے مجموعے کو بہترین سیٹ کے لئے ٹیسٹ کریں؛

  2. اندراج کی توثیق کے لئے حجم کی طرح مزید ڈیٹا فیڈ شامل کریں؛

  3. خطرہ کنٹرول کو مضبوط کرنے کے لئے متحرک یا ٹریلنگ اسٹاپ نقصان کا استعمال کریں۔

  4. حقیقی تبدیلیوں کا پتہ لگانے کے لیے مشین لرننگ کو شامل کریں۔

نتیجہ

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


/*backtest
start: 2023-11-18 00:00:00
end: 2023-12-18 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/
// © platsn

//@version=5
strategy("MACD Willy Strategy", overlay=true, pyramiding=1, initial_capital=10000) 

// ******************** Trade Period **************************************
startY = input(title='Start Year', defval=2011, group = "Trading window")
startM = input.int(title='Start Month', defval=1, minval=1, maxval=12, group = "Trading window")
startD = input.int(title='Start Day', defval=1, minval=1, maxval=31, group = "Trading window")
finishY = input(title='Finish Year', defval=2050, group = "Trading window")
finishM = input.int(title='Finish Month', defval=12, minval=1, maxval=12, group = "Trading window")
finishD = input.int(title='Finish Day', defval=31, minval=1, maxval=31, group = "Trading window")
timestart = timestamp(startY, startM, startD, 00, 00)
timefinish = timestamp(finishY, finishM, finishD, 23, 59)
// t1 = time(timeframe.period, "0945-1545:23456") 
// window = time >= timestart and time <= timefinish and t1 ? true : false 
// t2 = time(timeframe.period, "0930-1555:23456")
// window2 = time >= timestart and time <= timefinish and t2 ? true : false 

leverage = input.float(1, title="Leverage (if applicable)", step=0.1, group = "Trading Options")
reinvest = input.bool(defval=false,title="Reinvest profit", group = "Trading Options")
reinvest_percent = input.float(defval=20, title = "Reinvest percentage", group="Trading Options")
// entry_lookback = input.int(defval=10, title="Lookback period for entry condition", group = "Trading Options")

// -------------------------------------------- Data Source --------------------------------------------

src = input(title="Source", defval=close)

// ***************************************************************************************************** Daily ATR *****************************************************
atrlen = input.int(14, minval=1, title="ATR period", group = "Daily ATR")
iPercent = input.float(5, minval=1, maxval=100, step=0.1, title="% ATR to use for SL / PT", group = "Daily ATR")
 
percentage = iPercent * 0.01
datr = request.security(syminfo.tickerid, "1D", ta.rma(ta.tr, atrlen))
datrp = datr * percentage

// plot(datr,"Daily ATR")
// plot(datrp, "Daily % ATR")

//*********************************************************** VIX volatility index ****************************************

VIX = request.security("BTC_USDT:swap", timeframe.period, close)
vix_thres = input.float(20.0, "VIX Threshold for entry", step=0.5, group="VIX Volatility Index")

// ************************************************ Volume ******************************************************

vol_len = input(50, 'Volume MA Period')
avg_vol = ta.sma(volume, vol_len)

//-------------------------------------------------------- Moving Average ------------------------------------

emalen1 = input.int(200, minval=1, title='EMA', group= "Moving Averages")
ema1 = ta.ema(src, emalen1)

// ------------------------------------------ MACD ------------------------------------------
// Getting inputs
fast_length = input(title="Fast Length", defval=12)
slow_length = input(title="Slow Length", defval=26)
signal_length = input.int(title="Signal Smoothing",  minval = 1, maxval = 50, defval = 9)
sma_source = input.string(title="Oscillator MA Type",  defval="EMA", options=["SMA", "EMA"])
sma_signal = input.string(title="Signal Line MA Type", defval="EMA", options=["SMA", "EMA"])
// Plot colors
col_macd = input(#2962FF, "MACD Line  ", group="Color Settings", inline="MACD")
col_signal = input(#FF6D00, "Signal Line  ", group="Color Settings", inline="Signal")
col_grow_above = input(#26A69A, "Above   Grow", group="Histogram", inline="Above")
col_fall_above = input(#B2DFDB, "Fall", group="Histogram", inline="Above")
col_grow_below = input(#FFCDD2, "Below Grow", group="Histogram", inline="Below")
col_fall_below = input(#FF5252, "Fall", group="Histogram", inline="Below")
// Calculating
fast_ma = sma_source == "SMA" ? ta.sma(src, fast_length) : ta.ema(src, fast_length)
slow_ma = sma_source == "SMA" ? ta.sma(src, slow_length) : ta.ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length)
hist = macd - signal

// ---------------------------------------- William %R --------------------------------------
w_length = input.int(defval=34, minval=1)
w_upper = ta.highest(w_length)
w_lower = ta.lowest(w_length)

w_output = 100 * (close - w_upper) / (w_upper - w_lower)

fast_period = input(defval=5, title='Smoothed %R Length')
slow_period = input(defval=13, title='Slow EMA Length')

w_fast_ma = ta.wma(w_output,fast_period)
w_slow_ma = ta.ema(w_output,slow_period)



// ------------------------------------------------ Entry Conditions ----------------------------------------

L_entry1 = close > ema1 and hist > 0 and w_fast_ma > w_slow_ma 
S_entry1 = close < ema1 and hist < 0 and w_fast_ma < w_slow_ma 

// -------------------------------------------------- Entry -----------------------------------------------
strategy.initial_capital = 50000
profit = strategy.netprofit
trade_amount = math.floor(strategy.initial_capital*leverage / close) 

if strategy.netprofit > 0 and reinvest
    trade_amount := math.floor((strategy.initial_capital+(profit*reinvest_percent*0.01))*leverage / close) 
else
    trade_amount := math.floor(strategy.initial_capital*leverage/ close) 


if L_entry1 //and window
    strategy.entry("Long", strategy.long, trade_amount)

if S_entry1 //and window
    strategy.entry("Short", strategy.short, trade_amount)

// --------------------------------------------------- Exit Conditions -------------------------------------

L_exit1 = hist < 0 and w_fast_ma < w_slow_ma and w_fast_ma < -20
S_exit1 = hist > 0 and w_fast_ma > w_slow_ma and w_fast_ma > -80

// ----------------------------------------------------- Exit ---------------------------------------------

if L_exit1 //and window2
    strategy.close("Long")
    
if S_exit1 //and window2
    strategy.close("Short")

// if time(timeframe.period, "1530-1600:23456")
//     strategy.close_all()

مزید