커뮤니티

수식확인 부탁드립니다

프로필 이미지
뎅이요
2025-09-09 14:46:28.0
74
글번호 193851
답변완료
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);
시스템
답변 2
프로필 이미지

예스스탁 예스스탁 답변

2025-09-10 09:22:06.0

안녕하세요 예스스탁입니다. 올리신 수식 적용해 보았지만 매수가 모두 superTrend < data2(C) 일때만 발생합니다. 아래 지표를 data2위에 올려 data2의 종가와 비교해 보시기 바랍니다. 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); var : val1(0,Data1),val2(0,Data1); value1 = data1(ema(C, shortPeriod)); value2 = data1(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; } Plot1(supertrend); } 즐거운 하루되세요 > 뎅이요 님이 쓴 글입니다. > 제목 : 수식확인 부탁드립니다 > 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-10 16:45:16.0

뎅이요 님에 의해 삭제된 답변입니다.