커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4476
글번호 230811
답변완료
시가선 전략인데 시스템 작성 정중히 부탁드려봅니다
수고많으십니다. 예스랭귀지에 이제 막 입문한터라... 많이 부족합니다.
일단 생각해둔 것이 수식으로 어떻게 구현되는지 보면 빨리 배울것 같아 부탁드려봅니다.
#기준차트
60분봉(또는 30분봉)
#진입
1)당일시가선 상승돌파시 다음캔들 시가에서 진입
-양봉캔들의 저가부터 종가의 범위 안에 당일시가가 포함될 때
(조건: 저가<=당일시가<종가)
2)당일시가선 하락돌파시 다음캔들 시가에서 진입
-음봉캔들의 고가에서 종가의 범위 안에 당일시가가 포함될 때
(조건: 고가>=당일시가>종가)
*즉, 1~3개 캔들이 연속으로 진입조건을 만족할 수 있음
*'다음캔들 시가 진입'을 위해서 '이전캔들 종가 진입'이 더 효과적이라면 그 방법이 더 나을것 같습니다.
#손절
1)모든 진입 시 기본 손절 [input으로 입력: 기본값=매수–8틱(매도+8틱)]
2)진입 이후 첫 번째 캔들의 종가기준 수익이 2틱이상일 경우 손절라인 변경
(해당 캔들 몸통의 45%지점으로)
-매수진입일 때 해당 캔들의 {시가+(종가-시가)*0.45}으로 설정
-매도진입일 때 해당 캔들의 {시가-(시가-종가)*0.45}으로 설정
3)손절 체결 없이 두 번째 캔들 완성시 역시 두 번째 캔들의 45%선으로 손절 갱신
-손절 체결이 없는한 그 이후 완성되는 캔들에서도 같은 방식으로 손절 갱신
#청산
1)지정한 시간(input으로 입력: 기본값=유럽시장 시간기준 22:30)부터는 당일거래중지
(포지션 모두 청산)
2)매수 진입시 이후 음봉캔들(종가<시가)이 완성되면 종가에서 즉시 청산
3)매도 진입시 이후 양봉캔들(종가>시가)이 완성되면 종가에서 즉시 청산
#필터
1)당일시가 돌파의 진입조건에서 양봉(또는 음봉)의 캔들몸통(시가에서 종가)이
2틱이하로 완성되면 진입불가
특히, 손절을 갱신하는 조건이 개인적으로 너무 어려워... 부탁드립니다.
전략의 발상은 당일시가선에서 멀어지는 캔들을 놓치지 않겠다는 의도입니다. 손절이 되어도 또 진입, 역방향으로 돌파되어도 다시 진입....추세추종전략이 되겠네요. 실전에 적용하려면 손을 많이이 봐야 하겠지만 이 전략을 기초로 공부하면서 응용해보겠습니다.
감사합니다.
2016-12-12
170
글번호 104875
답변완료
상한가 표시 수정
수고하십니다.
그림과 같이16.8.22, 23일자 갭 상한가가 표시가 되지 않는 군요
바르게 수정 부탁합니다.
검색식은 아래와 같습니다.
var : 상한가(0), UpLimit(0);
var : up1(0), up2(0), up3(0), up4(0), up5(0),up6(0),Up7(0);
if date >= 19981207 then {
if date < 20050328 && CodeCategory() == 2 then
UpLimit = (BP[0] * 1.12);
Else if date >= 20050328 and date < 20150615 Then
UpLimit = (BP[0] * 1.15);
Else
UpLimit = (BP[0] * 1.30);
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;
}
}
if H >= 상한가 Then
plot1(H,"검색");
2016-12-11
159
글번호 104874
답변완료
시간외거래량
시간외거래에서 거래량이 높았던 종목만 소팅할수 있을까요??
방법알려주시면 감사하겠습니다.
2016-12-11
122
글번호 104873
답변완료
수식문의드립니다.
1. 코스피200선물 5분봉차트에서..
외국인 순매수금액(매수금액-매도금액)에 대하여 당기봉이 그 직전봉 대비 50억 증가했으면 50,
외국인 순매수금액에 대하여 당기봉이 그 직전봉 대비 30억 감소했으면 -30..
이렇게 수치화를 하여 지표식을 만들수 있을까요?
2. 코스피200선물 300틱 차트에서..
당기틱와 완성시간(초단위)을 수치화하여 지표식으로 만들수 있을까요?
감사합니다.
2016-12-11
126
글번호 104872
답변완료
input변수 설정( 재질문 )
다시 정리하여 질문드립니다.
동일 조건수식에 input변수를 변경해 복수의 조건으로 진입조건을 만드려고 합니다.
ex)
input : aa(10), bb(60), cc(120);
Input : oP1(12), op2(5), op3(5);
var : StoK(0),StoD(0);
var : ma10(0), ma60(0), ma120(0);
ma10 = ma(c,aa);
ma60 = wma(c,bb);
ma120 = wma(c,cc);
StoK = StochasticsK(op1,op2);
StoD = StochasticsD(op1,op2,op3);
var : buy1(false), buy2(false);
var : sell1(false), sell2(false);
//input변수가 포함된 조건수식
if 조건수식 Then {
gmaH = H;
gmaL = L; }
// 진입수식에서 변수를 설정하여
if aa==10 and bb==20 and cc==60 Then {
if O<=gmaH and c>gmaH Then -->> aa==10 and bb==20 일때의 gmaH값
buy("buy1") }
if aa==20 and bb==60 and op1==20 Then { -->> cc는 기본설정 120으로 입력되는지요?
if O<=gmaH and c>gmaH Then -->> aa(20), bb(60), op1(20) 일때의 gmaH 값
buy("buy1") }
if IsEntryName("buy1")==true Then {
if c<gmaL Then
exitlong("buy1청산"); }
input변수를 변경하면서 변경된 변수를 조건수식에 직접입력하여
gmaH, gmaL을 구하면 경우의 수 만큼 수식이 늘어나기에
이를 진입조건수식에서 ( 또는 다른 방법이라도.. ) 설정함으로
수식을 간단히 만들고 싶습니다.
변수값을 다르게 설정함에 따른 각각의 gmaH, gmaL값을 기준으로 진입하도록 하며
각 변수에 대한 매수명을 "buy1"으로 통일
2016-12-11
126
글번호 104871
답변완료
검색식 하나 부탁드려봅니다.
지표랑 시스템은 얼추 만들어서 시뮬 돌려보니까 괜찮게 나와서, 이제 종목을 좀 찾아보고자 검색식 하나 부탁드려봅니다.
찾고 싶은 종목은
1) PDI와 MDI의 차이가 기준선1을 통과한 경우(기준선과 골든크로스)
2) PDI와 MDI의 차이가 기준선2를 통과한 경우(기준선2와 데드크로스)
밑에 식은 제가 지표로 쓰는 식입니다.
Input : Period(14), line(5), line2(-5);
var : DI(0), DP(0), DM(0);
DP = DIPlus(Period);
DM = DIMinus(Period);
DI = DP-DM;
Plot1(DP-DM, "Directional Movement Index");
PlotBaseLine1(0, "기준선0");
PlotBaseLine2(11, "기준선11");
PlotBaseLine3(-11, "기준선-11");
Plot2(DP, "DIPlus");
Plot3(DM, "DIMinus");
2016-12-11
120
글번호 104870
깅창 님에 의해서 삭제되었습니다.
2016-12-11
3
글번호 104869
답변완료
안녕하세요
반갑습니다
아래RSI지표 입니다
현재 켄들에서26개 전까지만(적용) 표시하고 그전은
나타나지 않게할수있을까요
가능하다면 부탁합니다.감사합니다
Input : Period(9),SigPeriod(20);
Plot1(RSI(Period), "RSI");
plot2(ema(RSI(Period),SigPeriod), "RSI시그널");
PlotBaseLine1(30, "기준선1");
PlotBaseLine2(50, "기준선2");
2017-12-23
112
글번호 104868
답변완료
수식부탁드립니다---------------
Input : Period1(1),Period5(3),단기급증(6),단기급감(3),단기급등락(30),
장기급증(0.8),장기급감(0.8),장기급등락(5),돌파(15),급변(100),단기급변(50),순매수급증보정(0.6),
순매수급감보정(0.6),순매수보정한계(50)/*,고저기간(0)*/
,LENGTH1(2) ,LENGTH2(20),과열(10),되돌림(0),tsfPeriod(14);
Var : va(0);
Var : va1(0);
Var : va2(0);
Var : va3(0);
Var : va4(0);
Var : va11(0);
Var : va12(0);
Var : va15(0);
Var : va33(0);
Var : va38(0);
Var : va77(0);
Var : va87(0);
Var : va88(0);
Var : value(0);
Var : vp(0),II(0),AA(0),BB(0);
var : N(0),T(0),EP1(0),EP2(0);
var : ema11(0),ema12(0),ema13(0);
var : ema21(0),ema22(0),ema23(0),cnt1(0),cnt2(0);
var : vmin(0),vmax(0);
var : TSF(0);
EP1 = 2/(LENGTH1+1);
EP2 = 2/(LENGTH2+1);
if Bdate != Bdate[1] Then{
II = 0;
BB = 0;
AA = 0;
}
II = II+1;
BB = BB+Bids;
AA = AA+Asks;
if II < Period5 Then{
va = (BB/II)-(AA/II)+8000;
}
else{
va = ma(bids,period5)-ma(asks,period5)+8000;
}
if II < Period1 Then{
va1 = (BB/II)-(AA/II)+8000;
va2 = (BB/II)-(AA/II)+8000;
va3 = (BB/II)-(AA/II)+8000;
}
//순매수에 8000 더해 양의값만들기----------------------------
else{
va1 = ma(bids,period1)-ma(asks,period1)+8000;
va2 = ma(bids,period1)-ma(asks,period1)+8000;
va3 = ma(bids,period1)-ma(asks,period1)+8000;
va4 = ma(bids,period5)-ma(asks,period5)+8000;
}
--------------------------------------------------------
위 va1,va2,va3,va4를 일간갭보정을하고싶슴니다(전일마지막지표값이 오늘 시작지표값이되게) 지표값은 안보고 방향만 참고하려고 합니다
항상감사합니다 수고하세요
2016-12-11
120
글번호 104867