커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
3379
글번호 230811
답변완료
문의드립니다.
고점을 터치하거나 돌파하면 매수한다. 라는 조건을 아래와같은 수식으로
쓰고싶은데 문득 고점을 터치하지않고 갭으로 넘어가버린경우도
아래 조건식으로 매수주문이 나가는건지 알려주시면 감사하겠습니다.
High <= DayHigh(0) Then
buy("b",AtStop,DayHigh(0));
만약 그럴경우 주문이 나가지 않게되면 수식좀 알려주시면 감사하겟습니다.
2020-05-21
800
글번호 139066
알리섬 님에 의해서 삭제되었습니다.
2020-05-21
8
글번호 139065
답변완료
차트 분할
한 화면에 여러개의 차트를 분할하여 동시에 띄어 놓고
어느 한 종목에서 매매가 발생하면 같은 조건의 수식이라도 다른 차트에서는 매매신호가 나오지 않게 하는 방법이 있을까요.
매매신호가 발생한 후 뿐만 아니라 청산 후에도 다른 종목에서는 신호가 나오지 않아야 합니다.
잔고함수로 제어를 해보았는데 비슷한 시점에서 신호가 발생하면 잔고함수로도 제어가 안되고 신호가 나와서 잔고가 없을때에는 주문접수 오류가 나오긴 합니다만 신호 자체가 나오지 않게 하고 싶습니다.
2020-05-21
328
글번호 139058
2wnwn 님에 의해서 삭제되었습니다.
2020-05-21
27
글번호 139055
답변완료
수식 문의드려요.
항상 고생많으십니다. 수식 문의 드립니다.
일봉상 시초가 대비 +a% and -b% 이며 최근5개봉 이내
macd 골든크로스 and dmi(DP, DM의) 골든크로스일때 매수
일봉상 시초가 대비 -a% and +b% 이며 최근5개봉 이내
macd 데드크로스 and dmi(DP, DM의) 데드크로스일때 매도
최근20개봉 이내 종가기준 전고점 돌파 시 신고점의 MACDOscillator+의 값이
전고점의 MACDOscillator+의 값보다 1값 이상 낮으면 매수 청산
그러나 신고점의 MACDOscillator+ 기준값이 +1 이상일 경우 청산 금지
최근20개봉 이내 종가기준 전저점 돌파 시 신저점의 MACDOscillator-의 값이
전저점의 MACDOscillator-의 값보다 1값 이상 높으면 매도 청산
그러나 신저점의 MACDOscillator- 기준값이 -1 이상일 경우 청산 금지
2020-05-21
868
글번호 139054
답변완료
다중접속 및 다중 전략차트 실행 관련 질의
A-PC, B-PC 로 두개로 접속을 해봤는데,
다중 접속하면, 주문이 각각 따로 나가더군요. ^^ 여기서 질문이 있습니다.
1. 다중접속할때, PC A,B 에서, 각각 다른 전략실행차트를 사용,
예시)
A-PC: 삼성전자 이평선 골든크로스 3주 매수 , 데드크로스 3주청산
B-PC: 삼성전자 CCI 과매도시 15 주 매수, CCI 과매수시 5주씩 X3회 분할청산
그럼 아래 A,B PC 에서 모두 매수되어 18주(3주+15주) 상태에서
아래와같이 수식적용할경우 maxContract는 18주로 인식하여, B-PC 에서 청산 주문발생하면
18주의 1/3씩 6주,6주,6주로 분할주문나가는건가요?
아니면, 15주의 (B-PC의) 1/3씩 5주,5주,5주씩 분할주문이 나가나요?
-----인용
{ BXcond = true;
ii = 0;
Bxcnt = 0; }
if BXcond == true then {
if ii%n == 0 then { Bxcnt = Bxcnt+1;
if Bxcnt == 1 Then // 1봉째 분할매도
ExitLong("매도1",OnClose,def,"",Floor(MaxContracts/3),1);
if Bxcnt == 2 Then // 조건만족 2봉째 분할매도
ExitLong("매도2",OnClose,def,"",Floor(MaxContracts/3),1);
if Bxcnt == 3 Then // 조건만족 3봉째 분할매도
ExitLong("매도3");
} ii = ii+1;}
----------인용끝
2. 1번케이스를 한개 PC에서 다른 전략을 동일한 주식종목에 적용시에는 어떻게 되나요?
완전 별개로 작동하나요?, 아니면 종목이 겹치므로 혼선의 가능성이 있나요?
3. 1번의 케이스를
GetPositionAveragePrice(종목코드,계좌번호,매수/매도구분)함수로 종목의 평단가를
전략을 작성했다면, 주문시 서로 다른 PC, 다른 전랴으로 주문을 하더라도,
주문당시의 평단가는 A-PC,B-PC의 전략실행에 서로 주문에 영향을 주겠죠?
4. 예스랭귀지로 해외주식(미국)을 하려고 하는데,
예스스탁에서 서비스와 연계된 브로커(증권회사)중에 어떤회사가 미국주식으로
시스템트레이딩이 가능한가요?,
현재 NH증권과 하이투자를 사용중인데, 둘다 미국주식은 예스랭귀지 시스템 트레이딩은
안되는 것 같네요.
2020-05-21
875
글번호 139053
답변완료
67529번 재문의
항상 도움주셔서 감사 드립니다.
예비신호인 진입신호는 당해봉이 아닌 확정봉에 발생한다는 내용은 이해를 했습니다.
도움주신 함수를 적용해 보았더니,
위 그림처럼 매도는 적용이 되는데. 매수는 적용이 되지를 않고 있습니다.
- 매도진입은 제가 이해한 대로 차트상에 진입 청산 알람과 신호가 정상적으로 발생함
- 매수진입은 매도진입처럼 진입신호와 청산신호가 발생하지 않고,
조건에 맞는 매수구간의 모든 봉에서 매수신호 알람이 울리고, 청산자리에서
청산 알람은 울리지만, 신호가 발생되지 않습니다.
수정을 부탁 드립니다.
input : sto1(12),sto2(6),sto3(6),P1(3),P2(5);
var : stok(0),stod(0),mav1(0),mav2(0);
stok = StochasticsK(sto1,sto2);
stod = StochasticsD(sto1,sto2,sto3);
mav1 = ma(C,P1);
mav2 = ma(C,P2);
if MarketPosition >= 0 and stok < stod and mav1 < mav2 then
{
PlaySound("D:₩해외선물₩사운드₩매도신호발생1.wav");
if (NextBarOpen+AccumN(c,P2-1))/4 > mav2 Then
sell("s",AtMarket);
}
if MarketPosition == -1 and (stok > stod or (mav1 >= mav2)) Then
{
PlaySound("D:₩해외선물₩사운드₩trailingstop매수주문전송문장.wav");
ExitShort("sx");
}
if MarketPosition <= 0 and stok > stod and mav1 > mav2 then
{
PlaySound("D:₩해외선물₩사운드₩매수신호발생1.wav");
if (NextBarOpen+AccumN(c,P2-1))/4 < mav2 Then
Buy("b",AtMarket);
}
if MarketPosition == 1 and (stok < stod or (mav1 <= mav2)) Then
{
PlaySound("D:₩해외선물₩사운드₩trailingstop매도주문전송문장.wav");
ExitLong("bx");
}
> 예스스탁 님이 쓴 글입니다.
안녕하세요
예스스탁입니다.
1
예비신호는 신호가 onclose타입일경우에만 발생합니다.
진입이 atmarket으로 구현해야 하는 부분이라 진입은 예비신호 보실수 없습니다.
2
소리출력함수(playsound)는 함수내에 지정한 경로의 wav파일이 구동됩니다.
아래는 예스트레이더에 기본으로 제공되는 wav파일을 지정했습니다.
원하시는 wav파일의 경로와 이름으로 수정하시기 바랍니다.
게시판에서 식을 복사할 경우 경로명 중 ₩의 폰트가 깨질수 있으므로
₩는 다시 타이핑하시기 바랍니다.
3
input : sto1(12),sto2(6),sto3(6),P1(3),P2(5);
var : stok(0),stod(0),mav1(0),mav2(0);
stok = StochasticsK(sto1,sto2);
stod = StochasticsD(sto1,sto2,sto3);
mav1 = ma(C,P1);
mav2 = ma(C,P2);
if MarketPosition >= 0 and stok < stod and mav1 < mav2 then
{
PlaySound("C:₩예스트레이더₩data₩Sound₩alert.wav");
if (NextBarOpen+AccumN(c,P2-1))/4 > mav2 Then
sell("s",AtMarket);
}
if MarketPosition == -1 and (stok > stod or (mav1 >= mav2)) Then
{
PlaySound("C:₩예스트레이더₩data₩Sound₩alert.wav");
ExitShort("sx");
}
if MarketPosition <= 0 and stok > stod and mav1 > mav2 then
{
PlaySound("C:₩예스트레이더₩data₩Sound₩alert.wav");
if (NextBarOpen+AccumN(c,P2-1))/4 < mav2 Then
Buy("b",AtMarket);
}
if MarketPosition == 1 and (stok < stod or (mav1 <= mav2)) Then
{
PlaySound("C:₩예스트레이더₩data₩Sound₩alert.wav");
ExitLong("bx");
}
2020-05-21
995
글번호 139052
답변완료
수평선
항상 감사합니다.
3분봉 차트에서
오늘로부터 직전 3일중에서 최고가부터 오늘까지 수평선을 만들고 싶습니다.
2020-05-21
822
글번호 139051
괌 님에 의해서 삭제되었습니다.
2020-05-21
6
글번호 139050