커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
6573
글번호 230811
회원 님에 의해서 삭제되었습니다.
2015-05-26
30
글번호 86364
회원 님에 의해서 삭제되었습니다.
2015-05-23
0
글번호 86363
스톡허즈 님에 의해서 삭제되었습니다.
2015-05-23
0
글번호 86361
스톡허즈 님에 의해서 삭제되었습니다.
2015-05-23
0
글번호 86360
답변완료
수식 다시 한번 문의 드립니다.
> 자오지환웅 님이 쓴 글입니다.
> 제목 : 수식 문의 드립니다.
> 제가 연결선물을 대상으로 3개 전략(선물데이트레이딩전략)을 같은 계좌에 걸어놓고 있습니다.
A전략 : 하루 1회 매매, 1포인트 손절
B전략 : 하루 2회 매매, 1포인트 손절
C전략 : 하루 무제한 리버스 진입
그런데 계좌의 하루 총손실을 선물 예탁금(아침시작시 CMA계좌에서 이체된 금액)의 1%로 제한하고 싶습니다.
이걸 예스스팟이 아닌 예스랭귀지로 구현할 수가 있나요 ?
있다면 수식은 어떻게 짜는지? 궁금합니다.
답변 부탁드립니다.
항상 친절한 답변 감사히 생각하고 있습니다.
좋은 하루 되세요. ^^
---------------------------------------------------------------------------------------
안녕하세요
예스스탁입니다.
문의하신 내용은 예스랭귀지에서는 가능하지 않습니다.
차트에 적용되는 식은 모두 독립적으로 움직입니다.
다른 차트의 신호의 내용은 알수가 없습니다.
도움을 드리지 못해 죄송합니다.
즐거운 하루되세요
----------------------------------------------------------------------------------------
GetPositionOpenPL() 함수가 지정한 계좌의 지정한 종목(선물)의 평가손익을 나타내는 함수라면 이걸 이용해서 제가 위에 설명한 계좌의 리스크관리가 가능하지 않을까요?
if marketposition() == 1
and GetPositionOpenPL() > 계좌금액의 1%
then ExitLong() ;
위의 청산로직을 A,B,C 전략에 모두 넣는다면
A,B,C 전략이 각각 자신의 로직대로 매매하더라도
계좌의 손실액이 1% 를 넘어가면
각 전략마다 현재보유 포지션을 모두 청산하고
신규진입은 되지 않게 만들 수 있을 것도 같은데...
제가 GetPositionOpenPL() 함수의 정확한 사용례를 잘 모르겠고...
아침에 매매시작전에 CMA에서 선물계좌로 넘어온 금액을
어떻게 표현해야 되는지도 모르겠고...
계좌의 장시작전 금액을 나타내는 함수가 없다면
대신에 GetOpenOrderInitialMargin() 함수로 대신할 수 있는지...
여러가지 헷갈리는 부분이 많습니다. ^^;;;
한번 검토해 보시고 이런 로직이 가능한지,
만약 가능하다면 식은 어떻게 짜야하는지,
알려주시면 감사하겠습니다.
항상 도움에 감사한 마음 가지고 있습니다.
즐거운 하루 되세요. ^^
2015-05-22
162
글번호 86359
답변완료
수식 문의 드립니다.
예스랭귀지 코드 중 사용법을 잘 모르겠어서,
문의를 드립니다.
Lowest
설명 : Length 기간 동안 value값 중 가장 작은 값
함수 : Lowest (Value, Length)
예제 : Lowest (L,20)  20봉 중 최저가
Lowest(L,BarsSinceEntry) 진입이후 최저가
라고 메뉴얼에 되어있는데,
Lowest (L,20)는 현재봉 포함하여 20번째 전봉까지의 구간중
가장 낮은 구간인건가요?
만약 그렇다면, 현재봉을 제외하고 20번째 전봉까지의 최저가를
구할 수 있는 방법이 있는지요?
감사합니다.
2015-05-22
134
글번호 86358
답변완료
지그재그 파동 수식
안녕하세요
성실한 답변에 항상 감사드립니다.
첨부파일과 같이 녹색선 지그재그 파동을 그리면서 피보나치 조정대를 그리는 지표를 얻고 싶습니다.
고점과저점, 전고점과 전저점의 파동을 그리면서 위로 갔을때는 분홍색 피보나치 조정대을 그리고 아래 파동이 나왓으때는 파란색선의 피보나치 조정대를 그리는 지표를 만들고 싶습니다.
첨부파일과 같이 똑같이 만들수 있을까요
항상감사드립니다. 수고하세요
2015-05-22
404
글번호 86355
답변완료
수식 부탁드립니다.
안녕하십니까? 매번 성의있는 답변 감사드립니다.
1.
방금전 아래의 1번 질문에 대해 답을 해주셨는데,
답변해주신 식으로 하니 다시, 16시 장대봉이 나왔을때 그 봉에서는 진입을 안하네요.
1. 기존 질문
아래 식에서 16시 봉 바로 이전 봉이 15시 50분인 경우도 있지만,
다른 종목에서 16시 바로 이전 봉이 14시 라던가 10분전이 아닌 경우도 있습니다.
이럴 때 식이 꼬이게 되는데,
if MarketPosition == 0 and stime == 155000 Then
buy("b",AtStop,round(NextBarOpen*1.01,3));
if MarketPosition == 0 and stime == 155000 Then
sell("s",AtStop,round(NextBarOpen*0.99,3));
위 부분에서 155000 으로 지정하는 부분을 종목마다 일일히 바꿔야 되더군요.
이 부분을 일일히 지정하지 않고 그냥 '16시봉 바로 전의 봉' 으로 바꿀 수 없나요?
input : N(1);
var : loss(0);
if stime == 160000 or (stime > 160000 and stime[1] < 160000) Then{
var1 = O;
Loss = 0;
}
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("b",AtStop,round(NextBarOpen*1.01,3));
if MarketPosition == 0 and stime == 155000 Then
sell("s",AtStop,round(NextBarOpen*0.99,3));
if loss < N then{
if MarketPosition == 0 and NextBarOpen <= round(var1*1.01,3) Then
buy("b1",AtStop,round(var1*1.01,3));
if MarketPosition == 0 and NextBarOpen > round(var1*1.01,3) Then
buy("b2",Atlimit,round(var1*1.01,3));
if MarketPosition == 0 and NextBarOpen >= round(var1*0.99,3) Then
sell("s1",AtStop,round(var1*0.99,3));
if MarketPosition == 0 and NextBarOpen < round(var1*0.99,3) Then
sell("s2",AtLimit,round(var1*0.99,3));
}
if MarketPosition == 1 Then
ExitLong("bx",AtStop,round(EntryPrice*0.99,3));
if MarketPosition == -1 Then
ExitShort("sx",AtStop,round(EntryPrice*1.01,3));
1.답변
시간을 0시 이후에 경과된 분수로 변경후
16시에서 차트주기를 빼서 지정했습니다.
16시가 960이므로
차트가 10분봉이면 950
차트가 5분봉이면 955로 지정이 됩니다.
input : N(1);
var : loss(0);
if stime == 160000 or (stime > 160000 and stime[1] < 160000) Then{
var1 = O;
Loss = 0;
}
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 TimeToMinutes(stime) == TimeToMinutes(160000)+BarInterval Then
buy("b",AtStop,round(NextBarOpen*1.01,3));
if MarketPosition == 0 and TimeToMinutes(stime) == TimeToMinutes(160000)+BarInterval Then
sell("s",AtStop,round(NextBarOpen*0.99,3));
if loss < N then{
if MarketPosition == 0 and NextBarOpen <= round(var1*1.01,3) Then
buy("b1",AtStop,round(var1*1.01,3));
if MarketPosition == 0 and NextBarOpen > round(var1*1.01,3) Then
buy("b2",Atlimit,round(var1*1.01,3));
if MarketPosition == 0 and NextBarOpen >= round(var1*0.99,3) Then
sell("s1",AtStop,round(var1*0.99,3));
if MarketPosition == 0 and NextBarOpen < round(var1*0.99,3) Then
sell("s2",AtLimit,round(var1*0.99,3));
}
if MarketPosition == 1 Then
ExitLong("bx",AtStop,round(EntryPrice*0.99,3));
if MarketPosition == -1 Then
ExitShort("sx",AtStop,round(EntryPrice*1.01,3));
2.
아래의 2번 질문에 대해서, 16시 봉의 전봉이 없어서 그렇다고 하셔서,
15시 50분 봉도 나오도록 설정을 했는데,
그래도 여전히 첫봉의 경우는 16시 봉이 장봉이라서
그 안에서 신호가 떠야 될 때는 안뜹니다.
하지만 그 이후에는 잘 작동합니다.
다만, 위 1번 질문의 답변대로 하니 16시 장봉의 경우 신호가 걸리지 않아서,
16시 바로전의 봉의 시간을 정확히 써주면,
예를들어 15시 50 분이아니라 14시 30분이면 143000 으로 정확히 써주면
원하는대로 작동합니다. 하지만 이 때도 역시 첫봉은 안됩니다.
여하튼 첫봉이 문제네요. 전봉 몇개가 보이도록 띄워도 여전히 안됩니다.
2. 기존 질문
그리고 위의 1번 질문에서 짜준식은 "if loss < N then{" 이 부분에서
"loss < N 이라는 조건이
15시 50분에 셋팅되는 식까지 포함을 시켜서 신호가 나오지 않았습니다"
라고 말슴해 주셔서 수정된 식인데,
저렇게 수정하니 원하던 대로 16시 봉이 장대봉이 나와서 16시 봉 안에서
바로 진입신호가 나오면 신호가 잘 잡힙니다.
그런데 이상하게도 제일 첫봉은 그게 안되네요.
무슨 말씀이냐면, 시뮬레이션 화면에서 예를들어 5월 1일 16시 봉부터 나오도록
봉의 건수를 예를들어 1500 봉으로 잡았는데,
그렇게 했을 때, 제일 첫봉이 아까 말씀드린 그런 장대봉이 나오면,
역시 그 장대봉 안에서는 신호가 안잡히네요. 하지만 뒤에서는 정상 작동합니다.
건수로 안잡고 날짜로 잡으면 첫 신호가 엉뚱한 기준에 의해서 잡히기 때문에,
저렇게 딱 건수로 맞춰서 해야만 됩니다.
2. 답변
말씀하신 설정상태이면 첫봉이 16시 봉이므로 15시50분봉이 없어
신호를 낼 방법이 없습니다.
16시봉 미완성시에서 신호를 발생하기 전봉에서 가격을 셋팅을 하게 되는데
전봉이 없으므로 신호를 발생할수가 없습니다.
2015-05-22
164
글번호 86346
답변완료
문의드립니다.
선물차트 기준으로 문의드립니다.
1.봉의 몸통안에(시가와 종가사이에) 일목균형표의 전환선이 들어있는 경우를 검색하고
싶습니다. 봉이 양봉이면 봉의 윗쪽에 빨강색 검색신호가 나타나게 하고,
봉이 음봉이면 봉의 윗쪽에 파란색 검색시호가 나타나게 하고 싶습니다.
수식을 부탁드립니다. 감사합니다.
수고하세요!!!
2015-05-22
123
글번호 86345