커뮤니티
예스랭귀지 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분 꺼지는..
그럼 수고하세요.
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
를 했더니 오류가 나더군요.
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