커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
5448
글번호 230811
답변완료
예스트레이더 수식으로 변환 문의드립니다.
CCI = input(20)
ATR = input(5)
Multiplier=input(1,title='ATR Multiplier')
original=input(true,title='original coloring')
thisCCI = cci(close, CCI)
lastCCI = nz(thisCCI[1])
bufferDn= high + Multiplier * sma(tr,ATR)
bufferUp= low - Multiplier * sma(tr,ATR)
if (thisCCI >= 0 and lastCCI < 0)
bufferUp := bufferDn[1]
if (thisCCI <= 0 and lastCCI > 0)
bufferDn := bufferUp[1]
if (thisCCI >= 0)
if (bufferUp < bufferUp[1])
bufferUp := bufferUp[1]
else
if (thisCCI <= 0)
if (bufferDn > bufferDn[1])
bufferDn := bufferDn[1]
x=thisCCI >= 0 ?bufferUp:thisCCI <= 0 ?bufferDn:x[1]
swap=x>x[1]?1:x<x[1]?-1:swap[1]
swap2=swap==1?lime:red
swap3=thisCCI >=0 ?lime:red
swap4=original?swap3:swap2
plot(x,color=swap4,transp=0,linewidth=3)
감사합니다.
2020-01-28
304
글번호 135436
답변완료
지표 수정 부탁드립니다.
틱봉에서 N분봉으로 변환 후 N분간 고/저점을 나타내는 수식을
이전에 부탁드려 받은 적이 있습니다.
현재 봉이 고가나 저가를 갱신하면 해당 지표의 고/저점도 같이 갱신되므로
사용하지 못하고 있습니다.
1봉 전의 N분간 고/저점을 나타내고 싶은데 수식을 봐도 어디에
[1]을 넣어야 할지 몰라 이렇게 문의 드립니다.
수정 부탁드립니다.
감사합니다.
아래는 이전에 받았던 수식 입니다.
input : n(3),CC(10),CF(3),Per1(25),Per2(50),Per3(75);
input : 굵기1(1),굵기2(1),굵기3(1),굵기4(1),굵기5(1),굵기6(1);
input : 색상1(RED),색상2(MAGENTA),색상3(GREEN),색상4(CYAN),색상5(BLUE),색상6(BLACK);
var : TF(0),S1(0),D1(0),TM(0),cnt(0),T1(0),HH(0),LL(0),ii(0),TT(0);
var : TL1(0),TL2(0),TL3(0),TL4(0),TL5(0),TL6(0);
var : O1(0),H1(0),L1(0),C1(0),sum(0),mav(0),VD(0),VT(0),VM(0),VP(0);
Array : V1[100](0);
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
TT = stime;
ii = 0;
}
Else
ii = ii+1;
if D1 > 0 then
{
#영업일변경 기준으로 경과된 분
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
//n분 미만
if TM < n then
{
//당일최고와 최저가를 기준으로 선 출력
hh = DayHigh;
ll = daylow;
TL_Delete(TL1);
TL_Delete(TL2);
TL_Delete(TL3);
TL_Delete(TL4);
TL_Delete(TL5);
TL1 = TL_New(D1,TT,HH,Sdate,stime,HH);
TL2 = TL_New(D1,TT,HH-(HH-LL)*0.25,Sdate,stime,HH-(HH-LL)*(Per1/100));
TL3 = TL_New(D1,TT,HH-(HH-LL)*0.50,Sdate,stime,HH-(HH-LL)*(Per2/100));
TL4 = TL_New(D1,TT,HH-(HH-LL)*0.75,Sdate,stime,HH-(HH-LL)*(Per3/100));
TL5 = TL_New(D1,TT,LL,Sdate,stime,LL);
}
else //분이상 경과
{
//최근 n분 이내에서 최고가와 최저가 계산해서 선 출력
HH = H;
LL = L;
for cnt = 0 to ii
{
if TM[cnt] > TM-N then
{
if H[cnt] > HH Then
HH = H[cnt];
if L[cnt] < LL Then
LL = L[cnt];
TT = stime[cnt];
}
if TM[cnt] < TM-N Then
cnt = ii+1;
}
TL_Delete(TL1);
TL_Delete(TL2);
TL_Delete(TL3);
TL_Delete(TL4);
TL_Delete(TL5);
TL1 = TL_New(D1,TT,HH,Sdate,stime,HH);
TL2 = TL_New(D1,TT,HH-(HH-LL)*0.25,Sdate,stime,HH-(HH-LL)*(Per1/100));
TL3 = TL_New(D1,TT,HH-(HH-LL)*0.50,Sdate,stime,HH-(HH-LL)*(Per2/100));
TL4 = TL_New(D1,TT,HH-(HH-LL)*0.75,Sdate,stime,HH-(HH-LL)*(Per3/100));
TL5 = TL_New(D1,TT,LL,Sdate,stime,LL);
}
TL_SetColor(TL1,RED);
TL_SetColor(TL2,MAGENTA);
TL_SetColor(TL3,GREEN);
TL_SetColor(TL4,CYAN);
TL_SetColor(TL5,BLUE);
TL_SetSize(TL1, 굵기1);
TL_SetSize(TL2, 굵기2);
TL_SetSize(TL3, 굵기3);
TL_SetSize(TL4, 굵기4);
TL_SetSize(TL5, 굵기5);
#1분봉 기준(시,고,저,종,거래량 계산)
if bdate != bdate[1] or (Bdate == bdate[1] and TM > TM[1]) Then
{
O1 = O;
H1 = H;
L1 = L;
V1[0] = 0 ;
for cnt = 1 to 99
{
V1[cnt] = v1[cnt-1][1];
}
}
if H > H1 Then
H1 = H;
if L < L1 Then
L1 = L;
C1 = C;
V1[0] = V1[0]+V;
TL_Delete(TL6);
if V1[cc] > 0 then
{
sum = 0;
for cnt = 1 to CC
{
sum = sum + V1[cnt];
}
mav = sum/CC;
//최근 1분거래량이 이전 cc봉 평균대비 CF배 이상이면
if V1[0] >= mav*CF Then
{
//날짜,시간,TM값, 평균값 저장
VD = sdate;
VT = stime;
VM = TM;
VP = (O1+H1+L1+C1)/4;
}
//오늘 거래량조건이 발생한적 있고 현재부터 20분 이내이면 출력
if VD == sdate and VM > TM-n Then
{
TL6 = TL_new(D1,TT,VP,Sdate,stime,VP);
TL_SetColor(TL6,BLACK);
TL_SetSize(TL6,굵기6);
}
}
}
2020-01-28
271
글번호 135434
답변완료
수식 부탁합니다
현재 봉기준 7봉이내에 아래와 같이 거래량이 폭등한 경우
7봉이내 거래량 폭등한 횟수가 3회 이상 발생한 경우 검색식 부탁합니다.
거래량 폭등 : 60이평 거래량 보다 해당봉의 거래량이 7배 이상 폭등
2020-01-28
236
글번호 135433
답변완료
문의 드립니다.
이평선 5 20 60 120 정배열에서 MACD 12 26 9 기준선 0선을 위로 돌파 시 매수 진입
손절과 익절은 MACD 기준선 0선을 아래로 돌파시 매도 청산 완료.
이평선 5 20 60 120 역배열에서 MACD 12 26 9 기준선 0선을 아래로 돌파 시 매도 진입
손절과 익절은 MACD 기준선 0선을 위로 돌파시 매수 청산 완료.
부탁드립니다.
2020-01-28
223
글번호 135432
billiard 님에 의해서 삭제되었습니다.
2020-01-28
31
글번호 135423
답변완료
질문드립니다
지표가 문제없이 적용은 잘 되는데
plot1 값이 8(틱)이 됐을 때 음성신호가 발생되도록 할 예정인데요
(이전 수식 생략. 혹시나 하여 질문 아래 첨부)
if (plot1 >= 8 and plot1[1] < 8) or
(plot1 <= 8 and plot1[1] > 8) Then
PlaySound("C:₩WRFutures₩YesGlobalPro₩data₩Sound₩001.wav");
이렇게 하면 되는거 맞나요?
새해 복 많이 받으십시오
----
수식까지 포함한 모습은 아래와 같습니다.
Input : Period(5);
var : hh(0),ll(0),cnt(0),rr(0);
Array : VV[51](0);
vv[1] = ma(C,Period*1);
vv[2] = ma(C,Period*2);
vv[3] = ma(C,Period*3);
vv[4] = ma(C,Period*4);
vv[5] = ma(C,Period*5);
vv[6] = ma(C,Period*6);
vv[7] = ma(C,Period*7);
vv[8] = ma(C,Period*8);
vv[9] = ma(C,Period*9);
vv[10] = ma(C,Period*10);
vv[11] = ma(C,Period*11);
vv[12] = ma(C,Period*12);
vv[13] = ma(C,Period*13);
vv[14] = ma(C,Period*14);
vv[15] = ma(C,Period*15);
vv[16] = ma(C,Period*16);
vv[17] = ma(C,Period*17);
vv[18] = ma(C,Period*18);
vv[19] = ma(C,Period*19);
vv[20] = ma(C,Period*20);
vv[21] = ma(C,Period*21);
vv[22] = ma(C,Period*22);
vv[23] = ma(C,Period*23);
vv[24] = ma(C,Period*24);
vv[25] = ma(C,Period*25);
vv[26] = ma(C,Period*26);
vv[27] = ma(C,Period*27);
vv[28] = ma(C,Period*28);
vv[29] = ma(C,Period*29);
vv[30] = ma(C,Period*30);
vv[31] = ma(C,Period*31);
vv[32] = ma(C,Period*32);
vv[33] = ma(C,Period*33);
vv[34] = ma(C,Period*34);
vv[35] = ma(C,Period*35);
vv[36] = ma(C,Period*36);
vv[37] = ma(C,Period*37);
vv[38] = ma(C,Period*38);
vv[39] = ma(C,Period*39);
vv[40] = ma(C,Period*40);
vv[41] = ma(C,Period*41);
vv[42] = ma(C,Period*42);
vv[43] = ma(C,Period*43);
vv[44] = ma(C,Period*44);
vv[45] = ma(C,Period*45);
vv[46] = ma(C,Period*46);
vv[47] = ma(C,Period*47);
vv[48] = ma(C,Period*48);
vv[49] = ma(C,Period*49);
vv[50] = ma(C,Period*50);
if vv[1] > 0 then
{
hh = vv[1];
ll = vv[1];
for cnt = 1 to 50
{
if vv[cnt] > 0 and vv[cnt] > hh Then
hh = vv[cnt];
if vv[cnt] > 0 and vv[cnt] < ll Then
ll = vv[cnt];
}
rr = hh-ll;
plot1(rr/PriceScale);
}
2020-01-28
259
글번호 135417
답변완료
강조식과 종목검색식 부탁합니다
지표명 : dmi
1. dmi(기간 14)에서 -di<=10 이하 이면서(and)
2. dmi(기간 40)에서 dmi > 50 이상인 종목 검색식과 강조식 부탁합니다
2020-01-27
263
글번호 135416
답변완료
코스피 선물 매수 및 매도 관련 시스템식 작성
시초가보다 1.5포인트 이상 높아지면 매수 진입하고, 시초가보다 1.5포트 이하로 낮아지면 매도 진입하는데, 이때 매수와 매도 포지션은 모두 가지고 있다가 당일 청산하는 시스템을 작성하려고 합니다.
질문 1. 메뉴얼을 읽어보니 매수와 매도 포지션을 동시에 가지는 것은 안되는 거 같던데.. 맞나요?
질문 2. 3분봉 차트로 아래 식을 작성했습니다.
buy("매수",atstop,Dayopen + 1.5); //시초가 대비 1.5포인트 이상 가격 발생시 매수
sell("매도",atstop,Dayopen - 1.5); //시초가 대비 1.5포인트 이하 가격 발생시 매도
이 시스템을 돌려보면 실제로 매수되는 가격이 1.5포인트 보다 덜 상승할 때 매수 되고, 매수한 가격이 해당 봉의 시초가로 매수된 것으로 나오는데 어디가 잘못된 건지 모르겠어요.
2020-01-27
324
글번호 135415
답변완료
일봉에서
감사합니다..
1.
가.특정일 기준
일봉에서
특정일을 변수로 입력하면
그 날자이후 현재일까지
이평5와 이평20의 상승교차(골든크로스)가 있었고
상승교차일 이후 현재일까지
이평5와 이평20이 계속 우상향 상승중인 종목을 찾아라
나.N봉전 기준
일봉에서
N일을 변수로 입력하면
그 날자이후 현재일까지
이평5와 이평20의 상승교차(골든크로스)가 있었고
상승교차일 이후 현재일까지
이평5와 이평20이 계속 우상향 상승중인 종목을 찾아라
2.
가.
일봉에서
특정일을 변수로 입력하면
그 날자 이후 현재일까지
이평5와 이평20의 상승교차(골든크로스)가 있었고
상승교차일 당일의 저가와 상승교차일 이후부터
일봉종가가 이평5를 하향돌파(데드크로스)한 N일 이내에서
발생한 최고가 내에
현재일의 종가가 있으며
상승교차일 이후 현재일까지
이평5와 이평20이 계속 우상향 상승중인 종목을 찾아라
나.
N봉전 기준
일봉에서
N일을 변수로 입력하면
그 날자이후 현재일까지
이평5와 이평20의 상승교차(골든크로스)가 있었고
상승교차일 당일의 저가와 상승교차일 이후부터
일봉종가가 이평5를 하향돌파(데드크로스)한 N일 이내에서
발생한 최고가 내에
현재일의 종가가 있으며
상승교차일 이후 현재일까지
이평5와 이평20이 계속 우상향 상승중인 종목을 찾아라
2020-01-27
309
글번호 135414