커뮤니티
예스랭귀지 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은 위 개념을 잘 이해하시고 제한적으로 사용하시는 것이 유익할 듯합니다
2016-01-27
115
글번호 94883
답변완료
46157번 재문의 입니다
46157번 질문의 답변에서 자세한 설명과 수식 감사드립니다.
더구나 지표식까지 첨부해주셔서 많은 도움이 되겠습니다. 잘 이용하겠습니다.
그런데, 다음의 필터링 부분이 빠진것같아서 그부분의 수식을 부탁드리겠습니다.
1. "단, "그림1"과 같이 지수가 180선과 반대로 가는 경우에 진입을 못하게 하는 필터링."
2. "단, "그림2"와 같이 지수가 180선과 반대로 가는 경우에 진입을 못하게 하는 필터링."
*. 그림을 다시 첨부합니다.
감사합니다.
2016-01-27
114
글번호 94882