커뮤니티

지표식의 Plot에 대한 질문입니다.

프로필 이미지
램프
2024-10-29 21:43:52
614
글번호 184753
답변완료

첨부 이미지

안녕하세요. 수고 많으십니다. 아래는 인터넷에서 받은 슈퍼트렌드 지표입니다. input : factor(3), AtrPeriod(10); var : src(0), AtrV(0),upperBand(0),lowerBand(0), prevLowerBand(0), prevUpperBand(0); var : prevSuperTrend(0), superTrend(C), direction(0),alpha(0),source(0); if CurrentBar > 1 Then { src = (H+L)/2; // ATR계산(ATR 계산시 지수가중이동평균(rma)이용) alpha = 1 / AtrPeriod ; source = max(high - low, abs(high - close[1]), abs(low - close[1])); ATrV = alpha * source + (1 - alpha) * ATrV[1]; upperBand = src + factor * AtrV; lowerBand = src - factor * AtrV; prevLowerBand = lowerBand[1]; prevUpperBand = upperBand[1]; if lowerBand > prevLowerBand or close[1] < prevLowerBand Then lowerBand = lowerBand; Else lowerBand = prevLowerBand; if upperBand < prevUpperBand or close[1] > prevUpperBand Then upperBand = upperBand; Else upperBand = prevUpperBand; if C > UpperBand Then direction = 1; if C < LowerBand Then direction = -1; if direction == 1 Then supertrend = lowerband; Else supertrend = upperband; } if C > superTrend Then { Plot1(superTrend,"UpTrend", green, 0, 1); NoPlot(2); } Else { Plot2(superTrend,"DnTrend", red, 0, 1); NoPlot(1); } (End of quote) 제 질문은, 지표식 마지막 부분의 Plot 번호를 아래와 같이(1,2에서 3,4로) 바꾸면 지표 선의 모양이 이상하게 달라지는데, 바꾸기 전과 동일해야 되는 것이 아닌지요? 숫자를 바꾸려는 이유는 슈퍼트렌드 2개를 하나의 지표에서 나타내려고 함입니다. 첨부파일 1번은 오리지널 지표식에서 정상으로 표시되는 화면이고 2번은 Plot3,4로 바꿨을때 달라지는 화면입니다. 감사합니다. if C > superTrend Then { Plot3(superTrend,"UpTrend", green, 0, 1); NoPlot(4); } Else { Plot4(superTrend,"DnTrend", red, 0, 1); NoPlot(3);
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2024-10-30 14:46:05

안녕하세요 예스스탁입니다. NoPlot함수 사용때문에 발생하는 내용입니다. NoPlot함수는 plot번호가 순서대로 모두 사용되어야 합니다. 여러개 사용시 아래와 같이 작성하시면 됩니다. input : period1(10),multiplier1(3); input : period2(20),multiplier2(3); input : period3(30),multiplier3(3); var : src(0); var : AtrV1(0),upperBand1(0),lowerBand1(0), prevLowerBand1(0), prevUpperBand1(0); var : prevSuperTrend1(0), superTrend1(C), direction1(0),alpha1(0),source1(0); var : AtrV2(0),upperBand2(0),lowerBand2(0), prevLowerBand2(0), prevUpperBand2(0); var : prevSuperTrend2(0), superTrend2(C), direction2(0),alpha2(0),source2(0); var : AtrV3(0),upperBand3(0),lowerBand3(0), prevLowerBand3(0), prevUpperBand3(0); var : prevSuperTrend3(0), superTrend3(C), direction3(0),alpha3(0),source3(0); src = (H+L)/2; if CurrentBar > 1 Then { alpha1 = 1 / period1; source1 = max(high - low, abs(high - close[1]), abs(low - close[1])); ATrV1 = alpha1 * source1 + (1 - alpha1) * ATrV1[1]; //지수가중이평방식 //ATrV = ma(source,AtrPeriod); //단순이평방식 upperBand1 = src + multiplier1 * AtrV1; lowerBand1 = src - multiplier1 * AtrV1; prevLowerBand1 = lowerBand1[1]; prevUpperBand1 = upperBand1[1]; if lowerBand1 > prevLowerBand1 or close[1] < prevLowerBand1 Then lowerBand1 = lowerBand1; Else lowerBand1 = prevLowerBand1; if upperBand1 < prevUpperBand1 or close[1] > prevUpperBand1 Then upperBand1 = upperBand1; Else upperBand1 = prevUpperBand1; if C > UpperBand1 Then direction1 = 1; if C < LowerBand1 Then direction1 = -1; if direction1 == 1 Then supertrend1 = lowerband1; Else supertrend1 = upperband1; alpha2 = 1 / period2; source2 = max(high - low, abs(high - close[1]), abs(low - close[1])); ATrV2 = alpha2 * source2 + (1 - alpha2) * ATrV2[1]; //지수가중이평방식 //ATrV = ma(source,AtrPeriod); //단순이평방식 upperBand2 = src + multiplier2 * AtrV2; lowerBand2 = src - multiplier2 * AtrV2; prevLowerBand2 = lowerBand2[1]; prevUpperBand2 = upperBand2[1]; if lowerBand2 > prevLowerBand2 or close[1] < prevLowerBand2 Then lowerBand2 = lowerBand2; Else lowerBand2 = prevLowerBand2; if upperBand2 < prevUpperBand2 or close[1] > prevUpperBand2 Then upperBand2 = upperBand2; Else upperBand2 = prevUpperBand2; if C > UpperBand2 Then direction2 = 1; if C < LowerBand2 Then direction2 = -1; if direction2 == 1 Then supertrend2 = lowerband2; Else supertrend2 = upperband2; alpha3 = 1 / period3; source3 = max(high - low, abs(high - close[1]), abs(low - close[1])); ATrV3 = alpha3 * source3 + (1 - alpha3) * ATrV3[1]; //지수가중이평방식 //ATrV = ma(source,AtrPeriod); //단순이평방식 upperBand3 = src + multiplier3 * AtrV3; lowerBand3 = src - multiplier3 * AtrV3; prevLowerBand3 = lowerBand3[1]; prevUpperBand3 = upperBand3[1]; if lowerBand3 > prevLowerBand3 or close[1] < prevLowerBand3 Then lowerBand3 = lowerBand3; Else lowerBand3 = prevLowerBand3; if upperBand3 < prevUpperBand3 or close[1] > prevUpperBand3 Then upperBand3 = upperBand3; Else upperBand3 = prevUpperBand3; if C > UpperBand3 Then direction3 = 1; if C < LowerBand3 Then direction3 = -1; if direction3 == 1 Then supertrend3 = lowerband3; Else supertrend3 = upperband3; if C > superTrend1 Then { Plot1(superTrend1,"UpTrend1", green, 0, 1); NoPlot(2); } Else { Plot2(superTrend1,"DnTrend1", red, 0, 1); NoPlot(1); } } 즐거운 하루되세요 > 램프 님이 쓴 글입니다. > 제목 : 지표식의 Plot에 대한 질문입니다. > 안녕하세요. 수고 많으십니다. 아래는 인터넷에서 받은 슈퍼트렌드 지표입니다. input : factor(3), AtrPeriod(10); var : src(0), AtrV(0),upperBand(0),lowerBand(0), prevLowerBand(0), prevUpperBand(0); var : prevSuperTrend(0), superTrend(C), direction(0),alpha(0),source(0); if CurrentBar > 1 Then { src = (H+L)/2; // ATR계산(ATR 계산시 지수가중이동평균(rma)이용) alpha = 1 / AtrPeriod ; source = max(high - low, abs(high - close[1]), abs(low - close[1])); ATrV = alpha * source + (1 - alpha) * ATrV[1]; upperBand = src + factor * AtrV; lowerBand = src - factor * AtrV; prevLowerBand = lowerBand[1]; prevUpperBand = upperBand[1]; if lowerBand > prevLowerBand or close[1] < prevLowerBand Then lowerBand = lowerBand; Else lowerBand = prevLowerBand; if upperBand < prevUpperBand or close[1] > prevUpperBand Then upperBand = upperBand; Else upperBand = prevUpperBand; if C > UpperBand Then direction = 1; if C < LowerBand Then direction = -1; if direction == 1 Then supertrend = lowerband; Else supertrend = upperband; } if C > superTrend Then { Plot1(superTrend,"UpTrend", green, 0, 1); NoPlot(2); } Else { Plot2(superTrend,"DnTrend", red, 0, 1); NoPlot(1); } (End of quote) 제 질문은, 지표식 마지막 부분의 Plot 번호를 아래와 같이(1,2에서 3,4로) 바꾸면 지표 선의 모양이 이상하게 달라지는데, 바꾸기 전과 동일해야 되는 것이 아닌지요? 숫자를 바꾸려는 이유는 슈퍼트렌드 2개를 하나의 지표에서 나타내려고 함입니다. 첨부파일 1번은 오리지널 지표식에서 정상으로 표시되는 화면이고 2번은 Plot3,4로 바꿨을때 달라지는 화면입니다. 감사합니다. if C > superTrend Then { Plot3(superTrend,"UpTrend", green, 0, 1); NoPlot(4); } Else { Plot4(superTrend,"DnTrend", red, 0, 1); NoPlot(3);