예스스탁
예스스탁 답변
2022-09-20 14:09:40
안녕하세요
예스스탁입니다.
1
변수값이 잘못지정되어 있었습니다. 해당 부분 수정해 드립니다.
올려주신 수식에 plot2~plot4는 특정조건 만족시 차트에 수직선을 그리는 내용입니다.
plot으로 그린 내용으로 해당식 그대로 사용하시려면 속성에서 차트(기본차트)로 되어 있어야 합니다.
추세선으로 표시되게 수정해 드립니다.
input : n(2),P1(5),P2(20),P3(60);
input : Periods(10),Multiplier(3.0),changeATR(true),showsignals(true),highlighting(true);
var : src(0),ATR2(0),ATrv(0),upv(0),dnv(0),trend(1);
var : mav1(0),mav2(0),mav3(0),TL1(0),TL2(0),TL3(0);
src = (h+l)/2;
atr2 = ma(TrueRange, Periods);
atrv = iff(changeATR, atr(Periods), atr2);
upv = src-(Multiplier*atrv);
upv = iff(close[1] > upv[1],max(upv,upv[1]), upv);
dnv = src+(Multiplier*atrv);
dnv = iff(close[1] < dnv[1],min(dnv, dnv[1]), dnv);
trend = iff(trend == -1 and close > dnv[1] , 1 ,IFf(trend == 1 and close < upv[1] , -1 , trend));
if trend == 1 Then
plot1(upv,"Trend",MAGENTA);
Else
plot1(dnv,"Trend",blue);
if C > Plot1 Then
{
TL1 = TL_New(sDate,sTime,0,sDate,stime,99999999);
TL_SetColor(TL1,Magenta);
}
var1 = Round(IFf(Trend == 1,upv,dnv),2);
if CountIf(trend != 1,2) == 2 and
H < var1-PriceScale*n and H[1] >= var1[1]-PriceScale*n Then
{
TL2 = TL_New(sDate,sTime,0,sDate,stime,99999999);
TL_SetColor(TL2,Cyan);
}
if CountIf(trend == 1,2) == 2 and
L > var1+PriceScale*n and L[1] <= var1[1]+PriceScale*n Then
{
TL3 = TL_New(sDate,sTime,0,sDate,stime,99999999);
TL_SetColor(TL3,Gray);
}
mav1 = round(ma(C,P1),2);
mav2 = round(ma(C,P2),2);
mav3 = round(ma(C,P3),2);
if var1 == mav1 Then
value11 = var1;
if var1 == mav2 Then
value12 = var1;
if var1 == mav3 Then
value13 = var1;
if value11 > 0 Then plot5(value11,"Plot1-mav1일치");
if value12 > 0 Then plot6(value12,"Plot1-mav2일치");
if value13 > 0 Then plot7(value13,"Plot1-mav3일치");
2
지표사이의 색을 채우는 것은 지표속성 차트표시탭에서 직접 지정하셔야 합니다.
또한 하나의 지표식에서 출력되는 plot만 가능합니다.
다른 지표식과 비교해서 사이를 채울수는 없습니다.
data1과 data2가 plot1,plot2로 출력되게 작성해 드립니다.
input : d1Periods(10),d1Multiplier(3.0),d1changeATR(true);
input : d2Periods(10),d2Multiplier(3.0),d2changeATR(true);
var : d1src(0),d1ATR2(0),d1ATrv(0),d1upv(0),d1dnv(0),d1trend(1);
var : d2src(0),d2ATR2(0),d2ATrv(0),d2upv(0),d2dnv(0),d2trend(1);
d1src = Data1((h+l)/2);
d1atr2 = data1(ma(TrueRange, d1Periods));
d1atrv = data1(iff(d1changeATR, atr(d1Periods), d1atr2));
d1upv = d1src-(d1Multiplier*d1atrv);
d1upv = data1(iff(close[1] > d1upv[1],max(d1upv,d1upv[1]), d1upv));
d1dnv = d1src+(d1Multiplier*d1atrv);
d1dnv = data1(iff(close[1] < d1dnv[1],min(d1dnv, d1dnv[1]), d1dnv));
d1trend = data1(iff(d1trend == -1 and close > d1dnv[1] , 1 ,IFf(d1trend == 1 and close < d1upv[1] , -1 , d1trend)));
if d1trend == 1 Then
plot1(d1upv,"Trend1",MAGENTA);
Else
plot1(d1dnv,"Trend1",blue);
d2src = data2((h+l)/2);
d2atr2 = data2(ma(TrueRange, d2Periods));
d2atrv = data2(iff(d2changeATR, atr(d2Periods), d2atr2));
d2upv = d2src-(d2Multiplier*d2atrv);
d2upv = data2(iff(close[1] > d2upv[1],max(d2upv,d2upv[1]), d2upv));
d2dnv = d2src+(d2Multiplier*d2atrv);
d2dnv = data2(iff(close[1] < d2dnv[1],min(d2dnv, d2dnv[1]), d2dnv));
d2trend = data2(iff(d2trend == -1 and close > d2dnv[1] , 1 ,IFf(d2trend == 1 and close < d2upv[1] , -1 , d2trend)));
if d2trend == 1 Then
plot2(d2upv,"Trend2",MAGENTA);
Else
plot2(d2dnv,"Trend2",blue);
즐거운 하루되세요
> 유로파54 님이 쓴 글입니다.
> 제목 : 문의 드립니다!
>
1, 아래 78834 답변관련하여 추가문의 드립니다
수식을 국선 분봉에 적용해본결과 plot5, plot6, plot7 선이 보이지않는데요
* 기본챠트속성창에서 "화면(기본챠트)"에 지정된 챠트입니다
"화면(기본챠트*지표))"에 지정시는 챠트가 상하로 벌어져서 캔들을 볼수가없네요
무엇이 문제인지 한번더 검토 부탁드리겠습니다
2, 아래수식중 제가 올린 원본수식의 아래부분에 해당되는 선이 대상입니다
* if trend == 1 Then
plot1(upv,"Trend",MAGENTA);
Else
plot1(dnv,"Trend",blue);
(1) 이수식을 서로 다른 조건의 행사가에 적용시는 선이 다르게 발생되는데요
예를들어 1분봉과 2분봉에 적용시 각각 선이 다른위치에 나타납니다
* 첫번째선은 data1에 지정하고 두번째선은 data2에 지정
(2) 이 2개의 선과 선사이에 색상을 입힐수있는 방법이 있을까요?
수식으로든 다른방법으로든 가능한 방법이 있다면 부탁드리겠습니다
감사합니다!!!
--------------------------------------------------------------------------------
안녕하세요
예스스탁입니다.
input : n(2),P1(5),P2(20),P3(60);
input : Periods(10),Multiplier(3.0),changeATR(true),showsignals(true),highlighting(true);
var : src(0),ATR2(0),ATrv(0),upv(0),dnv(0),trend(1);
var : mav1(0),mav2(0),mav3(0);
src = (h+l)/2;
atr2 = ma(TrueRange, Periods);
atrv = iff(changeATR, atr(Periods), atr2);
upv = src-(Multiplier*atrv);
upv = iff(close[1] > upv[1],max(upv,upv[1]), upv);
dnv = src+(Multiplier*atrv);
dnv = iff(close[1] < dnv[1],min(dnv, dnv[1]), dnv);
trend = iff(trend == -1 and close > dnv[1] , 1 ,IFf(trend == 1 and close < upv[1] , -1 , trend));
if trend == 1 Then
plot1(upv,"Trend",MAGENTA);
Else
plot1(dnv,"Trend",blue);
if C > Plot1 Then
plot2(999999999,"라인1");
Else
plot2(0,"라인1");
var1 = Round(IFf(Trend == 1,upv,dnv),2);
if CountIf(trend != 1,2) == 2 and
H < var1-PriceScale*n and H[1] >= var1[1]-PriceScale*n Then
plot3(999999999,"라인2");
Else
plot3(0,"라인2");
if CountIf(trend == 1,2) == 2 and
L > var1+PriceScale*n and L[1] <= var1[1]+PriceScale*n Then
plot4(999999999,"라인3");
Else
plot4(0,"라인3");
mav1 = round(ma(C,P1),2);
mav2 = round(ma(C,P2),2);
mav3 = round(ma(C,P3),2);
if var1 == mav1 Then
value11 = value1;
if var1 == mav2 Then
value12 = value1;
if var1 == mav3 Then
value13 = value1;
if value11 > 0 Then plot5(value11,"Plot1-mav1일치");
if value12 > 0 Then plot6(value12,"Plot1-mav2일치");
if value13 > 0 Then plot7(value13,"Plot1-mav3일치");
즐거운 하루되세요
> 유로파54 님이 쓴 글입니다.
> 제목 : 문의 드립니다!
> 안녕하세요!
일전에 작성해주신 수식 많은 도움이 될것같습니다
다시한번 감사드립니다!!
아래수식과 이평선이 동시에 만족될때(일치할때)의 수식도 한번더 부탁드립니다
이평선은 5일선 20일선 60일선을 예시로해서 3개의 선이 발생토록 부탁드립니다
---------------------------------------------------------
input : n(2);
input : Periods(10),Multiplier(3.0),changeATR(true),showsignals(true),highlighting(true);
var : src(0),ATR2(0),ATrv(0),upv(0),dnv(0),trend(1);
src = (h+l)/2;
atr2 = ma(TrueRange, Periods);
atrv = iff(changeATR, atr(Periods), atr2);
upv = src-(Multiplier*atrv);
upv = iff(close[1] > upv[1],max(upv,upv[1]), upv);
dnv = src+(Multiplier*atrv);
dnv = iff(close[1] < dnv[1],min(dnv, dnv[1]), dnv);
trend = iff(trend == -1 and close > dnv[1] , 1 ,IFf(trend == 1 and close < upv[1] , -1 , trend));
if trend == 1 Then
plot1(upv,"Trend",MAGENTA);
Else
plot1(dnv,"Trend",blue);
if C > Plot1 Then
plot2(999999999,"라인1");
Else
plot2(0,"라인1");
var1 = IFf(Trend == 1,upv,dnv);
if CountIf(trend != 1,2) == 2 and
H < var1-PriceScale*n and H[1] >= var1[1]-PriceScale*n Then
plot3(999999999,"라인2");
Else
plot3(0,"라인2");
if CountIf(trend == 1,2) == 2 and
L > var1+PriceScale*n and L[1] <= var1[1]+PriceScale*n Then
plot4(999999999,"라인3");
Else
plot4(0,"라인3");