커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4659
글번호 230811
답변완료
이전글 재질문
그 문제가 아닌듯 싶읍니다.
아래 로직에서
if (CallPL+PutPL >= 0) --> if (CallPL+PutPL >= 0.1)
이렇게 수정해서 이미 쓰고 잇읍니다.
그런데, 맨아래로직(매수가 기준 10%)은 잘 작동되는데,
시초가 기준(10%) 로직만 에러가 납니다.
--> 두 로직 모두 0.1로 수정하고 작동해서 나온 결과입니다.
if (CallPL+PutPL >= 0) 로직이 백분율이 아니므로, 10 이 아니라 0.1
이 맞는것 같읍니다.
다시 검토 부탁합니다.
========================================================
안녕하세요
예스스탁입니다.
0% 이상이면 청산되게 되어 있었습니다.
10% 이상으로 수정했습니다.
function Main_OnStart()
{
Main.SetTimer(1,5000);//5초마다 타이머 동작
}
function Main_OnTimer(nEventID)
{
if (nEventID == 1)
{
var num =Account1.GetTheNumberOfBalances();
var CallPL = 0;
var PutPL = 0;
//계좌잔고에서 매수포지션인 콜과 풋의 손익률 합산
for (var i = 0; i < num; i++)
{
//잔고리스트 순번으로 잔고를 셋팅
Account1.SetBalance(i);
//콜이고 매수포지션이면 손익률 합산(시초가기준)
if (Account1.Balance.code.substring(0,2) == "12" && Account1.Balance.position == 2)
{
CallPL = CallPL+(Account1.Balance.current - Option1.GetOpen(Account1.Balance.code))/Option1.GetOpen(Account1.Balance.code);
}
//풋이고 매수포지션이면 손익률 합산(시초가기준)
if (Account1.Balance.code.substring(0,2) == "13" && Account1.Balance.position == 2)
{
PutPL = PutPL+(Account1.Balance.current - Option1.GetOpen(Account1.Balance.code))/Option1.GetOpen(Account1.Balance.code);
}
}
//콜풋 매수포지션 손익률이 10% 이상이면
if (CallPL+PutPL >= 10)
{
//계좌 잔고의 콜/풋 매수포지션 모두 청산
for (var i = 0; i < num; i++)
{
//잔고리스트 순번으로 잔고를 셋팅
Account1.SetBalance(i);
//콜이고 매수포지션이면 청산
if (Account1.Balance.code.substring(0,2) == "12" && Account1.Balance.position == 2)
{
Account1.OrderSell(Account1.Balance.code, Account1.Balance.count,0,1);
}
//풋이고 매수포지션이면 청산
if (Account1.Balance.code.substring(0,2) == "13" && Account1.Balance.position == 2)
{
Account1.OrderSell(Account1.Balance.code, Account1.Balance.count,0,1);
}
}
}
}
}
즐거운 하루되세요
> 초록이 님이 쓴 글입니다.
> 제목 : 이전글 문의
> 아래글을 예스스팟에 적용해보니 조건충족과 상관없이
자동설정하면 바로 청산됩니다.
맨 아래 처음 수식(매수가 기준 청산)은 제대로 작동되는데,
재문의 글의 답변로직(바로 아래 로직, 시초가 기준 청산)은
옵션객체(option1)를 추가했는데도 자동 걸자마자 바로 청산됩니다.
-> 스트립트 객체에서 option1 추가하고, 속성에서 주가지수옵션 지정했읍니다.
원래, 조건(10% 총익시 청산)이 되서 청산되야 하는데, 조건과 상관없이
자동주문 걸면 바로 청산돼 버립니다.
무엇이 에러가 있읍니까?
-----------------------------------------------------
안녕하세요
예스스탁입니다.
옵션종목의 시초가가 필요하므로
스크립트 객체화면에 옵션객체를 추가하셔야 합니다.
function Main_OnStart()
{
Main.SetTimer(1,5000);//5초마다 타이머 동작
}
function Main_OnTimer(nEventID)
{
if (nEventID == 1)
{
var num =Account1.GetTheNumberOfBalances();
var CallPL = 0;
var PutPL = 0;
//계좌잔고에서 매수포지션인 콜과 풋의 손익률 합산
for (var i = 0; i < num; i++)
{
//잔고리스트 순번으로 잔고를 셋팅
Account1.SetBalance(i);
//콜이고 매수포지션이면 손익률 합산(시초가기준)
if (Account1.Balance.code.substring(0,2) == "12" && Account1.Balance.position == 2)
{
CallPL = CallPL+(Account1.Balance.current - Option1.GetOpen(Account1.Balance.code))/Option1.GetOpen(Account1.Balance.code);
}
//풋이고 매수포지션이면 손익률 합산(시초가기준)
if (Account1.Balance.code.substring(0,2) == "13" && Account1.Balance.position == 2)
{
PutPL = PutPL+(Account1.Balance.current - Option1.GetOpen(Account1.Balance.code))/Option1.GetOpen(Account1.Balance.code);
}
}
//콜풋 매수포지션 손익률이 10% 이상이면
if (CallPL+PutPL >= 0)
{
//계좌 잔고의 콜/풋 매수포지션 모두 청산
for (var i = 0; i < num; i++)
{
//잔고리스트 순번으로 잔고를 셋팅
Account1.SetBalance(i);
//콜이고 매수포지션이면 청산
if (Account1.Balance.code.substring(0,2) == "12" && Account1.Balance.position == 2)
{
Account1.OrderSell(Account1.Balance.code, Account1.Balance.count,0,1);
}
//풋이고 매수포지션이면 청산
if (Account1.Balance.code.substring(0,2) == "13" && Account1.Balance.position == 2)
{
Account1.OrderSell(Account1.Balance.code, Account1.Balance.count,0,1);
}
}
}
}
}
즐거운 하루되세요
> 초록이 님이 쓴 글입니다.
> 제목 : 추가 문의...
> 아래글 답변에서 한가지 추가 문의합니다.
만약, 매수 보유중인 콜/풋의 손익을 합산할때,
각각의 매수가가 아닌, 당일 시초가(각각의 시초가)를 기준으로 +10% 청산
하려면 어떻게 해야 합니까?
=================================================================
안녕하세요
예스스탁입니다.
문의하신 내용은 예스랭귀지로 구현하시기는 어렵습니다.
예스랭귀지는 차트에 적용되어 신호가 발생하는데
차트의 주종목에만 신호가 발생하고 주문이 가능하며
다른 차트의 신호상태나 손익은 알수가 없습니다.
해당 내용은 스팟에서 구현해 보셔야 합니다.
아래는 수식 가이드입니다.
아래 내용 참고하셔서 수정보완해 사용하시기 바랍니다.
5초마다 잔고의 매수로 보유하고 있는 콜과 풋의
손익률을 합산해 10%이상이면
계좌의 매수포지션으로 보유중인 전체 콜과 풋을 모두 청산합니다.
function Main_OnStart()
{
Main.SetTimer(1,5000);//5초마다 타이머 동작
}
function Main_OnTimer(nEventID)
{
if (nEventID == 1)
{
var num =Account1.GetTheNumberOfBalances();
var CallPL = 0;
var PutPL = 0;
//계좌잔고에서 매수포지션인 콜과 풋의 손익률 합산
for (var i = 0; i < num; i++)
{
//잔고리스트 순번으로 잔고를 셋팅
Account1.SetBalance(i);
//콜이고 매수포지션이면 손익률 합산
if (Account1.Balance.code.substring(0,2) == "12" && Account1.Balance.position == 2)
{
CallPL = CallPL+(Account1.Balance.current - Account1.Balance.avgUnitCost)/Account1.Balance.avgUnitCost;
}
//풋이고 매수포지션이면 손익률 합산
if (Account1.Balance.code.substring(0,2) == "13" && Account1.Balance.position == 2)
{
PutPL = PutPL+(Account1.Balance.current - Account1.Balance.avgUnitCost)/Account1.Balance.avgUnitCost;
}
}
//콜풋 매수포지션 손익률이 10% 이상이면
if (CallPL+PutPL >= 0)
{
//계좌 잔고의 콜/풋 매수포지션 모두 청산
for (var i = 0; i < num; i++)
{
//잔고리스트 순번으로 잔고를 셋팅
Account1.SetBalance(i);
//콜이고 매수포지션이면 청산
if (Account1.Balance.code.substring(0,2) == "12" && Account1.Balance.position == 2)
{
Account1.OrderSell(Account1.Balance.code, Account1.Balance.count,0,1);
}
//풋이고 매수포지션이면 청산
if (Account1.Balance.code.substring(0,2) == "13" && Account1.Balance.position == 2)
{
Account1.OrderSell(Account1.Balance.code, Account1.Balance.count,0,1);
}
}
}
}
}
즐거운 하루되세요
> 초록이 님이 쓴 글입니다.
> 제목 : 시스템 문의..
> 풋옵션과 콜옵션을 조합하여 하고 있읍니다.
합성법인 스트랭글, 스트래들 전략을 쓰고 있는데,
아래와 같이 문의합니다.
스트래들로 프리미엄이 비슷한 콜,풋옵션을
둘다 매수했을때,
양측의 손익을 합한 총 손익이 +10% 가 날때,
두 포지션 모두 청산하여 수익을 지키고 싶은데,
로직 가능합니까?
우리트레이더의 stoploss 기능은 한 포지션만 걸수 있어
콜, 풋 포지션을 따로 따로 걸어야 하기 때문에,
총 수익과 연동할수가 없읍니다.
(예컨대 콜이 +10% 수익나서 청산되도, 그때, 풋이 -10% 나면 수익 제로입니다)
콜과 풋의 손익을 합산해서 총손익이 +10% 날때
콜,풋을 모두 청산하여 수익을 지키고 싶읍니다)
가능합니까? 예스스팟까지 하여 검토 부탁합니다.
2016-03-18
128
글번호 96369
답변완료
재질문입니다.
각 당일의 고저폭을 시스템포트폴리오 처럼 기간별 표로 볼 수 있는 방법이 없을까요?
종전 질문에서 plot(dayhigh-daylow); 지표식을 가르쳐주셨는데, 이것을 그러니까 일일별로 표처럼 쭉 볼 수 있는 방법이 없을까하여 질문드립니다. 시스템 적용 후 포트폴리오로 일간 손익을 볼 수 있는 것 처럼 말이죠. 부탁드립니다.
감사합니다!
2016-03-18
110
글번호 96363
답변완료
ETF 제외는 어떻게 하나요?
파워종목검색에서 ETF를 제외하고 싶은데 어떻게 가능한가요?
바쁘시겠지만 스팟 가이드라인 좀 부탁드리겠습니다.
감사합니다.
2016-03-18
162
글번호 96362
답변완료
문의드립니다.
매번 성실한 답변에 감사드립니다.
아래지표식은 일봉 볼밴을 분봉에 나타내는 지표식입니다.
이지표식을 전일 일봉볼밴의 종가값을 익일 분봉에 수평선으로 나타내게 수정 부탁드립니다.
감사합니다.
2016-03-17
124
글번호 96361
답변완료
특정봉의 평균값 계산
안녕하세요.
초보 질문입니다
특정 봉의 평균값을 구하는 수식을 알고 싶습니다.
예를 들어 장이 시작되고 첫번, 두번, 세번째 봉의 값의 평균(봉의 종가기준)을 알고 싶다면 어떤 수식을 사용해야하나요?
참고로 이 봉은 지수가 아니라 참조데이터(개인, 외인 선물 수급 등)입니다.
친절한 답변에 미리 감사드립니다.
2016-03-17
97
글번호 96360
답변완료
안녕하세요...
스토를 이용하여 시스템 전략을 작성코자 합니다.
------------------------------------------------------------------------------
스토1(30.10), 스토2(12.5) 일경우
매수 조건
1. 스토1이 과열 70선을 상향돌파 시 매수 (기본매수)
==> 20틱 익절 or 30틱 손절 or 최고가 20틱 대비 10틱 하락 시 스탑트레일링
2. 1 조건 이후 포지션이 없을 경우 스토2가 과열 70선을 상향돌파 시 재매수
(재매수는 2번가찌)
==> 20틱 익절 or 30틱 손절 or 최고가 20틱 대비 10틱 하락 시 스탑트레일링
또는 과열 70선을 하향돌파 시 강제청산함
매도 조건
반대의 경우 (침체 30)
강제청산
1. 해외영업일 기준 당일 수익 70틱 or 손실 50틱 이면 거래종료 후 익일 시작
-------------------------------------------------------------------------------
좋은 하루 보내세요...감사합니다.
2016-03-17
98
글번호 96357
carlos 님에 의해서 삭제되었습니다.
2016-03-17
26
글번호 96355
답변완료
46862번 추가 질문
46862번에 추가 질문 있습니다.
감사합니다.
2016-03-17
105
글번호 96354
답변완료
질문
분봉에서
분봉종가가 어제 종가보다 크면 분봉마다 10주씩 매수
작으면 10주씩 매도
수량 조절할수 있도록 부탁드립니다.
2016-03-17
116
글번호 96353