커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
5507
글번호 230811
답변완료
문의 드립니다
수고 많으십니다.
아래 수식에서 3가지 변경 원합니다. 청산틱수,첫진입틱수,추가진입틱수 위치를 지정할 수 있도록 해주세요.
1.현재 진입되어 있는 물량의 청산틱수는 하락에서 상승으로, 상승에서 하락으로 추세가 바뀌는 시점에 전량 청산되는데, 추세가 바뀐 후 수 틱 혹은 몇 틱이 더 추가되는 지점으로 지정할 수 있도록 변경 부탁합니다.
2.현재 첫진입틱수는 추세가 바뀐 후 전고점, 전저점 대비 연속되는 추세에서 수 틱 혹은 몇 틱이 추가되는 지점에 첫진입 하도록 지정하는데, 진입 물량 청산 지점(진입 물량 청산 후)에 수 틱 혹은 몇 틱이 더 추가되는 지점으로 지정할 수 있도록 변경 부탁합니다.
3.추가진입틱수는 현재처럼 첫진입 후 첫진입 지점에 수 틱 혹은 몇 틱이 추가될 때마다 추가 진입할 수 있도록 지정할 수 있게 변경부탁합니다.
그리고 현재 수식에서 손절이나, 추가진입 수량을 단계마다 다르게 지정 한 부분은 그대로 사용할 수 있게 변경없이 유지시켜 주세요.
감사합니다, 수고하세요.
Input:length(12),손절틱수(990);
Var:j(0),lastHiVal(0),lastLoVal(0),sBar(0),eBar(0),TL1(0),TL2(0),TL3(0),Text1(0),처리구분(""),TL_Val1(0),TL_Val2(0),color(0);
var:T(0),B(0),Bx(0),S(0),Sx(0);
Array:고점[10,2](0),저점[10,2](0);
처리구분 = "";
If Highest(H,length) == H and lastHiVal <> H and Lowest(L,length) == L and lastLoVal <> L Then
{
If 저점[1,1] > L Then 처리구분 = "저점처리";
If 고점[1,1] < H Then 처리구분 = "고점처리";
}
Else If Highest(H,length) == H and lastHiVal <> H Then 처리구분 = "고점처리";
Else If Lowest(L,length) == L and lastLoVal <> L Then 처리구분 = "저점처리";
If 처리구분 == "고점처리" Then
{
T = 1;
lastHiVal = H;
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 Then
{
고점[1,1] = H;
고점[1,2] = Index;
sBar = Index - 저점[1,2];
eBar = 0;
If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then
{
TL_Delete(TL1);
Text_Delete(Text1);
If 고점[3,1][1] < 고점[2,1][1] and 고점[2,1][1] > 고점[1,1][1] and 저점[2,1][1] < 저점[1,1][1] Then
TL_Delete(TL2);
}
if 고점[1,1] > 고점[2,1] or 고점[2,1] == 0 Then{
color = RED;
# buy("b");
}
TL1 = TL_New(sDate[sBar],sTime[sBar],저점[1,1],sDate[eBar],sTime[eBar],고점[1,1]);
TL_SetColor(TL1,color);
Text1 = Text_New(sDate[eBar],sTime[eBar],고점[1,1],NumToStr(abs(고점[1,1]-저점[1,1])/PriceScale,0)+NewLine+NumToStr(고점[1,1],2));
Text_SetStyle(Text1, 2, 1);
If 고점[3,1] < 고점[2,1] and 고점[2,1] > 고점[1,1] and 저점[2,1] < 저점[1,1] Then
{
sBar = Index - 저점[2,2];
eBar = Index - 저점[1,2];
}
}
}
If 처리구분 == "저점처리" Then
{
T = -1;
lastLoVal = L;
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 Then
{
저점[1,1] = L;
저점[1,2] = Index;
sBar = Index - 고점[1,2];
eBar = 0;
If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then
{
TL_Delete(TL1);
Text_Delete(Text1);
If 저점[2,1][1] < 저점[1,1][1] and 저점[2,1][1] < 저점[3,1][1] and 고점[2,1][1] > 고점[1,1][1] Then
TL_Delete(TL3);
}
if 저점[1,1] < 저점[2,1] or 저점[2,1] == 0 Then{
color = blue;
# sell("s");
}
TL1 = TL_New(sDate[sBar],sTime[sBar],고점[1,1],sDate[eBar],sTime[eBar],저점[1,1]);
TL_SetColor(TL1,color);
Text1 = Text_New(sDate[eBar],sTime[eBar],저점[1,1],NumToStr(abs(고점[1,1]-저점[1,1])/PriceScale,0)+NewLine+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
{
sBar = Index - 고점[2,2];
eBar = Index - 고점[1,2];
}
}
}
TL_SetSize(TL1,3);
input : N(10),첫진입틱수(241),추가진입틱수(200);
#상승구간의 마지막저점 저장
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*첫진입틱수 Then
Buy("b",AtLimit,var1-PriceScale*첫진입틱수,1);
}
if MarketPosition == 1 Then
{
value1 = Floor(MaxEntries/N)+1;
Buy("bb",AtLimit,(var1[BarsSinceEntry]-PriceScale*첫진입틱수)-(PriceScale*추가진입틱수)*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*첫진입틱수 Then
Sell("s",AtLimit,Var2+PriceScale*첫진입틱수,1);
}
if MarketPosition == -1 Then
{
value1 = Floor(MaxEntries/N)+1;
Sell("ss",AtLimit,(var2[BarsSinceEntry]+PriceScale*첫진입틱수)+(PriceScale*추가진입틱수)*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);
}
2023-08-17
1517
글번호 171489
답변완료
부탁드립니다
rsi 기간이 14일때 2봉전에 30초과이고 1봉전에 30이하일때 1봉전 종가에 매수하고
rsi 기간이 14일때 2봉전에 30초과이고 1봉전에 30이하이며 1차매수값보다 1퍼센트 이상 하락했을때 1봉전 종가에 매수하고
rsi 기간이 14일때 2봉전 70미만이고 1봉전 70 이상일때 1봉전 종가에 매도하는 수식 부탁드립니다
그리고 여기서 받은 수식을 예스스팟에서 적용시킬수 있을까요?
2023-08-16
1070
글번호 171488
답변완료
문의 드립니다
장 시작후 N봉 까지의 고가와 저가를 표시해주는 지표를 만들고 싶습니다
2023-08-15
1134
글번호 171487
답변완료
부탁드립니다
1. 당일 풋의 최고가 또는 최저가가 콜의 최저가 또는 최고가와 같은 가격으로 만난 봉이 발생하였을 경우에 그 해당 봉에 노란색으로 구현해 주세요
고맙습니다.
2023-08-15
869
글번호 171486
답변완료
문의드립니다~
분주기식을 사용하고 있는데요.
틱차트에 오차없이 5분봉의 1봉전기준 5일이평선을
표시할려고 합니다.
참조차트에 5분봉을 불러오고나서
(c[1]+c[2]+c[3]+c[4]+c[5])/5
또는 (c+c[1]+c[2]+c[3]+c[4])/5
이렇게 표현했을때
5분이 완성되기 전까지 5분봉의 1봉전기준의 5일선이 가로로 일정하게 유지가 되어야 되는데 이게 안되네요
data2(c[1]) 이렇게 표현해도 참조차트의 1봉전종가가 지표상에 제대로 표시가 안됩니다.
참조차트구조상 이런식으로 구현이 안되는거 같은데
따로 방법이 있을까요?
2023-08-15
915
글번호 171485
답변완료
문의 드립니다
1.
Inputs: Length1(10),Length2(3),Length3(3),OverSold(30),OverBought(70);
Variables: KLine(0), DLine(0);
KLine = StochasticsK(Length1,Length2);
DLine = StochasticsD(Length1,Length2,Length3);
If Crossup(KLine, DLine) AND KLine < OverSold AND DLine < OverSold Then
Buy ("Stch_LE");
If CrossDown(KLine, DLine) AND KLine > OverBought AND DLine > OverBought Then
ExitLong ("Stch_SE");
-------------
위 수식어에 추가하고자 합니다.
- 이동평균선 300선 아래에서 매수신호는 매도로 전환후 청산
- 익절100틱 손절100틱
2.
Inputs: Length1(10),Length2(3),Length3(3),OverSold(30),OverBought(70);
Variables: KLine(0), DLine(0);
KLine = StochasticsK(Length1,Length2);
DLine = StochasticsD(Length1,Length2,Length3);
If Crossup(KLine, DLine) AND KLine < OverSold AND DLine < OverSold Then
ExitShort ("Stch_LE");
If CrossDown(KLine, DLine) AND KLine > OverBought AND DLine > OverBought Then
Sell ("Stch_SE");
------------------------------
위 수식어에 추가하고자 합니다.
- 이동평균선 300선 위에서 매도신호는 매수로 전환후 청산
- 익절100틱 손절100틱
2023-08-15
1119
글번호 171484
답변완료
변형된 이동평균선을 표시하고 싶습니다.
Input : 이동평균1(5), 이동평균2(20),이동평균3(60),이동평균4(120),이동평균5(240);
Plot1((ma(C,이동평균1)*이동평균1-C+O)/이동평균1, "이동평균1");
Plot2(ma(C,이동평균1), "이동평균2");
Plot3(ma(C,이동평균3), "이동평균3");
Plot4(ma(C,이동평균4), "이동평균4");
Plot5(ma(C,이동평균5), "이동평균5");
이 식에서 현재봉에서만 Plot1을 보여주고, 이전까지는 Plot2를 보여주고 싶을 때 수식을 어떻게 짜야 하나요?
2023-08-14
1197
글번호 171483
답변완료
문의드립니다
안녕하세요
개인적으로 사용하고 싶은 이동평균선이 있는데
스무디드무빙에버리지(smoothed moving average)라고
제공되는지 확인해보니
smma함수가 제공되지 않는 것 같은데
제공해 주실 수 있나요
수고하세요
2023-08-14
1496
글번호 171482
카르마다 님에 의해서 삭제되었습니다.
2023-08-14
7
글번호 171480