커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
8178
글번호 230811
답변완료
문의드립니다.
선물차트 기준으로 문의드립니다.
1. 봉의 몸통안에(시가와 종가사이에) 삼각가중평균10선과 일목균형표 전환선15선이 모두
들어있는 봉을 검색하고 싶습니다.
봉이 양봉이면 봉의 위에 빨강색으로, 봉이 음봉이면 봉의 위에 파란색으로 검색되게
하고 싶습니다.
2. 봉이 종가기준으로 볼때 삼각가중평균10선과 일목균형표 전환선15선 두개의 선 중에서
어느 한선이라도 위에 있다가 봉이 두개의 선의 모두 아래로 내려갈때의 '첫봉'(첫봉만
검색)을 검색하고 싶습니다.
검색되는 봉이 양봉이면 봉의 아래에 빨간색으로, 음봉이면 봉의 위에 파란색으로
검색되게 하고 싶습니다.
3. 위 2와 반대의 상황으로 봉이 두개의 선 중에서 어느 한선이라도 아래에 있다가 두개의
선을 모두 돌파하고 위로 올라갈때의 '첫봉'(첫봉만 검색)을 검색하고 싶습니다.
검색되는 봉이 양봉이면 봉의 아래에 빨간색으로, 음봉이면 봉의 위에 파란색으로
검색되게 하고 싶습니다.
수식을 부탁드립니다. 감사합니다. 수고하세요!!!
2015-06-02
197
글번호 86676
답변완료
지표 수식 부탁드립니다.
안녕하세요...
보조지표 수식 부탁드립니다.
키움영웅문에서 다음과 같은 수식으로 표현됩니다.
수식1
avg(c,20)/(jas=avg(c,5)/100)
수식2
avg(c,5)/(jas=avg(c,20)/100)
수식3
J1=avg(c,20)/( jas1=avg(c,5)/100);
J2=avg(c,5)/(jas2=avg(c,20)/100);
jas=if( J1 < J2 , J2-(js=J2-J1) , J2)
수식4
avg(c,20)/(jas=avg(c,5)/100)
수식5
avg(c,5)/(jas=avg(c,20)/100)
그리고 이 표현을 100을 기준으로 그림이 그려지지 않고 0을 기준으로 MACD와 같이 겹쳐서 표현할 수 있도록 부탁드립니다.
감사합니다.
2015-06-02
267
글번호 86675
답변완료
20일평선
20일평선이 전봉가격대비 2틱 차이가 날경우 노란색 표시 가능한가요?^^
2015-06-02
187
글번호 86674
답변완료
문의드립니다.
로그인을 자동으로 켜고 끌수 있나요..??
만약,된다면 오전 07시 20분 켜지고 오전 07시 5분 꺼지는..
그럼 수고하세요.
2015-06-02
288
글번호 86673
답변완료
장마감 후 급변동 대비 진입수식
매번 고귀한 의견 감사드립니다.
장마감 후 미증시 등의 영향으로 다음날 급변등 위험을 증시 마감 직전 양 매도로 위험을 줄이고자 합니다.
예를들면 콜옵션 260이 15:00이후에도 청산하지 못하고 매도가 한건있는경우 풋옵션 260을 한건 매도 진입 후 다음날 콜옵션이 260이 청산되는 시점에 풋옵션 260도 같이 청산하게 수식이 가능할까요?
2015-06-02
189
글번호 86672
답변완료
S-ROC,스토케스틱
첫번째 질문 : S-ROC 시스템을 만들고 싶습니다.
두번째 질문 : S-ROC와 스토케스틱 두가지 시스템이 만족하는 조건이면 신호가 뜰 수 있게 만들 수 있을까요?
2015-06-01
219
글번호 86671
썬보이 님에 의해서 삭제되었습니다.
2015-06-01
0
글번호 86670
답변완료
종목 검색식 부탁드립니다.
엔벨로프 (20,20)
하단 플러스마이너스 5%이내에 있는
모든종목 검색식 부탁드립니다
2015-06-01
207
글번호 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
247
글번호 86668