Нужна помощь в построении индикатора Monthly Magi c Trend на дневном графике - PullRequest
0 голосов
/ 13 апреля 2020

Нужна помощь для построения Monthly Magi c Индикатор тренда на дневном графике. Хотя месячный график на месячном таймфрейме является гладким, без многократных разворотов к красному и зеленому, но при попытке нанести этот месячный индикатор на дневной таймфрейм, вы увидите много разворотов в красном и зеленом. Индикатор тренда Magi c использует для расчета функцию CCI. Любая помощь приветствуется. Я хочу построить ежемесячный чат на дневном таймфрейме точно, я вижу месячный график, который я вижу в месячном таймфрейме. Вот мой код

//@version=2
study("Trend Magic PS Multiple",overlay=true)

MTmon = input(true, title="Monthly")
MTwek = input(false, title="Weekly")
MTdai = input(false, title="Daily")

//Monthly

CCI = input(25)
ATR = input(5)
MultiplierM=input(4,title='ATR Multiplier Monthly')
MultiplierW=input(3,title='ATR Multiplier Weekly')
MultiplierD=input(0,title='ATR Multiplier Daily')
original=input(true,title='original coloring')
//thisCCI = security(tickerid, "M", close)

// if (MTmon == true) 
thisCCI = cci(security(tickerid, "M", close), CCI)
lastCCI = nz(thisCCI[1])
bufferDn= high + MultiplierM * sma(tr,ATR)
bufferUp= low - MultiplierM * sma(tr,ATR)
if (thisCCI >= 0 and lastCCI < 0) 
    bufferUp := bufferDn[1]
if (thisCCI <= 0 and lastCCI > 0) 
    bufferDn := bufferUp[1]

if (thisCCI >= 0)
    if (bufferUp < bufferUp[1])
        bufferUp := bufferUp[1]
else
    if (thisCCI <= 0)
        if (bufferDn > bufferDn[1])
            bufferDn := bufferDn[1]

x=thisCCI >= 0 ?bufferUp:thisCCI <= 0 ?bufferDn:x[1]
swap=x>x[1]?1:x<x[1]?-1:swap[1]
swap2=swap==1?lime:red
swap3=thisCCI >=0 ?lime:red
swap4=original?swap3:swap2


plot(MTmon and x ? x : na, title="Monthly", color=swap4,transp=0,linewidth=3)


// if MTwek == true 

thisCCIw = cci(security(tickerid, "W", close), CCI)
lastCCIw = nz(thisCCIw[1])
bufferDnw= high + MultiplierW * sma(tr,ATR)
bufferUpw= low - MultiplierW * sma(tr,ATR)
if (thisCCIw >= 0 and lastCCIw < 0) 
    bufferUpw := bufferDnw[1]
if (thisCCIw <= 0 and lastCCIw > 0) 
    bufferDnw := bufferUpw[1]

if (thisCCIw >= 0)
    if (bufferUpw < bufferUpw[1])
        bufferUpw := bufferUpw[1]
else
    if (thisCCIw <= 0)
        if (bufferDnw > bufferDnw[1])
            bufferDnw := bufferDnw[1]

xw=thisCCIw >= 0 ?bufferUpw:thisCCIw <= 0 ?bufferDnw:xw[1]
swapw=xw>xw[1]?1:xw<xw[1]?-1:swapw[1]
swap2w=swapw==1?lime:red
swap3w=thisCCIw >=0 ?lime:red
swap4w=original?swap3w:swap2w

// plot(xw,color=swap4w,transp=0,linewidth=3)
plot(MTwek and xw ? xw : na, title="Weekly", color=swap4w,transp=0,linewidth=3)

// if MTdai == true

thisCCId = cci(security(tickerid, "D", close), CCI)
lastCCId = nz(thisCCId[1])
bufferDnd= high + MultiplierD * sma(tr,ATR)
bufferUpd= low - MultiplierD * sma(tr,ATR)
if (thisCCId >= 0 and lastCCId < 0) 
    bufferUpd := bufferDnd[1]
if (thisCCId <= 0 and lastCCId > 0) 
    bufferDnd := bufferUpd[1]

if (thisCCId >= 0)
    if (bufferUpd < bufferUpd[1])
        bufferUpd := bufferUpd[1]
else
    if (thisCCId <= 0)
        if (bufferDnd > bufferDnd[1])
            bufferDnd := bufferDnd[1]

xd=thisCCId >= 0 ?bufferUpd:thisCCId <= 0 ?bufferDnd:xd[1]
swapd=xd>xd[1]?1:xd<xd[1]?-1:swapd[1]
swap2d=swapd==1?lime:red
swap3d=thisCCId >=0 ?lime:red
swap4d=original?swap3d:swap2d

// plot(xd,color=swap4d,transp=0,linewidth=3)
plot(MTdai and xd ? xd : na, title="Daily", color=swap4d,transp=0,linewidth=3)

1 Ответ

0 голосов
/ 14 апреля 2020

Вашему сценарию требуется как минимум порт v3 из-за его текущего использования security(), что приведет к предвзятому смещению в v2, а также может потребовать изменений в logi c. Если кто-то здесь не добровольно, у вас есть работа впереди вас. Если вы подумываете о найме кого-то, посмотрите на этих парней: https://www.pinecoders.com/resources/#trusted наемных программистов по найму

...