커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

문의드립니다.

분봉차트에서 현재가 매수 방법 공유 드립니다. 예를 들어 현재 시각 9:16분인데 2분 차트에서 현재 가격에 바로 매수 하고 싶은데 어떻게 해야 하나요? if sdate >= 진입시작일 and TotalTrades == 0 and MarketPosition == 0 Then { buy("매수#1",AtMarket); } 이렇게 식을 작성 했는데 매수진입이 안 되고 차트에는 9:02분에 매수된 걸로 표시됩니다. 확인 부탁 드립니다.
프로필 이미지
쩡우셩
2016-01-28
119
글번호 94893
시스템

선자 님에 의해서 삭제되었습니다.

프로필 이미지
선자
2016-01-28
2
글번호 94892
시스템
답변완료

함수수정요청(11-1)

안녕하세요? 아래의 함수를 수정요청드립니다. 변수(V1~V4)를 아래와 같이 변경하고 싶습니다. V1은 Dayopen(0) + Dayopen(0) * (maho1 / average(당일제외 과거(전영업일)부터 대과거까지 10영업일동안 일별 시가와 고가)) // 당일제외 과거(전영업일)부터 대과거까지 10영업일동안 일별 시가와 고가는 총 20개임 V2 = DayOpen(0) - Dayopen(0) * (maOL1 / average(당일제외 과거(전영업일)부터 대과거까지 10영업일동안 일별 시가와 저가)) // 당일제외 과거(전영업일)부터 대과거까지 10영업일동안 일별 시가와 저가는 총 20개임 V3 = DayOpen(0) + Dayopen(0) * (maHL1 / average(당일제외 과거(전영업일)부터 대과거까지 10영업일동안 일별 고가와 저가)) // 당일제외 과거(전영업일)부터 대과거까지 10영업일동안 일별 고가와 저가는 총 20개임 V4 = DayOpen(0)) - Dayopen(0) * (maHL1 /average(당일제외 과거(전영업일)부터 대과거까지 10영업일동안 일별 고가와 저가)) // 당일제외 과거(전영업일)부터 대과거까지 10영업일동안 일별 고가와 저가는 총 20개임 --------------------------------------------------------------------------------------- var : ho1(0),OL1(0),HL1(0); var : maho1(0),maOL1(0),maHL1(0); var : cnt1(0),sumho1(0),sumOL1(0),sumHL1(0); var : V1(0),V2(0),V3(0),V4(0); if bdate != bdate[1] Then entry1 = 0; if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then entry1 = entry1+1; ho1 = Dayhigh-Dayopen; OL1 = DayOpen-DayLow; HL1 = DayHigh-DayLow; sumho1 = 0; sumOL1 = 0; sumHL1 = 0; for cnt1 = 1 to 10{ sumho1 = sumho1 + (dayhigh(cnt1)-dayopen(cnt1)); sumOL1 = sumOL1 + (DayOpen(cnt1)-DayLow(cnt1)); sumHL1 = sumHL1 + (DayHigh(cnt1)-DayLow(cnt1)); } maho1 = sumho1/10; maOL1 = sumOL1/10; maHL1 = sumHL1/10; V1 = dayopen(0)+maho1; V2 = DayOpen(0)-maOL1; V3 = DayOpen(0)+maHL1; V4 = DayOpen(0)-maHL1;
프로필 이미지
통큰베팅
2016-01-28
121
글번호 94886
시스템

세발낚지 님에 의해서 삭제되었습니다.

프로필 이미지
세발낚지
2016-01-28
16
글번호 94885
지표
답변완료

검색식 확인 부탁드립니다.

질문.1 150일안의 최고가를 기준으로 당일 주식 저가가 최고가(최근 150일기준) 대비 70% 이상 떨어진 주식 종목을 찾는 검색 식 작성 부탁드립니다. 질문.2 150일안의 최고가를 기준으로 당일 주식 종가가 최고가(최근 150일기준) 대비 70% 이상 떨어진 주식 종목을 찾는 검색 식 작성 부탁드립니다. 감사합니다!
프로필 이미지
돼끼
2016-01-27
117
글번호 94884
검색
답변완료

문의드림니다

다음수식 문의 드림니다 A매수전략,B매수전략,C매수전략 의 3가지 전략을 합해서 하나의매수시스템을 만든경우 피라미딩허용 안한 경우는 3가지 전략이 동일봉 동시점에 신호가 발생하더라도 하나만 신호가 나옴니다 그러나 피라미딩을 허용으로 적용하면 3가지 전략이 동일봉 동시점에 신호가 발생한 경우 3개의 신호가 발생하여 3계약이 체결되게 됨니다 피라미딩을 적용하고 매매하고 싶은데 3가지 전략이 동일봉 동시점에 신호가 발생하더라도 하나의 신호만 발생하도록 아래의 수식을 예로들어 작성부탁드림니다 If MarketPosition== 0 and c>ma(c,5) ------ A전략 Then{ Buy("매수1", AtMarket); } If MarketPosition== 0 and c>ma(c,10) ------ B전략 Then{ Buy("매수2", AtMarket); } If MarketPosition== 0 and c>ma(c,20) ------ C전략 Then{ Buy("매수1", AtMarket); } 참고) 위 문제의 검색결과 marketposition 함수의 특성으로 인하여 발생하는것 같습니다 아래 사항을 참고하시어 아래의 방법대로 작성부탁드림니다 제가 너무 프로그램언어에 대해 잘 몰라 아래의 방법대로 해 볼려니 잘 안됨니다 아래의 참고사항의 방법대로 구현하여 주시고 에제수식의 전략내용 일부만 고쳐서 바로 사용가능 하도록 작성 부탁드림니다 --------- 참고사항 ---------------------------------- 예스트레이더 함수를 사용할때 주의해야할 사항이 있습니다. 예스랭귀지 특성인 것 같은데 예스에서 제공하는 함수는 발생시점 다음 루틴이 돌아야 값을 가지게 됩니다. 예를 들어 MarketPosition 함수 사용경우 진입1 = MarketPosition; if MarketPosition == 0 then { buy("매수1"); 진입확인1 = 1} 진입2 = MarketPosition; if MarketPosition == 0 then { buy("매수2"); 진입확인2 = 1} 진입3 = MarketPosition; //시점3 피라미딩(중복진입) 허용을 선택했을 경우 위와같이 로직이 구성되어 있고 매수1과 매수2 두개 조건이 다 만족할 경우 원하는 로직은 매수1이 진입되면 매수2는 진입되지 말야야하는데 그 결과는 매수1, 매수2 두개다 진입이 됩니다. 그 원인은 매수1이 발생하고 나서 아직 끝까지 진행이 안되어 MarketPosition은 0 으로 남아 있습니다. 해당 로직 끝까지 진행 후 다음 번 부터 적용이 되더라구요. 즉, 변수 값들은 아래와 같습니다. 1번째 루틴 진입1 : 0 진입확인1 : 1 진입2 : 0 진입확인2 : 1 진입3 : 0 2번째 루틴 진입1 : 1 진입확인1 : 1 진입2 : 1 진입확인2 : 1 진입3 : 1 이렇게 되기 때문에 원하지 않는 재진입이 될수 있으니 주의 하셔야 합니다. ^^ 대책은 각 매수 진입시 별도의 변수를 선언해서 재진입을 방지하는 방법입니다. if 진입확인 == 0 then { buy("매수1"); 진입확인 = 1} 진입2 = MarketPosition; if 진입확인 == 0 then { buy("매수2"); 진입확인 = 1} 진입3 = MarketPosition; //시점3 즉, MarketPosition은 위 개념을 잘 이해하시고 제한적으로 사용하시는 것이 유익할 듯합니다
프로필 이미지
mao
2016-01-27
146
글번호 94883
시스템
답변완료

46157번 재문의 입니다

46157번 질문의 답변에서 자세한 설명과 수식 감사드립니다. 더구나 지표식까지 첨부해주셔서 많은 도움이 되겠습니다. 잘 이용하겠습니다. 그런데, 다음의 필터링 부분이 빠진것같아서 그부분의 수식을 부탁드리겠습니다. 1. "단, "그림1"과 같이 지수가 180선과 반대로 가는 경우에 진입을 못하게 하는 필터링." 2. "단, "그림2"와 같이 지수가 180선과 반대로 가는 경우에 진입을 못하게 하는 필터링." *. 그림을 다시 첨부합니다. 감사합니다.
프로필 이미지
코스모
2016-01-27
127
글번호 94882
시스템
답변완료

문의드립니다

안녕하세요~ 1. 1분봉 차트에 참조로 일봉(data2)의 5일이평과 주봉(data3)의 5주이평을 참조로 이용하려고 합니다 그런데 1분봉으로 진입청산 신호를 낼 때, 참조되는 일봉의 5일이평은 전일봉 기준값이고 주봉의 5주이평은 전주봉 기준인데 이것을 전일이 아닌 현재의 5일이평,5주이평으로 쓰고 싶으면 어떻게 수식을 작성해야 하나요 2. 시스템을 여러개 만들었을 때 이것들을 통합해서 성과를 보고싶습니다.(시스템1+시스템2+...등등) 시스템성과보고서(?) 인 곳에서 시스템을 여러개 선택해서 성과를 합산해서 볼 수 있을 거 같은데 현재 시스템만 성과보고서를 볼 수 있네요.. 여러개 시스템성과를 같이 볼 수 있는 방법 좀 알려주세요~ 늘 감사드립니다~
프로필 이미지
하라잉
2016-01-27
109
글번호 94881
시스템
답변완료

함수변환요청(251호)

안녕하세요? 아래는 SK증권에서 사용했던 함수입니다. 예스랭귀지로 변화요청드립니다. 감사합니다. ----------------------------------------------------------------------------------- input : xtime(60000); var : tcond(false),condA(false),condB(false), sTimeValue(0); sTimeValue = sTime; If IntPortion(time/10000) > 7 // 7시 이후 Tconde = true Then Begin Tcond = true; Condition1 = false; Condition2 = false; end; If sTimeValue == xtime or (sTimeValue > xtime and sTimeValue[1] < Xtime) Then Begin Tcond = false; End; var1 = ma(c,9); var2 = ma(c,18); condA = C > var1 and var1 > var2; condB = C < var1 and var1 < var2; if condA == true and condA[1] == false then Condition1 = true; if condB == true and condB[1] == false then Condition2 = true; if Tcond == true And Condition1 == true and condA == true and var1 > var1[1] and var2 > var2[1] Then buy("B"); if Tcond == true And Condition2 == true and condB == true and var1 < var1[1] and var2 < var2[1] Then sell("S");
프로필 이미지
통큰베팅
2016-01-27
114
글번호 94880
시스템