커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1631
글번호 230811
답변완료
분챠트 수식문의
틱챠트에서 30분봉 5이동평균선을 보여주는 수식부탁 드립니다
2022-11-04
1086
글번호 163514
답변완료
수식 부탁드립니다
먼저 감사드립니다
해외선물이고요 두종목을 비교하여 매매를 하려고 합니다.
1개계약 진입기준
A종목(Data1) : 전일종가대비 당일누적수익과
B종목(Data2) : 전일종가대비 당일누적수익을 비교하여
A종목 당일누적수익 > B종목 당일누적수익 이면 매수
A종목 당일누적수익 < B종목 당일누적수익 이면 매도하는 수식이 가능한지요
수식작성부탁드립니다
2022-11-04
918
글번호 163513
답변완료
수식작성부탁드립니다
수고많으십니다
진입후 손절되고 다시 진입했던 가격으로 다시 돌아오면 재진입하는 수식 부탁드립니다
손절된 후에 다시 재진입하는 수식을 검색해서 찾아보니 다음봉에서 재진입하는 수식으로
만들어져 있는데요 같은봉에서 발생하는 경우 수식은 어떻게 작성하는지요?
- 예를 들어 같은 봉에서 20포인트 손절가로 정하고 매수나 매도 진입후에 손절된 후 다시 진입가격으로 돌아왔을때 재진입하는 수식입니다.
2022-11-04
957
글번호 163511
답변완료
차트 전체에서의 첫봉(한개)의 값
안녕하세요
차트 전체 기간(일봉) 중 첫날 종가를 알 수 있을까요?
구할 수 있다면 아래와같이 차트로 보고싶은데 수식 부탁드립니다.
차트 전체의 첫 날 종가 / 차트 전체의 첫 날 종가 * 100
차트 전체의 둘째날 종가 / 차트 전체의 첫 날 종가 * 100
차트 전체의 셋째날 종가 / 차트 전체의 첫 날 종가 * 100
차트 전체의 넷째날 종가 / 차트 전체의 첫 날 종가 *100
...
~~~
...
오늘 종가 / 차트 전체의 첫 날 종가*100
이렇게 일봉차트에서 조회되는 첫날부터 오늘까지의 종가를 계속 나누면서 와야하는 차트를 만들고 싶은데 부탁드립니다
2022-11-04
1062
글번호 163508
답변완료
문의드립니다
분봉차트에서 사용할 갭보정 볼린저밴드 지표식 부탁합니다
검색해서 찾아봤는데 이상하게 나오네요
감사합니다
2022-11-03
1033
글번호 163507
답변완료
문의 드립니다.
아래의 기준가 매매 로직에서 무포지션 일 때
미리 자동매매 설정하면 302.00 위에서 아래로 돌파하면
매도청산 완료 신호가 매도로 진입되는데요.
이 점을 보완하고 싶습니다.
무조건 진입은 기준가 아래서 위로 돌파 시 매수 진입하고
매수 포지션 있을 때 매도 청산완료가 진행되었으면 합니다.
혹시 이부분이 가능할까요.
부탁드립니다.
input : Price (302.00);
if crossup(C,price) Then
buy();
if CrossDown(C,price) Then
ExitLong();
2022-11-03
1292
글번호 163501
답변완료
조건을 만족하는 값 추리기
안녕하세요 항상 건강하셨으면 좋겠습니다.
코드 짜주시고 도움 주셔서 항상 고맙습니다 (__)
특정 조건을 만족하는 값만 추리길 원합니다 어떻게 해야할지 도움 주시면 감사하겠습니다
X = IFF(Y, 1, 0)이라고 가정하고 (X는 0 또는 1일수밖에 없음)
X가 1이었다가 0으로 바뀌었다는 가정하에,
X가 1이었을때의 봉들 중 가장 작은 거래량을 가진 봉의 저가 <--var1에 넣고싶습니다.
X가 0이었다가 1로 바뀌었다면, x가 0이었을떄의 봉들 중 가장 작은 거래량을 가진 봉의 저가 <-- var2에 넣고싶습니다
var2에 새로운 값이 저장되어있는 상태이고, 다시 x가 1이었다가 0으로 바뀌면, var1에 바로 전에 x가 1인 상황이었을때 만들어진 가장 작은 거래량을 가진 봉의 저가 값'을 다시 넣고, 그 전에 있던 var1 값은 var3에 저장이 되었으면 좋겠습니다.
var1에 새로운 값이 저장되어있고, x가 0이었다가 다시 1로 바뀌면, var2의 x가 1이었을때 만들어진 가장 적은 거래량을 가진 봉의 저가 값을 넣고, 그 전에있던 var2는 var4에 저장되었으면 좋겠습니다.
이렇게 하면 홀수 var에는 x가 1이었을때 값이 계속 갱신되었으면 좋겠습니다. ,
짝수 var에는 x가 0이었을때의 값들이 계속 갱신되었으면 좋겠습니다.
홀수, 짝수 var들은 위와 같은 갱신은 10번까지 할 수 있도록 도와주세요(var 값은 계속 바뀌지만 실제 사용은 홀수당 10개, 짝수당 10개까지 할 수 있도록)
부탁드립니다.
2022-11-03
1003
글번호 163500
답변완료
문의드립니다.
안녕하세요
사진파일 처럼 빨간 화살표 부분
사각 박스를 그린후 박스 시작세로선과 박스 끝세로선이 캔들의 세로부분 중심부분부터
그려지는데요.
검은색으로 빗금친 부분부터 그릴 수 있을까요?
시작세로선이 캔들의 맨 왼쪽 끝세로선이 캔들의 맨오른쪽까지 그릴 수 있을까요?
감사합니다.
if cond1 == True Then
{
if cond1[1] == False Then
{
Box1 = Box_New(sDate,sTime,Value10,NextBarSdate,NextBarStime,H);
Box_SetColor(Box1,Black);
Box_SetFill(Box1,True,70,True);
}
Else
{
Box_SetEnd(Box1,sDate,sTime,O);
}
}
2022-11-03
782
글번호 163496
답변완료
추세선 쓰리바닥
input : Period(12),선두께(1);
Var:상승색(Red), 하락색(Blue);
Var:j(0),T(0);
Var: date11(0),date12(0),time11(0),time12(0),TL1(0),TL(0),
date21(0),date22(0),time21(0),time22(0),
date31(0),date32(0),time31(0),time32(0),tx(0),tx1(0),tl4(0);
Array:HiVal[20](0),LoVal[20](0),HiBar[20](0),LoBar[20](0)/*,ZZ[20](0)*/;
Array:r[7](0),fr[7](0),TL2[7](0),TL3[7](0),TX2[7](0),TX3[7](0);
r[0] = 0;
r[1] = 2;
r[2] = 3.;
r[3] = -1;
r[4] = -2.;
r[5] = 1;
r[6] = 0.5;
For j = 0 To 19
{
HiBar[j] = HiBar[j] + 1;
LoBar[j] = LoBar[j] + 1;
}
if crossup(c,highest(H,Period)[1]) Then
T = 1;
if CrossDown(c,Lowest(L,Period)[1]) Then
T = -1;
If T == -1 Then
{
If T[1] != -1 Then
{
For j = 18 DownTo 0
{
LoVal[j+1] = LoVal[j];
LoBar[j+1] = LoBar[j];
//ZZ[j+1] = ZZ[j];
}
LoVal[0] = L;
LoBar[0] = 0;
//ZZ[0] = L;
date11 = date[HiBar[0]];
time11 = stime[HiBar[0]];
Value11 = HiVal[0];
date12 = date[LoBar[0]];
time12 = stime[LoBar[0]];
Value12 = LoVal[0];
TL_Delete(tl);
TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen);
TL1 = TL_New(date11,time11,Value11,date12,time12,Value12);
TL_SetColor(TL1,하락색);
Tx = Text_New(date11,time11,Value11,"●");
#동그라미 색상, 빨강
Text_SetColor(Tx,Blue);
Text_SetStyle(Tx,2,2);
Text_SetSize(tx,7);
//tx = Text_New(date11,time11,Value11,NumToStr(value11,2)+NewLine+NumToStr(value11,2)+NewLine);
//Text_SetStyle(tx,2,1);
date21 = date[HiBar[0]];
time21 = stime[HiBar[0]];
date22 = date[0];
time22 = stime[0];
for j = 0 to 6
{
fr[j] = LoVal[1] + ((HiVal[0] - LoVal[1]) * r[j]);
}
#TL2[1] = TL_New(date21,time21,fr[1],date22,time22,fr[1]);
#TL_SetColor(TL2[1],RED);
#TL_SetStyle(TL2[1], 3);
#TL2[2] = TL_New(date21,time21,fr[2],date22,time22,fr[2]);
#TL_SetColor(TL2[2],RED);
#TL_SetSize(TL2[2],1);
#TX2[2] = Text_New(date22,time22,fr[2],NumToStr(fr[2],2));
#Text_SetColor(Tx2[2],BWHITE);
#Text_SetStyle(TX2[2],1,1);
#TL2[3] = TL_New(date21,time21,fr[3],date22,time22,fr[3]);
#TL_SetColor(TL2[3],RED);
#TL_SetStyle(TL2[3], 3);
#TL2[4] = TL_New(date21,time21,fr[4],date22,time22,fr[4]);
#TL_SetColor(TL2[4],RED);
#TL_SetSize(TL2[4],1);
#TX2[4] = Text_New(date22,time22,fr[4],NumToStr(fr[4],2));
#Text_SetColor(Tx2[4],BWHITE);
#Text_SetStyle(TX2[4],1,0);
}
If LoVal[0] > L Then
{
LoVal[0] = L;
LoBar[0] = 0;
//ZZ[0] = L;
date12 = date[LoBar[0]];
time12 = stime[LoBar[0]];
Value12 = LoVal[0];
TL_SetEnd(TL1, date12,time12,Value12);
date22 = date[0];
time22 = stime[0];
TL_SetEnd(TL2[0],date22,time22,fr[0]);
TL_SetEnd(TL2[1],date22,time22,fr[1]);
TL_SetEnd(TL2[2],date22,time22,fr[2]);
Text_SetLocation(TX2[2],date22,time22,fr[2]);
TL_SetEnd(TL2[3],date22,time22,fr[3]);
TL_SetEnd(TL2[4],date22,time22,fr[4]);
Text_SetLocation(TX2[4],date22,time22,fr[4]);
TL_SetEnd(TL2[5],date22,time22,fr[5]);
TL_SetEnd(TL2[6],date22,time22,fr[6]);
TL_Delete(tl);
TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen);
}
}
If T == 1 Then
{
If T[1] != 1 Then
{
For j = 18 DownTo 0
{
HiVal[j+1] = HiVal[j];
HiBar[j+1] = HiBar[j];
//ZZ[j+1] = ZZ[j];
}
HiVal[0] = H;
HiBar[0] = 0;
//ZZ[0] = H;
date11 = date[LoBar[0]];
time11 = stime[LoBar[0]];
Value11 = LoVal[0];
date12 = date[HiBar[0]];
time12 = stime[HiBar[0]];
Value12 = HiVal[0];
TL_Delete(tl);
TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen);
TL1 = TL_New(date11,time11,Value11,date12,time12,Value12);
TL_SetColor(TL1,상승색);
Tx1 = Text_New(date11,time11,Value11,"●");
#동그라미 색상, 파랑
Text_SetColor(Tx1,Red);
Text_SetStyle(Tx1,2,2);
Text_SetSize(tx1,7);
//tx = Text_New(date11,time11,Value11,NewLine+NumToStr(value11,2)+NewLine+NumToStr(value11,2));
//Text_SetStyle(tx,2,0);
date31 = date[LoBar[0]];
time31 = stime[LoBar[0]];
date32 = date[0];
time32 = stime[0];
for j = 0 to 5
{
fr[j] = LoVal[0] + ((HiVal[1] - LoVal[0]) * r[j]);
}
}
If HiVal[0] < H Then
{
HiVal[0] = H;
HiBar[0] = 0;
//ZZ[0] = H;
date12 = date[HiBar[0]];
time12 = stime[HiBar[0]];
Value12 = HiVal[0];
TL_SetEnd(TL1, date12,time12,Value12);
date32 = date[0];
time32 = stime[0];
TL_SetEnd(TL3[0],date32,time32,fr[0]);
TL_SetEnd(TL3[1],date32,time32,fr[1]);
TL_SetEnd(TL3[2],date32,time32,fr[2]);
Text_SetLocation(TX3[2],date32,time32,fr[2]);
TL_SetEnd(TL3[3],date32,time32,fr[3]);
TL_SetEnd(TL3[4],date32,time32,fr[4]);
Text_SetLocation(TX3[4],date32,time32,fr[4]);
TL_SetEnd(TL3[5],date32,time32,fr[5]);
TL_SetEnd(TL3[6],date32,time32,fr[6]);
TL_Delete(tl);
TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen);
}
}
TL_SetSize(TL1,선두께);
//TL_SetEnd(tl,NextBarSdate,NextBarStime,NextBarOpen);
0.35p 내에서 쓰리바닥을 형성하는지를 실시간으로 보기위한 지표입니다.
1.추세선이 음전환될 때, 직전저점과 전전저점의 차이가 상하 관계없이 0.35p 이내이면 상단에 동그라미 표시.
2.동그라미 삭제 시점:직전저점과 전전저점 중에 "높은 저점"을 기준으로하여
가.아래로 -0.35p 도달 전에 양전환시.
나.계속 하락하여 -0.35p를 하향 붕괴할 때.
(동그라미는 생성과 삭제를 반복합니다.) 감사합니다.
2022-11-03
918
글번호 163495