
اس حکمت عملی کا نام پیلیٹ اشارے کا مجموعہ ہے۔ اس حکمت عملی میں متعدد اشارے استعمال کیے جاتے ہیں ، مارکیٹ کے رجحان کی سمت کی نشاندہی کرتے ہیں ، رجحان سے باخبر رہنے کی کارروائی کرتے ہیں۔ اس میں بنیادی طور پر درج ذیل حصے شامل ہیں:
یہ حکمت عملی بنیادی طور پر بڑے رجحانات کی سمت اور طاقت کا فیصلہ کرتی ہے ، اور کثیر فضائی دو طرفہ تجارت قائم کرتی ہے۔ اس کے عملی اصول درج ذیل ہیں:
ملٹی ہیڈ انٹری سگنل:
خالی سر داخل ہونے کا اشارہ: کثیر رخا داخلہ سگنل کے برعکس
سٹاپ نقصان کا طریقہ: دو اختیارات پیش کیے جاتے ہیں: کم از کم قیمت / زیادہ سے زیادہ قیمت کا نقصان ، اے ٹی آر کا نقصان
یہ حکمت عملی مندرجہ ذیل فوائد رکھتی ہے:
اس حکمت عملی کے کچھ خطرات بھی ہیں:
مندرجہ بالا خطرات کو کم کرنے کے لئے، آپ کو مندرجہ ذیل پہلوؤں میں بہتر بنانے کی ضرورت ہے:
کوڈ کی سطح پر، اس حکمت عملی میں بہتری کی اہم سمتوں میں شامل ہیں:
پیرامیٹرز کو ایڈجسٹ کرنے اور جانچنے سے حکمت عملی کو واپسی اور خطرے کو کم کرنے کے ساتھ ساتھ منافع کو زیادہ سے زیادہ کرنے کی اجازت ملتی ہے۔
اس حکمت عملی میں بڑے رجحانات کی سمت کا تعین کرنے کے لئے متعدد اشارے کا استعمال کیا گیا ہے ، ای ایم اے اشارے کو ایک مخصوص آپریشن سگنل کے طور پر استعمال کیا گیا ہے ، اور ٹریکنگ اسٹاپ نقصان کا طریقہ استعمال کرکے منافع کو مقفل کیا گیا ہے۔ پیرامیٹرز کی اصلاح کے ذریعہ ، بہتر مستحکم منافع حاصل کیا جاسکتا ہے۔ تاہم ، کچھ سسٹم رسک پر بھی توجہ دی جانی چاہئے ، اشارے کے اثر اور مارکیٹ کے ماحول میں تبدیلیوں پر مستقل توجہ دینے کی ضرورت ہے۔
/*backtest
start: 2023-02-13 00:00:00
end: 2024-02-19 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
//Lowest Low/ Highest High & ATR Stop Loss/ Take Profit
//Optimized for the 30 minutes chart
strategy(title="TradePro's Trading Idea Cipher B+ Divergence EMA Pullback Strategy", shorttitle="WT MFI RSI EMA PB STRAT", overlay = true, pyramiding = 0, max_bars_back=5000, calc_on_order_fills = false, commission_type = strategy.commission.percent, commission_value = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital=5000, currency=currency.USD)
// { Time Range
FromMonth=input(defval=1,title="FromMonth",minval=1,maxval=12)
FromDay=input(defval=1,title="FromDay",minval=1,maxval=31)
FromYear=input(defval=2020,title="FromYear",minval=2016)
ToMonth=input(defval=1,title="ToMonth",minval=1,maxval=12)
ToDay=input(defval=1,title="ToDay",minval=1,maxval=31)
ToYear=input(defval=9999,title="ToYear",minval=2017)
start=timestamp(FromYear,FromMonth,FromDay,00,00)
finish=timestamp(ToYear,ToMonth,ToDay,23,59)
window()=>true
// See if this bar's time happened on/after start date
afterStartDate = time >= start and time<=finish?true:false
zeroline = 0
// } Time Range
// { Wavetrend, RSI, MFI
// WaveTrend
cl = input(12, "Channel Length")
al = input(12, "Average Length")
overbought = input(53, title = 'WT Overbought Level 1', type = input.integer)
oversold = input(-53, title = 'WT Oversold Level 1', type = input.integer)
ap = hlc3
esa = ema(ap, cl)
d = ema(abs(ap - esa), cl)
ci = (ap - esa) / (0.015 * d)
tci = ema(ci, al)
wt1 = tci
wt2 = sma(wt1,4)
wtOs = wt2 <= oversold
wtOb = wt2 >= overbought
wtX = cross(wt1, wt2)
wtUp = wt2 - wt1 <= 0
wtDown = wt2 - wt1 >= 0
buySignal = wtX and wtOs and wtUp
sellSignal = wtX and wtOb and wtDown
// RSI & MFI
rsiMFIPosY = input(2, title = 'MFI Area Y Pos', type = input.float)
rsiMFIperiod = input(80,title = 'MFI Period', type = input.integer)
rsiMFIMultiplier = input(200, title = 'MFI Area multiplier', type = input.float)
f_rsimfi(_period, _multiplier, _tf) => security(syminfo.tickerid, _tf, sma(((close - open) / (high - low)) * _multiplier, _period) - rsiMFIPosY)
rsiMFI = f_rsimfi(rsiMFIperiod, rsiMFIMultiplier, timeframe.period)
// } Wavetrend, RSI, MFI
// { EMA
emasrc = close
res = input(title="EMA Timeframe", type=input.resolution, defval="30")
len1 = input(title="EMA1 Length", type=input.integer, defval=200)
col1 = color.yellow
len2 = input(title="EMA2 Length", type=input.integer, defval=50)
col2 = color.blue
// Calculate EMA
ema1 = ema(emasrc, len1)
emaSmooth1 = security(syminfo.tickerid, res, ema1, barmerge.gaps_off, barmerge.lookahead_off)
ema2 = ema(emasrc, len2)
emaSmooth2 = security(syminfo.tickerid, res, ema2, barmerge.gaps_off, barmerge.lookahead_off)
// Draw EMA
plot(emaSmooth1, title="EMA1", linewidth=1, color=col1)
plot(emaSmooth2, title="EMA2", linewidth=1, color=col2)
// } EMA
// { Long Entry
enablelong = input(true, title="Enable long?")
//Long Signal
upcondition = close > emaSmooth1
wavetrendlong = wt1 and wt2 < zeroline
mfilong = rsiMFI > 0
emapblong1 = (close > emaSmooth2) and (close[1] < emaSmooth2[1])
emapblong2 = ((close[2] > emaSmooth2[2]) and (close[3] > emaSmooth2[3]) and (close[4] > emaSmooth2[4])) or ((close[5] > emaSmooth2[5]) and (close[6] > emaSmooth2[6]) and (close[7] > emaSmooth2[7])) or ((close[8] > emaSmooth2[8]) and (close[9] > emaSmooth2[9]) and (close[10] > emaSmooth2[10]))
longcondition = upcondition and wavetrendlong and buySignal and mfilong and emapblong1 and emapblong2
//strategy buy long
if (longcondition) and (afterStartDate) and strategy.opentrades < 1 and (enablelong == true)
strategy.entry("long", strategy.long)
plotshape(longcondition, style=shape.arrowup,
location=location.abovebar, color=color.green)
// } Long Entry
// { Short Entry
enableshort = input(true, title="Enable short?")
//Short Signal
downcondition = close < emaSmooth1
wavetrendshort = wt1 and wt2 > zeroline
mfishort = rsiMFI < 0
emapbshort1 = (close < emaSmooth2) and (close[1] > emaSmooth2[1])
emapbshort2 = ((close[2] < emaSmooth2[2]) and (close[3] < emaSmooth2[3]) and (close[4] < emaSmooth2[4])) or ((close[5] < emaSmooth2[5]) and (close[6] < emaSmooth2[6]) and (close[7] < emaSmooth2[7])) or ((close[8] < emaSmooth2[8]) and (close[9] < emaSmooth2[9]) and (close[10] < emaSmooth2[10]))
shortcondition = downcondition and wavetrendshort and sellSignal and mfishort and emapbshort1 and emapbshort2
//strategy buy short
if (shortcondition) and (afterStartDate) and strategy.opentrades < 1 and (enableshort == true)
strategy.entry("short", strategy.short)
plotshape(shortcondition, style=shape.arrowdown,
location=location.belowbar, color=color.red)
// } Short Entry
// { Exit Conditions
bought = strategy.position_size[1] < strategy.position_size
sold = strategy.position_size[1] > strategy.position_size
barsbought = barssince(bought)
barssold = barssince(sold)
slbuffer = input(title="SL Buffer", type=input.float, step=0.1, defval=0)
// } Exit Conditions
// { Lowest Low/ Highes High Exit Condition
enablelowhigh = input(false, title="Enable lowest low/ highest high exit?")
//Lowest Low LONG
profitfactorlong = input(title="ProfitfactorLong", type=input.float, step=0.1, defval=2)
loLen = input(title="Lowest Low Lookback", type=input.integer,
defval=50, minval=2)
stop_level_long = lowest(low, loLen)[1]
if enablelowhigh == true and strategy.position_size>0
profit_level_long = strategy.position_avg_price + ((strategy.position_avg_price - stop_level_long[barsbought])*profitfactorlong) + slbuffer
strategy.exit(id="TP/ SL", stop=stop_level_long[barsbought] - slbuffer, limit=profit_level_long)
//Lowest Low SHORT
profitfactorshort = input(title="ProfitfactorShort", type=input.float, step=0.1, defval=2)
highLen = input(title="highest high lookback", type=input.integer,
defval=50, minval=2)
stop_level_short = highest(high, highLen)[1]
if enablelowhigh == true and strategy.position_size<0
profit_level_short = strategy.position_avg_price - ((stop_level_short[barssold] - strategy.position_avg_price)*profitfactorshort) - slbuffer
strategy.exit(id="TP/ SL", stop=stop_level_short[barssold] + slbuffer, limit=profit_level_short)
// } Lowest Low/ Highes High Exit Condition
// { ATR Take Profit/ Stop Loss
enableatr = input(true, title="Enable ATR exit?")
atrprofitfactorlong = input(title="ATR Profitfactor Long", type=input.float, step=0.1, defval=6)
atrstopfactorlong = input(title="ATR Stopfactor Long", type=input.float, step=0.1, defval=5)
atrprofitfactorshort = input(title="ATR Profitfactor Short", type=input.float, step=0.1, defval=3)
atrstopfactorshort = input(title="ATR Stopfactor Short", type=input.float, step=0.1, defval=5)
//ATR
lengthATR = input(title="ATR Length", defval=11, minval=1)
atr = atr(lengthATR)
//LONG EXIT
if (afterStartDate) and ((enableatr == true) and (strategy.opentrades > 0))
barsbought1 = barssince(bought)
profit_level = strategy.position_avg_price + (atr*atrprofitfactorlong)
stop_level = strategy.position_avg_price - (atr*atrstopfactorlong)
strategy.exit("Take Profit/ Stop Loss", "long", stop=stop_level[barsbought1], limit=profit_level[barsbought1])
//SHORT EXIT
if (afterStartDate) and ((enableatr == true) and (strategy.opentrades > 0))
barssold1 = barssince(sold)
profit_level = strategy.position_avg_price - (atr*atrprofitfactorshort)
stop_level = strategy.position_avg_price + (atr*atrstopfactorshort)
strategy.exit("Take Profit/ Stop Loss", "short", stop=stop_level[barssold1], limit=profit_level[barssold1])
// } ATR Take Profit/ Stop Loss