커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

37372 재질문

함수 화일 저장하고 수식 만들어서 검증하니 "외부 입력값을 넣으세요" 라는 오류 메세지가 뜹니다.
프로필 이미지
회원
2014-07-30
162
글번호 77267
지표
답변완료

문의

시스템식 부탁합니다. 일봉(시뮬레이션용) 매수: 오늘의 종가 > 어제의 종가 , 내일의 시작가에 매수 매도: 매수한평균값이 어제의 종가보다 +1% 이상일때 오늘 시작가에 매도청산
프로필 이미지
erwe343
2014-07-30
174
글번호 77265
시스템

좋은하루7 님에 의해서 삭제되었습니다.

프로필 이미지
좋은하루7
2014-07-30
11
글번호 77259
사용자 함수
답변완료

알람작동

아래와 같이 피봇라인에서 소리를 나게 할려고 하는데, 이상하게 소리가 안나는데 뭔가 잘못되었나요? Var: Value1(0),Value2(0),Value3(0),Value4(0),Value5(0); Value1 = (DayHigh(1) + DayClose(1) + DayLow(1))/3; //중심선 Value2 = Value1+DayHigh(1)-DayLow(1); //2차저항 Value3 = 2 * Value1 - DayLow(1); //1차저항 Value4 = 2 * Value1 - DayHigh(1); //1차지지 Value5 = Value1-DayHigh(1)+DayLow(1); //2차지지 If Close == Value1 Then{ PlaySound("C:₩예스트레이더₩Data₩sound₩stop.wav"); } If Close == Value2 Then{ PlaySound("C:₩예스트레이더₩Data₩sound₩stop.wav"); } If Close == Value3 Then{ PlaySound("C:₩예스트레이더₩Data₩sound₩stop.wav"); } If Close == Value4 Then{ PlaySound("C:₩예스트레이더₩Data₩sound₩stop.wav"); } If Close == Value5 Then{ PlaySound("C:₩예스트레이더₩Data₩sound₩stop.wav"); }
프로필 이미지
포리버스
2014-07-30
173
글번호 77258
지표
답변완료

감사드립니다

모지표를 보고 질의 올립니다... Input :short(5),Long(20); Var : T(0),mav1(0),mav2(0),HH(0),LL(0),PreHH(0),PreLL(0),VV(0); mav1 = ma(c,short); mav2 = ma(c,long); if crossup(mav1,mav2) Then{ plot1(L,"ZigZag",BLUE); T = 1; VV = (mav1+mav2)/2; HH = H; LL = L; PreHH = HH[1]; PreLL = LL[1]; } if CrossDown(mav1,mav2) Then{ plot1(H,"ZigZag",RED); T = -1; VV = (mav1+mav2)/2; HH = H; LL = L; PreHH = HH[1]; PreLL = LL[1]; } if H > HH Then HH = H; if L < LL Then LL = L; if PreHH > 0 and PreLL > 0 Then{ if T == 1 Then{ plot2(VV+(PreHH-PreLL)*0,"하락0%"); plot3(VV+(PreHH-PreLL)*0.236,"하락23.6%"); plot4(VV+(PreHH-PreLL)*0.382,"하락38.2%"); plot5(VV+(PreHH-PreLL)*0.500,"하락50%"); plot6(VV+(PreHH-PreLL)*0.618,"하락61.8%"); plot7(VV+(PreHH-PreLL)*0.764,"하락76.4%"); plot8(VV+(PreHH-PreLL)*1.000,"하락100%"); } if T == -1 Then{ plot2(VV-(PreHH-PreLL)*0,"하락0%"); plot3(VV-(PreHH-PreLL)*0.236,"하락23.6%"); plot4(VV-(PreHH-PreLL)*0.382,"하락38.2%"); plot5(VV-(PreHH-PreLL)*0.500,"하락50%"); plot6(VV-(PreHH-PreLL)*0.618,"하락61.8%"); plot7(VV-(PreHH-PreLL)*0.764,"하락76.4%"); plot8(VV-(PreHH-PreLL)*1.000,"하락100%"); } } input:renkoSize(0.5), length(10), NumATRs(1.5); var:j(0),k(0),renkoCnt(0),gubun(0),Sum(0),trSum(0),atrV(0),time1(0), filename("renko3.txt"),printOK(False); array:OO[50](0),HH[50](0),LL[50](0),CC[50](0), TR[50](0), //True Range upperLine[50](0), //상단채널 lowerLine[50](0), //하단채널 maV[50](0); //이평선 If DayIndex == 0 Then { //break on session에 해당, 즉 일자가 바뀌면 새로 계산 gubun = 0; //방향을 초기화한다. 이후 형성되는 가격에 의해 방향이 계산 For j = 49 DownTo 1 { //금일 시가봉을 신규 추가 OO[j] = OO[j-1]; HH[j] = HH[j-1]; LL[j] = LL[j-1]; CC[j] = CC[j-1]; TR[j] = TR[j-1]; maV[j] = maV[j-1]; upperLine[j] = upperLine[j-1]; lowerLine[j] = lowerLine[j-1]; } OO[0] = C; //분봉의 종가를 기반으로 계산하기 때문에 당일 시초가 아니다 HH[0] = C; LL[0] = C; CC[0] = C; } Else { If gubun == 0 and CC[0] > 0 Then { //일 첫봉이 완성되지 않은 시점 If OO[0] - renkoSize >= C Then { gubun = -1; //하락 방향 CC[0] = OO[0] - renkoSize; //음봉 HH[0] = OO[0]; LL[0] = CC[0]; TR[0] = max(CC[1],HH[0]) - min(CC[1],LL[0]); //true range 계산식 참조 //macd 계산 당시와 마찬가지로 sum 값이 있을 때만 처리 If sum > 0 Then { sum = sum + CC[0] - CC[length]; //이평선 계산 원리 그대로, 현재가를 더하고 n봉전 가격 뺌 trSum = trSum + TR[0] - TR[length]; //true range의 합을 계산 maV[0] = Sum / length; //n개의 종가 합을 n으로 나누어 이동평균 계산 atrV = trSum / length; //ATR 계산식 참조 upperLine[0] = maV[0] + atrV * NumATRs; //상단 밴드 계산 lowerLine[0] = maV[0] - atrV * NumATRs; //하단 밴드 계산 } j = 0; if printOK then print(filename, "1=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f", j,gubun,OO[j],HH[j],LL[j],CC[j]); } Else If OO[0] + renkoSize <= C Then { gubun = 1; //상승 방향 CC[0] = OO[0] + renkoSize; //양봉 HH[0] = CC[0]; LL[0] = OO[0]; TR[0] = max(CC[1],HH[0]) - min(CC[1],LL[0]); If sum > 0 Then { //계속 반복되는 공통 루틴이므로 if문 바깥으로 뺄까도 했으나 sum = sum + CC[0] - CC[length]; //더 복잡해지므로 copy & paste로 처리 trSum = trSum + TR[0] - TR[length]; maV[0] = Sum / length; atrV = trSum / length; upperLine[0] = maV[0] + atrV * NumATRs; lowerLine[0] = maV[0] - atrV * NumATRs; } j = 0; if printOK then print(filename, "2=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f", j,gubun,OO[j],HH[j],LL[j],CC[j]); } } If LL[0] - renkoSize >= C Then { gubun = -1; renkoCnt = Int(Round((LL[0]-C)/renkoSize,9)); if renkoCnt > 49 then renkoCnt = 49; For j = 49 DownTo renkoCnt { OO[j] = OO[j-renkoCnt]; HH[j] = HH[j-renkoCnt]; LL[j] = LL[j-renkoCnt]; CC[j] = CC[j-renkoCnt]; TR[j] = TR[j-renkoCnt]; maV[j] = maV[j-renkoCnt]; upperLine[j] = upperLine[j-renkoCnt]; lowerLine[j] = lowerLine[j-renkoCnt]; } For j = renkoCnt-1 DownTo 0 { OO[j] = LL[j+1]; CC[j] = LL[j+1] - renkoSize; HH[j] = OO[j]; LL[j] = CC[j]; TR[j] = max(CC[j+1],HH[j]) - min(CC[j+1],LL[j]); If sum > 0 Then { sum = sum + CC[j] - CC[j+length]; trSum = trSum + TR[j] - TR[j+length]; maV[j] = Sum / length; atrV = trSum / length; upperLine[j] = maV[j] + atrV * NumATRs; lowerLine[j] = maV[j] - atrV * NumATRs; } if printOK then print(filename, "3=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",j,gubun,OO[j],HH[j],LL[j],CC[j]); } } Else If HH[0] + renkoSize <= C Then { gubun = 1; renkoCnt = Int(Round((C-HH[0])/renkoSize,9)); if renkoCnt > 49 then renkoCnt = 49; For j = 49 DownTo renkoCnt { OO[j] = OO[j-renkoCnt]; HH[j] = HH[j-renkoCnt]; LL[j] = LL[j-renkoCnt]; CC[j] = CC[j-renkoCnt]; TR[j] = TR[j-renkoCnt]; maV[j] = maV[j-renkoCnt]; upperLine[j] = upperLine[j-renkoCnt]; lowerLine[j] = lowerLine[j-renkoCnt]; } For j = renkoCnt-1 DownTo 0 { OO[j] = HH[j+1]; CC[j] = HH[j+1] + renkoSize; HH[j] = CC[j]; LL[j] = OO[j]; TR[j] = max(CC[j+1],HH[j]) - min(CC[j+1],LL[j]); If sum > 0 Then { sum = sum + CC[j] - CC[j+length]; trSum = trSum + TR[j] - TR[j+length]; maV[j] = Sum / length; atrV = trSum / length; upperLine[j] = maV[j] + atrV * NumATRs; lowerLine[j] = maV[j] - atrV * NumATRs; } if printOK then print(filename, "4=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f", j,gubun,OO[j],HH[j],LL[j],CC[j]); } } Else If Time >= 151500 Then { //당일 종가봉에서 For j = 49 DownTo 1 { OO[j] = OO[j-1]; HH[j] = HH[j-1]; LL[j] = LL[j-1]; CC[j] = CC[j-1]; TR[j] = TR[j-1]; maV[j] = maV[j-1]; upperLine[j] = upperLine[j-1]; lowerLine[j] = lowerLine[j-1]; } If LL[1] > C Then { //종가가 이전 봉보다 아래 형성 OO[0] = LL[1]; CC[0] = C; HH[0] = OO[0]; LL[0] = CC[0]; TR[0] = max(CC[1],HH[0]) - min(CC[1],LL[0]); } Else If HH[1] < C Then { //종가가 이전 봉보다 위에 형성 OO[0] = HH[1]; CC[0] = C; HH[0] = CC[0]; LL[0] = OO[0]; TR[0] = max(CC[1],HH[0]) - min(CC[1],LL[0]); } Else { //종가가 이전 봉의 중간에 형성 OO[0] = C; CC[0] = C; HH[0] = C; LL[0] = C; TR[0] = max(CC[1],HH[0]) - min(CC[1],LL[0]); } If sum > 0 Then { sum = sum + CC[0] - CC[length]; trSum = trSum + TR[0] - TR[length]; maV[0] = Sum / length; atrV = trSum / length; upperLine[0] = maV[0] + atrV * NumATRs; lowerLine[0] = maV[0] - atrV * NumATRs; } j = 0; //채널 값을 새로이 계산 if printOK then print(filename, "5=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f", j,gubun,OO[j],HH[j],LL[j],CC[j]); } } if sum == 0 and CC[length] > 0 then { for j = 0 to length - 1 { sum = sum + CC[j]; trsum = trsum + max(CC[j+1],HH[j]) - min(CC[j+1],LL[j]); } } If OO[0] > 0 Then Plot1(OO[0],"OO"); //지표속성 -> 차트표시 -> 채우기 -> OO < CC 면 빨강 추가 If CC[0] > 0 Then Plot2(CC[0],"CC"); // OO > CC 면 파랑 추가 if upperLine[0] > 100 then plot3(upperLine[0],"UpperBand"); if lowerLine[0] > 100 then plot4(lowerLine[0],"LowerBand"); if maV[0] > 100 then plot5(maV[0],"MidLine"); 위의 지표에서 하락0%보다 하락100%가 위에 있고 CC[0]>OO[0]이면 a가 하락0%보다크고 하락100%보다작을때 현재가가 a를 크로스없하면 매수, 하락0%보다 하락100%가 아래에 있고 CC[0]<OO[0]이면 b가 하락0%보다 작고 하락100%보다 클때 현재가가 b를 크로스다운하면 매도 하락100%가 하락0%를 크로스다운하고 현재가가 하락0%보다 작으면 매수청산 하락100%가 하락0%를 크로스업하고 현재가가 하락0%보다 크면 매도청산 만들때 같은내용의 지표가 있다고 수정을 요해서 어려워서 부탁드립니다 부탁드립니다
프로필 이미지
오동도물개
2014-07-30
242
글번호 77257
시스템

회원 님에 의해서 삭제되었습니다.

프로필 이미지
회원
2014-07-30
7
글번호 77256
지표
답변완료

수식문의

주간매매횟수와 월간매매횟수를 구하는 식을 부탁드립니다. 전주, 전전주 도 확인할 수 있게 어레이로 부탁드립니다.
프로필 이미지
옵티머스
2014-07-30
183
글번호 77255
시스템

옵티머스 님에 의해서 삭제되었습니다.

프로필 이미지
옵티머스
2014-07-30
0
글번호 77254
시스템
답변완료

거래 진입 시간에 대한 수식

수고하십니다 어제 거래진입시간에 대한 수식을 가르켜주셔서 예스랭귀지에 구동시키니 아래의 수식이 아니라 stime >= 070000 and stime < 160000 stime >= 070000 and stime < 160000; 세미콤아가 붙는 것이 였습니다... 그런데 이것을 진입청산식에 붙여 쓰라 했는데요.. 첨부한 그림 부분에 넣고 돌려 보니 에러는 안뜨는데 잘 도는건지 의심이 듭니다.. 이곳이 맞는지 의견 좀 부탁드립니다.
프로필 이미지
아카디아
2014-07-30
195
글번호 77253
시스템