커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1694
글번호 230811
답변완료
시스템 수식작성 질문드립니다.
먼저 노고에 감사드립니다.
KODEX 코스닥150 레버리지(233740)종목에 대해서 아래와 같은 로직을 백테스트 해보고자 합니다.
1. 당일(T+0) 30분봉 첫봉(09:00-09:30)이 양봉일 때
2. 당일(T+0) 12:30 진입
3. 익일(T+1) 전일(T+0) 종가대비 갭상승일 경우 시가 청산
4. 익일(T+1) 전일(T+0) 종가대비 갭하락일 경우 익일 09:30 청산
혼자서 어떻게든 해보려했는데 쉽지가 않네요ㅠㅠ
답변 부탁드립니다. 감사합니다!
2022-01-23
864
글번호 155664
답변완료
수식 질문드립니다.
if Tcond == true and entry < apt and condi==0 Then
{
if value1>0 then
{ Buy(); condi=1; }
if value1<0
then { Sell(); condi=-1; }
}
if Tcond == true and entry < apt and condi!=0 Then
{
if value2>0 and condi==1 then
{ Buy(); condi=2; }
if value2<0 and condi==-1
then
{ Sell(); condi=-2; }
}
첫번째 진입식
두번째 진입식 입니다.
여기서 두번째 진입에 대한 청산이 이루어진 경우에만 condi =3 지정하고 싶습니다.
가능하려는지요?
2022-01-22
755
글번호 155663
답변완료
문의 드립니다
직전 매매 신호가 거짓(진입을 하였든, 이 필터에 걸려 패스하였든)일때만 진입하는 필터를 추가하고싶습니다.
혹은 같은 말이긴하지만
직전 매매신호가 참(진입을 했든, 안했든)이라면 이번 신호는 다음에 나올 신호에 시그널은 줘야하지만, 진입은 하지 않도록 하는 코드 부탁드립니다.
감사합니다.
2022-01-22
828
글번호 155662
답변완료
문의
아래 수식을 시뮬레이션 할 때
32비트 버전은 속도가 나오지 않고
64비트 버전은 속도가 잘 나옵니다.
살펴보니
! 제외 조건 처리에서 32비트에서 속도가 나지 않습니다.
문의 1
속도를 고려한 다른 수식이 있는지요
문의 2
전략차트에서도 해당 수식의 수행 속도 차이는 발생할까요.
****************************************************************************
input:고가(1.2),저가(0.4),but1(800),but2(1000);
if !(data2(c>lowD(0)+but1)) and !(data3(c>lowD(0)+but2)) and c > DayLow + 저가 and c < DayHigh - 고가 Then
Sell();
2022-01-23
958
글번호 155661
답변완료
문의드립니다.
많은 도움을 주시고 수고해주셔서 감사합니다.
아래처럼
빨강/파랑색 추세에서 역방향으로 진입하였다가 추세가 바뀌는 시점에서 청산한 후
새롭게 다시 진입할 때는
추세가 바뀌어 +50틱이나 -50틱에 역방향으로 매도/매수 1개씩 진입하고,
계속하여 +50틱/-50틱에 추가 재진입하되,
2,3,4...단계로 나누어
각 단계마다 진입물량을 처음 1개에서, 2개, 3개, 4개로 늘려 매도/매수 했어요.
여기서 하나 더 변경 원합니다.
+50틱이나 -50틱이 추가 될 때마다 진입하는 것은 그대로인데,
처음 매도/매수 진입할 때
곧 첫 진입 시작 위치를 +/- 10틱, 20틱...50틱...100틱을 지정할 수 있도록 변경을 희망합니다.
예를 들어 첫 진입 위치를 +100틱/혹은 -100틱으로 지정 부탁드립니다.
감사합니다.^^
-아래-
> 번성 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 항상 귀한 답변에 다시한번 감사드립니다.
아래와 같이 요청드려 value1로 좋은 답변을 받았습니다.
1차와 2차 시기에는 1개만, 3차와 4차 시기에는 2개씩, 5차와 6차 시기에는 3개씩
이렇게 2단계 혹은 3단계,4,5단계 마다 진입량을 1개씩 늘려가며 진입할 수 있도록 변경 원합니다.
만약 1차,2차,3차/ 4차,5차,6차/7차,8차,9차/...3단계씩 마다 1개 추가하거나
1-4차/2-8차/9-12차/...4단계씩 마다 1개 추가
1-5차/6-10차/11-15차/...5단계씩 마다 1개 추가
위와같이 단계를 유연하게 하여 1개를 추가하는 식으로 변경 부탁드립니다.
감사합니다^^.수고하세요.
안녕하세요
예스스탁입니다.
input : N(2);
#상승구간의 마지막저점 저장
if Color == RED Then
{
var1 = 저점[2,1];
}
#하락구간의 마지막 고점 저장
if Color == BLUE Then
{
var2 = 고점[2,1];
}
if MarketPosition <= 0 Then
{
if color == BLUE and var1 > 0 and L > var1-PriceScale*50 Then
Buy("b",AtLimit,var1-PriceScale*50,1);
}
if MarketPosition == 1 Then
{
value1 = Floor(MaxEntries/N)+1;
Buy("bb",AtLimit,(var1[BarsSinceEntry]-PriceScale*50)-(PriceScale*50)*MaxEntries,value1);
if T == -1 and 고점[1,1] > 0 Then
ExitLong("bx1",AtLimit,고점[1,1]+PriceScale*1);
if T == 1 and 고점[2,1] > 0 Then
ExitLong("bx2",AtLimit,고점[2,1]+PriceScale*1);
}
if MarketPosition >= 0 Then
{
if Color == RED and Var2 > 0 and H < var2+PriceScale*50 Then
Sell("s",AtLimit,Var2+PriceScale*50,1);
}
if MarketPosition == -1 Then1
{
value1 = Floor(MaxEntries/N)+1;
Sell("ss",AtLimit,(var2[BarsSinceEntry]+PriceScale*50)+(PriceScale*50)*MaxEntries,value1);
if T == 1 and 저점[1,1] > 0 Then
ExitShort("sx1",AtLimit,저점[1,1]-PriceScale*1);
if T == -1 and 저점[2,1] > 0 Then
ExitShort("sx2",AtLimit,저점[2,1]-PriceScale*1);
}
2022-01-22
1009
글번호 155660
답변완료
문의드립니다.
시스템 수식 부탁드립니다.
매수조건
현재의 가격이 일목균형 기준선(기본값)을 돌파하고(종가기준) 이동평균(15)선보다 높을 경우 진입
매수청산조건
볼린저 밴드(기본값) 상단을 돌파한 경우(종가기준)
매도조건
매수 반대
매도청산조건
매수 반대
2022-01-22
994
글번호 155659
답변완료
지표 수식(지표 2-1 및 2-2)의 수정을 부탁드립니다.
담당자님, 안녕하세요.
항상 수고 많으십니다. 작성해주신 지표 수식을 잘 활용하고 있습니다.
감사드립니다.
수식작성QA 75608 답변에서 작성해 주신 수식에 대하여
수정 보완을 부탁드립니다. (2-1 및 2-2 수정 의뢰)
cf. 아래 질문의 수정의뢰(1-1 및 1-2)와 관련되는 질문입니다.
지난 번에 요청드린 내용에서 제가 잘못 요청드려 오류가 있는 부분도 있고
("전일(D-1) 09:00 ~ 09:30 기간의 (고점 + 저점) / 2 = A" 등의 부분과
그것에서 이어지는 부분, "수식 Q" 부분 등을 제 오류로 제가 잘못 설명드렸습니다.
첨부 엑셀 파일에서 정정해서 다시 자세히 설명드렸습니다.)
세심하게 검토후 요청드리지 못해 담당자님을 번거롭게 해드린 점 죄송합니다.
그리고, 제 설명(요청)의 오류 부분을 감안해서 보더라도
담당자님께서 작성(답변)해 주신 수식을 실행하면
제가 의도했던 지표의 구현 결과(수평라인)와 차이점이 많습니다.
그래서 기존 지표의 수정을 부탁드립니다.
이에 첨부된 엑셀파일에서 지표 수식의 요청 설명을 다시 드렸고
여기에 실제 수치에 의한 사례를 보완하였습니다.
그리고 첨부된 엑셀파일에
제가 의도하는 지표의 구현 결과(예상)의 차트 그림과
담당자님께서 작성(답변)해 주신 지표수식을 실행한 결과의 차트 화면캡쳐 그림을
비교하여 제시하였습니다.
첨부된 엑셀 파일의 내용을 확인하시고
지표2-1, 지표2-2를 수정해 주실 것을 부탁드립니다.
* 첨부 : 지표 2-1 및 2-2 구현방법 설명(그림 포함)_2022.01.21
담당자님 노고와 답변에 미리 감사드립니다.
주말 잘 보내시기 바랍니다.
--------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------
(참고)
담당자님의 편의를 위해
담당자님께서 수식작성QA 75608 답변에서 작성해 주신 수식을 아래에 기재합니다.
안녕하세요
예스스탁입니다.
Plot1갯수가 유동적으로 할수 없습니다.
시가+-6개만 작성해 드립니다.필요한 만큼 추가하셔야 합니다
<지표 2-1>
input : ntime(30);
var : S1(0),D1(0),TM(0),TF(0),cnt(0),value(0),idx(0);
var : th(0),tl(0),hh(0),ll(0),hh1(0),ll1(0),r(0),s(0),mh(0),ml(0);
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
idx = 0;
hh1 = hh[1];
ll1 = ll[1];
}
if D1 > 0 then
{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TF = TM%ntime;
if Bdate != Bdate[1] or
(Bdate == Bdate[1] and ntime > 1 and TF < TF[1]) or
(Bdate == Bdate[1] and ntime > 1 and TM >= TM[1]+ntime) or
(Bdate == Bdate[1] and ntime == 1 and TM > TM[1]) Then
{
mh = h;
ml = l;
idx = idx+1;
th = hh[1];
tl = ll[1];
}
if h > mh Then
mh = h;
if L < ml Then
ml = l;
value = (mh+mh)/2;
if idx == 1 Then
{
hh = value;
ll = value;
th = value;
tl = value;
}
Else
{
if value > th Then
hh = value;
Else
hh = th;
if value < tl Then
ll = value;
Else
ll = tl;
}
}
if hh1 > 0 and ll1 > 0 Then
{
R = (hh1-hh)/2;
S = (hh-ll1)/2;
Plot1(dayopen+r*1);
Plot2(dayopen+r*2);
Plot3(dayopen+r*3);
Plot4(dayopen+r*4);
Plot5(dayopen+r*5);
Plot6(dayopen+r*6);
Plot7(dayopen-s*1);
Plot8(dayopen-s*2);
Plot9(dayopen-s*3);
Plot10(dayopen-s*4);
Plot11(dayopen-s*5);
Plot12(dayopen-s*6);
}
<지표 2-2>
input : ntime(30);
var : S1(0),D1(0),TM(0),TF(0),cnt(0),value(0),idx(0);
var : th(0),tl(0),hh(0),ll(0),hh1(0),ll1(0),r(0),s(0),mh(0),ml(0),m1(0);
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
idx = 0;
hh1 = hh[1];
ll1 = ll[1];
}
if D1 > 0 then
{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TF = TM%ntime;
if Bdate != Bdate[1] or
(Bdate == Bdate[1] and ntime > 1 and TF < TF[1]) or
(Bdate == Bdate[1] and ntime > 1 and TM >= TM[1]+ntime) or
(Bdate == Bdate[1] and ntime == 1 and TM > TM[1]) Then
{
mh = h;
ml = l;
idx = idx+1;
th = hh[1];
tl = ll[1];
}
if h > mh Then
mh = h;
if L < ml Then
ml = l;
value = (mh+mh)/2;
if idx == 1 Then
{
hh = value;
ll = value;
th = value;
tl = value;
m1 = value;
}
Else
{
if value > th Then
hh = value;
Else
hh = th;
if value < tl Then
ll = value;
Else
ll = tl;
}
}
if hh1 > 0 and ll1 > 0 Then
{
R = (hh1-hh)/2;
S = (hh-ll1)/2;
Plot1(m1+r*1);
Plot2(m1+r*2);
Plot3(m1+r*3);
Plot4(m1+r*4);
Plot5(m1+r*5);
Plot6(m1+r*6);
Plot7(m1-s*1);
Plot8(m1-s*2);
Plot9(m1-s*3);
Plot10(m1-s*4);
Plot11(m1-s*5);
Plot12(m1-s*6);
}
2022-01-23
1171
글번호 155658
답변완료
지표 수식(지표 1-1 및 1-2)의 수정을 부탁드립니다.
담당자님, 안녕하세요.
항상 수고 많으십니다. 작성해주신 지표 수식을 잘 활용하고 있습니다.
감사드립니다.
수식작성QA 75607 답변에서 작성해 주신 수식에 대하여
수정 보완을 부탁드립니다. (1-1 및 1-2 수정 의뢰)
위의 수정의뢰(2-1 및 2-2)와 관련되는 질문입니다.
지난 번에 요청드린 내용에서 제가 잘못 요청드려 오류가 있는 부분도 있고
("전일(D-1)의 (09:00에 시작하는 분봉 시가 + 09:30에 완성되는 분봉 종가) / 2 = A" 등의 부분과
그것에서 이어지는 부분, "수식 Q" 부분 등을 제 오류로 제가 잘못 설명드렸습니다.
첨부 엑셀 파일에서 정정해서 다시 자세히 설명드렸습니다.)
세심하게 검토후 요청드리지 못해 담당자님을 번거롭게 해드린 점 죄송합니다.
그리고, 제 설명(요청)의 오류 부분을 감안해서 보더라도
담당자님께서 작성(답변)해 주신 수식을 실행하면
제가 의도했던 지표의 구현 결과(수평라인)와 차이점이 많습니다.
그래서 기존 지표의 수정을 부탁드립니다.
이에 첨부된 엑셀파일에서 지표 수식의 요청 설명을 다시 드렸고
여기에 실제 수치에 의한 사례를 보완하였습니다.
그리고 첨부된 엑셀파일에
제가 의도하는 지표의 구현 결과(예상)의 차트 그림과
담당자님께서 작성(답변)해 주신 지표수식을 실행한 결과의 차트 화면캡쳐 그림을
비교하여 제시하였습니다.
첨부된 엑셀 파일의 내용을 확인하시고
지표1-1, 지표1-2를 수정해 주실 것을 부탁드립니다.
* 첨부 : 지표 1-1 및 1-2 구현방법 설명(그림 포함)_2022.01.20
담당자님 노고와 답변에 미리 감사드립니다.
주말 잘 보내시기 바랍니다.
--------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------
(참고)
담당자님의 편의를 위해
담당자님께서 수식작성QA 75607 답변에서 작성해 주신 수식을 아래에 기재합니다.
안녕하세요
예스스탁입니다.
Plot1갯수가 유동적으로 할수 없습니다.
시가+-6개만 작성해 드립니다.필요한 만큼 추가하셔야 합니다
<지표 1-1>
input : ntime(30);
var : S1(0),D1(0),TM(0),TF(0),cnt(0),OO(0),value(0),idx(0);
var : th(0),tl(0),hh(0),ll(0),hh1(0),ll1(0),r(0),s(0);
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
idx = 0;
hh1 = hh[1];
ll1 = ll[1];
}
if D1 > 0 then
{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TF = TM%ntime;
if Bdate != Bdate[1] or
(Bdate == Bdate[1] and ntime > 1 and TF < TF[1]) or
(Bdate == Bdate[1] and ntime > 1 and TM >= TM[1]+ntime) or
(Bdate == Bdate[1] and ntime == 1 and TM > TM[1]) Then
{
OO = O;
idx = idx+1;
th = hh[1];
tl = ll[1];
}
value = (OO+C)/2;
if idx == 1 Then
{
hh = value;
ll = value;
th = value;
tl = value;
}
Else
{
if value > th Then
hh = value;
Else
hh = th;
if value < tl Then
ll = value;
Else
ll = tl;
}
}
if hh1 > 0 and ll1 > 0 Then
{
R = (hh1-hh)/2;
S = (hh-ll1)/2;
Plot1(DayOpen+r*1);
Plot2(DayOpen+r*2);
Plot3(DayOpen+r*3);
Plot4(DayOpen+r*4);
Plot5(DayOpen+r*5);
Plot6(DayOpen+r*6);
Plot7(DayOpen-s*1);
Plot8(DayOpen-s*2);
Plot9(DayOpen-s*3);
Plot10(DayOpen-s*4);
Plot11(DayOpen-s*5);
Plot12(DayOpen-s*6);
}
<지표 1-2>
input : ntime(30);
var : S1(0),D1(0),TM(0),TF(0),cnt(0),OO(0),value(0),idx(0);
var : th(0),tl(0),hh(0),ll(0),hh1(0),ll1(0),r(0),s(0),m1(0);
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
idx = 0;
hh1 = hh[1];
ll1 = ll[1];
}
if D1 > 0 then
{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TF = TM%ntime;
if Bdate != Bdate[1] or
(Bdate == Bdate[1] and ntime > 1 and TF < TF[1]) or
(Bdate == Bdate[1] and ntime > 1 and TM >= TM[1]+ntime) or
(Bdate == Bdate[1] and ntime == 1 and TM > TM[1]) Then
{
OO = O;
idx = idx+1;
th = hh[1];
tl = ll[1];
}
value = (OO+C)/2;
if idx == 1 Then
{
hh = value;
ll = value;
th = value;
tl = value;
m1 = value;
}
Else
{
if value > th Then
hh = value;
Else
hh = th;
if value < tl Then
ll = value;
Else
ll = tl;
}
}
if hh1 > 0 and ll1 > 0 Then
{
R = (hh1-hh)/2;
S = (hh-ll1)/2;
Plot1(m1+r*1);
Plot2(m1+r*2);
Plot3(m1+r*3);
Plot4(m1+r*4);
Plot5(m1+r*5);
Plot6(m1+r*6);
Plot7(m1-s*1);
Plot8(m1-s*2);
Plot9(m1-s*3);
Plot10(m1-s*4);
Plot11(m1-s*5);
Plot12(m1-s*6);
}
2022-01-23
986
글번호 155657
목마와숙녀 님에 의해서 삭제되었습니다.
2022-01-21
9
글번호 155656