커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4782
글번호 230811
답변완료
상하한가 30프로 변경관련해서...
안녕하세요. 전에 올려주신 상하한가 체크하는 문구가 최근에 30%상하한가로 변경되면서 수정되야할것같은데 제가 잘몰라서요... 어느부분을 고쳐야하는지...
//하한가체크
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;
up7 = int(UpLimit/1+0.00001)*1;
}
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;
up7 = int(UpLimit/1+0.00001)*1;
}
}
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;
up7 = int(UpLimit/1+0.00001)*1;
}
if CodeCategory() == 1 || CodeCategory() == 2 then {
if sdate < 20101004 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 If BP >= 1000 Then
상한가 = iff(up5>=5000, up5, up6);
Else
상한가 = iff(up6>=1000, up6, up6);
}
Else{
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 If BP >= 1000 Then
상한가 = iff(up5>=5000, up5, up6);
Else
상한가 = iff(up6>=1000, up6, up7);
}
}
else if CodeCategory() == 8 || CodeCategory() == 9 then { // ETF
상한가 = up6;
}
}
2015-08-18
149
글번호 89592
답변완료
안녕하세요
Input : Period(12), Period1(5);
Var : value(0);
value = StochasticsK(Period,Period1);
# 매수
If CrossUP(value, 20) Then
{
Buy();
}
# 매도
If CrossDown(value, 80) Then
{
Sell();
}
위의 식에서 매수진입조건에 외국인 선물매수수량이 0보다 클경우 매수하라는 조건을
현 매수조건에 추가하고
매도진입조건에 외국인 선물매수수량이 0보다 작을 경우 매도하라는 조건을
현 매도조건에 추가하고 싶습니다...
자세한 설명 부탁드립니다..
2015-08-18
160
글번호 89591
답변완료
문의드립니다.
수고하십니다.
아래수식 부탁드립니다.
120틱 차트에서
현재가가 5일선 -3틱 이면 매수
현재가가 5일선 +3틱 이면 매도
*종가 기준아닙니다.
120틱이 완성 안되더라도 조건 만족하면 진입되도록 부탁드립니다.
2015-08-18
140
글번호 89589
답변완료
시스템식에 관한문의드립니다
시스템식을 차트에 적용하고 화살표와 같이 가격도 함께 표시될 수 있는지
궁금합니다.
답변부탁드려요.
2015-08-18
148
글번호 89586
답변완료
문의드립니다.
Var : sto1(12),sto2(26),sto3(9);
var : Stochasticsfast(0),Stochasticsslow(0),StochasticssOsc(0),StochasticssOsc__0(0);
StochasticsFast = StochasticsK(sto1,sto2);
Stochasticsslow = StochasticsD(sto1,sto2,sto3);
StochasticssOsc = StochasticsFast-Stochasticsslow;
If DayIndex == 0 Then {
if ( c > o and StochasticssOsc > StochasticssOsc__0 ) and ( Data2(C) > 0 ) then Buy();
if c < o and StochasticssOsc < StochasticssOsc__0 then Sell();
messagelog("1111__%.2f 2222___%.2f",StochasticssOsc__0,StochasticssOsc);
}
StochasticssOsc__0 = StochasticssOsc;
===========================================================================
Data2 를 참조데이터로 KP 외국인 순매수 금액을 선택하면
디버깅시 첫봉에 한번 실행이 되는데,
외국인 선물 순매수 금액(수량)을 선택하면 디버깅시 첫봉이 2번, 3번 실행이 됩니다.
변수 StochasticssOsc, StochasticssOsc__0 의 값이 변경되면서 원하는 결과가 나오지 않습니다.
왜 그런지,, 해결 방법은 없는지 문의 드립니다.
감사합니다.
2015-08-18
167
글번호 89585
답변완료
시스템 문의
손절관련한 문의합니다.
전략실행차트의 강제청산 말고 아래와 같은 청산이 가능한지 궁금합니다.
현대중공업 30분, 이동평균으로 하고 있는데,
전일종가 대비 익일 장 시작에서 얼마이상 손실이 나면 자동청산 되게
로직 가능한가요? 전략차트의 청산은 매수가 대비 얼마 손실날때
청산하게 되어 있는데, 그렇게 하지 말고 다르게 청산하고 싶읍니다.
예로, 현중 90,000원에 매수들어가서 종가 95,000 으로 이익났는데,
익일 싯가가 93,000원이 되고 점차 떨어져 90,000 원이 되면
수익이 제로가 됨으로, 93,000원에서 자동청산되게 하여
수익을 지키게 하는 방법입니다.
전일종가 대비 익일 가격이 몇원이상, 또는 몇프로이상 손실나면
바로 자동청산 가능한 로직 부탁합니다.
2015-08-18
167
글번호 89583
답변완료
수식 부탁 드립니다.
메수 : 체결강도의 5이평선이 20이평을 상향시
매도: 체결강도의 5이평선이 20이평선을 하향시
2015-08-18
163
글번호 89582
답변완료
수식 부탁 드립니다.
메수 : 체결강도의 5이평선이 20이평을 상향시
매도: 체결강도의 5이평선이 20이평선을 하향시
2015-08-18
165
글번호 89581
답변완료
부탁 드립니다
어제 애써 올려주신 수식이 제생각과는 상이해서
재문의 드립니다
1)
5선과 20선이 골드일때(골드 할때가 아닌 이미 골드가 진행중인 상태에서)
일시적으로 20선을 데드했다 재골드하는 첫봉에 표시및 텍스트 그리고 소리
5선과 20선이 데드일때(데드 할때가 아닌 이미 데드가 진행중인 상태에서)
20선을 골드했다 재데드하는 첫봉에 표시및 텍스트 그리고 소리
언제나 감사 드립니다
.....................................
안녕하세요
예스스탁입니다.
식 모두 검색식으로 작성해 차트에 적용하시기 바랍니다.
조건만족봉에 점을 찍어 표시하고
텍스트와 소리가 출력됩니다.
1.
var : tx(0);
var1 = ma(C,5);
var2 = ma(c,20);
if crossup(var1,var2) Then{
plot1(H,"검색식",RED);
tx = Text_New(sdate,stime,H,"골드");
Text_SetStyle(tx,2,2);
PlaySound("C:₩예스트레이더₩data₩Sound₩alert.wav");
}
if CrossDown(var1,var2) Then{
plot1(L,"검색식",blue);
tx = Text_New(sdate,stime,H,"골드");
Text_SetStyle(tx,2,2);
PlaySound("C:₩예스트레이더₩data₩Sound₩alert.wav");
}
2.
2번내용은 참조데이터를 이용하셔야 합니다.
5분봉을 data2로 10분봉을 data3으로 추가하시고 아래식 적용하시면 됩니다.
var : Tx(0);
if data2(crossup(c,ma(C,20))) and data3(crossup(c,ma(c,10))) Then{
plot1(H,"검색식",RED);
tx = Text_New(sdate,stime,H,"골드");
Text_SetStyle(tx,2,2);
PlaySound("C:₩예스트레이더₩data₩Sound₩alert.wav");
}
if data2(CrossDown(c,ma(C,20))) and data3(CrossDown(c,ma(c,10))) Then{
plot1(L,"검색식",blue);
tx = Text_New(sdate,stime,H,"골드");
Text_SetStyle(tx,2,2);
PlaySound("C:₩예스트레이더₩data₩Sound₩alert.wav");
}
3
input : P1(10),P2(10),P3(10);
var : Tx(0);
if data1(crossup(c,ma(C,P1))) and data2(crossup(c,ma(C,P2))) and data3(crossup(c,ma(c,P3))) Then{
plot1(H,"검색식",RED);
tx = Text_New(sdate,stime,H,"골드");
Text_SetStyle(tx,2,2);
PlaySound("C:₩예스트레이더₩data₩Sound₩alert.wav");
}
if data1(CrossDown(c,ma(C,P1))) and data2(CrossDown(c,ma(C,P2))) and data3(CrossDown(c,ma(c,P3))) Then{
plot1(L,"검색식",blue);
tx = Text_New(sdate,stime,H,"골드");
Text_SetStyle(tx,2,2);
PlaySound("C:₩예스트레이더₩data₩Sound₩alert.wav");
}
4
playsound는 조건만족시 지정한 경로의 wav파일을 구동합니다.
경로와 파일이름을 지정하셔야 합니다.
위 지정된 경로는 예스트레이더에 기본으로 제공되는 wav파일을 지정했습니다.
게시판에 수식을 복사하시면 경로 중 ₩가 폰트가 깨질 수 있으므로 ₩는 다시 타이핑하시기 바랍니다
즐거운 하루되세요
2015-08-18
216
글번호 89580