یہ حکمت عملی رجحان کی سمت کا تعین کرنے کے لئے ایم اے سی ڈی کا استعمال کرتی ہے ، جس کی تصدیق کے طور پر ای ایم اے اور ایس ایم اے کراس اوور کے ساتھ مل کر ہوتی ہے۔ انٹری سگنل اس وقت ہوتا ہے جب ایم اے سی ڈی ہسٹوگرام سگنل لائن سے اوپر عبور کرتا ہے اور رجحان اوپر ہوتا ہے۔ اسٹاپ نقصان فلوٹنگ اے ٹی آر ٹریلنگ اسٹاپ سے نیچے قیمت کی سطح پر طے ہوتا ہے۔ حکمت عملی منافع لینے کے لئے جزوی طور پر بھی باہر نکلتی ہے ، قیمت میں زیادہ اضافے پر زیادہ باہر نکلتی ہے ، اور اسٹاپ نقصان تک ٹریلنگ اسٹاپ کے ساتھ کچھ پوزیشن رکھتی ہے۔
جب تیز رفتار ای ایم اے سست رفتار ای ایم اے کے اوپر عبور کرتا ہے تو ، اس سے یہ ظاہر ہوتا ہے کہ قلیل مدتی رجحان طویل مدتی رجحان سے بہتر ہے ، جس سے خرید کا اشارہ ہوتا ہے۔ دریں اثنا ، سست رفتار ایس ایم اے کے اوپر تیز رفتار ایس ایم اے عبور کرنے سے قلیل مدتی میں مضبوط اپسائیڈ رفتار کا بھی اشارہ ہوتا ہے۔ لہذا ای ایم اے اینڈ ایس ایم اے کراس اوور پر مبنی ایم اے سی ڈی لائن کراسنگ اور اپ ٹرینڈ کا امتزاج مضبوط انٹری سگنل کی نشاندہی کرنے میں مدد کرتا ہے۔
اے ٹی آر کا استعمال اسٹاپ نقصان کی سطح کا حساب لگانے کے لئے کیا جاتا ہے۔ اے ٹی آر مؤثر طریقے سے قیمت میں اتار چڑھاؤ کی حد کی پیمائش کرسکتا ہے۔ جب قیمت اس حد سے نیچے ہوتی ہے تو ، اسٹاپ نقصان کو متحرک کیا جاتا ہے۔ اے ٹی آر کی مدت کو ایڈجسٹ کیا جاسکتا ہے - چھوٹی مدت زیادہ درست اسٹاپ کی اجازت دیتی ہے لیکن روکنا آسان ہے ، جبکہ بڑی مدت سے وسیع اسٹاپ ملتا ہے لیکن زیادہ مضبوط ہوتا ہے۔ اسٹاپ کی سطح قیمت کو اوپر کی طرف بھی پیچھے چھوڑ دیتی ہے ، جس سے رجحان کے بعد اثر ہوتا ہے۔
منافع حاصل کرنے کے لئے چھوٹی قیمتوں میں اضافے پر جزوی طور پر باہر نکلتا ہے۔ منافع میں مقفل کرنے کے لئے بڑی قیمتوں میں اضافے پر زیادہ باہر نکلتا ہے۔ اسٹاپ نقصان کو مارنے تک ٹریلنگ اسٹاپ کے ساتھ کچھ پوزیشن رکھتا ہے۔ اس سے منافع میں مقفل ہونے میں مدد ملتی ہے ، جبکہ پھر بھی کچھ عرصے تک پوزیشن برقرار رکھنے کے قابل ہوتا ہے۔
MACD اور رجحان اشارے سے غلط سگنل کا خطرہ۔ پیرامیٹرز کو ٹھیک کریں یا دوسرے اشارے شامل کریں۔
اے ٹی آر سٹاپ نقصان کا خطرہ۔ اے ٹی آر مدت یا سٹاپ نقصان ضرب کو بڑھا سکتا ہے۔
پسماندہ پوزیشن میں پھنس جانے کا خطرہ۔ پسماندہ پوزیشن کا سائز کم کریں اور وقت میں نقصان کو کم کریں۔
بہتر رجحان کی تشخیص کے لئے MACD پیرامیٹرز کو بہتر بنائیں
بہتر سٹاپ نقصان کی سطح کے لئے ATR مدت کو بہتر بنائیں
پھنسے ہوئے خطرے کو کم کرنے کے لئے باہر نکلنے کے تناسب اور پوزیشن سائزنگ کو بہتر بنائیں
سٹاپ نقصان کو بہتر بنانے کے لئے منتقل منافع لینے یا اتار چڑھاؤ انڈیکس شامل کرنے پر غور کریں
یہ حکمت عملی رجحان اور انٹری ٹائمنگ کو درست طریقے سے طے کرنے کے لئے ایم اے سی ڈی ، ای ایم اے / ایس ایم اے اور دیگر اشارے کو جوڑتی ہے۔ فلوٹنگ اے ٹی آر اسٹاپ نقصان رجحان کی پیروی کرتے ہوئے منافع میں مقفل ہونے میں مدد کرتا ہے۔ منافع حاصل کرنے ، منافع کو یقینی بنانے اور مدت کے لئے پوزیشن کو برقرار رکھنے کے لئے باہر نکلنے میں مدد ملتی ہے۔ مجموعی طور پر یہ مہذب نتائج کے ساتھ مستحکم ہے۔ لیکن بہتر واپسی کے لئے پیرامیٹرز اور باہر نکلنے کو مزید بہتر بنایا جاسکتا ہے۔
/*backtest start: 2022-10-30 00:00:00 end: 2023-11-05 00:00:00 period: 1d basePeriod: 1h 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/ // © Deobald //@version=4 strategy("MACD Strategy", overlay=true) // FUNCTIONS Ema(src,p) => ema = 0. sf = 2/(p+1) ema := nz(ema[1] + sf*(src - ema[1]),src) Sma(src,p) => a = cum(src), (a - a[max(p,0)])/max(p,0) Atr(p) => atr = 0. Tr = max(high - low, max(abs(high - close[1]), abs(low - close[1]))) atr := nz(atr[1] + (Tr - atr[1])/p,Tr) /// TREND ribbon_period = input(34, "Period", step=1) leadLine1 = ema(close, ribbon_period) leadLine2 = sma(close, ribbon_period) p3 = plot(leadLine1, color= #53b987, title="EMA", transp = 50, linewidth = 1) p4 = plot(leadLine2, color= #eb4d5c, title="SMA", transp = 50, linewidth = 1) fill(p3, p4, transp = 60, color = leadLine1 > leadLine2 ? #53b987 : #eb4d5c) // MACD fast_length = input(title="Fast Length", type=input.integer, defval=3) slow_length = input(title="Slow Length", type=input.integer, defval=5) src = input(title="Source", type=input.source, defval=close) signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 2) sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=false) sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=true) // Plot colors col_grow_above = #26A69A col_grow_below = #FFCDD2 col_fall_above = #B2DFDB col_fall_below = #EF5350 col_macd = #0094ff col_signal = #ff6a00 // Calculating fast_ma = sma_source ? Sma(src, fast_length) : Ema(src, fast_length) slow_ma = sma_source ? Sma(src, slow_length) : Ema(src, slow_length) macd = fast_ma - slow_ma signal = sma_signal ? Sma(macd, signal_length) : Ema(macd, signal_length) hist = macd - signal //plot(hist, title="Histogram", 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) ), transp=0 ) // plot(macd, title="MACD", color=col_macd, transp=0) // plot(signal, title="Signal", color=col_signal, transp=0) // TAKE PROFIT AND STOP LOSS long_tp1_inp = input(1, title='Long Take Profit 1 %', step=0.1)/100 long_tp1_qty = input(10, title="Long Take Profit 1 Qty", step=1) long_tp2_inp = input(5, title='Long Take Profit 2%', step=0.1)/100 long_tp2_qty = input(50, title="Long Take Profit 2 Qty", step=1) long_take_level_1 = strategy.position_avg_price * (1 + long_tp1_inp) long_take_level_2 = strategy.position_avg_price * (1 + long_tp2_inp) // Stop Loss multiplier = input(2.2, "SL Mutiplier", minval=1, step=0.1) ATR_period=input(17,"ATR period", minval=1, step=1) // Strategy entry_long=crossover(macd,signal) and leadLine2 < leadLine1 entry_price_long=valuewhen(entry_long,close,0) SL_floating_long = entry_price_long - multiplier*Atr(ATR_period) exit_long= close < SL_floating_long ///// BACKTEST PERIOD /////// testStartYear = input(2018, "Backtest Start Year") testStartMonth = input(1, "Backtest Start Month") testStartDay = input(1, "Backtest Start Day") testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, 0, 0) testStopYear = input(2020, "Backtest Stop Year") testStopMonth = input(12, "Backtest Stop Month") testStopDay = input(31, "Backtest Stop Day") testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0) testPeriod() => true if testPeriod() strategy.entry("long", strategy.long, comment="Long", when=entry_long) strategy.exit("TP1","long", qty_percent=long_tp1_qty, limit=long_take_level_1)//, trail_points=entry_price_long * long_trailing / syminfo.mintick, trail_offset=entry_price_long * long_trailing / syminfo.mintick) strategy.exit("TP2", qty_percent=long_tp2_qty, limit=long_take_level_2) //, trail_points=entry_price_long * long_trailing / syminfo.mintick, trail_offset=entry_price_long * long_trailing / syminfo.mintick) strategy.close_all("long", when=exit_long, comment="exit long" ) // LONG POSITION plot(strategy.position_size > 0 ? long_take_level_1 : na, style=plot.style_linebr, color=color.green, linewidth=1, title="1st Long Take Profit") plot(strategy.position_size > 0 ? long_take_level_2 : na, style=plot.style_linebr, color=color.green, linewidth=1, title="2nd Long Take Profit") plot(strategy.position_size > 0 ? SL_floating_long : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Long Stop Loss")