
یہ حکمت عملی MACD حرکیات کے اشارے اور DMI رجحان اشارے کے ساتھ مل کر کام کرتی ہے۔ اس کے باہر نکلنے پر منافع کو لاک کرنے کے لئے ایک مقررہ اسٹاپ اور اپنی مرضی کے مطابق اتار چڑھاؤ کا ٹریلنگ اسٹاپ ترتیب دیا گیا ہے۔
اس حکمت عملی کے اندراجات MACD اور DMI اشارے پر منحصر ہیں:
جب مذکورہ بالا دونوں شرائط مل کر پوری ہوں تو زیادہ پوزیشن کھولی جائے۔
Position exits کے دو معیار ہیں:
اس حکمت عملی میں مارکیٹ کے رجحانات اور شرائط کا اندازہ لگانے کے لئے متعدد اشارے شامل ہیں ، اور زیادہ امکان کے منافع بخش حالات میں مداخلت کی گئی ہے۔ اسٹاپ شرائط کو بھی بہتر ڈیزائن کیا گیا ہے ، جبکہ کچھ منافع کی ضمانت دیتے ہوئے منافع کو لاک کرنے کی لچک کو بھی مدنظر رکھا گیا ہے۔ پیرامیٹرز کی ایڈجسٹمنٹ اور مزید رسک مینجمنٹ کے ذریعہ ، یہ حکمت عملی ایک مستحکم آؤٹ پٹ کے لئے ایک مقداری تجارتی نظام بن سکتی ہے۔
/*backtest
start: 2024-01-29 00:00:00
end: 2024-02-28 00:00:00
period: 2h
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/
//@version=4
strategy(shorttitle='(MACD + DMI Scalping with Volatility Stop',title='MACD + DMI Scalping with Volatility Stop by (Coinrule)', overlay=true, initial_capital = 100, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type=strategy.commission.percent, commission_value=0.1)
// Works better on 3h, 1h, 2h, 4h
//Backtest dates
fromMonth = input(defval = 1, title = "From Month", type = input.integer, minval = 1, maxval = 12)
fromDay = input(defval = 1, title = "From Day", type = input.integer, minval = 1, maxval = 31)
fromYear = input(defval = 2021, title = "From Year", type = input.integer, minval = 1970)
thruMonth = input(defval = 1, title = "Thru Month", type = input.integer, minval = 1, maxval = 12)
thruDay = input(defval = 1, title = "Thru Day", type = input.integer, minval = 1, maxval = 31)
thruYear = input(defval = 2112, title = "Thru Year", type = input.integer, minval = 1970)
showDate = input(defval = true, title = "Show Date Range", type = input.bool)
start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window
finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window
window() => true
// DMI and MACD inputs and calculations
[pos_dm, neg_dm, avg_dm] = dmi(14, 14)
[macd, macd_signal, macd_histogram] = macd(close, 12, 26, 9)
Take_profit= ((input (3))/100)
longTakeProfit = strategy.position_avg_price * (1 + Take_profit)
length = input(20, "Length", minval = 2)
src = input(close, "Source")
factor = input(2.0, "vStop Multiplier", minval = 0.25, step = 0.25)
volStop(src, atrlen, atrfactor) =>
var max = src
var min = src
var uptrend = true
var stop = 0.0
atrM = nz(atr(atrlen) * atrfactor, tr)
max := max(max, src)
min := min(min, src)
stop := nz(uptrend ? max(stop, max - atrM) : min(stop, min + atrM), src)
uptrend := src - stop >= 0.0
if uptrend != nz(uptrend[1], true)
max := src
min := src
stop := uptrend ? max - atrM : min + atrM
[stop, uptrend]
[vStop, uptrend] = volStop(src, length, factor)
closeLong = close > longTakeProfit or crossunder(close, vStop)
//Entry
strategy.entry(id="long", long = true, when = crossover(macd, macd_signal) and pos_dm > neg_dm and window())
//Exit
strategy.close("long", when = closeLong and window())