커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
3360
글번호 230811
답변완료
주문가능금액 실시간 조회 함수에 대해서 질문 있습니다.
현재 한국투자증권 eFriend Global Yestrader로 해외선물거래 중인데요.현재 거래하는 해외선물종목이 10개가 넘어가다보니 실제 주문가능금액을 조회해서 주문을 내려고 합니다.예스랭귀지에서 주문가능금액을 구하기 위해서 아래와 같이 GetUnclearedDeposits 함수로 예수금을 조회하고 GetOpenOrderInitialMargin 함수로 위탁증거금을 조회한 다음에 주문가능금액을 구해 보았습니다.deposit = GetUnclearedDeposits(acc); // 예수금 / 예탁총액 조회openOrderMargin = GetOpenOrderInitialMargin(acc); // 위탁증거금(오픈오더 사용중인 증거금)orderable = deposit - openOrderMargin; // 주문가능금액 계산그런데, 위탁증거금 조회함수인 GetOpenOrderInitialMargin 가 실시간으로 위탁증거금을 받아오지 못하는 거 같습니다.그래서, 좀 더 알아보니 주문가능금액을 리턴하는 GetBalanceETCinfo 이라는 함수가 있던데 (https://www.yesstock.com/community/qna-type3-dtl?postNo=223743) 한국투자증권 eFriend Global Yestrader에서는 이 함수는 존재하지 않는 함수라고 나오네요.예스트레이더 입문 클래스 강의자료(https://help.yesstock.com/im/class1)라는 페이지에 보면 또, 아래와 같은 함수들이 있는 걸로 확인되는데,카) 잔고함수GetAccount 계좌목록의 계좌 중 지정한 순번의 계좌번호를 리턴GetAccountStatus 가원장 구축상태를 리턴(구축 :1, 미구축 : 0)GetAccountType 계좌종류,(1:위탁, 2:저축, 3:선/옵션)GetNumAccounts 보유계좌의 총갯수GetNumPositions 지정한 계좌의 보유 총 종목수GetOpenOrderInitialMargin 지정한 계좌의 위탁증거금GetPositionSymbol 계좌의 종목들 중에서 지정한 순번의 종목코드(단축코드)를 리턴GetPositionAveragePrice 지정한 계좌의 지정한 종목의 평균가GetPositionMarketValue 지정한 계좌의 지정한 종목의 현재가GetPositionOpenPL 지정한 계좌의 지정한 종목의 평가손익GetPositionQuantity 지정한 계좌의 지정한 종목의 보유수량GetUnclearedDeposits 지정한 계좌의 예수금(선/옵인 경우 예탁총액, 위탁/저축인 경우 예수금)여기에도 해외선물의 경우 직접적으로 주문가능금액을 리턴하는 함수는 보이지 않습니다.거래 중인 종목이 10개가 넘으니 각 종목당 포지션을 서로 조회해서 위탁증거금을 계산해서 주문가능금액을 계산해야 하는지, 아니면 다른 어떤 방법을 써야 할지 좀 어렵습니다.주문시 주문가능금액을 실시간으로 계산하는 기능이 절실히 필요합니다.꼭 도와주세요.감사합니다.
2025-11-18
1838
글번호 228191
답변완료
문의 드립니다
파일첨부
2025-11-18
139
글번호 228190
답변완료
질문 있습니다.
안녕하세요, 질문이 있는데요 포지션별 손절 기능이 작동하지 않습니다 (NetProfit 기반) 60분봉 차트로 추세 추종 시스템에서 포지션별 손절 기능을 구현 중인데, 손절이 전혀 작동하지 않아 도움을 요청드립니다. 구현 목표는 아래와 같습니다.각 포지션 진입 시 NetProfit 값을 저장해당 포지션의 손익이 -N pt 도달 시 손절손절 후에도 시스템은 계속 작동현재 상황은Input으로 PositionStopLoss를 20.0으로 설정하고 백테스트 → 결과 AInput으로 PositionStopLoss를 10.0으로 변경하고 백테스트 → 결과 A (완전 동일!)시스템 성능에서 일간수익을 보니 -40pt, -147pt 등 설정값을 훨씬 초과하는 손실 발생그 말은 Input에 수치 입력한 그대로 손절을 하지 않는다는 겁니다. ㅜㅜ의심되는 부분: 진입 시점의 NetProfit이 제대로 기록되지 않는 것 같습니다. 코드 구조는 아래와 같습니다.Input : PositionStopLoss(20.0);
var : EntryNetProfit(0);
var : CurrentPL(0);
var : PrevMarketPosition(0);
// 포지션 진입 감지 및 NetProfit 기록
if PrevMarketPosition == 0 and MarketPosition != 0 Then {
EntryNetProfit = NetProfit; // 이 부분이 실행이 안 되는 걸까요?
}
PrevMarketPosition = MarketPosition;
// 손절 체크
if MarketPosition != 0 Then {
CurrentPL = NetProfit - EntryNetProfit;
if PriceScale > 0 Then
CurrentPL = (NetProfit - EntryNetProfit) / PriceScale;
if PositionStopLoss > 0 and CurrentPL <= -PositionStopLoss Then {
if MarketPosition == 1 Then
ExitLong("Stop_L");
if MarketPosition == -1 Then
ExitShort("Stop_S");
}
}**추가 정보:** - 60분봉 차트 사용 중 - Buy/Sell은 OnClose로 진입 - ShowDebug로 확인해보니 EntryNetProfit 값이 0으로 나옴 (또는 확인 못함)**전체 코드 흐름:** 1. 신호 발생 → Buy/Sell 명령 2. 포지션 진입 감지 → EntryNetProfit 기록 3. 매 봉마다 손절 체크질문인데요.MarketPosition이 0에서 1(또는 -1)로 변경되는 시점은 정확히 언제인가요?포지션 진입 시점의 NetProfit을 기록하려면 어떻게 해야 하나요?혹시 EntryPrice를 사용해서 손익을 계산해야 하나요?위 코드에서 어떤 부분이 잘못되었는지 알려주시면 감사하겠습니다!추운데 몸 조심하고 건강하세요! 감사합니다!
2025-11-18
462
글번호 228189
답변완료
키움수식 변환_기준선매수
항상 감사드립니다 아래키움식을 변환및 주석을 부탁드립니다 1.키움식 a=(highest(high,midPeriod)+lowest(low,midPeriod))/2; shift(crossup(c,a),-1) midperiod:26 2.시스템식 3.종목검색식 4.강조 감사합니다
2025-11-18
148
글번호 228188
답변완료
검색식 부탁드립니다
키움에서 조건검색식으로 쓰고있는건데 예스트레이더에서 검색식으로 쓸수있게 부탁드립니다^^감사합니다^^
2025-11-18
133
글번호 228182
답변완료
수식문의드립니다
25년11월17일자 228111관련 추가 문의입니다1. 조건b 가 끝나고 5봉이후인데... if 조건b == true Then ai = Index;가 맞나요? ai(Nan)의 의미가 무엇인지? if 조건b[1] == true and 조건b == false Then ai = Index;로 되어야 하지 않나요? 그리고 이후에 if 조건a == true and Index >= ai+5 and C > O and C[1] < O[1] ~~~~처럼 조건a상태에서 양봉이 발생해야하니이런식으로 되어야 하지 않나요?2. 제일 궁금한 것인데 <만약 위 양봉의 상승율조건을 초과하는 양봉이거나 전일양봉후 양봉인 경우에는 이후 처음 출현하는 음봉후 양봉에 검색되어야 한다 음봉후 양봉발생시에 조건a상태가 유지되고 있어야 한다>내용으로 상승율이 초과나 양봉후양봉인 경우에는 그 이후 조건a상태에서 음봉후 양봉에서 신호가 발생하는 수식을 만들기가 어려워 문의 드린 것입니다추가 검토 부탁드립니다
2025-11-18
601
글번호 228178
답변완료
문의
국내선물 데이트레이딩용 청산수식 부탁드립니다. 5분봉 기준입니다.sell 진입 후 data2 변동성지수를 청산용으로 사용 - 조건1 : 양봉이 3연속 발생할 것 - 조건2 : 3연속 봉들의 몸통크기(c-o)는 모두 0.20 이상일 것 ex) 양봉1(0.45),양봉2(0.25),양봉3(0.60) - exitshort : 조건1과 조건2를 만족했다면 그 이후 몸통크기가 0.05 이하인 봉(양봉이든 음봉이든 상관없음) 발생할 것항상 고맙습니다.
2025-11-18
161
글번호 228167
답변완료
지표수식과 종목검색식 부탁드립니다
키움에서 쓰는 지표수식을 예스트레이더 수식과 검색식 부탁드립니다EMA75=EAVG(C,75);ATR49=MAX(H-L,MAX(ABS(H-REF(C,1)),ABS(L-REF(C,1))));VWAP75=SUM(C*V,75)/SUM(V,75);SIGNAL=EAVG((EMA75-ATR49*0.8)*0.4+VWAP75*0.6,3);
2025-11-18
196
글번호 228162
답변완료
수식질문드립니다.
저는 시가후에 지정해 놓은 숫자를 돌파하면 매수하는 수식을 만들었습니다. 손절은 SetStopLoss 으로 그 가격에 도달하면 바로 손절을 하도록 테스트를 할수 있는데진입은 봉이 완성되어야만 그가격에 진입이 되어서 "돌파" 보다 위에서 진입가격이 형성되거나 봉완성전에 가격이 다시 내려오면 진입신호가 안나오게 됩니다. 그가격을 지나가기만 하면 돌파 가격에 바로 포지션을 잡는것으로 가정하는 수식을 작성하고 싶은데 방법이 없는지 문의드립니다.#매수진입if crossup(c,dayopen+돌파) && MarketPosition==0 && count < 횟수 then buy("b");SetStopLoss(손절*PriceScale,PointStop);
2025-11-18
154
글번호 228153