커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내

안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
프로필 이미지
예스스탁
2026-02-27
7294
글번호 230811
지표
답변완료

지표 표현 부탁드립니다.

부탁드립니다! 체결잔량 수식입니다. input : P(20),i(40); var1 = bids-asks; var2 = ma(var1,P); var3 = ma(var1,i); plot1(var1); plot2(var2); plot3(var3); 위 P(20) 선이 상방향은 빨간색 하방향은 파란색으로 표기하고 싶습니다. 부탁드립니다. 긴 연휴 즐거운 시간 되시길 바랍니다.
프로필 이미지
포보스
2017-10-02
140
글번호 113234
지표
답변완료

부탁드립니다

즐거운 추석되십시요^^ 1. 주가가 5이평선을 상승 돌파한후에 macd g/c 발생시 매수 반대의경우는 매도 2. 어떤추세 돌파후 macd g/c 발생시 매수 & 매도식 부탁드립니다. 3. 3봉전 시가가 5이평선을 상승 돌파시 매수 반대의 경우는 매도식 부탁드립니다.
프로필 이미지
시월
2017-10-02
139
글번호 113233
시스템

흑형 님에 의해서 삭제되었습니다.

프로필 이미지
흑형
2017-10-01
81
글번호 113232
시스템
답변완료

이것 저것 문의드립니다.

수식왕 예스스탁님 매번 감사합니다. 추석 때 공부하다보니 질문이 좀 많네요. 고생하십니다. 감사합니다. 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();
프로필 이미지
잡다백수
2017-10-07
422
글번호 113231
시스템
답변완료

확인 부탁드립니다.

작성해 주신 식으로 구동해도 진입(구동)이 없습니다. 확인 부탁드립니다. 틱차트사용중입니다 매매 조건입니다. (매수로만 설명드립니다 매도는 반대 동일조건으로 해주세요) 1번. 매수포지션 1차 진입하여 손절되면 매도 조건시 2차 진입 (단, 매도 진입은 Data2의 20일선이 100일선 위에 있고 80일선이 상방일때만) * 55029 에서작성해주신 아래식에서 부등호가 ">"로 변경해야 되는거 아닌지 문의드립니다.? IsExitName("S손절",1) == true and avg1 < avg3 and avg2 < avg2[1] then buy("Buy4"); 2번. 매수, 매도 포지션 진입 후 익절이되면 당일 매매 끝 3번. 진입횟수를 2로 하면 1번과같은 조건으로 두번까지만 진입이 되게 해주시고, 첫번째 매매에서 익절이 되면 당일 매매는 종료하게 해주세요. input : short(12),long(26),sig(9),P1(3),P2(20),P3(100); input : 시작시간(102000), 종료시간(172000); input : 진입횟수(2); var : mav1(0,data1),mav2(0,data1),mav3(0,data1); var : Tcond(False,data1),count(0,data1),T1(0,data1); var : MACDO2(0,data2), MACDO1(0,data1); var : BH(0,data1),SL(0,data1),Xcond(false,data1); var : avg1(0,data2),avg2(0,data2),avg3(0,data2); MACDO2 = data2(MACD_OSC(short,long,sig)); MACDO1 = data1(MACD_OSC(short,long,sig)); mav1 = data1(ma(c,P1)); mav2 = data1(ma(c,P2)); mav3 = data1(ma(c,P3)); avg1 = data2(ma(c,20)); avg2 = data2(ma(c,80)); avg3 = data2(ma(c,100)); if stime == 시작시간 or (stime >시작시간 and stime[1] < 시작시간) Then{ T1 = TotalTrades; Tcond = true; Xcond = true; } if stime == 종료시간 or (stime > 종료시간 and stime[1] < 종료시간) Then{ Tcond = false; } if TotalTrades > TotalTrades[1] and (IsExitName("B익절1",1) or IsExitName("B익절2",1) or IsExitName("S익절1",1) or IsExitName("S익절2",1)) Then Xcond = true; if MarketPosition == 0 Then count = TotalTrades-T1; Else count = TotalTrades-T1+1; //진입 if Tcond == true and Xcond == false Then{ if MACDO2 > MACDO2[1] and crossup(mav2,mav3) Then{ if count == 0 and MarketPosition <= 0 Then buy("Buy1"); if count > 0 and count < 진입횟수 and MarketPosition == -1 then buy("Buy2"); if count > 0 and count < 진입횟수 and MarketPosition == 0 and MarketPosition(1) != 1 and IsExitName("S손절",1) == false then buy("Buy3"); if count > 0 and count < 진입횟수 and MarketPosition == 0 and MarketPosition(1) != 1 and IsExitName("S손절",1) == true and avg1 < avg3 and avg2 < avg2[1] then buy("Buy4"); } if MACDO2 < MACDO2[1] and CrossDown(mav2,mav3) then{ if count == 0 and MarketPosition >= 0 Then Sell("Sell1"); if count > 0 and count < 진입횟수 and MarketPosition == 1 then Sell("Sell2"); if count > 0 and count < 진입횟수 and MarketPosition == 0 and MarketPosition(1) != -1 and IsExitName("B손절",1) == false then Sell("Sell3"); if count > 0 and count < 진입횟수 and MarketPosition == 0 and MarketPosition(1) != -1 and IsExitName("B손절",1) == true and avg1 > avg3 and avg2 > avg2[1] then Sell("Sell4"); } } //청산1 if MarketPosition == 1 Then{ BH = highest(H,BarsSinceEntry); if BH >= EntryPrice+PriceScale*60 and BH < EntryPrice+PriceScale*80 Then ExitLong("B익절1",AtStop,BH-PriceScale*30); if BH >= EntryPrice+PriceScale*80 Then ExitLong("B익절2",AtStop,BH-PriceScale*20); ExitLong("B손절",AtStop,EntryPrice-PriceScale*40); } if MarketPosition == -1 Then{ SL = Lowest(L,BarsSinceEntry); if SL <= EntryPrice-PriceScale*60 and SL > EntryPrice-PriceScale*80 Then ExitShort("S익절1",AtStop,SL+PriceScale*30); if SL <= EntryPrice-PriceScale*80 Then ExitShort("S익절2",AtStop,sL+PriceScale*20); ExitShort("S손절",AtStop,EntryPrice+PriceScale*40); } if 종료시간 <= sTime or sTime < 시작시간 then { if MarketPosition == 1 then{ ExitLong("B장종료"); } if MarketPosition == -1 then{ ExitShort("S장종료"); } }
프로필 이미지
라떼처럼
2017-10-01
197
글번호 113230
시스템
답변완료

문의 드립니다.

[질문1] 참조데이터 data2의 순매수량 50봉의 데이타를 가지고 아래의 자료를 구하고 싶습니다. 도움을 부탁드립니다. 49봉전부터 0봉전(현재봉)까지의 순매수 누적수량 NU 49봉전부터 현재봉까지의 순매수 누적수량 중 최대였을 때의 누적수량 MAX_NU 49봉전부터 현재봉까지의 순매수 누적수량 중 최소였을 때의 누적수량 MIN_NU (EX) 49봉전에 500개 매수하고 48봉전에 100개 매도하고 47봉전에 300개 매수했다면 46봉전에 100개 매도했다면 46봉전까지의 NU = 500-100 +300 -100 = 600 MAX_NU = 500-100 +300 = 700 MIN_NU = 500-100 = 400 [질문2] 전일의 봉을 제외한 금일의 봉만으로 계산 금일시작봉으로부터 0봉전(현재봉)까지의 순매수 누적수량 Day_NU 금일시작봉으로부터 현재봉까지의 순매수 누적수량 중 최대였을 때의 누적수량 Day_MAX_NU 금일시장봉으로부터 현재봉까지의 순매수 누적수량 중 최소였을 때의 누적수량 Day_MIN_NU [질문3] 가령 2017년 9월 22일부터 오늘까지의 DATA2의 순매수량을 모두 합산하고 그 다음날에는 자동으로 9월22일부터 그 다음날까지 합산되게 하고 싶다면 수식을 어떻게 작성하면 될까요? 특정한 날짜를 INPUT으로 잡아서 항상 오늘까지 합산되게 하려면 일봉으로 하여 몇봉 전까지 더하면 되는지를 도출할 수 있는 수식을 구하면 될 것같은데 좀 부탁드립니다.
프로필 이미지
이심전심
2017-10-08
224
글번호 113229
지표
답변완료

문의드립니다.

선물차트 기준으로 문의드립니다. 3분차트에 90틱차트의 단순이평250선, 지수이평300선, 삼각가중평균150선을 나타내고 싶습니다. 정확하면 좋겠지만 정확하지 않더라도 근사치로 나타낼수 있다면 부탁드립니다. 각 기간값은 수정가능하게 부탁드립니다. 감사합니다. 수고하세요!!!
프로필 이미지
해암
2017-09-30
196
글번호 113228
지표
답변완료

부탁드립니다

1.스토캐스틱 K와시그널교차시 상승은빨강색 하락은파랑색만들어주세요 2.당일시가선과 당일시간 시가선 잘부탁드립니다
프로필 이미지
용각산
2017-10-07
228
글번호 113227
지표
답변완료

a=a+b와 같은 형태의 연산에 대해서 여쭙니다.

vars:a(0),b(0),d(0); if ma(c,5)>ma(c,20) then { b=(ma(c,5)-ma(c,20))/ma(c,60); a=a+b; d=accum(b); plot1(b,"b"); plot2(a,"누적a"); plot3(d,"d"); } 와 같은 수식을 만들어 출력을 확인하면 plot1 은 출력이 되지만 plot2와 plo3는 결과를 알수가 없습니다.(N/A) plot2와 같은경우 a=a+b; 대신 a=a[1]+b;를 하여도 결과가 동일합니다.
프로필 이미지
일프로
2017-09-30
219
글번호 113226
지표