답변완료
수식 문의
안녕하세요?
매수신호가 발생한 봉의 종가를 p0로 기억합니다.
그 다음봉부터 종가가 p0 대비 몇 % 오르거나 내렸는지를 파란색으로 지표로 나타냅니다.
새롭게 매도신호가 나오기 전까지 계속 나타냅니다. 매도신호가 나오면 파란색 지표는 그리는 것을 멈춥니다.
매도신호가 나오면 매도신호가 발생한 봉의 종가를 q0로 기억합니다.
그 다음봉부터 종가가 q0 대비 몇 % 오르거나 내렸는지를 빨간색으로 지표로 나타냅니다.
새로 매수신호가 나오기 전까지 계속 나타냅니다. 새로 매수 신호가 뜨면 기존의 빨간색 지표는 그리는 것을 멈춥니다.
주의사항: 매수신호가 나온 후, 매도 신호가 아닌 매수신호가 또 나올 수 있습니다.
이 경우, 새로운 매수신호가 나온 것을 기준으로 합니다.
물론, 10일 연속 매수신호가 나올 수도 있는데, 이 경우도 마찬가지로 p0 값이 매일 바뀌면서 매일 새롭게 시작합니다.
테스트용으로:
MACDv = MACD(12,26);
MACDsig = ema(MACDv,9);
macdosc = MACDv-ema(MACDv,9);
매수신호 = MACDv > 0 && macdosc > macdosc[1];
매도신호 = MACDv < 0 && macdosc < macdosc[1];
감사합니다.
2025-09-09
157
글번호 193854
지표
답변완료
수식확인 부탁드립니다
data2의 종가(C)가 supertrand 위에 있을때 ( superTrend < data2(C) )
Data1(CrossUP(value1, value2)) 조건 만족시 매수진입 수식입니다.
data2의 종가(C)가 supertrand 위에 있을때 ( superTrend < data2(C) )
제데로 작동되지 않습니다 수정 부탁드립니다.
input : starttime(91000),endtime(150000),XTime(151500);
var : Tcond(false,Data1);
if (sdate != sdate[1] and stime >= starttime) or
(sdate == sdate[1] and stime >= starttime and stime[1] < starttime) then
{
Tcond = true;
}
if (sdate != sdate[1] and stime >= endtime) or
(sdate == sdate[1] and stime >= endtime and stime[1] < endtime) then
{
Tcond = false;
}
# Data1
Input : shortPeriod(5), longPeriod(20);
value1 = ema(C, shortPeriod);
value2 = ema(C, longPeriod);
# Data2
input : ntime(5),factor(3), AtrPeriod(10);
var : zS1(0,Data2),zD1(0,Data2),zTM(0,Data2),zTF(0,Data2),zHH(0,Data2),zLL(0,Data2),zC1(0,Data2);
var : zsrc(0,Data2), AtrV(0,Data2),ATRv1(0,Data2),upperBand(0,Data2),lowerBand(0,Data2), prevLowerBand(0,Data2), prevUpperBand(0,Data2);
var : prevSuperTrend(0,Data2), superTrend(0,Data2), direction(0,Data2),alpha(0,Data2),source(0,Data2);
if data2(Bdate != Bdate[1]) Then
{
zS1 = data2(TimeToMinutes(stime));
zD1 = data2(sdate);
}
if zD1 > 0 then
{
if data2(sdate) == zD1 Then
zTM = data2(TimeToMinutes(stime))-zS1;
Else
zTM = data2(TimeToMinutes(stime))+1440-zS1;
zTF = zTM%ntime;
if Bdate != Bdate[1] or
(Bdate == Bdate[1] and ntime > 1 and zTF < zTF[1]) or
(Bdate == Bdate[1] and ntime > 1 and zTM >= zTM[1]+ntime) or
(Bdate == Bdate[1] and ntime == 1 and zTM > zTM[1]) Then
{
zHH = data2(H);
zLL = data2(L);
zC1 = data2(C[1]);
ATRV1 = ATRV[1];
prevSuperTrend = superTrend[1];
prevLowerBand = lowerBand[1];
prevUpperBand = upperBand[1];
}
if data2(H) > zHH Then
zHH = data2(H);
if data2(L) < zLL Then
zLL = data2(L);
zsrc = (zHH+zLL)/2;
if zC1 > 0 Then
{
alpha = 1 / AtrPeriod ;
source = max(zHH - zLL, abs(zHH - zC1), abs(zLL - zC1));
ATrV = alpha * source + (1 - alpha) * ATrV1;
upperBand = zsrc + factor * AtrV;
lowerBand = zsrc - factor * AtrV;
if lowerBand > prevLowerBand or zC1 < prevLowerBand Then
lowerBand = lowerBand;
Else
lowerBand = prevLowerBand;
if upperBand < prevUpperBand or zC1 > prevUpperBand Then
upperBand = upperBand;
Else
upperBand = prevUpperBand;
if prevSuperTrend == prevUpperBand Then
{
if C > upperBand Then
direction = -1;
Else
direction = 1;
}
Else
{
if C < lowerBand Then
direction = 1;
Else
direction = -1;
}
if direction == -1 Then
superTrend = lowerBand;
Else
superTrend = upperBand;
}
}
# 매수
If superTrend < data2(C) and CrossUP(value1, value2) Then
{
Buy();
}
# 매수청산
If CrossDown(value1, value2) Then
{
Exitlong();
}
SetStopEndofday(151500);
2025-09-09
138
글번호 193851
시스템