커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
6058
글번호 230811
답변완료
문의드립니다.
안녕하세요.
지표 적용된 시점부터 봉갯수를 카운팅하려 합니다.
BarSinceEntry 처럼.
Var : x(0);
If x == 0 && LastBarOnChart == 1 Then
{ x = 1; }
Else If x > 0 Then
{ x = x + 1; }
카운팅되지 않고 1로 계속 초기화 되는 이유를 모르겠습니다.
예) 5번째봉에서 지표적용 했을때
BarIndex : 0 1 2 3 4 5 6 7 8 9
지표적용 : 0 0 0 0 0 1 2 3 4 5
^ 적용 이후 시점부터 카운트
위의 예처럼 만들려고 하는데 안되네요.
가능한 함수나 방법이 있다면 부탁드리겠습니다.
수고하세요.
2021-10-05
913
글번호 152659
답변완료
종목검색 이후 결과값 정렬
종목검색 후 결과값에 대해 정렬하여 볼 수 있나요?
종목검색에서 정렬은 많이 사용하는 기능인거 같은데요.
결과값이 가장높은 값 순서로 종목 추출하여 예스스팟에서 사용하고 싶습니다.
1. 예스랭기지에서 결과값으로 정렬가능한가요?
2. 종목검색 결과값을 예스스팟에서 받을수 있나요?
3. 1,2번 둘다 안되면 다른 방법은 있나요?
4. 아님 향후에 기능추가가 가능한가요?
Condition1 = C >= C[1];
Value1 = 0.0;
If Condition1 Then
{
If C==C[1] Then
Value1 = 0.0;
Else
value1 = 100 * (C - C[1]) / C[1];
}
Find(Value1);
2021-10-05
808
글번호 152654
답변완료
문의 드립니다.
하나의 지표를 실행하면 동시에 보여지길 바랍니다.
볼린져 밴드 20 2.0와 20 0.5
가능하다면 부탁드리겠습니다.
2021-10-05
891
글번호 152646
러블리 님에 의해서 삭제되었습니다.
2021-10-05
14
글번호 152643
답변완료
문의드립니다
1. 하기값들을 지표속성-차트표시에서 (칼라와 굵기를)선택할수 있게 부탁드립니다.
per1(23.7),per2(38.2),per3(50.0),Per4(61.8),per5(74.6)
2. 추가로 (0), (100)값도 추가해주세요.
------------------------------------------------------------------------
Input:length(12),per1(23.7),per2(38.2),per3(50.0),Per4(61.8),per5(74.6);
Var:j(0),lastHiVal(0),lastLoVal(0),turnPntBit(""),TL1(0),diff(0);
Array:valArr[10](0),barArr[10](0),turnPntArr[10]("");
For j = 0 To 9
{
barArr[j] = barArr[j] + 1;
}
Condition1 = Highest(H,length) == H and lastHiVal <> H;
Condition2 = Lowest(L,length) == L and lastLoVal <> L;
If Condition1 Then lastHiVal = H;
If Condition2 Then lastLoVal = L;
turnPntBit = "";
If Condition1 and Condition2 Then
{
If Max(valArr[1],valArr[2]) < H and Min(valArr[1],valArr[2]) > L Then
turnPntBit = "HiLo";
Else If Max(valArr[1],valArr[2]) < H Then turnPntBit = "Hi";
Else If Min(valArr[1],valArr[2]) > L Then turnPntBit = "Lo";
}
Else If Condition1 Then turnPntBit = "Hi";
Else If Condition2 Then turnPntBit = "Lo";
// if 전환점구분에 값이 있을 때만 then 아래 실행, 없으면 통과
If turnPntBit <> "" Then
{
If turnPntBit == "HiLo" Then
{
valArr[1] = IFF(turnPntArr[1] == "Hi",H,L);
barArr[1] = 0;
TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
If turnPntArr[1] == "Hi" Then
turnPntBit = "Lo";
Else
turnPntBit = "Hi";
}
If turnPntBit <> turnPntArr[1] Then
{
for j = 8 downto 1
{
valArr[j+1] = valArr[j];
barArr[j+1] = barArr[j];
turnPntArr[j+1] = turnPntArr[j];
}
}
If turnPntBit <> turnPntArr[1] or
(turnPntBit == turnPntArr[1] and
((turnPntBit == "Hi" and valArr[1] < H) or
(turnPntBit == "Lo" and valArr[1] > L))) Then
{
valArr[1] = IFF(turnPntBit == "Hi",H,L);
barArr[1] = 0;
turnPntArr[1] = turnPntBit;
If turnPntArr[1][1] <> turnPntArr[1][0] Then
TL1 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],
sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
Else
TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
}
}
# TL_SetSize(TL1,1);
# TL_SetColor(TL1,GREEN);
if turnPntArr[1] != turnPntArr[1][1] and barArr[3] > 0 Then{
if turnPntArr[2] == "Hi" then{
value1 = TL_New(sdate[barArr[3]],stime[barArr[3]],L[barArr[3]],sdate[barArr[2]],stime[barArr[2]],L[barArr[3]]);
value2 = TL_New(sdate[barArr[3]],stime[barArr[3]],H[barArr[4]],sdate[barArr[2]],stime[barArr[2]],H[barArr[4]]);
diff = abs(L[barArr[3]]-H[barArr[4]]);
value3 = TL_New(sdate[barArr[3]],stime[barArr[3]],H[barArr[4]]-diff*(per1/100),sdate[barArr[2]],stime[barArr[2]],H[barArr[4]]-diff*(per1/100));
value4 = TL_New(sdate[barArr[3]],stime[barArr[3]],H[barArr[4]]-diff*(per2/100),sdate[barArr[2]],stime[barArr[2]],H[barArr[4]]-diff*(per2/100));
value5 = TL_New(sdate[barArr[3]],stime[barArr[3]],H[barArr[4]]-diff*(per3/100),sdate[barArr[2]],stime[barArr[2]],H[barArr[4]]-diff*(per3/100));
value6 = TL_New(sdate[barArr[3]],stime[barArr[3]],H[barArr[4]]-diff*(per4/100),sdate[barArr[2]],stime[barArr[2]],H[barArr[4]]-diff*(per4/100));
value7 = TL_New(sdate[barArr[3]],stime[barArr[3]],H[barArr[4]]-diff*(per5/100),sdate[barArr[2]],stime[barArr[2]],H[barArr[4]]-diff*(per5/100));
TL_SetColor(value1,blue);
TL_SetColor(value2,blue);
TL_SetColor(value3,blue);
TL_SetColor(value4,blue);
TL_SetColor(value5,blue);
TL_SetColor(value6,blue);
TL_SetColor(value7,blue);
}
Else{
value1 = TL_New(sdate[barArr[3]],stime[barArr[3]],H[barArr[3]],sdate[barArr[2]],stime[barArr[2]],H[barArr[3]]);
value2 = TL_New(sdate[barArr[3]],stime[barArr[3]],L[barArr[4]],sdate[barArr[2]],stime[barArr[2]],L[barArr[4]]);
diff = abs(L[barArr[4]]-H[barArr[3]]);
value3 = TL_New(sdate[barArr[3]],stime[barArr[3]],L[barArr[4]]+diff*(per1/100),sdate[barArr[2]],stime[barArr[2]],L[barArr[4]]+diff*(per1/100));
value4 = TL_New(sdate[barArr[3]],stime[barArr[3]],L[barArr[4]]+diff*(per2/100),sdate[barArr[2]],stime[barArr[2]],L[barArr[4]]+diff*(per2/100));
value5 = TL_New(sdate[barArr[3]],stime[barArr[3]],L[barArr[4]]+diff*(per3/100),sdate[barArr[2]],stime[barArr[2]],L[barArr[4]]+diff*(per3/100));
value6 = TL_New(sdate[barArr[3]],stime[barArr[3]],L[barArr[4]]+diff*(per4/100),sdate[barArr[2]],stime[barArr[2]],L[barArr[4]]+diff*(per4/100));
value7 = TL_New(sdate[barArr[3]],stime[barArr[3]],L[barArr[4]]+diff*(per5/100),sdate[barArr[2]],stime[barArr[2]],L[barArr[4]]+diff*(per5/100));
TL_SetColor(value1,RED);
TL_SetColor(value2,red);
TL_SetColor(value3,RED);
TL_SetColor(value4,red);
TL_SetColor(value5,RED);
TL_SetColor(value6,red);
TL_SetColor(value7,red);
}
}
TL_Delete(value11);
TL_Delete(value12);
TL_Delete(value13);
TL_Delete(value14);
TL_Delete(value15);
TL_Delete(value16);
TL_Delete(value17);
TL_Delete(value21);
TL_Delete(value22);
TL_Delete(value23);
TL_Delete(value24);
TL_Delete(value25);
TL_Delete(value26);
TL_Delete(value27);
if turnPntArr[1] == "Hi" then{
value11 = TL_New(sdate[barArr[2]],stime[barArr[2]],L[barArr[3]],sdate[barArr[1]],stime[barArr[1]],L[barArr[3]]);
value12 = TL_New(sdate[barArr[2]],stime[barArr[2]],H[barArr[2]],sdate[barArr[1]],stime[barArr[1]],H[barArr[2]]);
diff = abs(L[barArr[3]]-H[barArr[2]]);
value13 = TL_New(sdate[barArr[2]],stime[barArr[2]],H[barArr[2]]-diff*(per1/100),sdate[barArr[1]],stime[barArr[1]],H[barArr[2]]-diff*(per1/100));
value14 = TL_New(sdate[barArr[2]],stime[barArr[2]],H[barArr[2]]-diff*(per2/100),sdate[barArr[1]],stime[barArr[1]],H[barArr[2]]-diff*(per2/100));
value15 = TL_New(sdate[barArr[2]],stime[barArr[2]],H[barArr[2]]-diff*(per3/100),sdate[barArr[1]],stime[barArr[1]],H[barArr[2]]-diff*(per3/100));
value16 = TL_New(sdate[barArr[2]],stime[barArr[2]],H[barArr[2]]-diff*(per4/100),sdate[barArr[1]],stime[barArr[1]],H[barArr[2]]-diff*(per4/100));
value17 = TL_New(sdate[barArr[2]],stime[barArr[2]],H[barArr[2]]-diff*(per5/100),sdate[barArr[1]],stime[barArr[1]],H[barArr[2]]-diff*(per5/100));
TL_SetColor(value11,blue);
TL_SetColor(value12,blue);
TL_SetColor(value13,blue);
TL_SetColor(value14,blue);
TL_SetColor(value15,blue);
TL_SetColor(value16,blue);
TL_SetColor(value17,blue);
value21 = TL_New(sdate[barArr[1]],stime[barArr[1]],H[barArr[1]],sdate,stime,H[barArr[1]]);
value22 = TL_New(sdate[barArr[1]],stime[barArr[1]],L[barArr[2]],sdate,stime,L[barArr[2]]);
diff = abs(L[barArr[2]]-H[barArr[1]]);
value23 = TL_New(sdate[barArr[1]],stime[barArr[1]],L[barArr[2]]+diff*(per1/100),sdate,stime,L[barArr[2]]+diff*(per1/100));
value24 = TL_New(sdate[barArr[1]],stime[barArr[1]],L[barArr[2]]+diff*(per2/100),sdate,stime,L[barArr[2]]+diff*(per2/100));
value25 = TL_New(sdate[barArr[1]],stime[barArr[1]],L[barArr[2]]+diff*(per3/100),sdate,stime,L[barArr[2]]+diff*(per3/100));
value26 = TL_New(sdate[barArr[1]],stime[barArr[1]],L[barArr[2]]+diff*(per4/100),sdate,stime,L[barArr[2]]+diff*(per4/100));
value27 = TL_New(sdate[barArr[1]],stime[barArr[1]],L[barArr[2]]+diff*(per5/100),sdate,stime,L[barArr[2]]+diff*(per5/100));
TL_SetColor(value21,RED);
TL_SetColor(value22,red);
TL_SetColor(value23,RED);
TL_SetColor(value24,red);
TL_SetColor(value25,RED);
TL_SetColor(value26,red);
TL_SetColor(value27,red);
}
Else{
value11 = TL_New(sdate[barArr[2]],stime[barArr[2]],H[barArr[2]],sdate[barArr[1]],stime[barArr[1]],H[barArr[2]]);
value12 = TL_New(sdate[barArr[2]],stime[barArr[2]],L[barArr[3]],sdate[barArr[1]],stime[barArr[1]],L[barArr[3]]);
diff = abs(L[barArr[3]]-H[barArr[2]]);
value13 = TL_New(sdate[barArr[2]],stime[barArr[2]],L[barArr[3]]+diff*(per1/100),sdate[barArr[1]],stime[barArr[1]],L[barArr[3]]+diff*(per1/100));
value14 = TL_New(sdate[barArr[2]],stime[barArr[2]],L[barArr[3]]+diff*(per2/100),sdate[barArr[1]],stime[barArr[1]],L[barArr[3]]+diff*(per2/100));
value15 = TL_New(sdate[barArr[2]],stime[barArr[2]],L[barArr[3]]+diff*(per3/100),sdate[barArr[1]],stime[barArr[1]],L[barArr[3]]+diff*(per3/100));
value16 = TL_New(sdate[barArr[2]],stime[barArr[2]],L[barArr[3]]+diff*(per4/100),sdate[barArr[1]],stime[barArr[1]],L[barArr[3]]+diff*(per4/100));
value17 = TL_New(sdate[barArr[2]],stime[barArr[2]],L[barArr[3]]+diff*(per5/100),sdate[barArr[1]],stime[barArr[1]],L[barArr[3]]+diff*(per5/100));
TL_SetColor(value11,RED);
TL_SetColor(value12,red);
TL_SetColor(value13,RED);
TL_SetColor(value14,red);
TL_SetColor(value15,RED);
TL_SetColor(value16,red);
TL_SetColor(value17,red);
value21 = TL_New(sdate[barArr[1]],stime[barArr[1]],L[barArr[1]],sdate,stime,L[barArr[1]]);
value22 = TL_New(sdate[barArr[1]],stime[barArr[1]],H[barArr[2]],sdate,stime,H[barArr[2]]);
diff = abs(L[barArr[1]]-H[barArr[2]]);
value23 = TL_New(sdate[barArr[1]],stime[barArr[1]],H[barArr[2]]-diff*(per1/100),sdate,stime,H[barArr[2]]-diff*(per1/100));
value24 = TL_New(sdate[barArr[1]],stime[barArr[1]],H[barArr[2]]-diff*(per2/100),sdate,stime,H[barArr[2]]-diff*(per2/100));
value25 = TL_New(sdate[barArr[1]],stime[barArr[1]],H[barArr[2]]-diff*(per3/100),sdate,stime,H[barArr[2]]-diff*(per3/100));
value26 = TL_New(sdate[barArr[1]],stime[barArr[1]],H[barArr[2]]-diff*(per4/100),sdate,stime,H[barArr[2]]-diff*(per4/100));
value27 = TL_New(sdate[barArr[1]],stime[barArr[1]],H[barArr[2]]-diff*(per5/100),sdate,stime,H[barArr[2]]-diff*(per5/100));
TL_SetColor(value21,blue);
TL_SetColor(value22,blue);
TL_SetColor(value23,blue);
TL_SetColor(value24,blue);
TL_SetColor(value25,blue);
TL_SetColor(value26,blue);
TL_SetColor(value27,blue);
}
2021-10-05
840
글번호 152636
답변완료
키움수식을 예스랭귀지로 변환 부탁드립니다.
MM=floor(date/100);
CC=sum(C);
월S=CountSince(MM!=MM(1), C>0);
월C=CC-valuewhen(1, MM!=MM(1), CC(1));
ff=월C/월S;
2021-10-05
893
글번호 152635
답변완료
문의드립니다
안녕하세요?
직전봉의 종가를 기준으로 직전봉의 고가와저가의 종가대비 진폭의틱수를 사진처럼 ()속에 표시하고싶습니다
감사드립니다
var : tx1(0),tx2(0),tx3(0);
Text_Delete(tx1);
Text_Delete(tx2);
Text_Delete(tx3);
tx1 = Text_New(sdate,stime,H,NumToStr(H,2));
tx2 = Text_New(sdate,stime,L,NumToStr(L,2));
tx3 = Text_New(sdate,stime,C,NumToStr(C,2));
Text_SetStyle(Tx1,5,5);
Text_SetStyle(Tx2,7,7);
Text_SetStyle(Tx3,7,7);
Text_SetBold(tx2,30);
Text_SetBold(tx1,10);
Text_SetBold(tx3,10);
Text_SetColor(TX1,BLUe);
Text_SetColor(TX2,REd);
Text_SetColor(TX3,BLACK);
Text_SetSize(TX1,20);
Text_SetSize(TX2,20);
Text_SetSize(TX3,20);
2021-10-05
969
글번호 152634
답변완료
문의드립니다.
안녕하세요.
무포지션에서 음봉뒤에 첫 양봉종가 < 두번 째 양봉 종가 인 양봉이 두개
연속시 1 대양봉 이라고 하고
이 때의 1 대양봉 시가 = 첫양봉 시가 라고 정의 합니다.
1 대 양봉이 형성되고 난 후에
다시 음봉 뒤에 첫 양봉종가 < 두번 째 양봉 종가 인 양봉이 두개
연속시 2 대양봉 이라고 하고
이 때의 2 대양봉 시가 = 첫양봉 시가 라고 정의 합니다.
매수
2 대양봉이 형성시 2 대양봉 시가 > 1 대양봉 시가
만족하면 매수합니다. 2 대양봉이 형성시
매수 하거나 매수가 안될 때 ( 2 대양봉 시가 < 1 대양봉 시가 이어서)
2 대양봉은 1 대양봉으로 치환됩니다.
즉 1 대양봉 시가 = 2 대양봉 시가로 치환합니다.
즉 대양봉이 만들어 질 때 이전 대양봉 시가와 비교하여
현재 대양봉 시가가 이전 대양봉 시가
보다 높으면 매수하는 것입니다.
매수청산
매수후 음봉이 발생하고 음봉 종가가 바로 이전 양봉의 시가를 하방으로 깨면
청산합니다.
매도
매도도 같은 논리로 부탁드립니다.
2021-10-04
850
글번호 152633
답변완료
지표식 부탁드립니다.
항상 도움 주셔서 감사합니다.
볼린저밴드를 변형하여 차트에 표현하고 싶습니다.
아래 키움수식을 예스스탁 수식으로 부탁드립니다.
# 지표식 1
지표명 볼밴상하단_첫돌파(일목균형표)
지표조건설정
기간 20
D1 2
표시가격 C
수식1 상단첫돌파(박스상단)
상=BBANDSUP(기간,D1);
하=BBANDSDown(기간,D1);
중=BBANDSC(기간,D1);
BN=BARSSINCE(TIME!=TIME);
BN_UP중=Valuewhen(1,CrossUP(C,중),BN);
BN_DN중=Valuewhen(1,CrossDown(C,중),BN);
BN_DN하=Valuewhen(1,CrossDown(C,하),BN);
BN_UP상=Valuewhen(1,CrossUP(C,상),BN);
조건2=BN_DN중(1)>BN_UP상(1) && CrossUP(C,상);
Valuewhen(1,조건2,표시가격);
수식2 하단첫돌파(박스하단)
상=BBANDSUP(기간,D1);
하=BBANDSDown(기간,D1);
중=BBANDSC(기간,D1);
BN=BARSSINCE(TIME!=TIME);
BN_UP중=Valuewhen(1,CrossUP(C,중),BN);
BN_DN중=Valuewhen(1,CrossDown(C,중),BN);
BN_DN하=Valuewhen(1,CrossDown(C,하),BN);
BN_UP상=Valuewhen(1,CrossUP(C,상),BN);
조건1= BN_UP중(1)>BN_DN하(1) && CrossDown(C,하);
Valuewhen(1,조건1,표시가격);
# 지표식 2
MACD 0선을 차트에 표현하고 싶습니다.
아래와 같이 키움 수식을 작성해 보았는데
예스수식으로 전환 부탁드립니다.
MD = MA(C,12) - MA(C,24) ;
valuewhen(1,crossup(MD,0) || crossdown(MD,0),C);
# 지표식 3
이평이 하락, 상승시 색깔이 변하는 그물망 차트를 만들고 싶습니다
이평선 : 5, 이평선 10, 이평선 15
이평선 3개를 가지고 그물망 차트를 만들되,
이동평균선이 하락시 파란색으로 이동평균선 상승시 빨간색으로 표현하고 싶습니다.
지표식 부탁드립니다.
감사합니다.
2021-10-05
1095
글번호 152632