커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7703
글번호 230811
러블리 님에 의해서 삭제되었습니다.
2011-09-28
198
글번호 43118
답변완료
문의드립니다
아래수식은 분봉에서 주봉 및 일봉을 불러온 내용입니다
수식에 문제가 있는지 검증이 안됩니다.
수정 부탁합니다.
input : p1(2),LENGTH1(20),LENGTH2(60), ## 주봉
LENGTH11(20),LENGTH12(60),LENGTH13(120), ## 일봉
Period1(20),Period2(60), ## 주봉
Period11(20),Period12(60),Period13(120); ## 일봉
var : TCHAN1(0),TCHAN2(0),cnt(0), ## 주봉
TCHAN11(0),TCHAN12(0),TCHAN13(0); ## 일봉
Var : Sum1(0), Counter1(0), CSum1(0),Wma1(0),SumSqrt1(0),Std1(0); ## 주봉
Var : Sum2(0), Counter2(0), CSum2(0),Wma2(0),SumSqrt2(0),Std2(0);
Array : HH[70](0),CC[70](0),LL[70](0);
if DayOfWeek(sdate) <= DayOfWeek(sdate[1]) and sdate > sdate[1] Then{
HH[0] = H;
LL[0] = L;
for cnt = 1 to 61{
HH[cnt] = HH[cnt-1][1];
CC[cnt] = CC[cnt-1][1];
LL[cnt] = LL[cnt-1][1];
}
}
if H > HH[0] Then HH[0] = H;
if L < LL[0] Then LL[0] = L;
CC[0] = C;
TCHAN1 = HH[1]; ## 주봉 pc[1]
for cnt = 1 to LENGTH1 {
if HH[cnt] > TCHAN1 Then
TCHAN1 = HH[cnt];
}
TCHAN2 = HH[1]; ## 주봉 pc[1]
for cnt = 1 to LENGTH2 {
if HH[cnt] > TCHAN2 Then
TCHAN2 = HH[cnt];
}
Sum1 = 0;
CSum1 = 0;
For counter1 = 0 To Period1-1{
Sum1= Sum1 + ((HH[counter1]+LL[counter1]+CC[counter1])/3) * (Period1 - counter1);
CSum1 = CSum1 + (Period1 - counter1);
}
WMA1 = Sum1/ CSum1;
SumSqrt1 = 0;
For Counter1 = 0 To Period1-1 {
SumSqrt1 = SumSqrt1 + (((HH[counter1]+LL[counter1]+CC[counter1])/3) - WMA1) * (((HH[counter1]+LL[counter1]+CC[counter1])/3) - WMA1);
}
Std1 = SquareRoot(SumSqrt1 / Period1);
Sum2 = 0; CSum2 = 0;
For counter2 = 0 To Period2-1{
Sum2 = Sum2 + ((HH[counter2]+LL[counter2]+CC[counter2])/3) * (Period2 - counter2);
CSum2 = CSum2 + (Period2 - counter2);
}
WMA2 = Sum2/CSum2;
SumSqrt2 = 0;
For Counter2 = 0 To Period2-1 {
SumSqrt2 = SumSqrt2 + (((HH[counter2]+LL[counter2]+CC[counter2])/3) - WMA2) * (((HH[counter2]+LL[counter2]+CC[counter2])/3) - WMA2);
}
Std2 = SquareRoot(SumSqrt2 / Period2);
var1 = wma1+(p1*STD1); ## 주봉 b.b
var2 = wma2+(p1*STD2); ## 주봉 b.b
var3 = (HH[0]+LL[0])/2; ## 주봉 중간값
## 일봉
Var : Sum11(0), Counter11(0), CSum11(0),Wma11(0),SumSqrt11(0),Std11(0);
Var : Sum12(0), Counter12(0), CSum12(0),Wma12(0),SumSqrt12(0),Std12(0);
Var : Sum13(0), Counter13(0), CSum13(0),Wma13(0),SumSqrt13(0),Std13(0);
TCHAN11 = dayhigh(1);
for cnt = 1 to LENGTH11 {
if dayhigh(cnt) > TCHAN11 Then
TCHAN11 = dayhigh(cnt);
}
TCHAN12 = dayhigh(1);
for cnt = 1 to LENGTH12 {
if dayhigh(cnt) > TCHAN12 Then
TCHAN12 = dayhigh(cnt);
}
TCHAN13 = dayhigh(1);
for cnt = 1 to LENGTH13 {
if dayhigh(cnt) > TCHAN13 Then
TCHAN13 = dayhigh(cnt);
}
Sum11 = 0;
CSum11 = 0;
For counter11 = 0 To Period11-1{
Sum11= Sum11 + ((dayhigh(counter11)+daylow(counter11)+dayclose(counter11))/3) * (Period11 - counter11);
CSum11 = CSum11 + (Period11 - counter11);
}
WMA11 = Sum11/ CSum11;
SumSqrt1 = 0;
For Counter11 = 0 To Period11-1 {
SumSqrt11 = SumSqrt11 + (((dayhigh(counter11)+daylow(counter11)+dayclose(counter11))/3) - WMA11) * (((dayhigh(counter11)+daylow(counter11)+dayclose(counter11))/3) - WMA11);
}
Std11 = SquareRoot(SumSqrt11 / Period11);
Sum12 = 0; CSum12 = 0;
For counter12 = 0 To Period12-1{
Sum12 = Sum12 + ((dayhigh[counter12]+daylow[counter12]+dayclose[counter12])/3) * (Period12 - counter12);
CSum12 = CSum12 + (Period12 - counter12);
}
WMA12 = Sum12/CSum12;
SumSqrt12 = 0;
For Counter12 = 0 To Period12-1 {
SumSqrt12 = SumSqrt12 + (((dayhigh[counter12]+daylow[counter12]+dayclose[counter12])/3) - WMA12) * (((dayhigh[counter12]+daylow[counter12]+dayclose[counter12])/3) - WMA12);
}
Std12 = SquareRoot(SumSqrt12 / Period12);
Sum13 = 0; CSum13 = 0;
For counter13 = 0 To Period13-1 {
Sum13 = Sum13 + ((dayhigh[counter13]+daylow[counter13]+dayclose[counter13])/3) * (Period13 - counter13);
CSum13 = CSum13 + (Period13 - counter13);
}
WMA13 = Sum13/ CSum13;
SumSqrt13 = 0;
For Counter13 = 0 To Period13-1 {
SumSqrt13 = SumSqrt13 + (((dayhigh[counter13]+daylow[counter13]+dayclose[counter13])/3) - WMA13) * (((dayhigh[counter13]+daylow[counter13]+dayclose[counter13])/3) - WMA13);
}
Std13 = SquareRoot(SumSqrt13 / Period13);
var11 = Wma1+(P1*Std1); ## 일봉 b,b 20
var12 = Wma2+(P1*Std2); ## 일봉 b,b 60
var13 = Wma3+(P1*Std3); ## 일봉 b,b 120
var14 = (DayHigh+DayLow)/2; ## 일봉중간값
2011-09-28
655
글번호 43116
답변완료
질문올립니다.
1. a라는 매도로직과 b라는 매도로직이 있습니다.
청산식은 한개 존재합니다.
그러나 a,b 둘다 매도청산이 이루어진다음에는 진입이 되면 안되게 하고 싶습니
다. 즉 a 라는 로직에 의해서 매도가 이루어진후 매도청산이 나왔습니다.
그뒤에 b 라는 로직의 조건이 만족이 되어도 오늘 당일 매도신호가 발생이 되서
진입이 된후 매도청산이 나왔기때문에 b 라는 매도로직은 진입이 안되게 하고
싶습니다. 거꾸로 a라는 로직도 마찬가지구요. 즉 b로직이 먼저 만족이 되어
매도가 이루어진후 매도청산이 나왔을경우에는 a 조건이 만족이 되어도 진입이
안되게 하고 싶은데 어떻게 해야할까요?
2. 그리고 매도진입식에 의해서 매도청산이 이루어진뒤 즉 매도청산이 나온뒤에만
진입을 할수 있는 매도로직을 구현하고 싶은데 어떻게 수식을 넣어야하나요.
예를들어서 매도청산후 재매도인데 재매도로직만 구현되게 하고 싶습니다.
ex) 매도청산후 시가돌파후 시가 재이탈시는 재매도로직 발동
제가 설명을 잘한건지 모르겠네요~
3. 2분봉에서 일봉의 5이평과 20이평을 사용하고 싶습니다.
일봉에서 20이평아래에 5이평이 있고 5이평이 3연속 우하향일때 시가가 5이평위에서
출발할때는 매수진입식이 필터가 걸리게 하고 싶습니다.
ex) if bids>asks then buy();
라는 조건식이 있을때 위에서 말한 일봉이평의 필터가 작동하게 하고 싶습니다.
위의 내용처럼 5이평이 3일연속 우하향이고 20이평 아래에 5이평이 있으면
매수조건에 만족이 되더라도 진입금지.
항상 감사드립니다.
2011-09-28
591
글번호 43115
답변완료
문의드립니다
아래의 내용은 일봉에서 월봉을 불러온 내용입니다.
아래수식에서 주봉의 중간값을 불러오고자 합니다.
var2 = 주봉중간값 을 추가해 주십시요
그리고 그전에 볼린저밴드를 아래와 같이 만들어 주셨는데 어떤게 정확한
표현인지 알고 싶습니다.
Sum1 = 0;
CSum1 = 0;
For counter1 = 1 To Period1{
Sum1= Sum1 + ((HH[counter1]+LL[counter1]+CC[counter1])/3) * (Period1 - (counter1));
CSum1 = CSum1 + Period1 - (counter1);
}
WMA1 = Sum1/ CSum1;
SumSqrt1 = 0;
For Counter1 = 1 To Period1 {
SumSqrt1 = SumSqrt1 + (((HH[counter1]+LL[counter1]+CC[counter1])/3) - WMA1) * (((HH[counter1]+LL[counter1]+CC[counter1])/3) - WMA1);
}
Std1 = SquareRoot(SumSqrt1 / Period1);
input : p1(2),mLENGTH1(20),mLENGTH2(60), ## 월봉
mPeriod1(20),mPeriod2(60); ## 월봉
var : mTCHAN1(0),mTCHAN2(0),mcnt(0); ## 월봉
Var : mSum1(0), mCounter1(0), mCSum1(0),mWma1(0),mSumSqrt1(0),mStd1(0); ## 월봉
Var : mSum2(0), mCounter2(0), mCSum2(0),mWma2(0),mSumSqrt2(0),mStd2(0);
Array : mHH[70](0),mCC[70](0),mLL[70](0);
if sdate > sdate[1]+30 Then{
mHH[0] = H;
mLL[0] = L;
for mcnt = 1 to 61{
mHH[mcnt] = mHH[mcnt-1][1];
mCC[mcnt] = mCC[mcnt-1][1];
mLL[mcnt] = mLL[mcnt-1][1];
}
}
if H > mHH[0] Then mHH[0] = H;
if L < mLL[0] Then mLL[0] = L;
mCC[0] = C;
mTCHAN1 = mHH[1]; ## 월봉 price channel[1]
for mcnt = 1 to mLENGTH1 {
if mHH[mcnt] > mTCHAN1 Then
mTCHAN1 = mHH[mcnt];
}
mSum1 = 0;
mCSum1 = 0;
For mcounter1 = 0 To mPeriod1-1{
mSum1 = mSum1 + ((mHH[mcounter1]+mLL[mcounter1]+mCC[mcounter1])/3) * (mPeriod1-mcounter1);
mCSum1 = mCSum1 + (mPeriod1-mcounter1);
}
mWMA1 = mSum1/mCSum1;
mSumSqrt1 = 0;
For mCounter1 = 0 To mPeriod1-1 {
mSumSqrt1 = mSumSqrt1 + (((mHH[mcounter1]+mLL[mcounter1]+mCC[mcounter1])/3) - mWMA1) * (((mHH[mcounter1]+mLL[mcounter1]+mCC[mcounter1])/3) - mWMA1);
}
mStd1 = SquareRoot(mSumSqrt1 / mPeriod1);
var1 = mwma1+(p1*mSTD1); ## 월봉 b.b 0봉전
var2 = 주봉중간값;
2011-09-28
644
글번호 43111
답변완료
문의 드립니다.
5분 차트에서 어제 분을 제외한 오늘 첫봉 부터 계산해서
중간값 5이평 ma((h+l)/2,5)을 3분 챠트에 띄우고 싶습니다.
5분 챠트 첫봉은 1,두번째봉은 2, 세번째 봉은 3, 네번째 봉은 4 이평으로 가다가 5봉 이후부터 5이평이 계산되는 식으로 하여 이것을 3분챠트에 띄우고 싶습니다.
3분과 5분 정확하게 배수가 되지 않아 어떻게 될지 모르겠네요
2011-09-28
568
글번호 43109
답변완료
시스템식 문의 드려요
항상 도움주셔서 감사해요..!!
예스에서 수식작성후 entriestoday 함수가 오류가 뜨네요..함수로 메이킹 해줘야 할것 같은데..좀 부탁드립니다..!!^^*
2011-09-28
518
글번호 43108
하루우유 님에 의해서 삭제되었습니다.
2011-09-28
0
글번호 43107
답변완료
시스템식
당일시가가 당일20일이동평균선 보다높고 현재가가 당일시가보다 10틱상승하면 매수
당일시가가 당일20일이동평균선 보다낮고 현재가가 당일시가보다 10틱하락하면 매도
진입은 5회로 제한함
2011-09-28
550
글번호 43106
답변완료
시스템식
안녕하세요 키움식인데 에스스탁시스템식으로변경부탁드립니다.
1) 지표식
a=tema(c,5,지수);
if(a<a(1),a,0)
a=tema(c,5,지수);
if(a>a(1),a,0)
2) 시스템식
a=tema(c,5,지수);
if(a<a(1),a,0)
a=tema(c,5,지수);
if(a>a(1),a,0)
3) 지표식,시스템식
avg(c,5)/(jas=avg(c,2)/100)
g(c,5)/(jas=avg(c,2)/100)
2011-09-28
648
글번호 43105