커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1756
글번호 230811
답변완료
일목
제가 정리를 잘못해서 다시한번글을 올립니다
일목균형표 기준선(20) 1분주기
주가(고가*저가)/2를 골든크로스 되는걸 하고 싶구요
관심종목내에서 이식이 활성화하고 싶은데 관심종목을 어떻게 설정하고 사용하는지
알고 싶네요
감사합니다
2022-05-17
1011
글번호 158959
답변완료
heikin ashi 강조식을 시스템
var : xClose(0),xOpen(0),xHigh(0),xLow(0);
#Heiken Ashi 시고저종
if index == 0 then
{
xOpen = open;
xClose = (O+H+L+C)/4;
xHigh = MaxList( high, xOpen, xClose);
xLow = MinList( low, xOpen,xClose);
}
else
{
xClose = (O+H+L+C)/4;
xOpen = (xOpen [1] + xClose [1])/2 ;
xHigh = MaxList(High, xOpen, xClose) ;
xLow = MinList(Low, xOpen, xClose) ;
}
if XClose > Xopen Then
PlotPaintBar(Xhigh,Xlow,"강조",Red);
else if XClose < Xopen Then
PlotPaintBar(Xhigh,Xlow,"강조",Cyan);
else
PlotPaintBar(Xhigh,Xlow,"강조",GREEN);
heikin ashi 강조식을 양봉(red)에 매수,음봉(cyan색)에 매도 시스템식 부탁합니다
2022-05-17
1017
글번호 158958
답변완료
array 값 직접입력하려면
array : LL[4](0);
LL = {12346, 12338, 12331, 12323, 12315};
위와 같이 array 값 5개를 괄호 안에 순차입력하는 방식으로 직접입력하려고 하는데 계속 에러가 떠서 문의드립니다
예스랭귀지에선 이런 방식을 지원하지 않는건지
아니면 제가 부호를 잘못 입력해 그런건지 답변 부탁드립니다~
감사합니다
2022-05-17
854
글번호 158957
답변완료
일목
다시한번 질문을 정리해서 보낼게요 죄송합니다
1분봉에서 일목균형표 기준선(20)이 일봉주가비교(고가*저가)/2를 골든크로스
관심종목을 설정
프로그램 순매수 증감 이렇게 조건식을 만들고 싶어서 글올립니다
잘 부탁드립니다
2022-05-17
1012
글번호 158956
답변완료
분할매수후 평단가 매도시 일괄매도가 아닌 원하는 부부만 평단가 매도 질의
아래의 수식중 현재는 분할매수후 원하는 평단가 수익율에 해당되면 일괄 매도가 되도록 되어 있는데,
1. 일괄매도 명령을 수정하여 10회까지의 분할매수 수량은 현재와 같이 평단가 기준 1% 수익이 발생하면 일괄매도 하고,
2. 11회부터 20회까지 분할매수 들어가는 수량은 11회분 부터 직전 3회 까지의 분할매수 수량(예; 9~11회분,이하 동일)만의 평단가를 산정하여 1% 평단가 익절을 하도록 하고 싶습니다.
# 이유는; 20회까지 전량 분할 매수시 계속하여 하락 하게 되면 원금 전액이 묶이게 되므로 투자금의 회전이 안되므로, 10회 이후 부터는 자금 회전을 위하여 최근 분할 매수분 3회 까지의 매수 부분만 평가하여 바로바로 매도하도록 하고 싶습니다. 부탁 드립니다.
---------------------------------------------------------------------------
input : 금액(10000000),원하는_평단가요율(1.01),시작날짜(20200101);
var : Bcond(False),x(False);
var1 = Highest(c,15);
Var2 = Lowest(c,20);
var3 = Highest(c,20);
Var4 = Lowest(c,20);
....이하생략
Var11 = Lowest(c,20);
var12 = Highest(c,20);
Var13 = Lowest(c,40);
var14 = Highest(c,40);
....이하생략
if MarketPosition == 1 Then
{
if CurrentContracts > CurrentContracts[1] Then
{
if LatestEntryName(0) == "a1" Then
Condition1 = true;
if LatestEntryName(0) == "a3" Then
Condition3 = true;
...이하생략
if LatestEntryName(0) == "b1" Then
Condition11 = true;
if LatestEntryName(0) == "b2" Then
Condition13 = true;
...이하생략
}
//////////////////////////////////////////////////////////////////////////////////
if MarketPosition == 1 Then
exitlong("평단매도",atlimit,AvgEntryPrice*원하는_평단가요율);
///////////////////////////////////////////////////////////////////////////////////
}
Else
{
x = False;
Condition1 = False;
Condition3 = False;
...이하생략
Condition11 = False;
Condition13 = False;
...이하생략
}
Bcond = False;
if Bcond == False and x == False and CrossUp(c,var1[1]) and sDate >= 시작날짜 and Condition1 == False Then
{
Bcond = true;
Buy("a1",OnClose,DEf,((금액*(1/20))/C));
}
if Bcond == False and X == false and CrossDown(c,var11[1]) and sDate >= 시작날짜 and Condition11 == False Then
{
Bcond = true;
Buy("b1",OnClose,DEf,((금액*(1/20))/C));
}
..이하생략
2022-05-17
908
글번호 158955
답변완료
질문과 수식 검토 부탁드립니다.
수고하십니다.
아래의 수식을 검토하여 주시고 질문 좀 부탁드려요
#======================================================#
# 질문 : 잔고함수와 사운드, 기타
#1. 위탁증거금과 지정한 계좌예수금의 차이, 계좌종류(1:위탁, 2:저축, 3:선/옵션)에 따라 사용하는 함수인가?
# 지정계좌위탁증거금 = GetOpenOrderInitialMargin(계좌번호); // 선물옵션용 함수인것인가?
# 지정계좌예수금 = GetUnclearedDeposits(계좌번호);
#2. 계좌종류(1:위탁, 2:저축, 3:선/옵션), 1:위탁이면 [1103]계좌평가(실시간)화면으로 연계되는것인가? 매뉴얼은 3번선물옵션 설명만
#3. 종목순번은 0번부터 시작인가? 1번부터 시작인가? 0번부터 인것 같은데, YL매뉴얼에 그레이 표시는 무엇인가?
#3-1. [1103]계좌평가(실시간)에서 비번입력후 조회하여야만 잔고함수 사용가능한 것인가?
#3-2. YT에 접속시 [1103]계좌평가(실시간)메뉴를 비번자동입력 조회할 수 없는 것인가? 반드시 수작업 입력해야 하는가?
# YT에 접속시 [1103]계좌평가(실시간)를 최소 1회 조회하고 나면 가원장 구축상태가 된다.
#4. YL 매뉴얼에서 잔고함수 사용시에 기술한 (사용자는 반드시 여기에 동의 해야만 사용할 수 있습니다.) : 동의 메뉴가 있는지요? 찾지를 못하겠네요
# 전에 동의를 했던 것인지 모르겠고, 찾지를 못했지만 가원장 구축된다.
#5. 가상화면 Alt+1~6 번에 각각 전략실행차트 가동시에 현재 가상화면1번 선택상황이면 2~5번까지 실행중인 상태인가.
#6. PlaySound는 for문 n번 반복이 안된다. 사운드설정상태나 cool time 대기시간이 있는 것인가?
#7. Phone, SMS 송신 기능이 현재 서비스 되는가? SMS(Grey)
#======================================================#
# 자금관리 2번 : 자금관리 , 자금관리 중 동일가중(비중) 진입수량 관리만 한다.
#======================================================#
Var : 계좌번호("") ;
Var : 보유계좌총갯수(0), 구축상태(0), 계좌종류(0), 보유총종목수(0), 종목순번(0), 지정계좌위탁증거금(0), 지정계좌예수금(0),
종목평가손익합계(0), 보유종목평가합계(0) ;
Arrays: 단축코드[50](""), 평균단가[50](0), 종목현재가격[50](0), 종목평가손익[50](0), 종목보유수량[50](0) ; // 배열 개별처리
#Array : 보유종목[5,50](0) ; // 배열 전체처리 [1]단축코드,[2]평균단가 ,, 이겅 문자랑 숫자네
#------------------------------------------------------#
var : Equity(100000000), Leverage(0.7), NumberOfPortfolios(10) ;
var : WorkingCapital(0), CapitalOfLeverage(0), ewAmount(0), EntryQuantity(0), ReserveFunds(0) ;
#------------------------------------------------------#
#GetAccount(Accountindex) // 계좌번호순서 : 관리 메뉴의 계좌순서 설정에서 정렬한다.
보유계좌총갯수 = GetNumAccounts;
계좌번호 = GetAccount(0); // index 0번부터 시작, 0번째 계좌번호 받기
For Value99 = 1 to 10
{
구축상태 = GetAccountStatus(계좌번호); // 가원장 구축상태 (구축 :1, 미구축 : 0)
If 구축상태 == 1 Then Value99 = 10;
}
If 구축상태 == 0 Then
{
#Phone_Call(주인님! 가원장 안되요!) // 기능이 있을라나
#SMS_Call(주인님! 가원장 안되요!) // 기능이 있을라나, 그레이 된것으로 보아 서비스 안하는듯
For Value10 = 1 to 3 // 사운드는 n번 반복이 안된다. 설정상태나 대기상태가 있는 것 같다.
{
PlaySound("C:₩예스트레이더₩data₩Sound₩ahooga.wav") ; // wav만 되나 mp3는 안되는것인가
#PlaySound("C:₩예스트레이더₩data₩Sound₩party.wav") ; // 요건 소리도 크고 좀 길다 .3초 정도인가.
Alert("가원장 NO 돼지소리 %.f", 구축상태) ;
}
}
If 구축상태 == 1 Then
{
Alert("가원장 OK %.f", 구축상태) ;
PlaySound("C:₩예스트레이더₩data₩Sound₩accept.wav") ;
}
계좌종류 = GetAccountType(계좌번호); // 계좌종류(1:위탁, 2:저축, 3:선/옵션)
보유총종목수 = GetNumPositions(계좌번호) ;
지정계좌위탁증거금 = GetOpenOrderInitialMargin(계좌번호); // 위탁증거금과 계좌예수금의 차이?? 선물옵션용 함수인것인가?
지정계좌예수금 = GetUnclearedDeposits(계좌번호); // 위탁증거금과 계좌예수금의 차이??
# 종목순번은 0번부터 시작? ,1부터 시작? 확인 필요
종목평가손익합계 = 0; 보유종목평가합계 = 0;
For 종목순번 = 0 To 보유총종목수-1 // For 종목순번 = 1 To 보유총종목수 (종목순번이 1번부터이면)
{ // 종목순번은 1번부터 시작? ,0부터 시작? 확인 필요
단축코드[종목순번] = GetPositionSymbol(종목순번,계좌번호);
평균단가[종목순번] = GetPositionAveragePrice(단축코드[종목순번],계좌번호);
종목현재가격[종목순번] = GetPositionMarketValue(단축코드[종목순번],계좌번호);
종목평가손익[종목순번] = GetPositionOpenPL(단축코드[종목순번],계좌번호);
종목보유수량[종목순번] = GetPositionQuantity(단축코드[종목순번],계좌번호);
종목평가손익합계 = 종목평가손익합계 + 종목평가손익[종목순번];
보유종목평가합계 = 보유종목평가합계 + 종목평가손익[종목순번] + (종목현재가격[종목순번]*종목보유수량[종목순번]);
}
#------------------------------------------------------#
WorkingCapital = 지정계좌예수금 + 보유종목평가합계 ; # 총운전자금 = 지정계좌예수금 + 보유종목평가합계
CapitalOfLeverage = WorkingCapital * Leverage ; # 운용자금 = 총운전자금*Leverage
ReserveFunds = WorkingCapital - CapitalOfLeverage ; # 예비자금 = 총운전자금 - 운용자금
#지우지 말것
#ewAmount = CapitalOfLeverage / (NumberOfPortfolios - 보유총종목수) ; # 동일가중금액(진입금액) = 운용자금 / 종목수
ewAmount = CapitalOfLeverage / (NumberOfPortfolios) ; # 동일가중금액(진입금액) = 운용자금 / 종목수
If 보유총종목수 < NumberOfPortfolios and 지정계좌예수금 > ewAmount Then
EntryQuantity = int(ewAmount / Close) ; # 진입수량 = int(진입금액/종가)
Else
EntryQuantity = 0 ;
#------------------------------------------------------#
If Index == 0 Then
Print("C:₩주식연구₩계좌평가.csv", ", 계좌번호, 구축상태, 계좌종류, 보유총종목수, 지정계좌위탁증거금, 지정계좌예수금, 진입수량") ; # , 종목수, 진입금액, 진입단가, 진입수량
If LastBarOnChart == 1 Then
{
Print("C:₩주식연구₩계좌평가.csv", ", %s, %.f, %.f, %.f, %.f, %.f, %.f",
계좌번호, 구축상태, 계좌종류, 보유총종목수, 지정계좌위탁증거금, 지정계좌예수금, EntryQuantity) ; # , 종목수, 진입금액, 진입단가, 진입수량
#MessageLog("계좌번호 %s", 계좌번호) ;
}
#======================================================#
# 매매 <진입 / 청산>
#======================================================#
Condition40 = O < C ; // 양봉
Condition89 = C[1]*0.98 <= C[0] ; // 현재 0.98% 이상 상승
if Condition40 == True Then
{
#ewAmount = 9000 + NetProfit; #디버그 핸들링, 완료 후 주석처리할 것
#EntryQuantity = int(ewAmount / Close) ; #디버그 핸들링, 완료 후 주석처리할 것
If EntryQuantity > 1 Then # 진입수량 > 1 이면 잔고함수로 관리
buy("stopEQ_Y" , AtStop, C, EntryQuantity) ;
Else # 가원장 미구축
buy("stopEQ_N" , AtStop, C) ; # 속성창 비용/수량탭의 고정자산으로 사전입력 관리
#Print("C:₩주식연구₩진입수량.csv", ", %.f, %.f, %.f, %.2f, %.f, %.f, %.f, %.f, %.f",
# Equity, NetProfit, WorkingCapital, Leverage, CapitalOfLeverage, NumberOfPortfolios, ewAmount, Close, EntryQuantity );
#Print("C:₩주식연구₩계좌평가.txt", ", %s, %.f, %.f, %.f, %.f",
# 계좌번호, 구축상태, 보유총종목수, 위탁증거금, 지정계좌예수금);
}
if Condition89 != True Then ExitLong("s82");
2022-05-17
1327
글번호 158954
답변완료
수식문의 드립니다...
1. opne > P(20) 장 시작가 와 20일선의 가격차가 3.00P 이상이면 매도.
3.00P 이하이면 매수이고 153000 청산입니다..
2. opne < P(20) 장 시작가 와 20일선의 가격차가 3.00P 이상이면 매수.
3.00P 이하이면 매도이고 153000 청산입니다..
2022-05-17
1193
글번호 158953
답변완료
종목검색
안녕하세요?
1. 실시간으로 당일고가가 5% 이상인 종목을 추출하고 싶습니다.
2. 전영업일 장중 고가가 5% 이상였던 종목을 보고 싶습니다.
3. 3영업일전 장중 고가가 5% 이상였던 종목을 보고 싶습니다.
2022-05-17
1233
글번호 158952
답변완료
함수요청
안녕하세요?
아래의 전략에 대해 스크립트 작성 요청드립니다.
국내선물 3분봉으로 일중거래를 하고자 합니다.
장개시후,
첫봉 고점 돌파 완성 익봉 시가 매수
매수 진입 이후 첫봉의 저점 이탈 완성 익봉 시가에 매수 청산
첫봉 저점 이탈 완성 익봉 시가 매도
매도 진입 이후 첫봉의 고점 돌파 완성 익봉 시가에 매도 청산
15시 15분 청산
진입 기준으로 매수든 매도든 최대 1번씩 진입하고자 합니다.
가령, (매수-> 매수청산), (매도-> 매도청산), (매수-> 매수청산, 매도-> 매도청산), (매도-> 매도청산, 매수->매수청산) 이렇게 4개 중에 1개가 당일 시나리오입니다.
2022-05-17
952
글번호 158948