커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
8210
글번호 230811
답변완료
문의드립니다.
아래 수식은 당일의 상한가/하한가를 구하는 수식입니다.
1000원 이상의 종목은 동일한 값이 나오는데 1000원 이하의 종목은 상한가 값이 제대로
표시되지 않는 것 같습니다.
예를 들어 10/21일 우리들생명과학(종목코드 118000)은 상한가로 603원인데 수식으로 상한가 값을 구하면 600원이 나타납니다.
서로 금액이 다른 이유를 알려주세요~
감사합니다.
var : 하한가(0), DnLimit(0);
var : dn1(0), dn2(0), dn3(0), dn4(0), dn5(0),dn6(0);
var : 상한가(0), UpLimit(0);
var : up1(0), up2(0), up3(0), up4(0), up5(0),up6(0);
if DayIndex == 0 then {
if date >= 19981207 then { //거래소 98년 12월7일 가격제한폭 15%로 확대 변경됨
if date < 20050328 && CodeCategory() == 2 then //코스닥 2005년 3월28일 이전은 가격제한폭 12%
DnLimit = (BP * 0.12);
Else //코스닥 2005년 3월28일 이후 및 거래소98년12월 7일이후 15%
DnLimit = (BP * 0.15);
if CodeCategory() == 2 then { //코스닥 호가단위 ( 2003년 7월21일에 호가 단위 변경됨)
if date >= 20030721 then {
dn1 = int(DnLimit/100)*100; // 500,000원 이상의 하한가 호가
dn2 = int(DnLimit/100)*100; // 100,000원 이상 ~ 500,000원 미만의 하한가 호가
dn3 = int(DnLimit/100)*100; // 50,000원 이상 ~ 100,000원 미만의 하한가 호가
dn4 = int(DnLimit/50)*50; // 10,000원 이상 ~ 50,000원 미만의 하한가 호가
dn5 = int(DnLimit/10)*10; // 5,000원 이상 ~ 10,000원 미만의 하한가 호가
dn6 = int(DnLimit/5)*5; // 5,000원 미만의 하한가 호가
}
else { // 코스닥 2003년7월21일 이전
dn1 = int(DnLimit/1000)*1000;
dn2 = int(DnLimit/500)*500;
dn3 = int(DnLimit/100)*100;
dn4 = int(DnLimit/50)*50;
dn5 = int(DnLimit/10)*10;
dn6 = int(DnLimit/10)*10;
}
}
Else { //거래소 호가단위
dn1 = int(DnLimit/1000)*1000;
dn2 = int(DnLimit/500)*500;
dn3 = int(DnLimit/100)*100;
dn4 = int(DnLimit/50)*50;
dn5 = int(DnLimit/10)*10;
dn6 = int(DnLimit/5)*5;
}
if CodeCategory() == 1 or CodeCategory() == 2 then { //kospi, kosdaq
If BP >= 500000 Then
하한가 = BP-dn1;
Else If BP >= 100000 Then
하한가 = BP-dn2;
Else If BP >= 50000 Then
하한가 = BP-dn3;
Else If BP >= 10000 Then
하한가 = BP-dn4;
Else If BP >= 5000 Then
하한가 = BP-dn5;
Else
하한가 = BP-dn6;
}
else if CodeCategory() == 8 or CodeCategory() == 9 then { //ETF
하한가 = BP-dn6;
}
}
if date >= 19981207 then {
if date < 20050328 && CodeCategory() == 2 then
UpLimit = (BP[0] * 1.12);
Else
UpLimit = (BP[0] * 1.15);
if CodeCategory() == 2 then {
if date >= 20030721 then {
up1 = int(UpLimit/100+0.00001)*100;
up2 = int(UpLimit/100+0.00001)*100;
up3 = int(UpLimit/100+0.00001)*100;
up4 = int(UpLimit/50+0.00001)*50;
up5 = int(UpLimit/10+0.00001)*10;
up6 = int(UpLimit/5+0.00001)*5;
}
else {
up1 = int(UpLimit/1000+0.00001)*1000;
up2 = int(UpLimit/500+0.00001)*500;
up3 = int(UpLimit/100+0.00001)*100;
up4 = int(UpLimit/50+0.00001)*50;
up5 = int(UpLimit/10+0.00001)*10;
up6 = int(UpLimit/10+0.00001)*10;
}
}
Else {
up1 = int(UpLimit/1000+0.00001)*1000;
up2 = int(UpLimit/500+0.00001)*500;
up3 = int(UpLimit/100+0.00001)*100;
up4 = int(UpLimit/50+0.00001)*50;
up5 = int(UpLimit/10+0.00001)*10;
up6 = int(UpLimit/5+0.00001)*5;
}
if CodeCategory() == 1 || CodeCategory() == 2 then {
If BP >= 500000 Then
상한가 = up1;
Else If BP >= 100000 Then
상한가 = iff(up2>=500000, up1, up2);
Else If BP >= 50000 Then
상한가 = iff(up3>=100000, up2, up3);
Else If BP >= 10000 Then
상한가 = iff(up4>=50000, up3, up4);
Else If BP >= 5000 Then
상한가 = iff(up5>=10000, up4, up5);
Else
상한가 = iff(up6>=5000, up5, up6);
}
else if CodeCategory() == 8 || CodeCategory() == 9 then { // ETF
상한가 = up6;
}
}
}
plot1(상한가);
2013-10-27
211
글번호 68890
답변완료
봉의값
안녕하세요
1. 60분마다. 봉이. 1개씩. 만들어진
그것이. 시가. 고가. 저가. 종가.
4개만가지고. 매매하는것말구
전봉. 종가. 를. 시작. 점 이라하고
시작. 점부터. 선물데이터 값 을. 60분간 기억한다
다음봉 시작점 나오면. 전전봉은. 초기화하고
이렇게. 반복 되어야하고요
매매는. 1분.데이터로. 한다 할때
앞서설명드린.전봉 종가 시작점 데이터. 를
시작으로. 시작점. 대비. 0.17p. 상승하면
매수. 시작점 대비. 0.17p 하락하면. 매도
감사합니다^^
저는. 1분차트로매매하되
2013-10-27
187
글번호 68889
답변완료
문의드립니다
아래식이 트레이드스테이션으로 짜여진 식인데
예스트레이드로 전환 부탁드립니다...
-------------------------------------------------------
Inputs:
Length(12), TargetLX(6), TargetSX(6), BreakevenLX(3), BreakevenSX(3),
UpTrendLevel(50), DownTrendLevel(50);
Variables:
ATR(0), DLine(0), UpTrend(False), DownTrend(False), Risk(0);
ATR = AvgTrueRange(10);
DLine = SlowD(Length);
UpTrend = DLine > UpTrendLevel;
DownTrend = DLine < DownTrendLevel;
If MarketPosition <> 1 AND UpTrend AND Low < Low[2] Then Begin
Buy next bar at High Stop;
Risk = Low - 1 point;
End;
If MarketPosition <> -1 AND DownTrend AND High > High[2] Then Begin
Sell next bar at Low Stop;
Risk = High + 1 point;
End;
If MarketPosition = 1 Then Begin
ExitLong next bar at Risk Stop;
ExitLong next bar at EntryPrice + TargetLX * (EntryPrice - Risk) Limit;
If MaxTradeClose >= EntryPrice + BreakevenLX * ATR Then
ExitLong next bar at EntryPrice Stop;
End;
If MarketPosition = -1 Then Begin
ExitShort next bar at Risk Stop;
ExitShort next bar at EntryPrice - TargetSX * (Risk - EntryPrice) Limit;
If MinTradeClose <= EntryPrice - BreakevenSX * ATR Then
ExitShort next bar at EntryPrice Stop;
End;
2013-10-27
202
글번호 68888
회원 님에 의해서 삭제되었습니다.
2013-10-26
0
글번호 68887
답변완료
타주기. 가능한곳은
안녕하세요
1.타주기참조. 해외 일봉 이용하여. 한국시장
선물매매 하려구요.
타주기 나스닥종합지수. 일간. 이용해보니
우리나라. 정규장에서 매매않되네요
어떻게된거지요. 나왔었는데. 안되요
미국시장이. 끝나고.우리시장. 확인해보면
전날 없었던신호가. 나오니. 말입니다
나스닥종합지수. 가 그러네요
맞나요. ? 답변은. 맞습니다. 아닙니다. 로해주삼
아니라면. 설명. 부탁해요. 그리고
2, 타주기 참조. 해외 설정 이용가능하려면요
해외 어느종목. 입니까. 해외 일봉기준
대만가권지수. 혹시. 되나요
대만가권지수는. 한국시장 시간으로볼때
오전10시에 시작해서. 오후2시35분에
끝나고. 한국시장은. 오전 9시 시작해서
오후 3시15분에 끝나므로. 거래 가능한것
같네요. 맞나요. 답변은. 맞습니다
아닙니다. 아니라면. 이유. 설명 부탁요
감사^*
2013-10-27
213
글번호 68886
성공시대1 님에 의해서 삭제되었습니다.
2013-10-28
29
글번호 68885
답변완료
문의 (Exit)
1. 아래와 같이 60분이내에 재진입 금지하는 식을 만들었는데, 제대로 작동이 안되는군요.
피라미딩 허용에서 진행중입니다. 체크 부탁드립니다.
(피라미딩 허용안함으로 해도 마찬가지로 안되는군요)
VARS: ERS.RETxAESxSTRN(FALSE);
ERS.RETxAESxSTRN = ( (MarketPosition == 0) AND ((IsExitName("ES[@AES.STRN.NR#1]", 1) == TRUE) OR (IsExitName("ES[@AES.STRN.NR#2]", 1) == TRUE)) AND (TimeToMinutes(stime) <= TimeToMinutes(ExitTime(1)) + 60) AND (ExitDate(1) == sdate) );
if ( ERS.RETxAESxSTRN <> TRUE) then 신규진입
2. 데이타2 3분봉에서 일봉 5일선을 적용한 2012년 1월 18일자 차트 모습입니다. 3분봉 데이타는 11년 11월부터 끌고오는데 5일선이 표기가 되질 않습니다. 2월 7일자부터 표기가 됩니다. 문제를 해결할 수 있는 방법이 없는지요? 참고로 주데이타는 초봉을 사용하고 있습니다.
VARS: M5D(0, DATA2);
M5D = DATA2( (DAYCLOSE(4) + DAYCLOSE(3) + DAYCLOSE(2) + DAYCLOSE(1) + DAYCLOSE(0) ) / 5);
3. 그림2는 조금더 유리하게 청산하고자 하는게 목적입니다.
현재는 그림2에서와 같이 ES[@AES.STRN.NR#1]로 실제 청산이 된 것인데, M1(청색)이 M2(황색)이 만나는 조건에서 실제 청산이 이루어지게끔 개선하고자 합니다.
만약 M1이 M2를 상향돌파하고 2틱 위에서 A청산조건이 만족되었는데 이후 눌림을 주지못하고 7틱 이상 상승시에는 그냥 청산해야 합니다.
현재 청산식은
if 조건 then ExitShort("ES[@AES.STRN.NR#1]", ONCLOSE, DEF);으로 하고 있습니다.
4. 우리글로벌 4.0을 많이 기다리고 있는데 예정된 일자(예전에 언급해주신 7월말)보다 한참 늦어지는듯 합니다. 구체적인 날짜를 알수는 없는지요? 또한 예스차이나를 통해 국내에서도 중국시장의 시스템 참여가 가능한가요? 가능하지 않다면 방법은 없는지요?
도움주시면 감사하겠습니다.
감사합니다.
2013-10-28
261
글번호 68884
답변완료
시스템 관련 문의
시스템을 만들어서 설정창에서
강제청산 탭에서
10% 수익 이후 30 % 하락시 청산이라는 식을 걸면
이 정도면 실제 리포트와 차이가 없는지요?
2013-10-26
189
글번호 68883
답변완료
지표식 문의
지표식중에서
5이평이 20이평을 상승 돌파시 가격을 A라는 변수에 입력
5이평이 20이평을 하락 돌파시 가격을 B라는 변수에 입력
C= A - B 로 하여 C 를 출력하는 지표 를 부탁드립니다.
2013-10-26
181
글번호 68882