یہ حکمت عملی قیمتوں کے رجحانات اور زیادہ خریدنے / زیادہ فروخت کی صورتحال کا تعین کرنے کے لئے ویو ٹرینڈ اشارے کا استعمال کرتی ہے۔ یہ اشاروں کو فلٹر کرنے کے لئے آر ایس آئی اشارے کو یکجا کرتی ہے اور زیادہ خریدنے / زیادہ فروخت کی سطح پر مخالف رجحان کی کارروائی کرنے کے لئے رجحان کی پیروی کرنے کا طریقہ اپناتی ہے۔
حکمت عملی قیمت کی رجحان کی سمت کا تعین کرنے کے لئے ویو ٹرینڈ اشارے کا استعمال کرتی ہے۔ ویو ٹرینڈ اشارے کو رینبو اشارے کی بنیاد پر بہتر بنایا گیا ہے۔ یہ ہیکن ایشی حرکت پذیر اوسط اور قیمت کی مطلق قیمت کے درمیان فرق کا حساب لگاتے ہوئے قیمت کی رجحان کی سمت کا فیصلہ کرتا ہے۔ یہ اوور بک / اوور سیل حالات کا تعین کرنے کے لئے آر ایس آئی اشارے کو جوڑ کر تجارتی سگنل تیار کرتا ہے۔
خاص طور پر، حکمت عملی میں ویو ٹرینڈ فارمولا یہ ہے:
esa = ema(hlc3, 10)
d = ema(abs(hlc3 - esa), 10)
ci = (hlc3 - esa) / (0.015 * d)
wt = ema(ci, 21)
جہاں esa حساب کتاب شدہ ہیکن-اشی چلتی اوسط ہے ، d ہیکن-اشی چلتی اوسط اور قیمت کی مطلق قیمت کے درمیان فرق کا اوسط ہے۔ ci نام نہاد موافقت پذیر حد ہے ، جو قیمتوں کی اتار چڑھاؤ کی عکاسی کرتی ہے۔ wt سی آئی کا چلتا ہوا اوسط ہے ، جو قیمت کی رجحان کی سمت کا تعین کرتا ہے اور طویل اور مختصر کے لئے کلیدی اشارے ہے۔
RSI اشارے کا استعمال overbought / oversold حالات کا تعین کرنے کے لئے کیا جاتا ہے۔ کوڈ میں RSI حساب کتاب کا فارمولا یہ ہے:
rsiup = rma(max(change(close), 0), 14)
rsidown = rma(-min(change(close), 0), 14)
rsi = rsidown == 0 ? 100 : rsiup == 0 ? 0 : 100 - (100 / (1 + rsiup / rsidown))
اس کی معیاری قیمت 0-100 ہے۔ 70 سے اوپر زیادہ خریدا جاتا ہے اور 30 سے نیچے زیادہ فروخت ہوتا ہے۔
ان دونوں اشارے کے ساتھ مل کر ، جب آر ایس آئی 25 سے نیچے ہوتا ہے اور ویو ٹرینڈ -60 سے نیچے ہوتا ہے تو ، یہ طویل عرصے تک جانے کے لئے زیادہ فروخت ہوتا ہے۔ جب آر ایس آئی 75 سے اوپر ہوتا ہے اور ویو ٹرینڈ 60 سے اوپر ہوتا ہے تو ، یہ مختصر ہونے کے لئے زیادہ خرید جاتا ہے۔
اس حکمت عملی کے فوائد میں شامل ہیں:
کچھ خطرات بھی ہیں:
حل:
حکمت عملی کو مندرجہ ذیل سمتوں میں بہتر بنایا جاسکتا ہے:
سگنل کی درستگی کو بہتر بنانے کے لئے فیصلے کے اشارے کو تبدیل کریں یا شامل کریں ، جیسے MACD ، KD وغیرہ۔
مختلف مصنوعات کو ایڈجسٹ کرنے کے لئے پیرامیٹر کی ترتیبات کو بہتر بنائیں، مثال کے طور پر ہموار مدت کو ایڈجسٹ کریں.
ایک ہی نقصان کو کنٹرول کرنے کے لئے ٹریکنگ سٹاپ نقصان کی حکمت عملی شامل کریں، مثال کے طور پر فی صد سٹاپ نقصان، ٹریلنگ سٹاپ نقصان وغیرہ
مختلف پرامڈائڈنگ حکمت عملیوں پر غور کریں، مثال کے طور پر مقررہ مقدار کے بجائے مارٹنگیل.
عدلیہ کی درستگی کو بہتر بنانے کے لئے موافقت پذیر رینج پیرامیٹرز کو بہتر بنائیں.
حکمت عملی کا مجموعی خیال واضح ہے ، قیمت کے رجحانات کا تعین کرنے اور شور کو مؤثر طریقے سے فلٹر کرنے کے لئے اتار چڑھاؤ کے اشارے کا استعمال کرتے ہوئے۔ حکمت عملی کو زیادہ مضبوط بنانے کے لئے متعدد پہلوؤں میں اصلاح کی گنجائش ہے۔ پیرامیٹر ٹیوننگ کے ذریعے ، اسے مختلف مصنوعات کے مطابق بنایا جاسکتا ہے اور اس کی مزید براہ راست جانچ کے قابل ہے۔
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=2 strategy(title = "Noro's WaveTrender Strategy v1.0", shorttitle = "WaveTrender str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 10) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") usemar = input(false, defval = false, title = "Use Martingale") capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %") showarr = input(true, defval = true, title = "Show Arrows") fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") //RSI rsiup = rma(max(change(close), 0), 14) rsidown = rma(-min(change(close), 0), 14) rsi = rsidown == 0 ? 100 : rsiup == 0 ? 0 : 100 - (100 / (1 + rsiup / rsidown)) //WaveTrend esa = ema(hlc3, 10) d = ema(abs(hlc3 - esa), 10) ci = (hlc3 - esa) / (0.015 * d) wt = ema(ci, 21) //Body body = abs(close - open) abody = sma(body, 10) //Signals bar = close > open ? 1 : close < open ? -1 : 0 overs = rsi < 25 and wt < -60 overb = rsi > 75 and wt > 60 up1 = (strategy.position_size == 0 or close < strategy.position_avg_price) and overs and bar == -1 dn1 = (strategy.position_size == 0 or close > strategy.position_avg_price) and overb and bar == 1 exit = (strategy.position_size > 0 and overs == false) or (strategy.position_size < 0 and overb == false) //Arrows col = exit ? black : up1 or dn1 ? blue : na needup = up1 needdn = dn1 needexitup = exit and strategy.position_size < 0 needexitdn = exit and strategy.position_size > 0 plotarrow(showarr and needup ? 1 : na, colorup = blue, colordown = blue, transp = 0) plotarrow(showarr and needdn ? -1 : na, colorup = blue, colordown = blue, transp = 0) plotarrow(showarr and needexitup ? 1 : na, colorup = black, colordown = black, transp = 0) plotarrow(showarr and needexitdn ? -1 : na, colorup = black, colordown = black, transp = 0) //Trading profit = exit ? ((strategy.position_size > 0 and close > strategy.position_avg_price) or (strategy.position_size < 0 and close < strategy.position_avg_price)) ? 1 : -1 : profit[1] mult = usemar ? exit ? profit == -1 ? mult[1] * 2 : 1 : mult[1] : 1 lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 * mult : lot[1] if up1 if strategy.position_size < 0 strategy.close_all() strategy.entry("Long", strategy.long, needlong == false ? 0 : lot) if dn1 if strategy.position_size > 0 strategy.close_all() strategy.entry("Short", strategy.short, needshort == false ? 0 : lot) if exit strategy.close_all()