یہ حکمت عملی مائکرو سکریپ (MACD) اشارے اور کثیر وقت فریم کے برابر لائن کا استعمال کرتے ہوئے ایک جامع استعمال کرتے ہوئے ایک طویل اور مختصر دو طرفہ ٹریڈنگ کی حکمت عملی بناتا ہے. یہ حکمت عملی رجحان کی مارکیٹوں میں اضافی منافع حاصل کرنے کے لئے استعمال کیا جا سکتا ہے، لیکن یہ بھی رجحان کی واپسی کے مواقع پر قبضہ کر سکتے ہیں.
لمبے فاصلے پر فیصلہ کرنے کے لئے متعدد وقت کے فریم فلٹرز کے لئے دو مختلف دورانیے والے ای ایم اے کے ساتھ مل کر کام کرنا: 15 منٹ کا تیز ای ایم اے ایک گھنٹہ سے زیادہ ہے ، 15 منٹ کا تیز ای ایم اے ایک گھنٹہ سے کم ہے ، اور 15 منٹ کا تیز ای ایم اے ایک گھنٹہ سے کم ہے۔
جب مائیکرو شیلف کی تشکیل میں انحراف دیکھا جاتا ہے (قیمت سے کھمبے والی لائن کی انحراف) تو فیصلہ الٹ سکتا ہے۔
جب دیکھنے والا فلٹر کھلتا ہے تو ، اگر کوئی بیل مارکیٹ انحراف (نئی قیمت زیادہ ہے اور MACD جدید نہیں ہے) کا پتہ چلتا ہے تو ، MACD صفر محور پر جانے کا انتظار کریں ، اور زیادہ کریں۔ جب دیکھنے والا فلٹر کھلتا ہے تو ، اگر کوئی ریچھ مارکیٹ انحراف (نئی قیمت کم ہے اور MACD جدید نہیں ہے) کا پتہ چلتا ہے تو ، MACD صفر محور پر جانے کا انتظار کریں ، اور خالی کریں۔
سٹاپ نقصان کا طریقہ مسلسل ٹریکنگ سٹاپ نقصان ہے، جو سب سے زیادہ قیمت کی کم ترین قیمت کی اتار چڑھاؤ کی حد کے مطابق شمار کیا جاتا ہے۔ سٹاپ نقصان کے لئے سٹاپ نقصان کا ایک مقررہ ضرب ہے۔
جب MACD کالم لائن صفر محور کی سمت میں گزرتی ہے تو ہموار ہوتا ہے۔
ملٹی ٹائم فریم ای ایم اے کا مجموعہ بڑے سائیکل کے رجحانات کا فیصلہ کرتا ہے اور منفی تجارت سے بچتا ہے۔
ایم اے سی ڈی انحراف قیمتوں کے الٹ جانے کے مواقع کو پکڑتا ہے اور الٹ جانے کی حکمت عملی کے لئے موزوں ہے۔
متحرک ٹریکنگ اسٹاپ نقصانات منافع کو مقفل کرنے اور نقصانات کو بڑھانے سے بچانے کے لئے ہے۔
اس کے علاوہ، یہ بھی ممکن ہے کہ آپ کو اس کے بارے میں مزید جاننے کی ضرورت ہو گی.
ای ایم اے کے ہموار لائن گروپ نے فلٹر کے طور پر کام کیا ہے ، جس کی وجہ سے اس وقت سمت کی غلط تشخیص ہوسکتی ہے۔
ایم اے سی ڈی کی واپسی کے بعد ریبلا کی شدت کم ہے اور یہ منافع بخش نہیں ہوسکتی ہے۔
روک تھام کے فاصلے کو غلط طریقے سے ترتیب دیا گیا ہے ، جو بہت وسیع یا بہت تنگ ہوسکتا ہے۔
اس کے علاوہ ، اس کے پاس بہت کم واپسی کی گنجائش ہے ، اور اس کے فوائد محدود ہیں۔
یہ ضروری ہے کہ وقت پر صحیح طریقے سے الٹ پلٹ کی جائے ، کیونکہ بہت جلد یا بہت دیر سے نقصان ہوسکتا ہے۔
مختلف پیرامیٹرز کے مجموعے کے ای ایم اے کو ٹیسٹ کیا جاسکتا ہے تاکہ زیادہ درست رجحان کا فیصلہ کیا جاسکے۔
MACD پیرامیٹرز کو زیادہ حساس پیرامیٹرز کے مجموعے میں ایڈجسٹ کرنے کی کوشش کی جاسکتی ہے۔
مختلف سٹاپ نقصان روک تھام تناسب کی ترتیبات کی جانچ پڑتال کی جا سکتی ہے۔
جھوٹے ریپلس سے بچنے کے لئے اضافی فلٹرنگ کی شرائط شامل کی جاسکتی ہیں۔ مثال کے طور پر ، اعلی وقت کی فریم ای ایم اے کو عالمی رجحانات کا تعین کرنے کے لئے شامل کریں۔
اس کے علاوہ، یہ بھی کہا جاتا ہے کہ اس طرح کے رجحانات کو تبدیل کرنے کے لئے، یہ ضروری ہے کہ آپ کو اس بات کا یقین کرنے کے لئے کہ رجحانات کو تبدیل کرنے کے لئے رجحانات کو تبدیل کرنے کے لئے کافی حد تک پختہ ہے.
اس حکمت عملی میں مجموعی طور پر رجحان فلٹرنگ ، رجحان الٹنے کے اشارے ، متحرک اسٹاپ نقصان روک تھام کے انتظام جیسے وسائل کا استعمال کیا گیا ہے ، جو اس کے ساتھ ساتھ ، یا الٹنے کو پکڑ سکتے ہیں۔ پیرامیٹرز کو ایڈجسٹ کرنے اور فلٹرنگ کی شرائط کو بہتر بنانے کے ذریعہ ، یہ وسیع تر مارکیٹ کے ماحول میں اپنانے کے ل. ، خطرہ کو کنٹرول کرنے کی شرط پر مستحکم منافع حاصل کرسکتا ہے۔ اس حکمت عملی میں ایک خاص افادیت اور عملی قیمت ہے ، جو متعدد وقت کے فریم ورک اور اشارے کے امتزاج کے لئے استعمال ہونے والا ایک مثالی نمائندہ ہے۔
/*backtest start: 2023-01-01 00:00:00 end: 2023-06-16 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/ // © maxits //@version=4 // MACD Divergence + Multi Time Frame EMA // This Strategy uses 3 indicators: the Macd and two emas in different time frames // The configuration of the strategy is: // Macd standar configuration (12, 26, 9) in 1H resolution // 10 periods ema, in 1H resolution // 5 periods ema, in 15 minutes resolution // We use the two emas to filter for long and short positions. // If 15 minutes ema is above 1H ema, we look for long positions // If 15 minutes ema is below 1H ema, we look for short positions // We can use an aditional filter using a 100 days ema, so when the 15' and 1H emas are above the daily ema we take long positions // Using this filter improves the strategy // We wait for Macd indicator to form a divergence between histogram and price // If we have a bullish divergence, and 15 minutes ema is above 1H ema, we wait for macd line to cross above signal line and we open a long position // If we have a bearish divergence, and 15 minutes ema is below 1H ema, we wait for macd line to cross below signal line and we open a short position // We close both position after a cross in the oposite direction of macd line and signal line // Also we can configure a Take profit parameter and a trailing stop loss // strategy("Macd + MTF EMA", // overlay=true, // initial_capital=1000, // default_qty_value=20, // default_qty_type=strategy.percent_of_equity, // commission_value=0.1, // pyramiding=0) // User Inputs i_time = input(defval = timestamp("01 Apr 2018 13:30 +0000"), title = "Start Time", type = input.time) // Starting time for backtest f_time = input(defval = timestamp("30 Sep 2021 13:30 +0000"), title = "Finish Time", type = input.time) // Finishing time for backtest long_pos = input(title="Show Long Positions", defval=true, type=input.bool) // Enable Long Positions short_pos = input(title="Show Short Positions", defval=true, type=input.bool) // Enable Short Positions src = input(close, title="Source") // Price value to calculate indicators emas_properties = input(title="============ EMAS Properties ============", defval=false, type=input.bool) // Properties mtf_15 = input(title="Fast EMA", type=input.resolution, defval="15") // Resolucion para MTF EMA 15 minutes ma_15_length = input(5, title = "Fast EMA Period") // MTF EMA 15 minutes Length mtf_60 = input(title="Slow EMA", type=input.resolution, defval="60") // Resolucion para MTF EMA 60 minutes ma_60_length = input(10, title = "Slow EMA Period") // MTF EMA 60 minutes Length e_new_filter = input(title="Enable a Third Ema filter?", defval=true, type=input.bool) slowest_ema_len = input(100, title = "Fast EMA Period") slowest_ema_res = input(title="Slowest EMA", type=input.resolution, defval="D") macd_res = input(title="MACD TimeFrame", type=input.resolution, defval="") // MACD Time Frame macd_properties = input(title="============ MACD Properties ============", defval="") // Properties fast_len = input(title="Fast Length", type=input.integer, defval=12) // Fast MA Length slow_len = input(title="Sign Length", type=input.integer, defval=26) // Sign MA Length sign_len = input(title="Sign Length", type=input.integer, defval=9) syst_properties = input(title="============ System Properties ============", defval="") // Properties lookback = input(title="Lookback period", type=input.integer, defval=14, minval=1) // Candles to lookback for swing high or low multiplier = input(title="Profit Multiplier based on Stop Loss", type=input.float, defval=6.0, minval=0.1) // Profit multiplier based on stop loss shortStopPer = input(title="Short Stop Loss Percentage", type=input.float, defval=1.0, minval=0.0)/100 longStopPer = input(title="Long Stop Loss Percentage", type=input.float, defval=2.0, minval=0.0)/100 // Indicators [macd, signal, hist] = security(syminfo.tickerid, macd_res, macd(src, fast_len, slow_len, sign_len)) ma_15 = security(syminfo.tickerid, mtf_15, ema(src, ma_15_length)) ma_60 = security(syminfo.tickerid, mtf_60, ema(src, ma_60_length)) ma_slo = security(syminfo.tickerid, slowest_ema_res, ema(src, slowest_ema_len)) // Macd Plot col_grow_above = #26A69A col_grow_below = #FFCDD2 col_fall_above = #B2DFDB col_fall_below = #EF5350 plot(macd, color=color.new(color.blue, 0)) // Solo para visualizar que se plotea correctamente plot(signal, color=color.new(color.orange, 0)) plot(hist, style=plot.style_columns, color=(hist >= 0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below))) // MTF EMA Plot bullish_filter = e_new_filter ? ma_15 > ma_60 and ma_60 > ma_slo : ma_15 > ma_60 bearish_filter = e_new_filter ? ma_15 < ma_60 and ma_60 < ma_slo : ma_15 < ma_60 plot(ma_15, color=color.new(color.blue, 0)) plot(ma_60, color=color.new(color.yellow, 0)) plot(e_new_filter ? ma_slo : na, color = ma_60 > ma_slo ? color.new(color.green, 0) : color.new(color.red, 0)) ////////////////////////////////////////////// Logic For Divergence zero_cross = false zero_cross := crossover(hist,0) or crossunder(hist,0) //Cruce del Histograma a la linea 0 // plot(zero_cross ? 1 : na) // MACD DIVERGENCE TOPS (Bearish Divergence) highest_top = 0.0 highest_top := (zero_cross == true ? 0.0 : (hist > 0 and hist > highest_top[1] ? hist : highest_top[1])) prior_top = 0.0 prior_top := (crossunder(hist,0) ? highest_top[1] : prior_top[1]) // Búsqueda del Maximo en MACD // plot(highest_top) // plot(prior_top) highest_top_close = 0.0 highest_top_close := (zero_cross == true ? 0.0 : (hist > 0 and hist > highest_top[1] ? close : highest_top_close[1])) prior_top_close = 0.0 prior_top_close := (crossunder(hist,0) ? highest_top_close[1] : prior_top_close[1]) // Búsqueda del Maximo en pRECIO // plot(highest_top_close) // plot(prior_top_close) top = false top := highest_top[1] < prior_top[1] and highest_top_close[1] > prior_top_close[1] and hist < hist[1] and crossunder(hist,0) // Bearish Divergence: top == true // MACD DIVERGENCE BOTTOMS (Bullish Divergence) lowest_bottom = 0.0 lowest_bottom := (zero_cross == true ? 0.0 : (hist < 0 and hist < lowest_bottom[1] ? hist : lowest_bottom[1])) prior_bottom = 0.0 prior_bottom := (crossover(hist,0) ? lowest_bottom[1] : prior_bottom[1]) lowest_bottom_close = 0.0 lowest_bottom_close := (zero_cross == true ? 0.0 : (hist < 0 and hist < lowest_bottom[1] ? close : lowest_bottom_close[1])) prior_bottom_close = 0.0 prior_bottom_close := (crossover(hist,0) ? lowest_bottom_close[1] : prior_bottom_close[1]) bottom = false bottom := lowest_bottom[1] > prior_bottom[1] and lowest_bottom_close[1] < prior_bottom_close[1] and hist > hist[1] and crossover(hist,0) // Bullish Divergence: bottom == true ////////////////////////////////////////////// System Conditions ////////////////////////////////////////////// inTrade = strategy.position_size != 0 // In Trade longTrade = strategy.position_size > 0 // Long position shortTrade = strategy.position_size < 0 // Short position notInTrade = strategy.position_size == 0 // No trade entryPrice = strategy.position_avg_price // Position Entry Price ////////////////////////////////////////////// Long Conditions ////////////////////////////////////////////// sl = lowest(low, lookback) // Swing Low for Long Entry longStopLoss = 0.0 // Trailing Stop Loss calculation longStopLoss := if (longTrade) astopValue = sl * (1 - longStopPer) max(longStopLoss[1], astopValue) else 0 longTakeProf = 0.0 // Profit calculation based on stop loss longTakeProf := if (longTrade) profitValue = entryPrice + (entryPrice - longStopLoss) * multiplier max(longTakeProf[1], profitValue) else 0 // Long Entry Conditions if bottom and notInTrade and bullish_filter and long_pos strategy.entry(id="Go Long", long=strategy.long, comment="Long Position") // strategy.close(id="Go Long", when=zero_cross) if longTrade strategy.exit("Exit Long", "Go Long", limit = longTakeProf, stop = longStopLoss) plot(longTrade and longStopLoss ? longStopLoss : na, title="Long Stop Loss", color=color.new(color.red, 0), style=plot.style_linebr) plot(longTrade and longTakeProf ? longTakeProf : na, title="Long Take Prof", color=color.new(color.green, 0), style=plot.style_linebr) ////////////////////////////////////////////// Short Conditions ////////////////////////////////////////////// sh = highest(high, lookback) // Swing High for Short Entry shortStopLoss = 0.0 shortStopLoss := if (shortTrade) bstopValue = sh * (1 + shortStopPer) min(shortStopLoss[1], bstopValue) else 999999 shortTakeProf = 0.0 shortTakeProf := if (shortTrade) SprofitValue = entryPrice - (shortStopLoss - entryPrice) * multiplier min(SprofitValue, shortTakeProf[1]) else 999999 // Short Entry if top and notInTrade and bearish_filter and short_pos strategy.entry(id="Go Short", long=strategy.short, comment="Short Position") // strategy.close(id="Go Short", when=zero_cross) if shortTrade strategy.exit("Exit Short", "Go Short", limit = shortTakeProf, stop = shortStopLoss) plot(shortTrade and shortStopLoss ? shortStopLoss : na, title="Short Stop Loss", color=color.new(color.red, 0), style=plot.style_linebr) plot(shortTrade and shortTakeProf ? shortTakeProf : na, title="Short Take Prof", color=color.new(color.green, 0), style=plot.style_linebr)