커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

한 전략당 2번 매매하도록

수고 많으십니다. 아래를 만족하는 시스템식 문의 드립니다. 1. 한 전략당 하루 2번의 진입만 허용 2. 단 2번째 진입은 1번째 진입이 수익이건 손절이건 청산이 다 되어야 진입하도록
프로필 이미지
lucky93
2013-05-15
158
글번호 63266
시스템
답변완료

여러 시스템 통합의 경우.

A,B,C라는 각 다른 시스템을 사용합니다. 근데,누적수량갯수로 비슷하게 표현은 됩니다. A는 48개,B는 55개,C는 -20개(이건 매도수량) 이런 식으로 말이죠. 이 세 가지의 시스템을 합해서 누적수량갯수의 합이 100이면 매수 진입, 90찍으면 청산과 같은 방식으로 여러 시스템을 통합해서 수식을 만들 수 있나요? 그리고 DATA2를 각 개별시스템들이 이미 사용하면서 시스템이 돌아가는 상황이라 그냥 DATA2,DATA3....이런 식으로 참조데이타를 이용하기도 어려울 것 같네요. 가능하면 지원 부탁합니다^^
프로필 이미지
써니83
2013-05-15
188
글번호 63265
시스템
답변완료

종목검색식 문의

두가지 식을 문의드립니다. 1. 당일 종가 기준으로 5일선/20일선 위로 올라가는 양봉 검색 - 전일 거래량대비 당일 거래량 3배이상 증가 - 전일 종가상 역배열 - 전일 기준 이동평균선 3개가 상하 1%이내 밀집(5일선, 20일선, 60일선) - 당일 5%이상 양봉으로 마감 & 5일선 20일선 위로 종가 마감 2. 1년이내 신고가 돌파하는 종목검색 - 당일 종가가 7%이상 양봉 - 당일 종가는 당일 고가 대비 -3%이상 마감 ex) 당일 고가 10% 당일 종가 5% --> 검색 제외 당일 고가 10% 당일 종가 8% --> 검색 포함 - 전일 거래량대비 당일 거래량 3배이상 증가 - 일봉기준으로 당일종가 >= 전일 종가까지 최고점 *검색일은 전일~D-180일 기준으로 검색
프로필 이미지
개미주주
2013-05-15
168
글번호 63264
검색

러블리 님에 의해서 삭제되었습니다.

프로필 이미지
러블리
2013-05-16
15
글번호 63263
지표
답변완료

재진입 식에서

목표가를 0.8 하고 했더니 짧께 짧게 수익을 내려 했더니 문제가 있네요 아이디어가 뭐가 잘못 &#46124;나요 ?? //출처 : 7th감각 시스템트레이딩, p230 input : len(2.9), len1(0.53); var : CurrentEntryNum(0); Var1=dayhigh(1)-dayLow(1); //전일 고저차 var2=dayhigh-daylow; var3= var2-var1; condition1= sdate==exitdate(1) And marketposition(1)==1; //청산날짜가 오늘날짜이고 직전포지션이 매수 condition2= sdate==exitdate(1) And marketposition(1)==-1;//청산날짜가 오늘날짜이고 직전포지션이 매도 if date<>date[1] Then { //날이 바뀐 첫봉에서 var50 = TotalTrades; //진입횟수 체크 Var10=atr(20)*len1; //당일의 var10 설정 } CurrentEntryNum = iff(marketposition == 0,TotalTrades, TotalTrades+1 ); //하루에 3번만 진입 If stime<150000 then { If condition1==False And currententrynum-var50<=2 and marketposition <> 1 then buy("매수",Atstop,dayLow+var1*len1); //지정가 상향돌파시 매수 If condition2==False And currententrynum-var50<=2 and marketposition <> -1 then sell("매도",Atstop,dayHigh-var1*len1); //지정가 하향돌파시 매도 } //청산 If marketposition==1 then exitlong("매수청산",Atstop,entryprice+0.8); If marketposition==-1 then exitshort("매도청산",Atstop,entryprice-0.8); // 매수 재진입 if MarketPosition == 0 and stime < 150000 and ExitDate(1) == sdate and MarketPosition(1) == 1 and C>= exitprice(1)+0.4 then buy("bb); if MarketPosition == 1 and IsEntryName("bb") then exitlong("bbx",Atstop,entryprice+0.8); //매도 재진입 if MarketPosition == 0 and stime < 150000 and ExitDate(1) == sdate and MarketPosition(1) == -1 and c <= exitprice(1)-0.4 Then sell("ss"); if MarketPosition == -1 and IsEntryName("ss") then exitshort("ssx",Atstop,entryprice-0.8);
프로필 이미지
구다이전설
2013-05-16
177
글번호 63262
시스템
답변완료

부탁드립니다.

안녕하세요. 변곡점이 아닌 추세선 돌파식으로 부탁드립니다. 항상 노고에 감사드립니다. Input:atrLength(14),multi(1); Var:j(0),dayATR(0),sum(0),upTr(100),dnTr(-100),trnd(0), date11(0),date12(0),time11(0),time12(0),TL1(0), date21(0),date22(0),time21(0),time22(0),TL2(0), date31(0),date32(0),time31(0),time32(0),TL3(0); Array:hiVal[10](0),loVal[10](0),hiBar[10](0),loBar[10](0); //hiVal[1]은 전고점, hiVal[2]는 전전고점, hiVal[3]은 전전전고점 //hiVal[0]은 변곡점 이후 현재봉까지의 고점. 현재 고점은 진행중이므로 계속 바뀐다. //loVal[0]은 반대 개념 sum = 0; for j = 1 to atrLength { sum = sum + Max(DayClose(j+1),DayHigh(j)) - Min(DayClose(j+1),DayLow(j)); } dayATR = sum/atrLength; //일봉기준으로 ATR 산출 for j = 1 to 9 { //전고,전저점을 9개까지 보관 loBar[j] = loBar[j] + 1; //전저점의 위치. 현재 봉으로부터 떨어져 있는 거리 hiBar[j] = hiBar[j] + 1; //전고점의 위치 } if hiVal[0] <= H or hiVal[0] == 0 then { //전고,전저점 이후 현재까지의 고점 hiVal[0] = H; //0을 체크한 이유는 초기에 값이 없는 구간이 생기기 때문 hiBar[0] = 0; //현재 고점의 위치가 0이란 것은 현재봉의 고가가 구간 고점이라는 의미 } else { hiBar[0] = hiBar[0] + 1; //현재 고점의 위치 } if loVal[0] >= L or loVal[0] == 0 then { //전고,전저점 이후 현재까지 저점 loVal[0] = L; loBar[0] = 0; } else { loBar[0] = loBar[0] + 1; //현재 구간 저점의 위치 } if trnd != dnTr && hiVal[0] > H && hiVal[0] - (dayATR * multi) > L then trnd = dnTr; //저가가 고가 대비 변동률보다 밑으로 떨어지면 하락추세로 설정 //단, 현재봉의 고가가 변곡점 이후 최고가이면 상승 추세가 진행중이라고 본다. //그래서 현재봉의 고가가 hiVal[0]보다 작다는 조건이 추가되었다. else if trnd != upTr && loVal[0] < L && loVal[0] + (dayATR * multi) < H then trnd = upTr; //고가가 저가 대비 변동률보다 높으면 상승추세로 설정 if trnd[1] == upTr and trnd == dnTr then { //상승추세였다가 하락추세로 바뀌었다면 for j = 8 downto 1 { //새로운 전고점이 생기는 것이므로 hiVal[j+1] = hiVal[j]; //전고점을 하나씩 뒤로 보낸다. hiBar[j+1] = hiBar[j]; //전고점은 전전고점이 되고, 전전고점은 전전전고점이 된다. } hiVal[1] = hiVal[0]; //새로운 전고점에 현재 고점을 대입 hiBar[1] = hiBar[0]; hiVal[0] = H; //전고점이 확정되었으므로 전고점 이후 최고가는 현재봉의 고가 hiBar[0] = 0; loVal[0] = L; loBar[0] = 0; //전고점이 새로 생긴 것이니까 전저점에서 전고점까지 추세선을 긋는다. date11 = date[loBar[1]]; //추세선 시작일. 전저점의 날짜 time11 = stime[loBar[1]]; //추세선 시작시간 Value11 = loVal[1]; //추세선 시작가격 date12 = date[hiBar[1]]; //추세선 종료일. 전고점의 날짜 time12 = stime[hiBar[1]]; //추세선 종료시간 Value12 = hiVal[1]; //추세선 종료가격 TL1 = TL_New(date11,time11,Value11,date12,time12,Value12); //TL_New는 신규 추세선을 그려주는 함수 } if trnd[1] == dnTr and trnd == dnTr and //추세는 하락 상태에서 바뀌지 않았는데 hiVal[1] < hiVal[0] then { //전고점보다 더 높은 고점이 출현했다면 if loVal[1] <= loVal[0] then { //전저점은 갱신되지 않았다면 hiVal[1] = hiVal[0]; //전고점을 현재의 고점으로 바꿔준다. hiBar[1] = hiBar[0]; hiVal[0] = H; hiBar[0] = 0; loVal[0] = L; loBar[0] = 0; //전고점이 추가된 게 아니고 바뀐 것이므로 종료일,종료시간,종료가격만 바꿔준다. date12 = date[hiBar[1]]; //추세선 종료일 time12 = stime[hiBar[1]]; Value12 = hiVal[1]; TL_SetEnd(TL1, date12,time12,Value12); //TL_SetEnd는 기존추세선의 종료지점을 변경해주는 추세선 함수이다. //TL_Delete 함수를 써서 직전의 추세선을 지우고 다시 TL_New로 추세선을 추가해도 된다. } else { //전저점도 갱신되었다면 for j = 8 downto 1 { //전고점, 전저점을 새로이 추기 hiVal[j+1] = hiVal[j]; //전고점을 하나씩 뒤로 보낸다. hiBar[j+1] = hiBar[j]; //전고점은 전전고점이 되고, 전전고점은 전전전고점이 된다. loVal[j+1] = loVal[j]; //전저점을 하나씩 뒤로 보낸다. loBar[j+1] = loBar[j]; //전저점은 전전저점이 되고, 전전저점은 전전전저점이 된다. } hiVal[1] = hiVal[0]; //새로운 전고점에 현재 고점을 대입 hiBar[1] = hiBar[0]; loVal[1] = loVal[0]; //새로운 전저점에 현재 저점을 대입 loBar[1] = loBar[0]; hiVal[0] = H; //전고점 이후 최고가는 현재봉의 고가 hiBar[0] = 0; loVal[0] = L; loBar[0] = 0; //전저,전고점이 새로 생긴 것이니까 전전고점에서 전저점까지 //그리고 전저점에서 전고점까지 추세선 2개를 생성한다. date11 = date[hiBar[2]]; //추세선 시작일. 전전고점의 날짜 time11 = stime[hiBar[2]]; //추세선 시작시간 Value11 = hiVal[2]; //추세선 시작가격 date12 = date[loBar[1]]; //추세선 종료일. 전저점의 날짜 time12 = stime[loBar[1]]; //추세선 종료시간 Value12 = loVal[1]; //추세선 종료가격 TL1 = TL_New(date11,time11,Value11,date12,time12,Value12); TL_SetSize(TL1,2); date11 = date[loBar[1]]; //추세선 시작일. 전저점의 날짜 time11 = stime[loBar[1]]; //추세선 시작시간 Value11 = loVal[1]; //추세선 시작가격 date12 = date[hiBar[1]]; //추세선 종료일. 전고점의 날짜 time12 = stime[hiBar[1]]; //추세선 종료시간 Value12 = hiVal[1]; //추세선 종료가격 TL1 = TL_New(date11,time11,Value11,date12,time12,Value12); } } if trnd[1] == dnTr and trnd == upTr then { //추세가 하락에서 상승으로 바뀌었을 경우 for j = 8 downto 1 { //이전저점은 전전저점으로, 전전저점은 전전전저점으로 번호를 부여 loVal[j+1] = loVal[j]; loBar[j+1] = loBar[j]; } loVal[1] = loVal[0]; loBar[1] = loBar[0]; loVal[0] = L; loBar[0] = 0; hiVal[0] = H; hiBar[0] = 0; date11 = date[hiBar[1]]; //전저점이 새로이 생긴 것이므로 시작점은 전고점이 된다. time11 = stime[hiBar[1]]; Value11 = hiVal[1]; date12 = date[loBar[1]]; time12 = stime[loBar[1]]; Value12 = loVal[1]; TL1 = TL_New(date11,time11,Value11,date12,time12,Value12); } if trnd[1] == upTr and trnd == upTr and //추세는 상승을 유지하고 있는데 loVal[1] > loVal[0] then { //전저점보다 낮은 저가가 출현했다면 if hiVal[1] >= hiVal[0] then { //고점 갱신이 되지 않았다면 loVal[1] = loVal[0]; //직전의 전저점만 바꿔준다. loBar[1] = loBar[0]; loVal[0] = L; loBar[0] = 0; hiVal[0] = H; hiBar[0] = 0; date12 = date[loBar[1]]; time12 = stime[loBar[1]]; Value12 = loVal[1]; TL_SetEnd(TL1, date12,time12,Value12); } else { //고점도 이전고점보다 높다면 for j = 8 downto 1 { //전고점,전저점을 새로이 생성 hiVal[j+1] = hiVal[j]; hiBar[j+1] = hiBar[j]; loVal[j+1] = loVal[j]; loBar[j+1] = loBar[j]; } hiVal[1] = hiVal[0]; hiBar[1] = hiBar[0]; loVal[1] = loVal[0]; loBar[1] = loBar[0]; loVal[0] = L; loBar[0] = 0; hiVal[0] = H; hiBar[0] = 0; date11 = date[loBar[2]]; //시작점이 전전저점 time11 = stime[loBar[2]]; Value11 = loVal[2]; date12 = date[hiBar[1]]; //종료는 전고점 time12 = stime[hiBar[1]]; Value12 = hiVal[1]; TL1 = TL_New(date11,time11,Value11,date12,time12,Value12); TL_SetSize(TL1,2); date11 = date[hiBar[1]]; //2번째 시작은 전고점이 된다. time11 = stime[hiBar[1]]; Value11 = hiVal[1]; date12 = date[loBar[1]]; //2번째 종료는 전저점 time12 = stime[loBar[1]]; Value12 = loVal[1]; TL1 = TL_New(date11,time11,Value11,date12,time12,Value12); } } //여기까지가 파동선이고 아래는 추세선이다. if loVal[2] < loVal[1] then { //전전저점보다 전저점이 높을 경우 //전전저점으로부터 전저점까지 지지추세선을 긋는데 //시작점인 전전저점이 바뀌면 신규추세선을 긋고(TL_New) //시작점이 바뀌지 않았다면 종료지점만 변경해준다(TL_SetEnd) if loBar[2][1] + 1 != loBar[2][0] then { //시작점이 바뀌었는지 여부는 가격은 동일할 수 있으므로 위치값으로 판별한다. //위치값은 1씩 증가시켜왔으므로 이전 봉에서의 위치값이 1 차이나는지로 확인 //1 이상 차이가 나면 전전고점이 바뀐 것으로 보고 추세선을 추가로 그린다. date21 = date[loBar[2]]; time21 = stime[loBar[2]]; Value21 = loVal[2]; date22 = date[0]; //추세선이므로 현재 봉까지 그려준다. time22 = stime[0]; Value22 = (loVal[1]-loVal[2])/(loBar[2]-loBar[1])*loBar[2]+LoVal[2]; //종료시점의 가격은 직선의 기울기와 절편을 계산해서 구한다. TL2 = TL_New(date21,time21,Value21,date22,time22,Value22); } else { //전전저점이 바뀌지 않았다면 종료시점만 변경하면 된다. date22 = date[0]; time22 = stime[0]; Value22 = (loVal[1]-loVal[2])/(loBar[2]-loBar[1])*loBar[2]+LoVal[2]; TL_SetEnd(TL2, date22,time22,Value22); //TL_SetExtRight 함수는 추세선을 오른쪽으로 연장하는 함수인데 //이 함수를 사용하면 모든 추세선이 현재봉까지 연장되어 알아볼 수가 없다. } } if hiVal[2] > hiVal[1] then { if hiBar[2][1] + 1 != hiBar[2][0] then { date31 = date[hiBar[2]]; time31 = stime[hiBar[2]]; Value31 = hiVal[2]; date32 = date[0]; time32 = stime[0]; Value32 = (hiVal[1]-hiVal[2])/(hiBar[2]-hiBar[1])*hiBar[2]+hiVal[2]; TL3 = TL_New(date31,time31,Value31,date32,time32,Value32); } else { date32 = date[0]; time32 = stime[0]; Value32 = (hiVal[1]-hiVal[2])/(hiBar[2]-hiBar[1])*hiBar[2]+hiVal[2]; TL_SetEnd(TL3, date32,time32,Value32); } } if trnd == upTr and loVal[2] > loVal[1] then TL_SetColor(TL1,BLUE); else if trnd == dnTr and hiVal[2] < hiVal[1] then TL_SetColor(TL1,RED); else TL_SetColor(TL1,BLACK); TL_SetSize(TL1,2); TL_SetColor(TL2,RED); TL_SetColor(TL3,BLUE); if hiVal[1] != hiVal[1][1] Then sell(); if loVal[1] != loVal[1][1] Then buy();
프로필 이미지
괌
2013-05-15
250
글번호 63261
시스템
답변완료

식?......

안녕하세요 질문 7 단순이동평균선.이 14 이평 위에있고. 14. 단순이평만나면. 매수 7 단순이동평균선.이 14 이평 아래 에 있고. 14. 단순이평만나면. 매도 7 단순이동평균선.이 14 이평 상승돌파하면 7. 단순이평만나면. 매수 7 단순이동평균선.이 14 이평하하락돌파하면 7. 단순이평만나면. 매도 감사^^
프로필 이미지
회원
2013-05-15
134
글번호 63260
시스템
답변완료

양봉

안녕하세요 질문1 14시36분. 에. 양봉이면. 매수 14시36분. 에. 음봉이면. 매도 질문2 양봉1. 양봉2. 이면. 14시36분. 에. 매수 음봉1. 음봉2. 이면.14시36분. 에. 매도 감사^^
프로필 이미지
회원
2013-05-15
138
글번호 63258
시스템
답변완료

챠트에서

차트 오른쪽 바에 A/T 초단기 ,단기, 중기, 추세선이 자동으로 그려 지는데 이 식은 어디서 구할 수 있나요 ? 이것으로 식을 만들 고 싶습니다
프로필 이미지
구다이전설
2013-05-15
129
글번호 63254
시스템