커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4523
글번호 230811
답변완료
TimeHigh와 TimeHighEx 차이 문의
아직 테스트는 안해봤는데,
질문1) 두 함수 모두 시작시간과 끝시간에 변수를 사용하면 같은 값이 나오는게 아닌가요? 즉, 변수 자체가 언제든 값을 변화시킬 수 있으니 TimeHigh나 TimeHighEx나 입력값은 모두 변동이 아닐까 싶은데 언제 두개를 구분해서 써야 하나요?
질문2) 당일의 시간이 아니라 전일의 구간에서 구한다거나 또는 전일에서 당일이나 전전일에서 전일까지의 구간에서의 값을 이 함수로 구하고자 한다면 어떻게 사용해야 하나요?
TimeHighEx(a, b)[1] 라고 함부로 쓰기도 그렇고해서, 테스트 해보기 전에 먼저 문의 드립니다.
2019-04-25
211
글번호 128103
답변완료
심각한 상황이니, 빠른 검토 부탁요~ Time사용상 주의점
예스글로벌에서 다음과 같은 테스트를 하다가 증상이 이상해서 문의드립니다.
1분봉챠트에서 9시30분부터 특정 작업을 하고자 할때,
if time == 093000 then { ... }
와 같이 코딩을 하게 되는데, 이상하게 과거데이타에선 문제없는게 실시간에서는 오동작을 하는듯 해서 살펴봤더니,
예를들어, 체결데이타가 9시29분59초에 한번 들어오고 다음 체결이 9시30분01초에 들어와서 9시30분00초에는 체결이 없는 경우, 저 if문에 의한 실행이 건너띄는 것을 발견하였습니다.
보통 interval 단위로 로직이 한번씩 동작한다고 가정하게 코딩을 하고, 따라서 time값은 1분단위로 딱 떨어지게 나오리라 예상하는데, 중간에 계산상의 목적으로 로그에는 매 틱마다의 값들이 표시가 되긴 한다고 해도 저렇게 봉 완성 시각을 경과할 때는 이론적으로라도 동작이 되겠거니 했다가 그렇지 않는 현상을 보고 무척 당황스럽습니다.
테스트에 사용한 코드를 첨부합니다.
var: target(020500);
if BarIndex == 0 then ClearDebug;
if LastBarOnChart == 1 then {
MessageLog("%.f %.f %.f : %.2f %.f", CurrentTime, time, sTime, close, V);
if time == target Then {
MessageLog("%.f == %.f : target reached by Time : %.f %.f %.f : %.2f %.f", time, target, CurrentTime, time, sTime, close, V);
}
if stime == target Then {
MessageLog("%.f == %.f : target reached by sTime : %.f %.f %.f : %.2f %.f", stime, target, CurrentTime, time, sTime, close, V);
}
}
위의 결과가 표시된 디버깅창의 내용은 첨부한 것과 같습니다.
첨부한 것에서 보시다시피, 봉의 종가가 1분단위로 완성될 것이므로 봉 완성기준 2시05분봉에 로그를 출력하는 문장과 봉 시작기준 2시05분을 감지하는 로그출력 문장을 실행시켜본 즉, 'target reached by Time'이 포함된 문장은 실행되지 않고 스킵된 것을 확인할 수 있습니다.
최근에 하이선물예스에서 밴드를 구하기 위한 명령으로 time을 사용해서 시간을 비교하여 변수값들을 설정하는 로직에서 이상증상이 자꾸 보여서 원인이 무언지 찾다가, 위와 같은 것을 발견하였습니다.
예를 들어, 9시20분 완성봉의 종가를 기준값으로 저장하고, 9시30분부터 10시까지의 구간에서의 고저값을 구하는 로직을 구현한다고 했을때, 2가지 고민이 생기는데요,
첫번째는, time == 092000으로 비교문을 구현하면 9시20분의 종가를 위와 같은 현상 때문에 구하지 못하는 경우가 종종 발생하였고,
두번째 고민은, 9시30분 부터는 stime으로 비교한다 치지만 10시까지의 것을 구한다는 것을 표현한다고 할때 역시나 time == 100000이라고 하면 또 문제가 될 것 같아 stime == 100000 - interval*100 이라고 하고 싶어도 stime이 동일한 종가가 여러개가 되니 정말 10시 정각 직전까지의 종가까지를 가져오는 가장 안전하고 정확한 방법이 무엇인지 혼동이 오기 시작했습니다.
글로 표현한 것이 다소 전달이 부족하였다면 금일 중으로 다시 문의전화 드리겠습니다.
이러한 증상(time을 사용할때 위와 같은 증상)이 해외선물에서만 발생하는 것이 아니라 국내선물옵션에서도 발생하는 것인지 걱정이 살짝 되어서 내일은 국내종목에서도 실행해 봐야 겠네요..
추가로 첨부한 그림2와 그림3에서 보시듯이,
그림2에서는,(참고로 챠트는 한국시간기준으로 해놔서 현지시각과 1시간이 차이나는 관계로 시세창에서는 1시38분으로 나오고 챠트에서는 2시38분으로 처리되고 있는 상황입니다) 종가기준 시각이 2시38분이 되면 동작하라는 명령은 여전히 실행이 안되고 2시38분00이 지나서 체결이 들어온 후에는 바로 sTime은 2시30분00초(뒤에 00초를 정확히 만들어 주는 모습을 확인하였습니다)로 조회가 되므로 sTime으로 비교하는 문장은 실행이 되는 것(빨간 밑줄 부분)이 확인됩니다.
그림3에서는 로직의 실행이 너무 임박하게 해서 time으로 비교하는 문장이 실행되지 않은거 아니냐는 의혹을 없애기 위해서 target값은 2시41분으로 설정하고 로직의 실행은 2시39분부터 실행해서 당시에 들어온 틱과 그에 따른 로그 출력값의 모습을 캡쳐한 것인데, 보시다시피 2시40분01초에서 2시40분59초까지의 체결이 없다가 41분04초에 체결들어올 때, 이론상은 time == 024100 일때의 문장이 한번은 실행해주기를 기대하지만 역시나 실행이 없이 interval 단위로 생성되는 stime값에 의해서는 실행이 되는 것을 발견하였습니다.
그래서 문뜩 떠오른 것이 '거래 없는 구간 봉 그리기'와 같은 옵션을 체크 안해서 저런 증상이 나오는 것인지... 정말 해결하고 싶습니다. (실험결과, 예상대로 이 옵션은 위 증상을 없애는데 도움은 되지 않았습니다. 그림 4 참조)
저 문제 때문에 오늘 오전에도 항생에서 신호가 반대로 나오고, 이상해서 챠트를 다시 그리니(봉 갯수를 바꾸는 방법으로) 지표와 로직이 의도대로 다시 그려지고 신호도 바뀌면서 오늘 큰 수익 낼 수 있는 날에 큰 손실을 내고 패닉에 빠진 하루였습니다.
최적의 대안 부탁드립니다.
2019-04-25
324
글번호 128102
답변완료
수식 부탁드려요
1.
코스닥 연결선물지수에 변동성 돌파 전략을 적용해보려는데요
분봉기준입니다
# 매수조건
현재가가 시가 + (전날 고가 - 전날 저가) * 0.5 매수진입
현재가가 시가 - (전날 고가 - 전날 저가) * 0.5 매도진입
# 매도조건
당일종가청산
2. 코스피200 야간선물 데이터를 참조해서 코스피 KODEX 200 etf 를 거래하는 전략인데요
#매수조건
코스피 200 야간선물 개장시간(18:00~익일05:00)동안 시가 + (전날고가-전날저가)*0.5 돌파한경우, 야간선물 장종료후 코스피 kodex200 etf를 시초가에사서 09:30에 파는 전략 가능할까요?
그리고 위 전략 시뮬해보려면 선물 hts를 따로 설치해야되나요?
2019-04-25
195
글번호 128101
답변완료
문의드립니다 .
도움주시는 덕분에 도전하고 있습니다.
매번 감사합니다.
1. 기타
만약에 피봇폭(R1-Pivot)이 n포인트 이상이면
같은 시그널을 매수 진입으로 들어가고
이하면 매도진입으로 들어가게 하려면 어떻게 로직을 짜야 하나요?
가령
이평선 5,20 돌파 전략인데
n포 이상이면 매수진입으로 하고
n포 이하면 매도진입으로 들어가게 하려면 어떻게 해야 하나요?
2.
외부변수
기본수량(1)
n포인트
피봇폭이 n포인트 이상이면 기본수량으로 들어가고
n포인트 이하이면 기본수량 *2배 들어가게 하고 싶습니다.
3. 기타
외부변수
n틱
봉마다틱
고가 - n틱 트레일링스탑
저가 + n틱 트레일링스탑 봉가정 없게
+ 진입 후 봉 하나 지날 때 마다 봉마다틱만큼 +(매수트레일링스탑의 경우, 즉 아래 중단선을 점점 올림) -(매도 트레일링스탑일 경우, 즉 위의 중단선을 점점 내림)
2019-04-25
183
글번호 128100
stockric 님에 의해서 삭제되었습니다.
2019-04-25
2
글번호 128099
마녀58 님에 의해서 삭제되었습니다.
2019-04-24
0
글번호 128098
바닥차기 님에 의해서 삭제되었습니다.
2019-04-24
0
글번호 128097
답변완료
오류 관련입니다.
변동성 돌파전략을 해보고 싶어서, 아래와 같이 하였습니다. (모 블로그 참고)
오류 : 선언되지 않은 이름 entriestoday 가 사용되었습니다
라고 뜨는데 어떻게 해야 되는지 알려주시면 감사하겠습니다.
input : daymult(0.35), mult(6.5);
var1 = (dayhigh(1)-daylow(1))*daymult;
#진입
if entriestoday(date)<1 and Stime<143000 then {
buy("B2", atstop, dayopen+var1);
sell("S2", atstop, dayopen-var1);
}
#청산
var3=highest(H,barssinceentry+1)-ATR(15)*mult;
var4=lowest(L,barssinceentry+1)+ATR(15)*mult;
exitlong("EL1",atstop,var3);
exitshort("ES1",atstop,var4);
setstoploss(2, percentstop);
setstopendofday(1450);
2019-04-24
192
글번호 128096
답변완료
부탁드립니다.
평소 도움에 감사드립니다.
아래 조건에 대한 수식작성 부탁드립니다.
진입: 15시부터 10회 분할매수(1분단위로 100주씩 매수)
청산: 진입한 다음날 청산하는데 아래 조건에 따라 청산
청산1) 당일시가가 전일종가보다 크면 시가 청산
(시가 매도가 어려우면 9시1분 매도)
청산2) 당일시가가 전일종가보다 작으면 전일종가에 도달할때까지 기다렸다가 청산
청산3) 14시 50분 타임컷 청산
아래식은 제가 작성해본 식인데 "청산2"가 원하는 데로 안되네요.
수정부탁합니다.
감사합니다.
#진입
If sTime == 151000 Then Buy("B1",atmarket,100);
~
~
~
#청산
If MarketPosition == 1 and sDate > EntryDate Then {
If DayOpen > DayClose(1) Then //시가+
ExitLong("청산1");
else //시가-
ExitLong("청산2",AtStop,DayClose(1));
}
if sTime==145000 and MarketPosition == 1 and sDate > EntryDate then {
ExitLong("청산3");
}
2019-04-25
167
글번호 128095