커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

20일평선

20일평선이 전봉가격대비 2틱 차이가 날경우 노란색 표시 가능한가요?^^
프로필 이미지
회원
2015-06-02
143
글번호 86674
지표
답변완료

문의드립니다.

로그인을 자동으로 켜고 끌수 있나요..?? 만약,된다면 오전 07시 20분 켜지고 오전 07시 5분 꺼지는.. 그럼 수고하세요.
프로필 이미지
아침한때비51
2015-06-02
213
글번호 86673
지표
답변완료

장마감 후 급변동 대비 진입수식

매번 고귀한 의견 감사드립니다. 장마감 후 미증시 등의 영향으로 다음날 급변등 위험을 증시 마감 직전 양 매도로 위험을 줄이고자 합니다. 예를들면 콜옵션 260이 15:00이후에도 청산하지 못하고 매도가 한건있는경우 풋옵션 260을 한건 매도 진입 후 다음날 콜옵션이 260이 청산되는 시점에 풋옵션 260도 같이 청산하게 수식이 가능할까요?
프로필 이미지
고진감래
2015-06-02
136
글번호 86672
시스템
답변완료

S-ROC,스토케스틱

첫번째 질문 : S-ROC 시스템을 만들고 싶습니다. 두번째 질문 : S-ROC와 스토케스틱 두가지 시스템이 만족하는 조건이면 신호가 뜰 수 있게 만들 수 있을까요?
프로필 이미지
회원
2015-06-01
171
글번호 86671
시스템

썬보이 님에 의해서 삭제되었습니다.

프로필 이미지
썬보이
2015-06-01
0
글번호 86670
종목검색
답변완료

종목 검색식 부탁드립니다.

엔벨로프 (20,20) 하단 플러스마이너스 5%이내에 있는 모든종목 검색식 부탁드립니다
프로필 이미지
썬보이
2015-06-01
161
글번호 86669
종목검색
답변완료

수식 부탁드립니다.

안녕하세요? 매번 성의있는 답변 감사드립니다. 1. 과거 섬머타임 관련 질문을 드린적이 있는데, 아래와 같이 수정해 주신적이 있습니다. *수정 전 if stime == 160000 or (stime > 160000 and stime[1] < 160000) Then{ var1 = O; Loss = 0; } *수정 후 (서머타임 적용) if Bdate != Bdate[1] Then{ var1 = O; Loss = 0; } 그런데 증권사 기준의 영업일 시작 시간은 10시(섬머타임 아닐 때), 9시(섬머타임 때) 이라서 그 때 시가가 기준으로 삼아집니다. 하지만 제가 원하는 하루의 주기는 16시를 시작으로 다음날 16시 까지 입니다. (섬머타임 아닐 때는 17시 ~ 17시) 그래서 제가 if TimeToMinutes(stime) >= TimeToMinutes(Bdate != Bdate[1])+480 Then{ var1 = O; Loss = 0; } 이런식으로 짜봤는데 안되네요. 이 부분은 그냥 섬머타임 때 마다 직접 변경하는 수 밖에 없나요? 이것 때문에 장기간 시뮬레이션 할 때에 동일 시간대를 일괄적용 할 수가 없네요. 2. 아래식은 손절인 Bx, Sx 뿐만아니라, bx1, sx1 이 발생했을 때도 당일 진입을 금지하는 식을 부탁드려서 받았던 답변입니다. 단, Bx, Sx 의 경우는 언제든 발생했을 경우 당일의 진입을 금지 하지만, bx1, sx1 의 경우는 당일 진입해서 당일 발생 했을 경우만 금지하고, 며칠 전 진입해서 당일 발행했을 경우에는, 당일의 시가를 기준으로 재진입을 허용하는 식입니다. 그런데 아래와 같은 식은 다른 부분은 생각했던 대로 잘 작동하지만, 밤 열두시를 넘어서 발생한 bx1, sx1 에 대해서는 재진입을 하더군요. 예를들어, 22일 16시 시가를 기준으로 23일 02시에 진입했다가 23일 03시에 bx1 또는 sx1 이 발생하면 23일 16시 전까지는 재진입 해서는 안됩니다. 그런데 하네요. 여기서 제가 말하는 당일, 하루는 16시 ~ 16시 입니다. 이는 해당 증권사의 영업시간 기준과 다릅니다. 그래서 Bdate 를 쓰면 안되는 것 같습니다. 그리고 아래식에서 변수로 BD(0) 가 선언 되었는데, 막상 식에서는 사용을 안하는데 왜 그런가요? Input : N(1); Var : HH(0), LL(0), Loss(0),BD(0); if stime == 160000 or (stime > 160000 and stime[1] < 160000) Then{ var1 = O; BD = Bdate; } if MarketPosition == 0 and CurrentContracts < CurrentContracts[1] and (IsExitName("Bx",1) == true or IsExitName("Sx",1) == true) Then loss = loss+1; if MarketPosition == 0 and CurrentContracts < CurrentContracts[1] and Bdate[BarsSinceEntry(1)] == Bdate and (IsExitName("bx1",1) == true or IsExitName("bx1",1) == true) Then loss = loss+1; if MarketPosition <= 0 and stime == 155000 Then buy("b1",AtStop,NextBarOpen*1.01); if MarketPosition >= 0 and stime == 155000 Then sell("s1",AtStop,NextBarOpen*0.99); if loss < N then{ if MarketPosition <= 0 and H < var1*1.01 Then buy("b",AtStop,var1*1.01); if MarketPosition >= 0 and L > var1*0.99 Then sell("s",AtStop,var1*0.99); } if MarketPosition == 1 Then{ HH = highest(H,BarsSinceEntry); if HH >= EntryPrice*1.1 and HH < EntryPrice*1.2 Then ExitLong("bx1",AtStop,HH-(HH-EntryPrice)*0.5); if HH >= EntryPrice*1.2 and HH < EntryPrice*1.3 Then ExitLong("bx2",AtStop,HH-(HH-EntryPrice)*0.6); if HH >= EntryPrice*1.3 Then ExitLong("bx3",AtStop,HH-(HH-EntryPrice)*0.7); } if MarketPosition == -1 Then{ LL = lowest(L,BarsSinceEntry); if LL <= EntryPrice*0.9 and LL > EntryPrice*0.8 Then ExitShort("sx1",AtStop,LL+(EntryPrice-LL)*0.5); if LL <= EntryPrice*0.8 and LL > EntryPrice*0.7 Then ExitShort("sx2",AtStop,LL+(EntryPrice-LL)*0.6); if LL <= EntryPrice*0.7 Then ExitShort("sx3",AtStop,LL+(EntryPrice-LL)*0.7); } if MarketPosition == 1 Then ExitLong("Bx",AtStop,Round(EntryPrice*0.99,2)); if MarketPosition == -1 Then ExitShort("Sx",AtStop,Round(EntryPrice*1.01,2)); 3. 손절(Bx, Sx)이나 bx1, sx1 가 발생했을 경우에는 10분 내에 재진입을 금지하는 식을 부탁드립니다. (예전에 한번 부정확하게 질문을 드려서 최근에 다시 질문드렸는데, 답변을 빠뜨리신 듯 합니다.) Input : N(3); Var : HH(0), LL(0), Loss(0); if stime == 160000 or (stime > 160000 and stime[1] < 160000) Then var1 = O; if MarketPosition == 0 and CurrentContracts < CurrentContracts[1] and (IsExitName("Bx",1) == true or IsExitName("Sx",1) == true) Then loss = loss+1; if MarketPosition <= 0 and stime == 155000 Then buy("b1",AtStop,NextBarOpen*1.01); if MarketPosition >= 0 and stime == 155000 Then sell("s1",AtStop,NextBarOpen*0.99); if loss < N then{ if MarketPosition <= 0 and H < var1*1.01 Then buy("b",AtStop,var1*1.01); if MarketPosition >= 0 and L > var1*0.99 Then sell("s",AtStop,var1*0.99); } if MarketPosition == 1 Then{ HH = highest(H,BarsSinceEntry); if HH >= EntryPrice*1.1 and HH < EntryPrice*1.2 Then ExitLong("bx1",AtStop,HH-(HH-EntryPrice)*0.5); if HH >= EntryPrice*1.2 and HH < EntryPrice*1.3 Then ExitLong("bx2",AtStop,HH-(HH-EntryPrice)*0.6); if HH >= EntryPrice*1.3 Then ExitLong("bx3",AtStop,HH-(HH-EntryPrice)*0.7); } if MarketPosition == -1 Then{ LL = lowest(L,BarsSinceEntry); if LL <= EntryPrice*0.9 and LL > EntryPrice*0.8 Then ExitShort("sx1",AtStop,LL+(EntryPrice-LL)*0.5); if LL <= EntryPrice*0.8 and LL > EntryPrice*0.7 Then ExitShort("sx2",AtStop,LL+(EntryPrice-LL)*0.6); if LL <= EntryPrice*0.7 Then ExitShort("sx3",AtStop,LL+(EntryPrice-LL)*0.7); } if MarketPosition == 1 Then ExitLong("Bx",AtStop,Round(EntryPrice*0.99,2)); if MarketPosition == -1 Then ExitShort("Sx",AtStop,Round(EntryPrice*1.01,2)); 4. 위 3번의 식에서 때때로 "LL <= EntryPrice*0.9" 와 같은 부분을 빼고 시뮬레이션 해보기 위해 "LL <= EntryPrice*0.9*ZZZ" 와 같이 변형해서, ZZZ 를 외부변서 1로 잡은 후 빼고 싶을 때는 ZZZ 에 0을 대입하곤 합니다. 그런데, 때때로 아래와 같은 식을 추가해서 bx1, sx1 도 손절인 Bx, Sx 처럼 발생하면 당일(하루 기준 16시~16시) 은 거래를 금지하도록 시뮬레이션 하기도 합니다. if MarketPosition == 0 and CurrentContracts < CurrentContracts[1] and (IsExitName("bx1",1) == true or IsExitName("bx1",1) == true) Then loss = loss+1; 그런데 이 식을 추가해보거나 빼보거나 하면서 시뮬레이션 할 때 일일히 수식에서 삭제, 붙여넣기를 반복해야 되는데, 방금 바로 위에 말씀드린 외부변서 ZZZ 처럼 외부변수 하나를 잡아놓고, 그 부분만 바꿔서 넣었다 뺐다 할 수 있게 하는 방법이 없나요? 단순히 (IsExitName("bx1",1) == true or IsExitName("bx1",1) == true)*ZZZ 를 했더니 오류가 나더군요.
프로필 이미지
spek
2015-06-01
174
글번호 86668
시스템
답변완료

부탁드립니다.

1. 60분봉에서 전날 일봉의 고가(빨간선)와 저가(파란선)에 선을 긋는 지표식과 동시에 익일 첫 60분봉이 완성될 때 그 첫 60분봉의 고가와 저가에 선을 긋는 지표식을 부탁드립니다. 2. 또 하루가 시작하면서 60분봉에서 240분봉(60분봉 4개)의 고가와 저가에 선을 긋는 지표식과 동시에 첫 60분봉이 완성될 때 그 첫 60분봉의 고가와 저가에 선을 긋는 지표식을 부탁드립니다. 가장 최근 것만 표시되도록 해 주시고요, 국내선물 및 해외선물 공히 부탁드립니다.
프로필 이미지
서태공
2015-06-01
141
글번호 86667
지표
답변완료

종목검색수식 부탁드립니다.

최근 3개월 이내 첫상한가 종목
프로필 이미지
회원
2015-06-01
167
글번호 86666
종목검색