커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4527
글번호 230811
답변완료
수식수정부탁드립니다=======
input:틱배수(10), // 기존 개념 point 대신에 1호가 단위에 몇 배수를 곱한 값을 사용키로 했다.
Figure(3);
Var:j(0),k(0),n(0),pnt(0),
Col(0), // 칼럼(열)수를 증가하면서 관리한다.
LowLimit(0), // csv 파일 출력시 불필요한 라인을 줄이기 위해 최저값을 계산
출력개수(50); // 아래 xo[200,100]으로 선언했기 때문에 100칼럼까지 출력이 가능하지만
// 최근 상황만 파악하기 위해 50으로 줄였다.
// 더 많은 칼럼을 출력하고자 한다면 xo[200,100]에서 100을 더 큰 수로 바꿔준다.
Array:고[100](0),저[100](0),구분[100](""), // 100개의 칼럼을 선언
price[200](0), // 200개의 행
xo[200,100](""); // 엑셀에서 cells(row,column)과 같은 개념
#=====================================================#
# P&F 계산
#=====================================================#
pnt = TickSize(C) * 틱배수; // P&F 는 종가를 기반으로 계산한다. 변형해서 다르게 계산해도 무방
// TickSize()는 사용자함수임. 아래 포스트에 있음
// http://yahoosir.blog.me/220651602149
if 구분[0] == "" then
{
if 고[0] == 0 then 고[0] = C;
if 저[0] == 0 then 저[0] = C;
Col = 1;
if 저[0] + Figure * pnt <= C then
{
구분[0] = "X";
고[0] = 저[0] + int( ( C - 저[0] ) / pnt ) * pnt;
}
else if 고[0] - Figure * pnt >= C then
{
구분[0] = "O";
저[0] = 고[0] - int( ( 고[0] - C ) / pnt ) * pnt;
}
}
else if 구분[0] == "X" then
{
if 고[0] - Figure * pnt >= C then
{
Col = Col + 1;
for j = 98 downto 0
{
고[j+1] = 고[j];
저[j+1] = 저[j];
구분[j+1] = 구분[j];
}
구분[0] = "O";
고[0] = 고[1] - pnt;
저[0] = 고[1] - int( ( 고[1] - C ) / pnt ) * pnt;
}
else if 고[0] + pnt <= C then
{
고[0] = 고[0] + int( ( C - 고[0] ) / pnt ) * pnt;
}
}
else if 구분[0] == "O" then
{
if 저[0] + Figure * pnt <= C then
{
Col = Col + 1;
for j = 98 downto 0
{
고[j+1] = 고[j];
저[j+1] = 저[j];
구분[j+1] = 구분[j];
}
구분[0] = "X";
고[0] = 저[1] + int( ( C - 저[1] ) / pnt ) * pnt;
저[0] = 저[1] + pnt;
}
else if 저[0] - pnt >= C then
{
저[0] = 저[0] - int( ( 저[0] - C ) / pnt ) * pnt;
}
}
Plot1( iff( 구분[0] == "X", 고[0], 저[0] ) ); // _Plot1 > _Plot2 일때 와 _Plot1 < _Plot2 일때 각각 채워넣기를 한다.
plot2( iff( 구분[0] == "X", 저[0], 고[0] ) );
#=====================================================#
# 엑셀용 자료 가공
#=====================================================#
if lastbaronchart() then
{
price[1] = 고[0];
LowLimit = 저[0];
for k = 1 to 출력개수 // 50개 열까지만 출력하도록 하였으므로 이 부분은 취향에 맞춰 수정한다.
{
price[1] = max( price[1], 고[k] );
if 저[k] > 0 then
LowLimit = min( LowLimit, 저[k] );
}
n = 199;
for k = 2 to 199
{
price[k] = price[k-1] - ( TickSize( price[k-1] ) * 틱배수);
if price[k] < LowLimit then
{
n = k - 1;
k = 200;
}
}
col = min( col, 출력개수 );
for j = Col - 1 DownTo 0
{
for k = 1 to n
{
if 고[j] >= price[k] and price[k] >= 저[j] then
{
xo[k,Col-j] = 구분[j];
}
}
}
for k = 1 to n
{
Print(SymbolName+"_PnF.csv",",%.2f,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s"
,price[k],xo[k,1],xo[k,2],xo[k,3],xo[k,4],xo[k,5],xo[k,6],xo[k,7],xo[k,8],xo[k,9],xo[k,10]
,xo[k,11],xo[k,12],xo[k,13],xo[k,14],xo[k,15],xo[k,16],xo[k,17],xo[k,18],xo[k,19],xo[k,20]
,xo[k,21],xo[k,22],xo[k,23],xo[k,24],xo[k,25],xo[k,26],xo[k,27],xo[k,28],xo[k,29],xo[k,30]
,xo[k,31],xo[k,32],xo[k,33],xo[k,34],xo[k,35],xo[k,36],xo[k,37],xo[k,38],xo[k,39],xo[k,40]
,xo[k,41],xo[k,42],xo[k,43],xo[k,44],xo[k,45],xo[k,46],xo[k,47],xo[k,48],xo[k,49],xo[k,50]
);
}
}
선물지수100틱차트에 적용하려는데 잘안되요 애러납니다
수정 부탁드립니다
2016-09-29
140
글번호 102284
답변완료
부탁 드립니다.
다음을 함수로 변환하고
실행 하고자 합니다.
실행에서 선의 색상을 넣고 싶습니다.
미리 감사 드립니다.
Input:chngRate(0.1);
Var:j(0),lastHiVal(0),lastLoVal(0),turnPntBit(""),TL1(0),TL2(0),TL3(0);
Array:valArr[10](0),barArr[10](0),turnPntArr[10]("");
For j = 0 To 9
{
barArr[j] = barArr[j] + 1;
}
Condition1 = Min(valArr[1],valArr[2]) * (1 + (chngRate/100)) < H and lastHiVal < H;
Condition2 = Max(valArr[1],valArr[2]) * (1 - (chngRate/100)) > L and (lastLoVal > L || lastLoVal == 0);
If Condition1 Then { lastHiVal = H; lastLoVal = 0; }
If Condition2 Then { lastLoVal = L; lastHiVal = 0; }
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 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]);
}}
2016-09-29
106
글번호 102283
답변완료
파라볼릭 문의드립니다.
파라볼릭지표에서 SAR값의 변수를 수정하고 싶어서 그런데 예스랭귀지에 저장된 SAR 코드를 알려주실 수 있나요?
감사합니다.
2016-09-29
158
글번호 102282
답변완료
수식좀 부탁드립니다.
안녕하세요. 몇가지 궁금하여 질문드립니다.
1. 가중평균과 지수평균, 삼각평균을 풀어서 쓰고 싶습니다. 함수명과 계산법을 알고 싶습니다. 예) 10일 가중평균 계산법
2. 일목균형표 수식을 보니 후행스팬과 선행스팬처럼 앞뒤로 이동시키는 수식이 보이지 않았습니다. 어떻게 하면 이같은 효과를 낼수 있을까요.
2016-09-28
121
글번호 102281
답변완료
수식문의
안녕하세요
하기 수식과 관련하여 문의 드립니다.
하기 수식에서 exitlong or short을 당하면, 바로 반대매매로 진입 하는
수식을 추가 해 주셨으면 합니다.
궁금한 점이 있는데....DP/DM 스윗치가 DP/DM이 20 이상일 때 발생하는 것인지요?
아니면 ADX 라인 20 이상일때 발생하는 것인지요?
저는 ADX라인 20이상일 때만 DP/DM 스윗치가 발생하기를 바랍니다.
20이하일 때는 skip 부타탁드립니다.
확인 부탁드립니다.
input : P(14);
var : ADXV(0),DP(0),DM(0);
ADXV = ADX(P);
DP = Diplus(P);
DM = DiMinus(P);
if crossup(ADXV,18.5) Then{
if DP > DM Then
buy();
if DP < DM Then
sell();
}
if MarketPosition == 1 Then{
if CrossDown(DP,DM) Then
ExitShort();
}
if MarketPosition == -1 Then{
if CrossUp(DP,DM) Then
ExitShort();
}
확인 부탁드립니다.
감사합니다.
2016-09-28
111
글번호 102280
답변완료
시스템좀 부탁드립니다.
항상 고생하십니다.
로직에대해서 공부하는데 첫 로직부터 막혀서 문의드립니다.
1. 첫봉이 양봉인지 음봉인지 구분합니다.
1) 양봉일 때, 고가가 시가대비 1%상승후 다시 시가 crossdown할경우에
- 그 다음봉과 다다음봉의 저가가 모두 시가보다 클경우, 매수
- 그 다음봉과 다다음봉의 고가가 모두 시가보다 작을경우, 매도
(이때 첫 crossdown만 인식하고, 시간상으로 110000이 넘으면 매매하지 않습니다.)
2) 음봉일때는 제가 연습하도록 하겠습니다
2. 매수후 종가가 시가에 다시 닿을경우 포지션을 나오고 반대 1포지션을 취합니다.
(이때 역시 시간상 110000이 넘으면 매매하지 않습니다.)
3. 반대포지션까지 취했는데 손실 1%가 나면 손절합니다.
4. 최대수익대비 0.5%하락시 포지션아웃 합니다.
5. 하루가 끝날때까지 포지션을 가지고있으면 마지막에 포지션아웃 합니다.
2016-09-28
105
글번호 102279
답변완료
확장 차트에서 야간장 차트는 어떻게 생성하나요?
예스랭귀지와 스팟의 확장차트를 이용하여 야간장을 이용하려고 하는데
스팟 확장차트에서 야간장 설정을 어떻게 하는지 모르겠습니다..
ReqChartItem 함수에서 어떻게 해야하나요 ?
2016-09-28
104
글번호 102278
답변완료
문의 드립니다
1. 해외선물에서
갭보정 차트를 볼려면 분봉으로 봐야하는데 일봉 그자체로 갭보정 할수는 없는지요?
2. 국선물도 같은내용 으로 질문드립니다.
있으면 부탁 드립니다. 감사합니다
2016-09-28
118
글번호 102276
답변완료
특정일 이전에 특정 이평을 돌파한 종목 검색
며칠전에 특정이평을 돌파한 수식을 만들고 있는데요.
예를 들어 정배열 종목 중 8일 전에 25 이평을 돌파한 종목을 검색한다고 하면
crossup(c[8],ma(c[8],25))
and ma(c[8],25) > ma(c[8],100)
이렇게 하면 되는 거 아닌지요?
맞게 한 거 같은데, 눈으로는 보면 분명 8일 이전에 해당이평을 돌파했고 정배열이 맞는데, 수식을 만들어 조회하면 나와야 할 종목이 안나옵니다.
이상한 점은 정배열 조건을 빼면 제대로 나옵니다. 정배열 조건이 틀렸는가요?
또 하나 더 이상한 점은 이격도 수식을 쓰면 검색이 하나도 안됩니다. 조건에 안넣고 다음과 같이 정의만 했는데도요.
d1 = disparity(25);
이것도 같이 답변 부탁드립니다.
뭐가 잘못되었는지요?
미리 감사드립니다.
2016-09-28
126
글번호 102275