Wave Trend اور VWMA پر مبنی رجحان کی پیروی کرنے والی مقداری حکمت عملی


تخلیق کی تاریخ: 2024-01-26 17:35:29 آخر میں ترمیم کریں: 2024-01-26 17:35:29
کاپی: 0 کلکس کی تعداد: 894
1
پر توجہ دیں
1617
پیروکار

Wave Trend اور VWMA پر مبنی رجحان کی پیروی کرنے والی مقداری حکمت عملی

جائزہ

اس حکمت عملی میں ویو ٹرینڈ اوسیلیٹر اور وی ڈبلیو ایم اے اشارے شامل ہیں ، جس سے ایک رجحان سے باخبر رہنے کی ایک مقداری تجارت کی حکمت عملی حاصل ہوتی ہے۔ اس حکمت عملی سے مارکیٹ کے رجحانات کی نشاندہی کی جاسکتی ہے ، اور ویو ٹرینڈ اوسیلیٹر کے اشارے پر مبنی خرید و فروخت کی جاسکتی ہے۔ اس کے علاوہ ، تجارت کا سائز وی ڈبلیو ایم اے اشارے کے اشارے پر مبنی ہے۔

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

یہ حکمت عملی بنیادی طور پر مندرجہ ذیل دو اشارے پر مبنی ہے۔

  1. Wave Trend Oscillator: یہ ایک ایسا اشارے ہے جو LazyBear نے TradingView میں پورٹ کیا ہے جو قیمتوں میں اتار چڑھاؤ کی لہر کی لہر کو پہچانتا ہے اور خرید / فروخت کا اشارہ پیدا کرتا ہے۔ اس کا حساب کتاب کرنے کا طریقہ یہ ہے: پہلے قیمت کی اوسط قیمت کا حساب لگائیں۔ پھر ای ایم اے کا حساب لگائیں۔*d) ، سی آئی کا ای ایم اے ویو ٹرینڈ ((wt1) ہے ، اور ڈبلیو ٹی 1 کا 4 سیکنڈ کا ایس ایم اے ڈبلیو ٹی 2 ہے۔ جب ڈبلیو ٹی 1 کو ڈبلیو ٹی 2 کے ذریعہ خریدنے کا اشارہ دیا جاتا ہے ، تو اسے فروخت کرنے کا اشارہ دیا جاتا ہے۔

  2. وی ڈبلیو ایم اے اشارے: یہ ایک وزنی متحرک اوسط ہے جس میں ٹرانزیکشن کی مقدار کو مدنظر رکھا گیا ہے۔ قیمتوں کے مطابق VWMABands (VWMA کے اوپر اور نیچے کی ٹریک) کے اندر یا باہر ، + 1 (کثیر سر) ، 0 (غیر جانبدار) یا - 1 (خالی سر) سگنل پیدا ہوتا ہے۔

ویو ٹرینڈ سگنل کے مطابق خرید و فروخت کا وقت طے کریں۔ اور وی ڈبلیو ایم اے اشارے کے مطابق کثیر خلائی سگنل کے مطابق ہر تجارت کی مخصوص تعداد طے کریں۔

اسٹریٹجک فوائد

  • دونوں اشارے کے اشارے کے ساتھ فیصلہ سازی کی درستگی میں اضافہ
  • VWMA اشارے کی بنیاد پر ، مارکیٹ کی طاقت کا موازنہ کیا جاسکتا ہے
  • اہم خبروں کے واقعات میں شدید اتار چڑھاو سے بچنے کے لئے اپنی مرضی کے مطابق ٹرانزیکشن ٹائم فریم
  • VWMA سگنل کے مطابق تجارت کی تعداد کو ایڈجسٹ کریں تاکہ تجارت کا خطرہ کم کیا جاسکے

اسٹریٹجک رسک

  • Wave Trend اشارے غلط سگنل پیدا کرسکتے ہیں
  • VWMA اشاریہ کو متاثر کرنے کے لئے ناقابل یقین ترسیل کے اعداد و شمار
  • اشارے کے حساب کے لئے طویل تاریخ کے اعداد و شمار کی ضرورت ہے
  • نقصان کو روکنے کی حکمت عملی پر غور نہیں کیا

اصلاح کی سمت

  • مختلف پیرامیٹرز کے امتزاج کی جانچ کریں اور بہترین پیرامیٹرز تلاش کریں
  • زیادہ سے زیادہ سٹاپ نقصان کی حکمت عملی
  • دوسرے اشارے کے ساتھ مل کر سگنل فلٹرنگ پر غور کریں
  • مختلف ٹرانزیکشن ٹائم فریم کی ترتیبات کی جانچ
  • متحرک ایڈجسٹمنٹ ٹریڈنگ کی تعداد کا حساب کتاب کرنے کا طریقہ

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2023-12-26 00:00:00
end: 2024-01-25 00:00:00
period: 1h
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/
//
// Created by jadamcraig
// 
// This strategy benefits from extracts taken from the following
// studies/authors.  Thank you for developing and sharing your ideas in an open
// way!
//  * Wave Trend Strategy by thomas.gigure
//  * cRSI + Waves Strategy with VWMA overlay by Dr_Roboto
//
//@version=4

//==============================================================================
//==============================================================================
overlay = true  // plots VWMA (need to close and re-add)
//overlay = false // plots Wave Trend (need to close and re-add)

strategy("Wave Trend w/ VWMA overlay", overlay=overlay)
     
baseQty = input(defval=1, title="Base Quantity", type=input.float, minval=1)

useSessions = input(defval=true, title="Limit Signals to Trading Sessions?")
sess1_startHour = input(defval=8, title="Session 1: Start Hour",
     type=input.integer, minval=0, maxval=23)
sess1_startMinute = input(defval=25, title="Session 1: Start Minute",
     type=input.integer, minval=0, maxval=59)
sess1_stopHour = input(defval=10, title="Session 1: Stop Hour",
     type=input.integer, minval=0, maxval=23)
sess1_stopMinute = input(defval=25, title="Session 1: Stop Minute",
     type=input.integer, minval=0, maxval=59)
sess2_startHour = input(defval=12, title="Session 2: Start Hour",
     type=input.integer, minval=0, maxval=23)
sess2_startMinute = input(defval=55, title="Session 2: Start Minute",
     type=input.integer, minval=0, maxval=59)
sess2_stopHour = input(defval=14, title="Session 2: Stop Hour",
     type=input.integer, minval=0, maxval=23)
sess2_stopMinute = input(defval=55, title="Session 2: Stop Minute",
     type=input.integer, minval=0, maxval=59)
sess1_closeAll = input(defval=false, title="Close All at End of Session 1")
sess2_closeAll = input(defval=true, title="Close All at End of Session 2")

//==============================================================================
//==============================================================================
//                    Volume Weighted Moving Average (VWMA)
//==============================================================================
//==============================================================================
plotVWMA = overlay

// check if volume is available for this equity
useVolume = input(
     title="VWMA: Use Volume (uncheck if equity does not have volume)",
     defval=true)

vwmaLen = input(defval=21, title="VWMA: Length", type=input.integer, minval=1,
     maxval=200)
vwma = vwma(close, vwmaLen)
vwma_high = vwma(high, vwmaLen)
vwma_low = vwma(low, vwmaLen)

if not(useVolume)
    vwma := wma(close, vwmaLen)
    vwma_high := wma(high, vwmaLen)
    vwma_low := wma(low, vwmaLen)

// +1 when above, -1 when below, 0 when inside
vwmaSignal(priceOpen, priceClose, vwmaHigh, vwmaLow) =>
    sig = 0
    color = color.gray
    if priceClose > vwmaHigh
        sig := 1
        color := color.green
    else if priceClose < vwmaLow
        sig := -1
        color := color.red
    else
        sig := 0
        color := color.gray
    [sig,color]

[vwma_sig, vwma_color] = vwmaSignal(open, close, vwma_high, vwma_low)

priceAboveVWMA = vwma_sig ==  1 ? true : false
priceBelowVWMA = vwma_sig == -1 ? true : false
// plot(priceAboveVWMA?2.0:0,color=color.blue)
// plot(priceBelowVWMA?2.0:0,color=color.maroon)

//bandTrans = input(defval=70, title="VWMA Band Transparancy (100 invisible)",
//     type=input.integer, minval=0, maxval=100)
//fillTrans = input(defval=70, title="VWMA Fill Transparancy (100 invisible)",
//     type=input.integer, minval=0, maxval=100)
bandTrans = 60
fillTrans = 60

// ***** Plot VWMA *****
highband = plot(plotVWMA?fixnan(vwma_high):na, title='VWMA High band', 
     color = vwma_color, linewidth=1, transp=bandTrans)
lowband = plot(plotVWMA?fixnan(vwma_low):na, title='VWMA Low band',
     color = vwma_color, linewidth=1, transp=bandTrans)
fill(lowband, highband, title='VWMA Band fill', color=vwma_color,
     transp=fillTrans)
plot(plotVWMA?vwma:na, title='VWMA', color = vwma_color, linewidth=3,
     transp=bandTrans)

//==============================================================================
//==============================================================================
//                                  Wave Trend
//==============================================================================
//==============================================================================
plotWaveTrend = not(overlay)

n1 = input(10, "Wave Trend: Channel Length")
n2 = input(21, "Wave Trend: Average Length")
obLevel1 = input(60, "Wave Trend: Over Bought Level 1")
obLevel2 = input(53, "Wave Trend: Over Bought Level 2")
osLevel1 = input(-60, "Wave Trend: Over Sold Level 1")
osLevel2 = input(-53, "Wave Trend: Over Sold Level 2")

ap = hlc3 
esa = ema(ap, n1)
d = ema(abs(ap - esa), n1)
ci = (ap - esa) / (0.015 * d)
tci = ema(ci, n2)
 
wt1 = tci
wt2 = sma(wt1,4)

plot(plotWaveTrend?0:na, color=color.gray)
plot(plotWaveTrend?obLevel1:na, color=color.red)
plot(plotWaveTrend?osLevel1:na, color=color.green)
plot(plotWaveTrend?obLevel2:na, color=color.red, style=3)
plot(plotWaveTrend?osLevel2:na, color=color.green, style=3)

plot(plotWaveTrend?wt1:na, color=color.green)
plot(plotWaveTrend?wt2:na, color=color.red, style=3)
plot(plotWaveTrend?wt1-wt2:na, color=color.blue, transp=80)

//==============================================================================
//==============================================================================
//                               Order Management
//==============================================================================
//==============================================================================
// Define Long and Short Conditions
longCondition = crossover(wt1, wt2)
shortCondition = crossunder(wt1, wt2)

// Define Quantities
orderQty = baseQty * 2
if (longCondition)
    if (vwma_sig == 1)
        if ( strategy.position_size >= (baseQty * 4 * -1) and 
             strategy.position_size < 0 )
            orderQty := baseQty * 4 + abs(strategy.position_size)
        else
            orderQty := baseQty * 4
    else if (vwma_sig == 0)
        if ( strategy.position_size >= (baseQty * 2 * -1) and 
             strategy.position_size < 0 )
            orderQty := baseQty * 2 + abs(strategy.position_size)
        else
            orderQty := baseQty * 2
    else if (vwma_sig == -1)
        if ( strategy.position_size >= (baseQty * 1 * -1) and 
             strategy.position_size < 0 )
            orderQty := baseQty * 1 + abs(strategy.position_size)
        else
            orderQty := baseQty * 1
else if (shortCondition)
    if (vwma_sig == -1)
        if ( strategy.position_size <= (baseQty * 4) and 
             strategy.position_size > 0 )
            orderQty := baseQty * 4 + strategy.position_size
        else
            orderQty := baseQty * 4
    else if (vwma_sig == 0)
        if ( strategy.position_size <= (baseQty * 2) and 
             strategy.position_size > 2 )
            orderQty := baseQty * 2 + strategy.position_size
        else
            orderQty := baseQty * 2
    else if (vwma_sig == 1)
        if ( strategy.position_size <= (baseQty * 1) and 
             strategy.position_size > 0 )
            orderQty := baseQty * 1 + strategy.position_size
        else
            orderQty := baseQty * 1

// Determine if new trades are permitted
newTrades = false
if (useSessions)
    if ( hour == sess1_startHour and minute >= sess1_startMinute )
        newTrades := true
    else if ( hour > sess1_startHour and hour < sess1_stopHour )
        newTrades := true
    else if ( hour == sess1_stopHour and minute < sess1_stopMinute )
        newTrades := true
    else if ( hour == sess2_startHour and minute >= sess2_startMinute )
        newTrades := true
    else if ( hour > sess2_startHour and hour < sess2_stopHour )
        newTrades := true
    else if ( hour == sess2_stopHour and minute < sess2_stopMinute )
        newTrades := true
    else
        newTrades := false
else
    newTrades := true

// Long Signals
if ( longCondition  )
    strategy.order("Buy", strategy.long, orderQty)

// Short Signals
if ( shortCondition  )
    strategy.order("Sell", strategy.short, orderQty)

// Close open position at end of Session 1, if enabled
if (sess1_closeAll )
    strategy.close_all()
    
// Close open position at end of Session 2, if enabled
if (sess2_closeAll  )
    strategy.close_all()