예스스탁
예스스탁 답변
2021-11-19 10:44:58
안녕하세요
예스스탁입니다.
작성하신 검색식은 이동평균(MAvg)과 Pmax의 교차입니다
아래와 같이 수정하시고 채우기 설정등을 하시면 됩니다.
input : Periods(10),Multiplier(3.0),length(10);
var : src(0),ATRv(0),valpha(0),VARr(0),vud1(0),vDD1(0),vUD(0),vDD(0),vCMO(0);
var : wwalpha(0),WWMA(0),zxLag(0),zxEMAData(0),ZLEMA(0);
var : lrc(0),lrc1(0),lrs(0),TSF(0);
var : MAvg(0),longStop(0),longStopPrev(0);
var : shortStop(0),shortStopPrev(0);
var : dir(0),PMax(0);
src = (h+l)/2;
atrv = atr(Periods);
valpha=2/(length+1);
vud1 = iff(src>src[1],src-src[1],0);
vdd1 = iff(src<src[1],src[1]-src,0);
vUD=AccumN(vud1,9);
vDD=AccumN(vdd1,9);
vCMO=(vUD-vDD)/(vUD+vDD);
VARr = 0;
VARr = (valpha*abs(vCMO)*src)+(1-valpha*abs(vCMO))*VARr[1];
wwalpha = 1/ length;
WWMA = 0;
WWMA = wwalpha*src + (1-wwalpha)*WWMA[1];
zxLag = IFf(length/2==round(length/2,0) , length/2 , (length - 1) / 2);
zxEMAData = (src + (src - src[zxLag]));
ZLEMA = ema(zxEMAData, length);
lrc = LRL(src, length);
lrc1 = lrc[1];
lrs = (lrc-lrc1);
TSF = Lrc+lrs;
MAvg = ma(src, length);
longStop = MAvg - Multiplier*atrv;
longStopPrev = IFf(isnan(longStop[1]) == true,longStop,longStop[1]);
longStop = iff(MAvg > longStopPrev , max(longStop, longStopPrev) , longStop);
shortStop = MAvg + Multiplier*atrv;
shortStopPrev = IFf(isnan(shortStop[1]) == true,shortStop,shortStop[1]);
shortStop = iff(MAvg < shortStopPrev , min(shortStop, shortStopPrev) , shortStop);
dir = 1;
dir = IFf(isnan(dir[1]) == true,dir,dir[1]);
dir = iff(dir == -1 and MAvg > shortStopPrev , 1 ,IFf(dir == 1 and MAvg < longStopPrev , -1 , dir));
PMax = IFf(dir == 1 , longStop , shortStop);
if MAvg > PMax Then
{
Plot1(9999999999,"라인1");
Plot2(0,"라인2");
}
Else
{
Plot1(0,"라인1");
Plot2(9999999999,"라인2");
}
즐거운 하루되세요
> 비듬싸순 님이 쓴 글입니다.
> 제목 : 문의드립니다
>
그림과같이 제가 작성한 수식은 맞지않는것같습니다
PMAX 아래이면 파랑이어야하는데 빨강이고 위에 막대표현된 검색식과는
다르게 나오고 있습니다
전문가님의 손길이 필요합니다
검색식입니다 추운데 감기 조심하시고 노고에 다시한번 감사 드립니다
input : Periods(10),Multiplier(3.0),length(10);
var : src(0),ATRv(0),valpha(0),VARr(0),vud1(0),vDD1(0),vUD(0),vDD(0),vCMO(0);
var : wwalpha(0),WWMA(0),zxLag(0),zxEMAData(0),ZLEMA(0);
var : lrc(0),lrc1(0),lrs(0),TSF(0);
var : MAvg(0),longStop(0),longStopPrev(0);
var : shortStop(0),shortStopPrev(0);
var : dir(0),PMax(0);
src = (h+l)/2;
atrv = atr(Periods);
valpha=2/(length+1);
vud1 = iff(src>src[1],src-src[1],0);
vdd1 = iff(src<src[1],src[1]-src,0);
vUD=AccumN(vud1,9);
vDD=AccumN(vdd1,9);
vCMO=(vUD-vDD)/(vUD+vDD);
VARr = 0;
VARr = (valpha*abs(vCMO)*src)+(1-valpha*abs(vCMO))*VARr[1];
wwalpha = 1/ length;
WWMA = 0;
WWMA = wwalpha*src + (1-wwalpha)*WWMA[1];
zxLag = IFf(length/2==round(length/2,0) , length/2 , (length - 1) / 2);
zxEMAData = (src + (src - src[zxLag]));
ZLEMA = ema(zxEMAData, length);
lrc = LRL(src, length);
lrc1 = lrc[1];
lrs = (lrc-lrc1);
TSF = Lrc+lrs;
MAvg = ma(src, length);
longStop = MAvg - Multiplier*atrv;
longStopPrev = IFf(isnan(longStop[1]) == true,longStop,longStop[1]);
longStop = iff(MAvg > longStopPrev , max(longStop, longStopPrev) , longStop);
shortStop = MAvg + Multiplier*atrv;
shortStopPrev = IFf(isnan(shortStop[1]) == true,shortStop,shortStop[1]);
shortStop = iff(MAvg < shortStopPrev , min(shortStop, shortStopPrev) , shortStop);
dir = 1;
dir = IFf(isnan(dir[1]) == true,dir,dir[1]);
dir = iff(dir == -1 and MAvg > shortStopPrev , 1 ,IFf(dir == 1 and MAvg < longStopPrev , -1 , dir));
PMax = IFf(dir == 1 , longStop , shortStop);
if CrossUp(MAvg,PMax) Then
Plot1(H,"검색",RED);
if CrossDown(MAvg,PMax) Then
Plot1(L,"검색",BLUE);