커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7257
글번호 230811
답변완료
매번 감사 드립니다
아래수식으로 매수만 부탁드리빈다
1 익절 5%
2 손절 2%
변수처리해서 매수 시스템으로 부탁드려요
3,각,각 하나씩 부탁드립니다
##==1
c>0 and c>highest(c(1),10) and
avg(c,5)>avg(c,5,1)and c>avg(c,5)
##==2
ADXLN=ADX(14);
ADXLN(0)>ADXLN(1)AND RSI(14)>55;
2018-03-04
160
글번호 117120
답변완료
수식부탁합니다
매번 수고에 감사합니다.
아래의 수식을 5분봉에서 검색이 되도록 검색식 부탁드립니다.
INPUT:P5(1),P13(1),P9(1),P26(2),Period(1);
VAR : A5(0),A13(0),A9(0),A26(0),AF1(0),AF2(0),A2S(0);
var : Bcond(false),cnt(0),EP(0),Didx(0),pre(0);
var : H5(0),L5(0),H13(0),L13(0),H9(0),L9(0),H26(0),L26(0);
H5 = dayhigh;
L5 = daylow;
H13 = dayhigh;
L13 = daylow;
H9 = dayhigh;
L9 = daylow;
H26 = dayhigh;
L26 = daylow;
for cnt = 0 to max(P5,P13,P9,P26)
{
if cnt < P5 and DayHigh(cnt) > H5 Then
H5 = dayhigh(cnt);
if cnt < P5 and Daylow(cnt) < L5 Then
L5 = DayLow(cnt);
if cnt < P13 and DayHigh(cnt) > H13 Then
H13 = dayhigh(cnt);
if cnt < P13 and Daylow(cnt) < L13 Then
L13 = DayLow(cnt);
if cnt < P9 and DayHigh(cnt) > H9 Then
H9 = dayhigh(cnt);
if cnt < P9 and Daylow(cnt) < L9 Then
L9 = DayLow(cnt);
if cnt < P26 and DayHigh(cnt) > H26 Then
H26 = dayhigh(cnt);
if cnt < P26 and Daylow(cnt) < L26 Then
L26 = DayLow(cnt);
}
A5=(H5+L5)/2;
A13=(H13+L13)/2;
A9=(H9+L9)/2;
A26=(H26+L26)/2;
AF1=(H5+L5+H13+L13)/4;#반일목
AF2=(H9+L9+H26+L26)/4;#일목
Ep = 2/(Period+1);
if bdate != bdate[1] then {
H9 = H9 + 1;
Pre = A2S[1];
}
if H9 <= 1 then
A2S = AF2;
else
A2S = AF2 * EP + Pre * (1-EP);
Plot1(AF1);
Plot2(AF2);
Plot3(A2S);
조건은 af1 >= af2 입니다. 나름 제가해보니 자꾸변수가 적다고 메세지가 나오네요.
감사합니다.
2018-03-05
173
글번호 117119
답변완료
지표식 수정 부탁합니다
첨부한 그림과 같이 파동선 표시되도록 수정 부탁합니다
1. 상승추세 마디는 빨강색 선으로 표시하되, 상승추세 중에 전저점을 이탈하지 않으면서 생긴 모든 마디는 전저점을 이탈하기 전까지 빨강색 선으로 표시
2. 하락추세 마디는 파랑색 선으로 표시하되, 하락추세 중에 전고점을 돌파하지 않으면서 생긴 모든 마디는 전고점을 돌파하기 전까지 파랑색 선으로 표시
3. 전고점, 전저점 돌파 또는 이탈에 따른 캔들 색깔 변경 요청 합니다
위 1,2와 같은 개념으로서 캔들이 직전 고점을 돌파하면 고점돌파 다음 캔들부터 생긴 모든캔들은 빨강색으로 표시하되, 전저점을 이탈하기 전까지 생긴 모든 캔들을 빨강색 표시하고, 캔들이 직전 저점을 이탈하면 저점이탈 다음 캔들부터 생긴 모든 캔들은 회색으로 표시하되, 전고점을 돌파하기 전까지 생긴 모든 캔들을 회색으로 표시
1.2번은 아래의 지표식을 수정해 주시고, 3번은 별도의 지표식으로 작성해 주시면 감사하겠습니다
Input:n(5);
Var:j(0),sBar(0),eBar(0),TL1(0),TL2(0),Text1(0),처리구분("");
Array:고점[10,2](0),저점[10,2](0); //가격,위치
처리구분 = "";
If Highest(H,n)[n+1] <= H[n] and H[n] > Highest(H,n) and
Lowest(L,n)[n+1] >= L[n] and L[n] < Lowest(L,n) Then
{
If 저점[1,1] > L[n] Then 처리구분 = "저점처리";
If 고점[1,1] < H[n] Then 처리구분 = "고점처리";
}
Else If Highest(H,n)[n+1] <= H[n] and H[n] > Highest(H,n) Then 처리구분 = "고점처리";
Else If Lowest(L,n)[n+1] >= L[n] and L[n] < Lowest(L,n) Then 처리구분 = "저점처리";
If 처리구분 == "고점처리" Then
{
If 고점[1,2] < 저점[1,2] Then
{
For j = 10 DownTo 2
{
고점[j,1] = 고점[j-1,1];
고점[j,2] = 고점[j-1,2];
}
}
If 고점[1,2] < 저점[1,2] or 고점[1,1] < H[n] Then
{
고점[1,1] = H[n]; 고점[1,2] = Index - n;
sBar = Index - 저점[1,2];
eBar = n;
If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then
{
TL_Delete(TL1);
Text_Delete(Text1);
}
TL1 = TL_New(sDate[sBar],sTime[sBar],저점[1,1],sDate[eBar],sTime[eBar],고점[1,1]);
Text1 = Text_New(sDate[eBar],sTime[eBar],고점[1,1]*1.0003,NumToStr(고점[1,1],2));
Text_SetStyle(Text1, 2, 1);
If 고점[2,1] > 고점[1,1] and 고점[2,1] > 고점[3,1] and 저점[2,1] < 저점[1,1] Then
{
TL_SetExtRight(TL2,False);
sBar = Index - 저점[2,2];
eBar = Index - 저점[1,2];
}
}
}
If 처리구분 == "저점처리" Then
{
If 저점[1,2] < 고점[1,2] Then
{
For j = 10 DownTo 2
{
저점[j,1] = 저점[j-1,1];
저점[j,2] = 저점[j-1,2];
}
}
If 저점[1,2] < 고점[1,2] or 저점[1,1] > L[n] Then
{
저점[1,1] = L[n];
저점[1,2] = Index - n;
sBar = Index - 고점[1,2]; eBar = n;
If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then
{
TL_Delete(TL1);
Text_Delete(Text1);
}
TL1 = TL_New(sDate[sBar],sTime[sBar],고점[1,1],sDate[eBar],sTime[eBar],저점[1,1]);
Text1 = Text_New(sDate[eBar],sTime[eBar],저점[1,1]*0.9997,NumToStr(저점[1,1],2));
Text_SetStyle(Text1, 2, 0);
If 저점[2,1] < 저점[1,1] and 저점[2,1] < 저점[3,1] and 고점[2,1] > 고점[1,1] Then
{
TL_SetExtRight(TL2,False);
sBar = Index - 고점[2,2];
eBar = Index - 고점[1,2];
}
}
}
TL_SetSize(TL1,3);
TL_SetColor(TL1,GRAY);
2018-03-03
304
글번호 117118
답변완료
문의 드립니다.
[질문1: 지표]
오늘의 캔들 중에서(어제의 캔들은 제외) 처음5봉 중에서만(이후의 캔들은 제외) 거래량이 제일 많은 봉의 고가와 저가의 1/2선 출력하고 싶습니다. 그러니까 오늘의 캔들 첫번째봉에서 5번째봉까지만 가지고 계산합니다.
[질문2:시스템]
시스템 수식 중에서 아래의 내용을 수식으로 구현하는 방법을 좀 부탁드립니다.
AA = 6봉전부터 2봉 전 캔들까지(총5봉)의 최고가
BB = 6봉전부터 2봉 전 캔들까지의 최저가
1. 1봉전 캔들의 종가가 AA보다 높고(전고돌파) 현재봉에서 AA가격까지 내려오는 경우 AA가격으로 매수
2. 1봉전의 캔들의 종가가 BB보다 낮고(전저돌파) 현재봉에서 AA가격까지 올라오는 경우 AA가격으로 매도
2018-03-04
178
글번호 117117
답변완료
검색식 작성문의드립니다
검색조건식 2가지 부탁드립니다.
첫째, ADX 지표에서
1. D+ > D- and D+는 30 이상
2. ADX는 20 이상에서 우상향(상승추세)
3. DMI가 50 이상으로 3가지 조건을 동시에 만족하는 조건 검색식
둘째, ADX 지표에서
1. D+ > D- and D+는 40 이상
2. ADX는 우상향하면서 30 돌파(상승추세)
3. DMI가 50 이상 3가지 조건을 동시에 만족하는 조건 검색식
2018-03-05
196
글번호 117116
답변완료
시스템식좀 부탁드립니다.
시스템식좀 부탁드립니다.
이동평균선 5, 10, 20, 60, 120, 240, 360 있을 때
모든 이평선이 우상향하고 그리고 이평선 최고값과 최저값의 편차가
0.7P 이하에 있을 때 매수하고,
이평선 3개가 우하향 할때 청산하라.
또는 모든 이평선이 우하향하고 그리고 이평선 최고값과 최저값의 편차가
0.7P 이하에 있을 때 매도하고,
이평선 3개가 우상향 할때 청산하라.
수고하세요
2018-03-02
186
글번호 117115
답변완료
부탁드립니다.
도움주심에 감사 드립니다.
아래수식으로 실행된 결과가 그림과 같이 되도록 부탁 드립니다.
미리 감사 드립니다.
VAR1=DATA2(V);
plot1(var1,"RED",RED,DEF,0);
2018-03-02
234
글번호 117112
답변완료
다시 부탁드립니다 꾸벅
아래 3개의검색식 하나로 만들어 주세요
1, 장시작후 2분후 검색되게 부탁드리려요( 외부변수부탁)
2, 3개검색식 공통 되는부분은 통합 부탁드립니다
3, 3개검색식 포착 되는 종목중 거래대금 상위 7개 이내로 부탁드립니다
1, 종목검색식
if C >= 1000 and C <= 50000 and
C >= O[1]*1.03 and
C > O and
V >= 1000000 and
C > H[1] and
Upvol/DownVol*100 >= 100 and
ma(M,5) >= 10000 Then
find(1);
2,종목검색식
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;
}
}
var1 = ma(M,5);
if var1 >= 100000000 and
countif(H >= 상한가,100) >= 1 and
C >= 1000 and C <= 50000 and
Upvol/DownVol*100 >= 100 and
C > H[1] Then
find(1);
3,종목검색식
ar1 = ma(C,20);
var2 = ma(C,60);
var3 = ma(c,120);
if m >= 1000000 and
C >= O*1.05 and C < O*1.30 and
var1 > var2 and var2 > var3 Then
find(1);
2018-03-02
218
글번호 117111
답변완료
문의드립니다.
항상 친절한 답변해주셔서 감사합니다.
아직 초보라 부족한게 많아 계속 질문을 하게 되네요
아래 종목검색식에서 고점을 갱신 && 이평(20,60,120) 정배열을 동시에 만족하는 조건을 찾을려면 어떻게 작성해야하나요??
검색식을 2개 만들까했는데 하나로 만들려면 어떻게 해야하는지 궁금합니다.
안녕하세요
예스스탁입니다.
1 종목검색식
var : DParity(0),HH(0);
DParity = Disparity(60);
if sdate != sdate[1] Then
HH = DParity;
if sdate == sdate[1] and DParity > HH Then{
HH = DParity;
find(1);
}
2 지표식
var : DParity(0),HH(0);
DParity = Disparity(60);
if sdate != sdate[1] Then
HH = DParity;
if sdate == sdate[1] and DParity > HH Then
HH = DParity;
plot1(DParity,"이격도");
plot2(HH,"당일최고");
즐거운 하루되세요
> 확실한수익 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 5분봉에서 당일 이격도(60) 값이 당일 최고값을 갱신하는 검색식이 궁금합니다.
DParity = Disparity(60);
분봉은 고가 저가 이런게 있는데 지표에 고가 갱신을 적용할려니 잘 모르겠네요
2018-03-02
179
글번호 117106