커뮤니티

이것 저것 문의드립니다.

프로필 이미지
잡다백수
2017-10-07 09:11:19
280
글번호 113231
답변완료
수식왕 예스스탁님 매번 감사합니다. 추석 때 공부하다보니 질문이 좀 많네요. 고생하십니다. 감사합니다. 1. 답변해주신 내용 해석을 좀 하고 있는데요. 궁금한 점이 있어서 질문드립니다. ⓐ는 어제 날짜와 다르다는 것을 명시해주는 게 이해가 되는데요. ⓑ에 '어제날짜와 같고 시작시간이 P1보다 크거나 같고, 한개봉전 시작시간이 p1보다 작고'라는 조건은 왜 들어 갔는 지 잘 모르겠습니다. 기초교육 정도론 당연히 쉽지 않을 거라곤 예상했었는데 정말 갈수록 태산이네요. ㅠ 전일등락률25+시간변수청산 input: P1(100000), P2(150000); if ((sdate!= sdate[1] and stime >= P1) or 만약 시작날짜가 전일날짜와 같지 않고 시작시간이 p1보다 크거나 ⓐ (sdate == sdate[1] and stime >= P1 and stime[1] < P1)) and 시작날짜가 전일시작날짜와 같고 시작시간이 P1보다 크거나 같으며 한개봉전 시작시간이 p1보다 작거나 ⓑ DayClose(1) >= Dayopen(1)*1.25 Then 전일봉의 종가가 전일봉의 시가보다 1.25배 클때(25% 올랐을 때) buy(); 사라 SetStopEndofday(P2); 청산은 P2에서 한다. ## if ((sdate!= sdate[1] and stime >= P1) or ) 2. 답변해주시는 내용을 들었는데도 무슨 말씀인 지 잘 모르겠습니다. 그럼 차트에서 30분봉의 저가가 볼린저밴드 상단선을 하향돌파. 하향침범을 했다고 하더라도 30분봉의 볼린저밴드 상단선은 완성이 아직 안된 상태이므로 청산이 되지 않는다는 말씀인가요? 만약 그렇다면 30분봉 볼린저밴드 상단선이 완성되지 않더라도, 그러니까 중간값이라도 저가가 볼린저밴드 상단선을 침범하면 바로 매도 가능하도록 할수는 없을까요? 만약 30분봉이 완성되고 난 뒤에 신호가 난다면 거의 기존 의도했던 신호와는 전혀 다른 결과가 나올 수도 있을 것 같아서요. [원질문] [[[ 7. 시스템 진입 전일 거래대금이 300억이상이면 시초가 매수 청산 볼린저밴드 저가가 상단선에 닿으면 청산 8. 7에 대한 문의 7의 청산에서 볼린저밴드 저가가 상단선에 닿는다는게 봉이 완전히 완성 안되도, 예를 들어 30분봉은 종가가 30분은 돼야 완성되는데요. 그 가운데 저가는 이미 나와 있을 겁니다. 그 저가가 상단선에 닿으면 바로 그 시점에서 청산이 이뤄지는 건가요? 전에 봉이 완성안됐을 때 신호가 나게 하는 방법은 없다고 들었던 기억이 있어서 질문드립니다.]]] [답변] (봉완성시 저가가 상단위이면 완성봉의 상단값이 셋팅되고 다음봉에서 상단선 이하의 시세가 발생하면 즉시 청산됩니다.) 3. 강조 장시작봉에 강조 4. 강조 09:00 봉에 강조(*3이랑 똑같은 건가요?date ,stime 등 시간변수가 헷갈려서 여쭈어 봅니다. ) 5. 강조 09:30 분 봉에 강조 6. 강조 09:30분부터 15:00 분까지의 봉에 강조 7. 강조가 된 봉의 갯수를 셀 수 있나요? 예를 들어 40일 이평 상단에 있는 봉의 갯수를 세는 방법이 있나요? 8. 이전 게시글들 쭈욱 보고 있는데요. 구 예스트레이더 신 예스트레이더 이런 말들이 나오는 걸 보니 중간에 업데이트하거나 수식 사용에 대해 업그레이드를 한 것 같은 느낌이 듭니다. 혹시 수식 사용이 바뀐 날짜를 알 수 있나요? 수식 공부하려고 보고 있는 건데 바뀐 수식이라면 보고 있을 필요가 없을 것 같아서요. 9. 다른 분 질문인데요. 봐도 해석을 못해서 질문드립니다. 이게 왜 수렴 후 돌파매매인 지 모르겠습니다. 한글로 간단히 해석 좀 부탁드립니다. ###수렴 후 볼린저밴드 돌파 매매 input: period(5), period1(10), period2(20), period3(60), percent(3), D(2); var: value1(0), value2(0), value3(0) ,value4(0); value1 = ma(C,period); value2 = ma(C,period1); value3 = ma(C,period2); value4 = ma(C,period3); If max(value1, value2, value3, value4) < min(value1, value2, value3, value4) * (1 + percent/100) && CrossUp(C, BollBandUp(period,D)) then buy(); If CrossDown(C,ma(C,period1)) then exitlong(); 10. 시스템-필터 20이평 상향 하향돌파 전략으로 아래 필터들 좀 부탁드립니다. 10-1 일일 진입횟수 1회로 제한 10-2 주간 진입횟수 5회로 제한 10-3 월간 진입횟수 10회로 제한 10-4 최근 10거래일간 진입횟수 N회로 제한 10-5 최근 3거래동안 연속 수익거래가 발생했을 때 다음 진입 제한 10-6 최근 3회이상 연속 손실거래일 경우 다음 진입 제한 그 다음 거래에 진입 11. 지표 input:period(20); var:fibRatio1(1.618),fibRatio2(2.618),fibRatio3(4.236), ATRV(0),sma(0),r1(0),r2(0),r3(0); ATRV = ATR(period); sma = ma(C, period); r1 = ATRV * fibRatio1; r2 = ATRV * fibRatio2; r3 = ATRV * fibRatio3; Plot1(sma + r3, "fibTop3"); Plot2(sma + r2, "fibTop2"); Plot3(sma + r1, "fibTop3"); Plot4(sma, "middle"); Plot5(sma - r1,"fibBott1"); Plot6(sma - r2,"fibBott2"); Plot7(sma - r3,"figBott3"); 여기서 plot3에 sig9선(rsi등에 있는 시그널선)을 만들고 싶은데요. r4 = sma+1 ; sig = ma(r4,9); 이렇게 해봤더니 오류가 나더라구요. 어떻게 해야 정확한 값이 나오는 지 궁금합니다. 12. 지표 다른 분 답변에 있던 건데요. 문법에러 잘못된 토큰 'else'라고 나옵니다. 뭐가 잘못된 건 지 어떻게 수정해야하는 지 궁금합니다. 분봉에 일봉 볼린저밴드를 표현하는 지표입니다. Input: length(20), D(2); Var: sumSqr(0), maV(0), sumV(0), count(0), stdV(0); If Length != 0 Then Begin sumV = 0; sumSqr = 0; For count = 0 to Length-1 Begin sumV = sumV+DayClose(count); sumSqr = sumSqr + (DayClose(count) - maV) * (DayClose(count) - maV); End; maV = sumV / length; stdV = Sqrt(sumSqr / length); End; Else stdV = 0; plot1(maV); plot2(maV+(D*stdV)); plot3(maV-(D*stdV)); 13-1. 아래 수식(분봉)에다가 200일(변수a) 이동평균선 위에 주가가 100일 이상 있을 경우라는 조건을 더해주시길 바랍니다. 13-2 아래 수식(분봉)에다가 '100일 가운데 200일 이격도가 150 이상을 기록했으며 100일간 100수치 이하로 떨어진 적이 없다'라는 조건을 더해주시길 바랍니다. input : startTime(90000), endTime(092959); if stime >= 93000 and stime < 145000 and crossup(C,TimeHigh(startTime,endTime)) then { exitshort(); if date != entrydate(0) and date != entrydate(1) then buy(); } if stime >= 93000 and stime < 145000 and crossdown(C,TimeLow(startTime,endTime)) then { exitlong(); if date != entrydate(0) and date != entrydate(1) then sell(); } if stime == 145000 then { exitlong(); exitshort(); } 14. 이게 무슨 수식인 지 설명을 좀 부탁드립니다. 그리고 이것과 정반대의 수식도 만들 수 있다면 만들어주시길 바랍니다. input : percent(4); if dayindex() == 0 then { buy(); var1 = C; } if crossup(C, var1 * (1+Percent/100)) then exitlong(); 15. 877번 예스스탁님 답변인데요. 선언되지 않은 i가 있다는데 뭐가 오류인 지 잘 모르겠습니다. Var: BandU(0),BandD(0), Entryidx(0), pos(0); BandU = Highest(H,i-Entryidx+1); BandD = Lowest(L, i-Entryidx+1); if pos != 1 and CrossUp(C,BandU[1]) then { Entryidx = index; pos = 1; // Buy(); // Exitshort(); } if pos != -1 and CrossDown(C,BandD[1]) then { Entryidx = index; pos = -1; // Sell(); // Exitlong(); } plot1(i-entryidx); 16. 시스템 - 필터 밴드폭(bandwidth) 지표가 시그널(9)선 위에 있을 때만 진입 17. 시스템 - 필터 atr지표가 시그널 선 위에 있을 때만 진입 18. 시스템 - 필터 밴드폭 지표가 상승추세(상승추세 정의: 시그널선(40)위에 밴드폭이 있으며 밴드폭이 상승하는 가운데 중간에 5회이상 하락하지 않는다(예 상승중이다가 3회 하락하다 다시 상승하면 계속 상승추세로 봄. )에만 진입 19. 시스템, 이 식이 오류가 나는데요. 왜 오류가 나는 지 몰라서 질문드립니다. 896번답변입니다. var : Cond1(0), Cond2(0), Cond3(0), Cond4(0), Cond5(0), Cond6(0), Cond11(0), Cond22(0), Cond33(0), Cond44(0), Cond55(0), Cond66(0), buyCond(0), sellCond(0), bPosition(0), sposition(0); if date != date[1] then { bposition = 0; sposition = 0; } Cond1 = crossup(C, dayopen(0)+0.3); //매수조건1 Cond2 = crossup(C, dayopen(0)+0.6); //매수조건2 Cond3 = crossup(C, dayopen(0)+0.9); //매수조건3 Cond4 = crossdown(C, dayopen(0)-0.3); //매수청산조건1 Cond5 = crossdown(C, dayopen(0)+0.3); //매수청산조건2 Cond6 = crossdown(C, dayopen(0)+0.6); //매수청산조건3 Cond11 = crossdown(C, dayopen(0)-0.3); //매도조건1 Cond22 = crossdown(C, dayopen(0)-0.6); //매도조건2 Cond33 = crossdown(C, dayopen(0)-0.9); //매수조건3 Cond44 = crossup(C, dayopen(0)+0.3); //매도청산조건1 Cond55 = crossup(C, dayopen(0)-0.3); //매도청산조건2 Cond66 = crossup(C, dayopen(0)-0.6); //매도청산조건3 //매수식 if bposition != 1 then Begin if Cond1 then { buy(); buyCond = 1; bposition = 1; } if Cond2 then { buy(); buyCond = 2; bposition = 1; } if Cond3 then { buy(); buyCond = 3; bposition = 1; } End; //매수청산식 if buyCond == 1 and Cond4 then { exitlong(); bPosition = 0; } if buyCond == 2 and Cond5 then { exitlong(); bPosition = 0; } if buyCond == 3 and Cond6 then { exitlong(); bPosition = 0; } /* //매도식 if sposition != 1 then Begin if Cond11 then { sell(); sellCond = 1; sposition = 1; } if Cond22 then { sell(); sellCond = 2; sposition = 1; } if Cond33 then { sell(); sellCond = 3; sposition = 1; } End; //매도청산식 if sellCond == 1 and Cond44 then { exitlong(); sPosition = 0; } if sellCond == 2 and Cond55 then { exitlong(); sPosition = 0; } if sellCond == 3 and Cond66 then { exitlong(); sPosition = 0; } 20. 연산자 앞 뒤 두 데이터의 형태가 같아야 합니다. 라고 나오는데요. 뭐가 오류인 지 몰라서 여쭤봅니다. var : uprev(0), dnrev(0), bot1(0), bot2(0), top1(0), top2(0); uprev = ma(C,5) > ma(C,5)[1] and ma(C,5)[1] <= ma(C,5)[2]; dnrev = ma(C,5) < ma(C,5)[1] and ma(C,5)[1] >= ma(C,5)[2]; if uprev then { bot1 = ma(C,5)[1]; bot2 = bot1[1]; } if dnrev then { top1 = ma(C,5)[1]; top2 = top1[1]; } if uprev and bot1 > bot2 then buy(); if dnrev and top1 < top2 then sell(); if CrossDown(C,ma(C,10)) then sell(); 21. 983번답변인데요. 숫자값이나 숫자표현식이 와야 합니다. 라는 오류가 납니다. 어떻게 수정하면 될까요? input : 봉갯수(7); if accumN(C > O, 봉갯수) > accumN(C < O, 봉갯수) then buy("매수", atstop, O); if accumN(C > O, 봉갯수) < accumN(C < O, 봉갯수) then sell("매도", atstop, O); 22. 같은 답변인데 연산자 앞뒤 두 형태가 같아야합니다라는 오류가 납니다. var : 조건1(0), 조건2(0), 조건3(0), 조건4(0), 조건5(0); 조건1 = C > ma(C, 20); 조건2 = crossup(C, ma(C, 10)); 조건3 = crossdown(C, ma(C, 10)); 조건4 = crossdown(C, ma(C, 5)); 조건5 = crossup(C, ma(C, 5)); IF 조건1 THEN { IF 조건2 THEN BUY(); //1차 매수 IF 조건3 THEN { SELL(); EXITLONG(); //1차 매수청산 } IF 조건4 THEN SELL(); // 1차 매도 IF 조건5 THEN { BUY(); EXITSHORT(); //1차 매도 청산 } } 22. 994번 답변인데 역시 오류가 나서 질문드립니다. input : 수익(2), 손실(30); var : Cond1(0), Cond2(0), Cond3(0), bposition(0), 진입가(0), buyCond(0), buyval(0); if date != date[1] then { //일간차트의 경우 이 부분(3줄)을 빼야함 buyCond = 0; bposition = 0; } Var1 = ma(C, 5); Var2 = ma(C, 20); Var3 = stochasticsK(20,12); Var4 = stochasticsD(20,12,12); Cond1 = CrossUp(Var1, Var2); Cond2 = Crossdown(Var1, Var2); Cond3 = CrossUp(Var3, Var4); setstoploss(2); //매수식 if bposition != 1 then Begin if Cond1 then { //이평 골든 buy("a"); buyCond = 1; bposition = 1; } else if Cond3 then { //또는 if buyCond != 1 and Cond3 then (스토 골든) buy("b"); buyCond = 3; bposition = 1; 진입가 = C; } End; //매수청산식 if buyCond == 1 and Cond2 then { //이평 데드 exitlong("aa"); bPosition = 0; } if C > 진입가 * (1 + 수익/100) then { //진입가격대비 2% 수익 var1 = 1; buyVal = C; //진입가격대비 2% 수익날 때의 종가를 저장 } if buyCond == 2 then { //진입가격 대비 하락 청산 if C < buyVal * (1 - 손실/100) and marketposition() == 1 then //진입후 30% 수익난 이후 30% 하락하면 exitlong("bb"); bPosition = 0; } 23. 연산자 앞뒤형태가 다르다는 오류가 납니다. 어떻게 수정하면 될까요. var : 진입(0), 청산(0), 당일봉(0), 매수식(0),매수청산식(0), 매도식(0),매도청산식(0),buycount(0),sellcount(0),value1(0),value2(0),value3(0),value4(0), value5(0),value6(0); value1=ema(c,5)-ema(c,26); value2=ema(ema(c,5)-ema(c,26),9); value3=(dayhigh()+daylow())/2; value4=(dayhigh(1)+dayclose(1)+daylow(1))/3; value5=ema(c,187); value6=accumn(bids-asks,5)/5; 당일봉 = dayindex(); 매수식 = value1>value2 and c>value3 and c>value4 and c>value5 and value6>0; 매수청산식= value1<value2 and c<value3 and c<value4; 매도식= value1<value2 and c<value3 and c<value4 and c<value5 and value6<0; 매도청산식= value1>value2 and c>value3 and c>value4; if date != date[1] then { buycount = 0; sellcount = 0; } if buycount < 1 and sellcount < 1 then { if 매수식 then { buy(); buyCount = buyCount+1; } } else if sellcount == 1 and ( 매도청산식 ) and C - entryprice(0) < 0 //당일 매도후 재 매수진입 && 진입가가 이전 진입가 보다 작아야 함 then buy(); if buycount < 1 and sellcount < 1 then { if 매도식 then { sell(); sellcount = sellcount +1; } } else if buycount== 1 and (매수청산식) and C - entryprice(0) > 0 //당일 매수후 재 매도진입 && 진입가가 이전 진입가 보다 커야 함 then sell(); if 매수청산식 then exitlong(); if 매도청산식 then exitshort(); 24. 1051 답변인데 이것도 오류가 나서 수정 좀 부탁드립니다. var : macdcond(0), upcond(0); var1 = 0; var2 = 0; SetStopProfittarget(0.4, pointstop); macdcond = macd(12,26)-ema(macd(12,26),9); if macdcond > macdcond[1] and macdcond[1] > macdcond[2] then var1 = 1; else var2 = var2 - 1; if C > ma(C,10) then var1 = var1 + 1; else var2 = var2 - 1; if date != date[1] then upcond = 0; if stime == 95000 and accumN(C>O,6) > 3 then upcond = 1; if upcond then var1 = var1 + 1; else var2 = var2 - 1; if stochasticsK(12,5) > stochasticsD(12,5,5) then var1 = var1 + 1; else var2 = var2 - 1; if macd(12,26) > ema(macd(12,26),9) then var1 = var1 + 1; else var2 = var2 - 1; if CCI(10) > -100 then var1 = var1 + 1; else var2 = var2 - 1; if CCI(10) < 100 then var2 = var2 - 1; else var2 = var2 - 1; if sar(0.02, 0.2) > sar(0.02, 0.2)[1] then var1 = var1 + 1; else var2 = var2 - 1; if CrossUp(var1, 3) then buy(); if Crossdown(var2, -3) then sell(); if stime == 145000 then { exitlong(); exitshort(); } 25. 지표 이 값을 넘으면 5이평값이 상승할 수 있는 선을 지표로 예를 들어 5000원이 되면 이전 값들과 다 합쳐서 5이평이 상승할 수 있으면 값은 5000원 하락지표도 마찬가지. 26. 시스템 진입 고가가 25의 지표값을 넘어설 경우 진입 청산 저가가 25의 하락지표값을 침범했을 경우이거나 수익률이 2%(변수)를 기록했을 때 청산 27. 이것 역시 오류가 나서 고친 수식 좀 부탁드립니다. var : value(0); value = ma(C,5) < ma(C,5)[1] and ma(C,5)[1] >= ma(C,5)[2] ; if ma(C,5)[MRO(value,40,1)] < ma(C,5)[MRO(value,40,2)] then sell(); 28. 1060번 답변입니다. 수정 좀 부탁드립니다. Input: Period(29), Period1(15), Period2(5), BaseLine1(30), BaseLine2(70); Var: value(0), value1(0), cond1(0), cond2(0), cond3(0); var : buyprice(0), buyidx(0), bpos(0); value= iff(dayOpen()>=preDayClose(), ema((C-(dayOpen()-preDayClose())-lowest(L-(dayOpen()-preDayClose()), Period)) / (highest(H-(dayOpen()-preDayClose()), Period) - lowest(L-(dayOpen()-preDayClose()), Period)) * 100, Period1), ema((C+(preDayClose()-dayOpen())-lowest(L+(preDayClose()-dayOpen()), Period)) / (highest(H+(preDayClose()-dayOpen()), Period) - lowest(L+(preDayClose()-dayOpen()), Period)) * 100, Period1)); value1= ema(value,period2); //매수식 if value>value1 and dayindex()>0 then { buy(); buyprice = C; buyidx = index; bpos = 1; } // 조건1 if bpos == 1 and highest(h,i-buyidx) > dayLow(0) * 1.1 and CrossDown(C, ma(C,5)) then cond1 = 1; else cond1 = 0; // 조건2 if bpos == 1 and highest(h,i-buyidx) > buyprice * 1.05 and Crossdown(C,ma(C,5)) then cond2 = 1; else cond2 = 0; // 조건3 if bpos == 1 and highest(h,i-buyidx) > buyprice * 1.05 and C < O then cond2 = 1; else cond2 = 0; //매수청산식 if cond1 or cond2 or cond3 then { exitlong(); bpos = 0; } 29. 이것도 오류가 있어서 수정부탁드립니다. var1 = CrossUp(C[2], ma(C,20)[2]); var2 = C > ma(C,20)+0.3; var3 = C[1] > ma(C,20)[1]; var4 = CrossDown(C[2], ma(C,20)[2]); var5 = C < ma(C,20)-0.3; var6 = C[1] <= ma(C,20)[1]; if var1 and var2 and var3 then buy(); if var4 and var5 and var6 then sell(); 30. 이것도 역시 연산자형태가 같아야 합니다라는 오류가 납니다. input : p1(3); var : sumV(0), maV(0), ii(0); sumv = 0; FOR ii = 1 to p1 { sumv = sumv + dayclose(ii); } mav = sumV / p1; var1 = C[1] > ma(C[1],10); var2 = C > ma(C,3)+1.5; var3 = C[1] < ma(C[1],10); var4 = C < ma(C,3)-1.5; if var1 and var2 and crossup(close, mav+3.0) then buy("매수"); if var3 and var4 and crossdown(close, mav-3.0) then sell("매도"); 31. 이것도 역시 연산자 오류가 납니다. var : cond(0), preCond(0), Hval(0), Lval(0), preHval(0), preLval(0), nontrend(0); if date <> date[1] then { cond = false; preCond = cond[1]; } Hval = highest(c,12); Lval = lowest(c,12); if Hval - Lval < 0.4 then nontrend = true; else nontrend = false; if nontrend == true then { preHval = Hval; preLval = Lval; cond = true; } if c>prehval&&precond==true then buy(); if c<prelval&&precond==true then sell(); 32. 수정부탁드립니다. Input : af(0.02), maxAF(0.2); If ma(C,5)>ma(C,5)[1] AND ma(C,5)[1]<=ma(C,5)[2] AND ma(C,5)>ma(C,20) AND ma(C,5)[1]>=ma(C,20)[1] AND C>ma(C,5)AND C[1] <= ma(C,5)[1] AND accumN(ma(C,5)>ma(C,20) AND ma(C,5)[1]<=ma(C,20)[1],20)>=1 then buy(); If C < sar(af,maxAf) AND C[1] >= sar(af,maxAF)[1] then sell();
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2017-10-10 16:48:42

안녕하세요 예스스탁입니다. 업무상 한분의 질문에 많은 시간을 드리긴 어렵습니다. 질문 내용이 너무 많으시면 저희가 답변을 드리기가 어렵습니다. 10번까지만 답변드립니다. 1 ((sdate!= sdate[1] and stime >= P1) or (sdate == sdate[1] and stime >= P1 and stime[1] < P1)) 위 내용은 지정한 시간이후의 첫봉을 의미합니다. 수식은 작성할때 발생할수 있는 모든 상황에 대해 대비해서 작성이 되어야 합니다. 해당 수식이 적용되는 종목이 거래가 별로 없으면 지정한 시간의 봉이 없을 수도 있습니다. (sdate!= sdate[1] and stime >= P1)은 오늘 첫봉이 지정한 시간이후에 발생할때를 대비한 내용이고 (sdate == sdate[1] and stime >= P1 and stime[1] < P1)은 오늘 첫봉은 아니지만 당일 거래가 드문드문 발생해서 지정한 시간으로 시작하는 봉이 없을 때를 대비한 내용입니다. 물론 정상적으로 지정한 시간에 발생되는 봉도 위 내용에 포함이 됩니다. 2 가능하지 않습니다. 수식은 완성봉의 값만 사용가능합니다. 미완성인봉의 볼밴값을 현재가가 터치시 신호가 발생하게는 수식이 작성되지 않습니다. 3 if bdate != bdate[1] Then PlotPaintBar(H,L,"강조"); 4 if stime == 90000 Then PlotPaintBar(H,L,"강조"); 5 if stime == 93000 Then PlotPaintBar(H,L,"강조"); 6. if stime >= 93000 and stime <= 150000 Then PlotPaintBar(H,L,"강조"); 7 var1변수가 카운트한 변수입니다. if C > ma(c,40) Then{ var1 = var1+1; PlotPaintBar(H,L,"강조"); } 8 2010년을 기준으로 보시면 됩니다. 이전 수식들은 문법적인 부분이 일부 변경되어 현재에는 검증이 되지 않는 식들이 있습니다. 9. ###수렴 후 볼린저밴드 돌파 매매 input: period(5), period1(10), period2(20), period3(60), percent(3), D(2); var: value1(0), value2(0), value3(0) ,value4(0); value1 = ma(C,period); value2 = ma(C,period1); value3 = ma(C,period2); value4 = ma(C,period3); If max(value1, value2, value3, value4) < min(value1, value2, value3, value4) * (1 + percent/100) && #이평최고값과 최저값이 period% 이내로 수렴 CrossUp(C, BollBandUp(period,D)) then #상단돌파 buy(); If CrossDown(C,ma(C,period1)) then exitlong(); 10-1 input : 진입횟수(1); var : T1(0),entry(0); if bdate != bdate[1] Then T1 = TotalTrades; if MarketPosition == 0 Then entry = TotalTrades-T1; Else entry = TotalTrades-T1+1; var1 = ma(C,20); if crossup(c,var1) Then{ if entry < 진입횟수 Then buy(); Else //진입횟수 충족시에는 청산만 ExitShort(); } if CrossDown(c,var1) Then{ if entry < 진입횟수 Then sell(); Else //진입횟수 충족시에는 청산만 ExitLong(); } 10-2 input : 진입횟수(5); var : T1(0),entry(0); if DayOfWeek(bdate) < DayOfWeek(bdate[1]) Then T1 = TotalTrades; if MarketPosition == 0 Then entry = TotalTrades-T1; Else entry = TotalTrades-T1+1; var1 = ma(C,20); if crossup(c,var1) Then{ if entry < 진입횟수 Then buy(); Else //진입횟수 충족시에는 청산만 ExitShort(); } if CrossDown(c,var1) Then{ if entry < 진입횟수 Then sell(); Else //진입횟수 충족시에는 청산만 ExitLong(); } 10-3 input : 진입횟수(1); var : T1(0),entry(0); if bdate > bdate[1]+30 Then T1 = TotalTrades; if MarketPosition == 0 Then entry = TotalTrades-T1; Else entry = TotalTrades-T1+1; var1 = ma(C,20); if crossup(c,var1) Then{ if entry < 진입횟수 Then buy(); Else //진입횟수 충족시에는 청산만 ExitShort(); } if CrossDown(c,var1) Then{ if entry < 진입횟수 Then sell(); Else //진입횟수 충족시에는 청산만 ExitLong(); } 10-4 input : nday(10),진입횟수(10); var : T1(0),cnt(0),sumEntry(0); Array : entry[100](0); if bdate != bdate[1] Then{ T1 = TotalTrades; for cnt = 1 to 99 { entry[cnt] = entry[cnt-1][1]; } } if MarketPosition == 0 Then entry[0] = TotalTrades-T1; Else entry[0] = TotalTrades-T1+1; sumEntry = 0; for cnt = 0 to nday-1{ sumEntry = sumEntry + entry[cnt]; } var1 = ma(C,20); if crossup(c,var1) Then{ if sumEntry < 진입횟수 Then buy(); Else //진입횟수 충족시에는 청산만 ExitShort(); } if CrossDown(c,var1) Then{ if sumEntry < 진입횟수 Then sell(); Else //진입횟수 충족시에는 청산만 ExitLong(); } 10-5. 10-6 해당 내용은 가상으로 거래를 체크하는 내용이 있어야 하는데 구사하는 식마다 다르게 작성되는 내용입니다. 작성에 시간도 많이 걸리는 내용으로 저희가 작성해 드리지 않습니다. 사용자분이 이후에 수식익히셔서 구사하는 전략에 맞게 작성하셔야 합니다. 즐거운 하루되세요 > 잡다백수 님이 쓴 글입니다. > 제목 : 이것 저것 문의드립니다. > 수식왕 예스스탁님 매번 감사합니다. 추석 때 공부하다보니 질문이 좀 많네요. 고생하십니다. 감사합니다. 1. 답변해주신 내용 해석을 좀 하고 있는데요. 궁금한 점이 있어서 질문드립니다. ⓐ는 어제 날짜와 다르다는 것을 명시해주는 게 이해가 되는데요. ⓑ에 '어제날짜와 같고 시작시간이 P1보다 크거나 같고, 한개봉전 시작시간이 p1보다 작고'라는 조건은 왜 들어 갔는 지 잘 모르겠습니다. 기초교육 정도론 당연히 쉽지 않을 거라곤 예상했었는데 정말 갈수록 태산이네요. ㅠ 전일등락률25+시간변수청산 input: P1(100000), P2(150000); if ((sdate!= sdate[1] and stime >= P1) or 만약 시작날짜가 전일날짜와 같지 않고 시작시간이 p1보다 크거나 ⓐ (sdate == sdate[1] and stime >= P1 and stime[1] < P1)) and 시작날짜가 전일시작날짜와 같고 시작시간이 P1보다 크거나 같으며 한개봉전 시작시간이 p1보다 작거나 ⓑ DayClose(1) >= Dayopen(1)*1.25 Then 전일봉의 종가가 전일봉의 시가보다 1.25배 클때(25% 올랐을 때) buy(); 사라 SetStopEndofday(P2); 청산은 P2에서 한다. ## if ((sdate!= sdate[1] and stime >= P1) or ) 2. 답변해주시는 내용을 들었는데도 무슨 말씀인 지 잘 모르겠습니다. 그럼 차트에서 30분봉의 저가가 볼린저밴드 상단선을 하향돌파. 하향침범을 했다고 하더라도 30분봉의 볼린저밴드 상단선은 완성이 아직 안된 상태이므로 청산이 되지 않는다는 말씀인가요? 만약 그렇다면 30분봉 볼린저밴드 상단선이 완성되지 않더라도, 그러니까 중간값이라도 저가가 볼린저밴드 상단선을 침범하면 바로 매도 가능하도록 할수는 없을까요? 만약 30분봉이 완성되고 난 뒤에 신호가 난다면 거의 기존 의도했던 신호와는 전혀 다른 결과가 나올 수도 있을 것 같아서요. [원질문] [[[ 7. 시스템 진입 전일 거래대금이 300억이상이면 시초가 매수 청산 볼린저밴드 저가가 상단선에 닿으면 청산 8. 7에 대한 문의 7의 청산에서 볼린저밴드 저가가 상단선에 닿는다는게 봉이 완전히 완성 안되도, 예를 들어 30분봉은 종가가 30분은 돼야 완성되는데요. 그 가운데 저가는 이미 나와 있을 겁니다. 그 저가가 상단선에 닿으면 바로 그 시점에서 청산이 이뤄지는 건가요? 전에 봉이 완성안됐을 때 신호가 나게 하는 방법은 없다고 들었던 기억이 있어서 질문드립니다.]]] [답변] (봉완성시 저가가 상단위이면 완성봉의 상단값이 셋팅되고 다음봉에서 상단선 이하의 시세가 발생하면 즉시 청산됩니다.) 3. 강조 장시작봉에 강조 4. 강조 09:00 봉에 강조(*3이랑 똑같은 건가요?date ,stime 등 시간변수가 헷갈려서 여쭈어 봅니다. ) 5. 강조 09:30 분 봉에 강조 6. 강조 09:30분부터 15:00 분까지의 봉에 강조 7. 강조가 된 봉의 갯수를 셀 수 있나요? 예를 들어 40일 이평 상단에 있는 봉의 갯수를 세는 방법이 있나요? 8. 이전 게시글들 쭈욱 보고 있는데요. 구 예스트레이더 신 예스트레이더 이런 말들이 나오는 걸 보니 중간에 업데이트하거나 수식 사용에 대해 업그레이드를 한 것 같은 느낌이 듭니다. 혹시 수식 사용이 바뀐 날짜를 알 수 있나요? 수식 공부하려고 보고 있는 건데 바뀐 수식이라면 보고 있을 필요가 없을 것 같아서요. 9. 다른 분 질문인데요. 봐도 해석을 못해서 질문드립니다. 이게 왜 수렴 후 돌파매매인 지 모르겠습니다. 한글로 간단히 해석 좀 부탁드립니다. ###수렴 후 볼린저밴드 돌파 매매 input: period(5), period1(10), period2(20), period3(60), percent(3), D(2); var: value1(0), value2(0), value3(0) ,value4(0); value1 = ma(C,period); value2 = ma(C,period1); value3 = ma(C,period2); value4 = ma(C,period3); If max(value1, value2, value3, value4) < min(value1, value2, value3, value4) * (1 + percent/100) && CrossUp(C, BollBandUp(period,D)) then buy(); If CrossDown(C,ma(C,period1)) then exitlong(); 10. 시스템-필터 20이평 상향 하향돌파 전략으로 아래 필터들 좀 부탁드립니다. 10-1 일일 진입횟수 1회로 제한 10-2 주간 진입횟수 5회로 제한 10-3 월간 진입횟수 10회로 제한 10-4 최근 10거래일간 진입횟수 N회로 제한 10-5 최근 3거래동안 연속 수익거래가 발생했을 때 다음 진입 제한 10-6 최근 3회이상 연속 손실거래일 경우 다음 진입 제한 그 다음 거래에 진입 11. 지표 input:period(20); var:fibRatio1(1.618),fibRatio2(2.618),fibRatio3(4.236), ATRV(0),sma(0),r1(0),r2(0),r3(0); ATRV = ATR(period); sma = ma(C, period); r1 = ATRV * fibRatio1; r2 = ATRV * fibRatio2; r3 = ATRV * fibRatio3; Plot1(sma + r3, "fibTop3"); Plot2(sma + r2, "fibTop2"); Plot3(sma + r1, "fibTop3"); Plot4(sma, "middle"); Plot5(sma - r1,"fibBott1"); Plot6(sma - r2,"fibBott2"); Plot7(sma - r3,"figBott3"); 여기서 plot3에 sig9선(rsi등에 있는 시그널선)을 만들고 싶은데요. r4 = sma+1 ; sig = ma(r4,9); 이렇게 해봤더니 오류가 나더라구요. 어떻게 해야 정확한 값이 나오는 지 궁금합니다. 12. 지표 다른 분 답변에 있던 건데요. 문법에러 잘못된 토큰 'else'라고 나옵니다. 뭐가 잘못된 건 지 어떻게 수정해야하는 지 궁금합니다. 분봉에 일봉 볼린저밴드를 표현하는 지표입니다. Input: length(20), D(2); Var: sumSqr(0), maV(0), sumV(0), count(0), stdV(0); If Length != 0 Then Begin sumV = 0; sumSqr = 0; For count = 0 to Length-1 Begin sumV = sumV+DayClose(count); sumSqr = sumSqr + (DayClose(count) - maV) * (DayClose(count) - maV); End; maV = sumV / length; stdV = Sqrt(sumSqr / length); End; Else stdV = 0; plot1(maV); plot2(maV+(D*stdV)); plot3(maV-(D*stdV)); 13-1. 아래 수식(분봉)에다가 200일(변수a) 이동평균선 위에 주가가 100일 이상 있을 경우라는 조건을 더해주시길 바랍니다. 13-2 아래 수식(분봉)에다가 '100일 가운데 200일 이격도가 150 이상을 기록했으며 100일간 100수치 이하로 떨어진 적이 없다'라는 조건을 더해주시길 바랍니다. input : startTime(90000), endTime(092959); if stime >= 93000 and stime < 145000 and crossup(C,TimeHigh(startTime,endTime)) then { exitshort(); if date != entrydate(0) and date != entrydate(1) then buy(); } if stime >= 93000 and stime < 145000 and crossdown(C,TimeLow(startTime,endTime)) then { exitlong(); if date != entrydate(0) and date != entrydate(1) then sell(); } if stime == 145000 then { exitlong(); exitshort(); } 14. 이게 무슨 수식인 지 설명을 좀 부탁드립니다. 그리고 이것과 정반대의 수식도 만들 수 있다면 만들어주시길 바랍니다. input : percent(4); if dayindex() == 0 then { buy(); var1 = C; } if crossup(C, var1 * (1+Percent/100)) then exitlong(); 15. 877번 예스스탁님 답변인데요. 선언되지 않은 i가 있다는데 뭐가 오류인 지 잘 모르겠습니다. Var: BandU(0),BandD(0), Entryidx(0), pos(0); BandU = Highest(H,i-Entryidx+1); BandD = Lowest(L, i-Entryidx+1); if pos != 1 and CrossUp(C,BandU[1]) then { Entryidx = index; pos = 1; // Buy(); // Exitshort(); } if pos != -1 and CrossDown(C,BandD[1]) then { Entryidx = index; pos = -1; // Sell(); // Exitlong(); } plot1(i-entryidx); 16. 시스템 - 필터 밴드폭(bandwidth) 지표가 시그널(9)선 위에 있을 때만 진입 17. 시스템 - 필터 atr지표가 시그널 선 위에 있을 때만 진입 18. 시스템 - 필터 밴드폭 지표가 상승추세(상승추세 정의: 시그널선(40)위에 밴드폭이 있으며 밴드폭이 상승하는 가운데 중간에 5회이상 하락하지 않는다(예 상승중이다가 3회 하락하다 다시 상승하면 계속 상승추세로 봄. )에만 진입 19. 시스템, 이 식이 오류가 나는데요. 왜 오류가 나는 지 몰라서 질문드립니다. 896번답변입니다. var : Cond1(0), Cond2(0), Cond3(0), Cond4(0), Cond5(0), Cond6(0), Cond11(0), Cond22(0), Cond33(0), Cond44(0), Cond55(0), Cond66(0), buyCond(0), sellCond(0), bPosition(0), sposition(0); if date != date[1] then { bposition = 0; sposition = 0; } Cond1 = crossup(C, dayopen(0)+0.3); //매수조건1 Cond2 = crossup(C, dayopen(0)+0.6); //매수조건2 Cond3 = crossup(C, dayopen(0)+0.9); //매수조건3 Cond4 = crossdown(C, dayopen(0)-0.3); //매수청산조건1 Cond5 = crossdown(C, dayopen(0)+0.3); //매수청산조건2 Cond6 = crossdown(C, dayopen(0)+0.6); //매수청산조건3 Cond11 = crossdown(C, dayopen(0)-0.3); //매도조건1 Cond22 = crossdown(C, dayopen(0)-0.6); //매도조건2 Cond33 = crossdown(C, dayopen(0)-0.9); //매수조건3 Cond44 = crossup(C, dayopen(0)+0.3); //매도청산조건1 Cond55 = crossup(C, dayopen(0)-0.3); //매도청산조건2 Cond66 = crossup(C, dayopen(0)-0.6); //매도청산조건3 //매수식 if bposition != 1 then Begin if Cond1 then { buy(); buyCond = 1; bposition = 1; } if Cond2 then { buy(); buyCond = 2; bposition = 1; } if Cond3 then { buy(); buyCond = 3; bposition = 1; } End; //매수청산식 if buyCond == 1 and Cond4 then { exitlong(); bPosition = 0; } if buyCond == 2 and Cond5 then { exitlong(); bPosition = 0; } if buyCond == 3 and Cond6 then { exitlong(); bPosition = 0; } /* //매도식 if sposition != 1 then Begin if Cond11 then { sell(); sellCond = 1; sposition = 1; } if Cond22 then { sell(); sellCond = 2; sposition = 1; } if Cond33 then { sell(); sellCond = 3; sposition = 1; } End; //매도청산식 if sellCond == 1 and Cond44 then { exitlong(); sPosition = 0; } if sellCond == 2 and Cond55 then { exitlong(); sPosition = 0; } if sellCond == 3 and Cond66 then { exitlong(); sPosition = 0; } 20. 연산자 앞 뒤 두 데이터의 형태가 같아야 합니다. 라고 나오는데요. 뭐가 오류인 지 몰라서 여쭤봅니다. var : uprev(0), dnrev(0), bot1(0), bot2(0), top1(0), top2(0); uprev = ma(C,5) > ma(C,5)[1] and ma(C,5)[1] <= ma(C,5)[2]; dnrev = ma(C,5) < ma(C,5)[1] and ma(C,5)[1] >= ma(C,5)[2]; if uprev then { bot1 = ma(C,5)[1]; bot2 = bot1[1]; } if dnrev then { top1 = ma(C,5)[1]; top2 = top1[1]; } if uprev and bot1 > bot2 then buy(); if dnrev and top1 < top2 then sell(); if CrossDown(C,ma(C,10)) then sell(); 21. 983번답변인데요. 숫자값이나 숫자표현식이 와야 합니다. 라는 오류가 납니다. 어떻게 수정하면 될까요? input : 봉갯수(7); if accumN(C > O, 봉갯수) > accumN(C < O, 봉갯수) then buy("매수", atstop, O); if accumN(C > O, 봉갯수) < accumN(C < O, 봉갯수) then sell("매도", atstop, O); 22. 같은 답변인데 연산자 앞뒤 두 형태가 같아야합니다라는 오류가 납니다. var : 조건1(0), 조건2(0), 조건3(0), 조건4(0), 조건5(0); 조건1 = C > ma(C, 20); 조건2 = crossup(C, ma(C, 10)); 조건3 = crossdown(C, ma(C, 10)); 조건4 = crossdown(C, ma(C, 5)); 조건5 = crossup(C, ma(C, 5)); IF 조건1 THEN { IF 조건2 THEN BUY(); //1차 매수 IF 조건3 THEN { SELL(); EXITLONG(); //1차 매수청산 } IF 조건4 THEN SELL(); // 1차 매도 IF 조건5 THEN { BUY(); EXITSHORT(); //1차 매도 청산 } } 22. 994번 답변인데 역시 오류가 나서 질문드립니다. input : 수익(2), 손실(30); var : Cond1(0), Cond2(0), Cond3(0), bposition(0), 진입가(0), buyCond(0), buyval(0); if date != date[1] then { //일간차트의 경우 이 부분(3줄)을 빼야함 buyCond = 0; bposition = 0; } Var1 = ma(C, 5); Var2 = ma(C, 20); Var3 = stochasticsK(20,12); Var4 = stochasticsD(20,12,12); Cond1 = CrossUp(Var1, Var2); Cond2 = Crossdown(Var1, Var2); Cond3 = CrossUp(Var3, Var4); setstoploss(2); //매수식 if bposition != 1 then Begin if Cond1 then { //이평 골든 buy("a"); buyCond = 1; bposition = 1; } else if Cond3 then { //또는 if buyCond != 1 and Cond3 then (스토 골든) buy("b"); buyCond = 3; bposition = 1; 진입가 = C; } End; //매수청산식 if buyCond == 1 and Cond2 then { //이평 데드 exitlong("aa"); bPosition = 0; } if C > 진입가 * (1 + 수익/100) then { //진입가격대비 2% 수익 var1 = 1; buyVal = C; //진입가격대비 2% 수익날 때의 종가를 저장 } if buyCond == 2 then { //진입가격 대비 하락 청산 if C < buyVal * (1 - 손실/100) and marketposition() == 1 then //진입후 30% 수익난 이후 30% 하락하면 exitlong("bb"); bPosition = 0; } 23. 연산자 앞뒤형태가 다르다는 오류가 납니다. 어떻게 수정하면 될까요. var : 진입(0), 청산(0), 당일봉(0), 매수식(0),매수청산식(0), 매도식(0),매도청산식(0),buycount(0),sellcount(0),value1(0),value2(0),value3(0),value4(0), value5(0),value6(0); value1=ema(c,5)-ema(c,26); value2=ema(ema(c,5)-ema(c,26),9); value3=(dayhigh()+daylow())/2; value4=(dayhigh(1)+dayclose(1)+daylow(1))/3; value5=ema(c,187); value6=accumn(bids-asks,5)/5; 당일봉 = dayindex(); 매수식 = value1>value2 and c>value3 and c>value4 and c>value5 and value6>0; 매수청산식= value1<value2 and c<value3 and c<value4; 매도식= value1<value2 and c<value3 and c<value4 and c<value5 and value6<0; 매도청산식= value1>value2 and c>value3 and c>value4; if date != date[1] then { buycount = 0; sellcount = 0; } if buycount < 1 and sellcount < 1 then { if 매수식 then { buy(); buyCount = buyCount+1; } } else if sellcount == 1 and ( 매도청산식 ) and C - entryprice(0) < 0 //당일 매도후 재 매수진입 && 진입가가 이전 진입가 보다 작아야 함 then buy(); if buycount < 1 and sellcount < 1 then { if 매도식 then { sell(); sellcount = sellcount +1; } } else if buycount== 1 and (매수청산식) and C - entryprice(0) > 0 //당일 매수후 재 매도진입 && 진입가가 이전 진입가 보다 커야 함 then sell(); if 매수청산식 then exitlong(); if 매도청산식 then exitshort(); 24. 1051 답변인데 이것도 오류가 나서 수정 좀 부탁드립니다. var : macdcond(0), upcond(0); var1 = 0; var2 = 0; SetStopProfittarget(0.4, pointstop); macdcond = macd(12,26)-ema(macd(12,26),9); if macdcond > macdcond[1] and macdcond[1] > macdcond[2] then var1 = 1; else var2 = var2 - 1; if C > ma(C,10) then var1 = var1 + 1; else var2 = var2 - 1; if date != date[1] then upcond = 0; if stime == 95000 and accumN(C>O,6) > 3 then upcond = 1; if upcond then var1 = var1 + 1; else var2 = var2 - 1; if stochasticsK(12,5) > stochasticsD(12,5,5) then var1 = var1 + 1; else var2 = var2 - 1; if macd(12,26) > ema(macd(12,26),9) then var1 = var1 + 1; else var2 = var2 - 1; if CCI(10) > -100 then var1 = var1 + 1; else var2 = var2 - 1; if CCI(10) < 100 then var2 = var2 - 1; else var2 = var2 - 1; if sar(0.02, 0.2) > sar(0.02, 0.2)[1] then var1 = var1 + 1; else var2 = var2 - 1; if CrossUp(var1, 3) then buy(); if Crossdown(var2, -3) then sell(); if stime == 145000 then { exitlong(); exitshort(); } 25. 지표 이 값을 넘으면 5이평값이 상승할 수 있는 선을 지표로 예를 들어 5000원이 되면 이전 값들과 다 합쳐서 5이평이 상승할 수 있으면 값은 5000원 하락지표도 마찬가지. 26. 시스템 진입 고가가 25의 지표값을 넘어설 경우 진입 청산 저가가 25의 하락지표값을 침범했을 경우이거나 수익률이 2%(변수)를 기록했을 때 청산 27. 이것 역시 오류가 나서 고친 수식 좀 부탁드립니다. var : value(0); value = ma(C,5) < ma(C,5)[1] and ma(C,5)[1] >= ma(C,5)[2] ; if ma(C,5)[MRO(value,40,1)] < ma(C,5)[MRO(value,40,2)] then sell(); 28. 1060번 답변입니다. 수정 좀 부탁드립니다. Input: Period(29), Period1(15), Period2(5), BaseLine1(30), BaseLine2(70); Var: value(0), value1(0), cond1(0), cond2(0), cond3(0); var : buyprice(0), buyidx(0), bpos(0); value= iff(dayOpen()>=preDayClose(), ema((C-(dayOpen()-preDayClose())-lowest(L-(dayOpen()-preDayClose()), Period)) / (highest(H-(dayOpen()-preDayClose()), Period) - lowest(L-(dayOpen()-preDayClose()), Period)) * 100, Period1), ema((C+(preDayClose()-dayOpen())-lowest(L+(preDayClose()-dayOpen()), Period)) / (highest(H+(preDayClose()-dayOpen()), Period) - lowest(L+(preDayClose()-dayOpen()), Period)) * 100, Period1)); value1= ema(value,period2); //매수식 if value>value1 and dayindex()>0 then { buy(); buyprice = C; buyidx = index; bpos = 1; } // 조건1 if bpos == 1 and highest(h,i-buyidx) > dayLow(0) * 1.1 and CrossDown(C, ma(C,5)) then cond1 = 1; else cond1 = 0; // 조건2 if bpos == 1 and highest(h,i-buyidx) > buyprice * 1.05 and Crossdown(C,ma(C,5)) then cond2 = 1; else cond2 = 0; // 조건3 if bpos == 1 and highest(h,i-buyidx) > buyprice * 1.05 and C < O then cond2 = 1; else cond2 = 0; //매수청산식 if cond1 or cond2 or cond3 then { exitlong(); bpos = 0; } 29. 이것도 오류가 있어서 수정부탁드립니다. var1 = CrossUp(C[2], ma(C,20)[2]); var2 = C > ma(C,20)+0.3; var3 = C[1] > ma(C,20)[1]; var4 = CrossDown(C[2], ma(C,20)[2]); var5 = C < ma(C,20)-0.3; var6 = C[1] <= ma(C,20)[1]; if var1 and var2 and var3 then buy(); if var4 and var5 and var6 then sell(); 30. 이것도 역시 연산자형태가 같아야 합니다라는 오류가 납니다. input : p1(3); var : sumV(0), maV(0), ii(0); sumv = 0; FOR ii = 1 to p1 { sumv = sumv + dayclose(ii); } mav = sumV / p1; var1 = C[1] > ma(C[1],10); var2 = C > ma(C,3)+1.5; var3 = C[1] < ma(C[1],10); var4 = C < ma(C,3)-1.5; if var1 and var2 and crossup(close, mav+3.0) then buy("매수"); if var3 and var4 and crossdown(close, mav-3.0) then sell("매도"); 31. 이것도 역시 연산자 오류가 납니다. var : cond(0), preCond(0), Hval(0), Lval(0), preHval(0), preLval(0), nontrend(0); if date <> date[1] then { cond = false; preCond = cond[1]; } Hval = highest(c,12); Lval = lowest(c,12); if Hval - Lval < 0.4 then nontrend = true; else nontrend = false; if nontrend == true then { preHval = Hval; preLval = Lval; cond = true; } if c>prehval&&precond==true then buy(); if c<prelval&&precond==true then sell(); 32. 수정부탁드립니다. Input : af(0.02), maxAF(0.2); If ma(C,5)>ma(C,5)[1] AND ma(C,5)[1]<=ma(C,5)[2] AND ma(C,5)>ma(C,20) AND ma(C,5)[1]>=ma(C,20)[1] AND C>ma(C,5)AND C[1] <= ma(C,5)[1] AND accumN(ma(C,5)>ma(C,20) AND ma(C,5)[1]<=ma(C,20)[1],20)>=1 then buy(); If C < sar(af,maxAf) AND C[1] >= sar(af,maxAF)[1] then sell();