커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

수식문의드립니다.

매수 c>ma(c,5) and 양봉시 매수 매도 음봉시에 매도
프로필 이미지
회원
2016-01-28
113
글번호 94904
시스템
답변완료

수식 문의 드립니다.

매수 c>ma(c,5) 일때 매수 매도 30이평선이 하향중이고, c가 매수값대비 최고점에서 30% 하향시 매도 매도 30이평선이 하향중이고, c가 매수값대비 50상승시매도
프로필 이미지
회원
2016-01-28
106
글번호 94901
시스템
답변완료

문의드립니다.

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

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

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

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

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

46157번 재문의 입니다

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