اشارے کی حکمت عملی کے مجموعے میں پیشرفت کا رجحان

مصنف:چاؤ ژانگ، تاریخ: 2024-02-20 11:38:22
ٹیگز:

img

جائزہ

اس حکمت عملی کا نام اسٹریٹیجی آف انڈیکیٹرز کمبی نیشن بریکنگ ٹرینڈ ٹریکنگ ہے۔ یہ مارکیٹ کے رجحانات کی سمتوں کی نشاندہی کرنے اور رجحانات کی نگرانی کے عمل کو انجام دینے کے لئے مختلف اشارے کو جوڑتا ہے۔ اہم اجزاء میں شامل ہیں:

  1. مارکیٹ کے اہم رجحان کا اندازہ کرنے کے لئے ویو ٹرینڈ اشارے کا استعمال کرتے ہوئے
  2. آر ایس آئی اور ایم ایف آئی اشارے کے ذریعہ کچھ جھوٹے سگنل کو فلٹر کرنا
  3. EMA اشارے کے ساتھ مخصوص آپریشنل سمتوں کا تعین
  4. رجحان پر عمل پیرا ہونے کو یقینی بنانے کے لئے جدید ترین ٹریکنگ کے طریقہ کار کے ساتھ مارکیٹ میں داخل ہونا

حکمت عملی کا اصول

حکمت عملی بنیادی طور پر اہم رجحان کی سمت اور طاقت کا اندازہ کرتی ہے ، اور طویل اور مختصر کے دو طرفہ تجارت کا تعین کرتی ہے۔ آپریٹنگ کے مخصوص اصول مندرجہ ذیل ہیں۔

طویل سگنل:

  1. قیمت 200 دن کے ای ایم اے سے اوپر ہے، جو ایک بیل مارکیٹ کی نشاندہی کرتی ہے
  2. قیمت 50 دن کے EMA کے ارد گرد واپس کھینچتی ہے
  3. لہر رجحان اوپر کی طرف رجحان میں الٹ جاتا ہے اور ایک خرید سگنل ظاہر ہوتا ہے
  4. آر ایس آئی اور ایم ایف آئی دونوں ہی زیادہ خریدے ہوئے دکھاتے ہیں
  5. 3 مسلسل K لائنیں 50 دن کے EMA کو کامیابی کے ساتھ توڑتی ہیں ، جو ایک اوپر کی طرف کی پیشرفت کی نشاندہی کرتی ہیں

مختصر سگنل: طویل سگنل کے برعکس

منافع اور سٹاپ نقصان: دو اختیارات: سب سے کم قیمت/سب سے زیادہ قیمت سٹاپ نقصان، ATR سٹاپ نقصان

فوائد کا تجزیہ

اس حکمت عملی کے مندرجہ ذیل فوائد ہیں:

  1. اہم رجحان کا تعین کرنے اور جھوٹے بریکآؤٹس سے بچنے کے لئے متعدد اشارے کو ضم کرتا ہے
  2. آپریشنل سمت کا تعین کرنے کے لئے ای ایم اے کو اپناتا ہے ، رجحانات پر عمل کرنا آسان ہے
  3. ٹریلنگ سٹاپ نقصان کا طریقہ کار پائیدار منافع حاصل کرتا ہے
  4. دونوں طویل اور مختصر جانے کے قابل، دونوں سمتوں میں مارکیٹ کی پیروی

خطرے کا تجزیہ

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

  1. اشارے سے غلط سگنل کا امکان
  2. سٹاپ نقصان کا نقطہ مقرر بہت چھوٹا، سٹاپ نقصان کا خطرہ بڑھتا ہے
  3. تجارت کی اعلی تعدد سے تجارت کی فیسوں سے پوشیدہ نقصان ہوتا ہے

مندرجہ بالا خطرات کو کم کرنے کے لئے، مندرجہ ذیل پہلوؤں میں اصلاح کی جا سکتی ہے:

  1. غلط سگنل فلٹر کرنے کے لئے اشارے کے پیرامیٹرز کو ایڈجسٹ کریں
  2. مناسب طریقے سے سٹاپ نقصان کا نقطہ کھولیں
  3. تجارتی تعدد کو کم کرنے کے لئے اشارے کے پیرامیٹرز کو بہتر بنائیں

اصلاح کی ہدایات

کوڈ کی سطح سے، اس حکمت عملی کی اہم اصلاح کی سمتوں میں شامل ہیں:

  1. پیرامیٹرز کے بہترین مجموعہ کو تلاش کرنے کے لئے لہر رجحان، آر ایس آئی اور ایم ایف آئی کے پیرامیٹرز کو ایڈجسٹ کرنا
  2. مختلف EMA سائیکل پیرامیٹرز کی کارکردگی کی جانچ
  3. بہترین ترتیب حاصل کرنے کے لئے منافع لینے اور سٹاپ نقصان کے خطرے اور فائدہ کے تناسب کے عوامل کو ایڈجسٹ کرنا

پیرامیٹرز کی ایڈجسٹمنٹ اور ٹیسٹنگ کے ذریعے، حکمت عملی کو کم کرنے اور خطرات کو کم کرنے کے دوران واپسی کو زیادہ سے زیادہ کر سکتا ہے.

نتیجہ

حکمت عملی میں اہم رجحان کی سمت کا تعین کرنے کے لئے متعدد اشارے شامل ہیں ، ای ایم اے اشارے کو مخصوص آپریشن سگنل کے طور پر استعمال کرتا ہے ، اور منافع میں مقفل ہونے کے لئے ٹریلنگ اسٹاپ نقصان کا استعمال کرتا ہے۔ پیرامیٹر کی اصلاح کے ذریعے ، نسبتا good اچھے مستحکم منافع حاصل کیے جاسکتے ہیں۔ لیکن کچھ سسٹم کے خطرات کو بھی نوٹ کرنا چاہئے ، اشارے کی تاثیر اور مارکیٹ کے ماحول میں ہونے والی تبدیلیوں کی مسلسل نگرانی کی ضرورت ہے۔


/*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

مزید