커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7378
글번호 230811
답변완료
print 문의입니다.
Print("테스트.csv",",%.2f,%.2f",C[1],V[1]);
이렇게만 지표식을 작성해서 전략실행챠트에 적용을 하여 데이터를 저장하려고 합니다.
그런데 테스트.csv를 열어보면...
아래와 같이
----------------------------------------------
2016-08-29 2:52 46.82 300
2016-08-29 2:52 46.82 300
2016-08-29 2:52 46.82 300
2016-08-29 2:52 46.82 300
2016-08-29 2:52 46.82 300
2016-08-29 2:53 46.84 79
2016-08-29 2:53 46.84 79
2016-08-29 2:53 46.84 79
2016-08-29 2:53 46.84 79
2016-08-29 2:53 46.84 79
----------------------------------------------
중복되는 값이 저장되어 있습니다.
그래서,
Print("테스트.csv",",%.2f,%.2f,%.2f",DayIndex(),C[1],V[1]);
이렇게 수식을 작성하여 확인해 보았는데...
아래와 같이
----------------------------------------------
2016-08-29 2:52 312 46.82 300
2016-08-29 2:52 312 46.82 300
2016-08-29 2:52 312 46.82 300
2016-08-29 2:52 312 46.82 300
2016-08-29 2:52 312 46.82 300
2016-08-29 2:53 313 46.84 79
2016-08-29 2:53 313 46.84 79
2016-08-29 2:53 313 46.84 79
2016-08-29 2:53 313 46.84 79
2016-08-29 2:53 313 46.84 79
----------------------------------------------
인덱스 값이 동일한 중복값이 저장되어 있습니다.
예스렝귀지는 한 스코프가 봉이 완성될때 한번식 반복하는게 아니었나요?
예를 들어 dayidx = dayidx+1; 라고 하면, 봉하나가 완성될때마다 dayidx 값이 1씩 증가하는게 아닌가요?
위와 같은 현상이 발생하는 것에 대한 설명 부탁드립니다.
그리고, 틱봉이든 분봉이든 print를 사용하여, 전략실행챠트에 적용을 하여 데이터를 저장할때 매봉 완성시 해당봉의 데이터를 저장하는 수식을 작성 부탁드립니다.
2016-08-29
184
글번호 101456
답변완료
문의드립니다
안녕하세요
키움에서 사용하던 수식입니다
nh트레이더로 변환하여 주시면 고맙겠습니다
20이평선이 봉연속 하락 후, 상승전환시 신호를 나타내는 수식입니다.
Period 20
A = avg(c, Period);
A(3) > A(2) and A(2) > A(1) and A(1) < A
20이평선이 봉연속 상승 후, 하락전환시 신호를 나타내는 수식입니다.
Period 20
A = avg(c, Period);
A(3) < A(2) and A(2) < A(1) and A(1) > A
위의 내용을 시스템으로 구현하고자 하오니 부탁합니다
(매수진입 매수청산 매도진입 매도청산)
2016-08-29
120
글번호 101455
답변완료
수식 부탁드립니다.
도와 주셔서 항상 감사합니다.
주식관련 수식 부탁드립니다.
1.일봉에서 현재로 부터 처음 만나는 봉기준으로 시가 +15% 이상인 봉의 고점, 몸통고점,몸통저점, 저점에 수평선을 그리고 싶습니다. (시가+15% 이상 도달후 무너진 경우를 포함합니다.)
2.1항 일봉 의 수평선을 분챠트에도 그리고 싶습니다.
부탁드리겠습니다.
2016-08-30
130
글번호 101454
답변완료
수식부탁드립니다---------------
Input : Period(5),Period1(1),Period2(10),Period10(0.1),상승축소(1),하락축소(1);
Var : value(0),va(0),va10(0);
// value = ma(bids,period)-ma(asks,period)+Period10+5000;
va= ma(bids,period1)-ma(asks,period1)+Period10+5000;
value = wma(va,5);
va10 = wma(va,20);
if value > value[1] and va < va[1] Then
va = va+상승축소;
else if value < value[1] and va > va[1] Then
va = va-하락축소;
Else
va = va;
If value > value[1] Then
{
Plot1(value, "5매수총잔량 우위");
Plot2(0, "5매도총잔량 우위");
}
Else{
Plot1(0, "5매수총잔량 우위");
Plot2(value, "5매도총잔량 우위");
}
If va > va[1] Then
{
Plot3(va, "1매수총잔량 우위");
Plot4(0, "1매도총잔량 우위");
}
Else{
Plot3(0, "1매수총잔량 우위");
Plot4(va, "1매도총잔량 우위");
}
PlotBaseLine1(value,"기준선1");
PlotBaseLine2(va,"기준선2");
PlotBaseLine3(va10,"기준선10");
//점찍기
If value > value[1] and value[1] < value[2] and value[2] < value[3] Then
{
Plot6(value, "매수점");}
If value < value[1] and value[1] > value[2] and value[2] > value[3] Then
{
Plot7(value, "매도점");}
//소리
if value > value[1] and value[1] < value[2] and value[2] < value[3] Then
{
PlaySound("C:₩예스트레이더₩data₩Sound₩bubbles.wav"); }
//소리
if value < value[1] and value[1] > value[2] and value[2] > value[3] Then
{
PlaySound("C:₩예스트레이더₩data₩Sound₩accept.wav" ); }
//전고점전저점
//var: Left(3),Right(3);
//If SwingHigh(1, h, Left, Right, Left+Right+1) <> -1 Then
// Plot8(High[Right],"SwingHigh");
//If SwingLow(1, l, Left, Right, Left+Right+1) <> -1 Then
// Plot9(Low[Right],"SwingLo
왜두번째봉에서도 소리가나죠?
value의 뒤로10봉안에 전고점끼리연결하는선만들기
value의 뒤로10봉안에 전저점끼리연결하는선만들기
부탁드립니다
2016-08-29
108
글번호 101453
그리금강산 님에 의해서 삭제되었습니다.
2016-08-29
5
글번호 101452
답변완료
문의드립니다
안내해준 보조지표 S-ROC를 구현한 내용 입니다
input : Period1(10),Period2(20),signal(8);
var : SROC(0),SROCsig(0);
SROC = ema(C,Period1)/ema(c,Period1)[Period2]*100;
SROCsig = ema(SROC,signal);
plot1(SROC);
plot2(SROCsig);
PlotBaseLine1(100);
이것을 시스템으로 구현하고자 하오니 부탁합니다
(매수진입 매수청산 매도진입 매도청산)
2016-08-29
117
글번호 101451
답변완료
수식문위드립니다,매번감사드립니다
1,노란색선 plot1 이 바꿜때 마다 시스템 매수 매도가 나오게할수 있으면 합니다
2,봉색갈도 노란색 선에 따라서 상승방향이면 빨강 하락이면 파랑으로 부탁드립니다
Input:Rsi변동폭(0.5);
Var:j(0),상승(100),하락(-100),양방향(2),추세(0),
파동선(0),Rsi파동선(0),방향(0),추세선(0);
Array:고[20](0),저[20](0),고Bar[20](0),저Bar[20](0),
Rsi고[20](0),Rsi저[20](0),Rsi고Bar[20](0),Rsi저Bar[20](0);
Input : RSIP(14), Period(50),dv(2.1);
var : RSIV(0),Mid(0),BBup(0),BBdn(0),RSIBandB(0);
RSIV = RSI(RSIP);
Mid = ma(RSIV,Period);
BBup = Mid+STD(RSIV,Period)*dv;
BBdn = Mid-STD(RSIV,Period)*dv;
RSIBandB = (RSIv - BBdn)/(BBup - BBdn);
#==========================================#
# 전고점,전저점 index 증가
#==========================================#
For j = 1 To 19
{
Rsi고Bar[j] = Rsi고Bar[j] + 1;
Rsi저Bar[j] = Rsi저Bar[j] + 1;
저Bar[j] = 저Bar[j] + 1;
고Bar[j] = 고Bar[j] + 1;
}
#==========================================#
# 최근 고,저 갱신
#==========================================#
If Rsi고[0] <= RSIBandB || Rsi고[0] == 0 || IsNaN(Rsi고[0]) == True Then
{
Rsi고[0] = RSIBandB;
Rsi고Bar[0] = 0;
}
Else
Rsi고Bar[0] = Rsi고Bar[0] + 1;
If Rsi저[0] >= RSIBandB || Rsi저[0] == 0 || IsNaN(Rsi저[0]) == True Then
{
Rsi저[0] = RSIBandB;
Rsi저Bar[0] = 0;
}
Else
Rsi저Bar[0] = Rsi저Bar[0] + 1;
If 고[0] <= H || 고[0] == 0 || IsNaN(고[0]) == True Then
{
고[0] = H;
고Bar[0] = 0;
}
Else
고Bar[0] = 고Bar[0] + 1;
If 저[0] >= L || 저[0] == 0 || IsNaN(저[0]) == True Then
{
저[0] = L;
저Bar[0] = 0;
}
Else
저Bar[0] = 저Bar[0] + 1;
#==========================================#
# 추세방향 결정
#==========================================#
If Rsi저[0][1] + Rsi변동폭 > RSIBandB[1] &&
Rsi저[0][1] + Rsi변동폭 <= RSIBandB Then 방향 = 상승;
If Rsi고[0][1] - Rsi변동폭 < RSIBandB[1] &&
Rsi고[0][1] - Rsi변동폭 >= RSIBandB Then 방향 = 하락;
#==========================================#
# 추세변화에 따른 변곡점 처리
#==========================================#
If 방향[1] == 하락 && 방향 == 상승 Then
{
For j = 18 DownTo 1
{
Rsi저[j+1] = Rsi저[j];
Rsi저Bar[j+1] = Rsi저Bar[j];
저[j+1] = 저[j];
저Bar[j+1] = 저Bar[j];
}
Rsi저[1] = Rsi저[0];
Rsi저Bar[1] = Rsi저Bar[0];
Rsi파동선 = Rsi저[0];
Rsi저[0] = RSIBandB;
Rsi저Bar[0] = 0;
Rsi고[0] = RSIBandB;
Rsi고Bar[0] = 0;
저[1] = 저[0];
저Bar[1] = 저Bar[0];
파동선 = 저[0];
저[0] = L;
저Bar[0] = 0;
고[0] = H;
고Bar[0] = 0;
}
Else If 방향[1] == 상승 && 방향 == 하락 Then
{
For j = 18 DownTo 1
{
Rsi고[j+1] = Rsi고[j];
Rsi고Bar[j+1] = Rsi고Bar[j];
고[j+1] = 고[j];
고Bar[j+1] = 고Bar[j];
}
Rsi고[1] = Rsi고[0];
Rsi고Bar[1] = Rsi고Bar[0];
Rsi파동선 = Rsi고[0];
Rsi고[0] = RSIBandB;
Rsi고Bar[0] = 0;
Rsi저[0] = RSIBandB;
Rsi저Bar[0] = 0;
고[1] = 고[0];
고Bar[1] = 고Bar[0];
파동선 = 고[0];
고[0] = H;
고Bar[0] = 0;
저[0] = L;
저Bar[0] = 0;
}
Else If 방향[1] == 하락 && 방향 == 하락 Then
{
If Rsi고[1] < Rsi고[0] &&
Rsi고[0][1] - Rsi변동폭 <= RSIBandB[1] &&
Rsi고[0][1] - Rsi변동폭 > RSIBandB Then
{
Rsi고[1] = Rsi고[0];
Rsi고Bar[1] = Rsi고Bar[0];
Rsi파동선 = Rsi고[0];
Rsi고[0] = RSIBandB;
Rsi고Bar[0] = 0;
}
If 고[1] < 고[0] &&
고[0] > H Then
{
고[1] = 고[0];
고Bar[1] = 고Bar[0];
파동선 = 고[0];
고[0] = H;
고Bar[0] = 0;
}
}
Else If 방향[1] == 상승 && 방향 == 상승 Then
{
If Rsi저[1] > Rsi저[0] &&
Rsi저[0][1] + Rsi변동폭 >= RSIBandB[1] &&
Rsi저[0][1] + Rsi변동폭 < RSIBandB Then
{
Rsi저[1] = Rsi저[0];
Rsi저Bar[1] = Rsi저Bar[0];
Rsi파동선 = Rsi저[0];
Rsi저[0] = RSIBandB;
Rsi저Bar[0] = 0;
}
If 저[1] > 저[0] &&
저[0] < L Then
{
저[1] = 저[0];
저Bar[1] = 저Bar[0];
파동선 = 저[0];
저[0] = L;
저Bar[0] = 0;
}
}
#==========================================#
# 지표식 출력
#==========================================#
If Rsi파동선[1] != Rsi파동선 Then {
Plot1(파동선); //적당껏 수평이동
# PlaySound("C:₩예스트레이더₩data₩Sound₩sound6.wav");
}
Else If LastBarOnChart == 1 Then {
plot1(Iff(방향 == 상승,고[0],저[0]));
#PlaySound("C:₩예스트레이더₩data₩Sound₩sound6.wav");
}
/*
#상승 다이버전스 : 주가의 저점 하락 + 지표의 저점 상승
If 저[2] > 저[1] && Rsi저[2] < Rsi저[1] Then
{
추세선 = (저[1]-저[2])/(저Bar[2]-저Bar[1])*저Bar[2] + 저[2];
Plot2(추세선,"상승다이버전스");
}
#하락 다이버전스 : 주가의 고점 상승 + 지표의 고점 하락
if 고[2] < 고[1] && Rsi고[2] > Rsi고[1] Then
{
추세선 = (고[1]-고[2])/(고Bar[2]-고Bar[1])*고Bar[2] + 고[2];
Plot3(추세선,"하락다이버전스");
}
*/
var1 = 고[1]-저[1];
plot21(고[1]+var1*1.000);
plot22(고[1]+var1*0.618);
plot23(고[1]+var1*0.236);
plot24(고[1]);
plot25(저[1]+var1*0.724);
plot26(저[1]+var1*0.618);
plot27(저[1]+var1*0.500);
plot28(저[1]+var1*0.382);
plot29(저[1]+var1*0.236);
plot30(저[1]);
plot31(저[1]-var1*0.236);
plot32(저[1]-var1*0.618);
plot33(저[1]-var1*1.000);
2016-08-30
170
글번호 101450
답변완료
시스템식 부탁드립니다
매수조건:
5일선 10일선에 위면 매수(2계약 진입)
매수청산:
20틱청산
5일선이 20일선과 같으면 청산
청산후 지연시간600초후 재진입
하루 20틱 수익이면 매매중단
매도조건은 반대입니다.
부탁드려요~~
2016-08-29
118
글번호 101449
ivory 님에 의해서 삭제되었습니다.
2016-08-30
19
글번호 101448