커뮤니티

수식 문의 드립니다

프로필 이미지
뎅이요
2024-09-06 11:23:54
859
글번호 183229
답변완료
아래의 수식 if data2(crossup(C,superTrend)) then buy(); if data2(crossdown(C,superTrend)) then exitlong(); 매수진입 superTrend에 주가가 닿을때 매수진입 매수청산 superTrend에 주가가 닿을때 매수청산 되도록 수식 작성 부탁 드립니다. ( if MarketPosition == 0 and data2(h < superTrend) Then Buy("b",AtStop,superTrend); 위와 같이 작성 하니 실행이 안됩니다 //원하는 수식은 data2챠트에서 주가가 superTrend 아래에서 상승하여 data2의 superTrend에 닿을때 data1에서 매수 진입되고, 반대의 경우 매수 청산되도록 원합니다) input : starttime(90500),endtime(150000),XTime(151500); var : Tcond(false,Data2); if Data2((sdate != sdate[1] and stime >= starttime) or (sdate == sdate[1] and stime >= starttime and stime[1] < starttime)) then { Tcond = true; } if Data2((sdate != sdate[1] and stime >= endtime) or (sdate == sdate[1] and stime >= endtime and stime[1] < endtime)) then { Tcond = false; } input : ntime(10),factor(3), AtrPeriod(10); var : S1(0,Data2),D1(0,Data2),TM(0,Data2),TF(0,Data2),HH(0,Data2),LL(0,Data2),C1(0,Data2); var : src(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 Bdate != Bdate[1] Then { S1 = data2(TimeToMinutes(stime)); D1 = data2(sdate); } if D1 > 0 then { if data2(sdate == D1) Then TM = data2(TimeToMinutes(stime)-S1); Else TM = data2(TimeToMinutes(stime)+1440-S1); TF = TM%ntime; if Bdate != Bdate[1] or (Bdate == Bdate[1] and ntime > 1 and TF < TF[1]) or (Bdate == Bdate[1] and ntime > 1 and TM >= TM[1]+ntime) or (Bdate == Bdate[1] and ntime == 1 and TM > TM[1]) Then { HH = data2(H); LL = data2(L); C1 = data2(C[1]); ATRV1 = ATRV[1]; prevSuperTrend = superTrend[1]; prevLowerBand = lowerBand[1]; prevUpperBand = upperBand[1]; } if data2(H) > HH Then HH = data2(H); if data2(L) < LL Then LL = data2(L); src = (HH+LL)/2; if C1 > 0 Then { alpha = 1 / AtrPeriod ; source = max(HH - LL, abs(HH - C1), abs(LL - C1)); ATrV = alpha * source + (1 - alpha) * ATrV1; upperBand = src + factor * AtrV; lowerBand = src - factor * AtrV; if lowerBand > prevLowerBand or C1 < prevLowerBand Then lowerBand = lowerBand; Else lowerBand = prevLowerBand; if upperBand < prevUpperBand or C1 > prevUpperBand Then upperBand = upperBand; Else upperBand = prevUpperBand; if prevSuperTrend == prevUpperBand Then { if data2(C) > upperBand Then direction = -1; Else direction = 1; } Else { if data2(C) < lowerBand Then direction = 1; Else direction = -1; } if direction == -1 Then superTrend = lowerBand; Else superTrend = upperBand; } } if Tcond == true then { if data2(crossup(C,superTrend)) then buy(); if data2(crossdown(C,superTrend)) then exitlong(); } SetStopEndofday(XTime);
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2024-09-06 14:39:07

안녕하세요 예스스탁입니다. 문의하신 내용은 가능하지 않습니다. 봉미완성시 주가가 특정가격을 닿을때 진입하기 위해서는 atstop이나 atlimit을 사용해야 하는데 해당 타입들은 지정한 감시가격과 기본종목(data1)의 현재가와만 비교하게 되어 있습니다. 참조데이터의 현재가가 닿을때 즉시 신호나오게 작성이 되지 않습니다. 도움을 드리지 못해 죄송합니다. 즐거운 하루되세요 > 뎅이요 님이 쓴 글입니다. > 제목 : 수식 문의 드립니다 > 아래의 수식 if data2(crossup(C,superTrend)) then buy(); if data2(crossdown(C,superTrend)) then exitlong(); 매수진입 superTrend에 주가가 닿을때 매수진입 매수청산 superTrend에 주가가 닿을때 매수청산 되도록 수식 작성 부탁 드립니다. ( if MarketPosition == 0 and data2(h < superTrend) Then Buy("b",AtStop,superTrend); 위와 같이 작성 하니 실행이 안됩니다 //원하는 수식은 data2챠트에서 주가가 superTrend 아래에서 상승하여 data2의 superTrend에 닿을때 data1에서 매수 진입되고, 반대의 경우 매수 청산되도록 원합니다) input : starttime(90500),endtime(150000),XTime(151500); var : Tcond(false,Data2); if Data2((sdate != sdate[1] and stime >= starttime) or (sdate == sdate[1] and stime >= starttime and stime[1] < starttime)) then { Tcond = true; } if Data2((sdate != sdate[1] and stime >= endtime) or (sdate == sdate[1] and stime >= endtime and stime[1] < endtime)) then { Tcond = false; } input : ntime(10),factor(3), AtrPeriod(10); var : S1(0,Data2),D1(0,Data2),TM(0,Data2),TF(0,Data2),HH(0,Data2),LL(0,Data2),C1(0,Data2); var : src(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 Bdate != Bdate[1] Then { S1 = data2(TimeToMinutes(stime)); D1 = data2(sdate); } if D1 > 0 then { if data2(sdate == D1) Then TM = data2(TimeToMinutes(stime)-S1); Else TM = data2(TimeToMinutes(stime)+1440-S1); TF = TM%ntime; if Bdate != Bdate[1] or (Bdate == Bdate[1] and ntime > 1 and TF < TF[1]) or (Bdate == Bdate[1] and ntime > 1 and TM >= TM[1]+ntime) or (Bdate == Bdate[1] and ntime == 1 and TM > TM[1]) Then { HH = data2(H); LL = data2(L); C1 = data2(C[1]); ATRV1 = ATRV[1]; prevSuperTrend = superTrend[1]; prevLowerBand = lowerBand[1]; prevUpperBand = upperBand[1]; } if data2(H) > HH Then HH = data2(H); if data2(L) < LL Then LL = data2(L); src = (HH+LL)/2; if C1 > 0 Then { alpha = 1 / AtrPeriod ; source = max(HH - LL, abs(HH - C1), abs(LL - C1)); ATrV = alpha * source + (1 - alpha) * ATrV1; upperBand = src + factor * AtrV; lowerBand = src - factor * AtrV; if lowerBand > prevLowerBand or C1 < prevLowerBand Then lowerBand = lowerBand; Else lowerBand = prevLowerBand; if upperBand < prevUpperBand or C1 > prevUpperBand Then upperBand = upperBand; Else upperBand = prevUpperBand; if prevSuperTrend == prevUpperBand Then { if data2(C) > upperBand Then direction = -1; Else direction = 1; } Else { if data2(C) < lowerBand Then direction = 1; Else direction = -1; } if direction == -1 Then superTrend = lowerBand; Else superTrend = upperBand; } } if Tcond == true then { if data2(crossup(C,superTrend)) then buy(); if data2(crossdown(C,superTrend)) then exitlong(); } SetStopEndofday(XTime);