커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
3371
글번호 230811
대주발 님에 의해서 삭제되었습니다.
2023-03-27
2
글번호 167546
답변완료
수식 문의드립니다.
항상 감사합니다.
3분봉에 적용된 수식에서
주가가 일봉상 20일이평선에 데드크로스할 시, 매수 되는 수식을 작성하고 싶습니다.
3분봉에서 장기이평으로 구현하려니 괴리가 많이 생겨서요.
수식도 맞는지 검토부탇그립니다.
input : dayp(5);
var : cnt(0),sum1(0),mav1(0),sum2(0),mav2(0);
sum1 = 0;
sum2 = 0;
For cnt = 0 to dayP-1
{
sum1 = sum1+DayClose(cnt);
sum2 = sum2+DayClose(cnt+1);
}
mav1 = sum1/dayP;
mav2 = sum2/dayP;
var1 = ma(C,1);
var2 = ma(C,8400); #30일선
var3 = ma(C,5600); #20일선
Var4 = (Var2+Var3)/2;
#전일저가는 일봉 20이평 아래 #
if DayLow(3) < mav1 Then
{
#저가가 15일선 이탈 시 매수
if CrossDown(L,Var3) Then
Buy("b1",AtStop,C);
2023-03-27
1201
글번호 167543
답변완료
수식 부탁 드립니다.
수식작성 감사드립니다
.
1.첫번째 질문 입니다.
P= 20일전 종가-19일전종가
P는 20일과 19일 주가 위체에 따라서 음수와 양수 일때가 있습니다.
따라서 P값도 양수 일때는 + 음수일때는 - 값을 갖게 됩니다.
W=당일현재가-P
KH=P+(20 ATR*P*현재가)
KM=20ATR+W
kL=KH-(W*1.2)
KH, KM, KL 화면에 출력
2023-03-27
1323
글번호 167540
답변완료
프로그램을 타인에게 이 메일로 전달 가능한지?
1. 프로그램을 타인에게 이 메일로 전달 가능한지?
2. password를 걸어서 타인에게 프로그램을 빌려줬을때, Password만 풀리면 프로그램을 볼수 있을건데, 그것을 방지하는 방법은 없는지? 알려 주시기 바랍니다.
3. 프로그램 돌릴때, 복수계좌 기능이 있던데, 타인 의 계좌도 복수 계좌 기능으로 프로그램을 한 사람이 여러사람의 계좌를 프로그램을 돌릴수 있는지? 있다면 그 방법이 어떻게 되는지 알려 주시기 바랍니다.
2023-03-26
1622
글번호 167538
답변완료
수식 변경 부탁드립니다
안녕하세요
키움 수식입니다
예스 수식으로 변경 부탁 드립니다
감사합니다
■ RSI Signal선과 기준선 50라인 색상 입히기
-수식1 RSI %Period%
RSI(Period)
-수식2 Signal %Signal%
eavg(RSI(Period), Signal);
-지표조건
Period 14
Signal 9
-라인설정
RSI
선 빨강
과열 진핑크, 기준값 50
침체 연청색, 기준값 50
Signal
선 청색
2023-03-26
1233
글번호 167537
2wnwn 님에 의해서 삭제되었습니다.
2023-03-27
16
글번호 167536
답변완료
예비신호
81364 의 예비신호 다시 질문드립니다.
답변에 ONCLOSE 일때만 신호가 발생한다고 했는데.. 제프로그램은 전부 AtMarket 입니다.
어는것은 시스템 모니터에 예비신호가 나오고 어떤것은 나오지 않습니다.
?????
안녕하세요?
예비신호에 나오는 프로그램이 잇고 없는 프로그램이 있습니다.
어떻게 해야 예비 신호가 전부 나오나요?
Sell("S",Atmarket,def,1);
감사합니다.
2023-03-27
1096
글번호 167535
답변완료
수식부탁드립니다
주가등락률 :[일] 1봉전(중) 종가대비 0봉전 시가등락률 5.0% 이하
거래량비율 (n봉) : [일] 1봉전 거래량 대비 0봉전 거래량 비율 200.0% 이상
기간내 주가변동폭 : [일]0봉전까지 10봉간 최고최저폭 150.0% 이하
주가비교 : [일]0봉전 시가 < 0봉전 종가
기간내 거래대금 : [일]0봉전 20봉이내 거래대금(일/주:백만,분:;천원) 50000이상 1회이상
가격-이동변균 비교 :[일]0봉전 (종가 20) 이평 < 종가
이평이격도 : [일]0봉전 (종가 1, 종가5 ) 10%이내 근접 1회이상
주가이평배열 (3) : [일] 0봉전 5이평 > 20이평 > 60이평
주가이평추세 [일] 0봉전 (종가 120) 이평 상승추세유지 2회 이상
2023-03-26
1088
글번호 167534
답변완료
수정부탁드립니다
변곡점마다 수치,수직선표시 및 변곡점변경시 사각box색상 부탁드립니다
1)
Input:변동률(2),레벨0(1),레벨1(1),레벨2(1),레벨3(1),레벨4(1);
Var:고점(1),저점(-1),신규(1),연장(2),연속(3),삼선(4);
Array:고[10,44](0),저[10,44](0), // 열번호 : 1=가격,2=Index,3=sDate,4=sTime,11=가격,12=Index,13=sDate,14=sTime
최종상태[5](0),처리구분[5](0),TL[15](0);
//=========================================================//
Value1 = ChgRateZigZag301(H,L,변동률,고,저,최종상태,처리구분);
If 레벨0 == 1 Then {
If 최종상태[0] == 고점 Then {
If 처리구분[0] == 신규 Then TL[0] = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]);
If 처리구분[0] == 연장 Then TL_SetEnd(TL[0],고[1,3],고[1,4],고[1,1]);
}
If 최종상태[0] == 저점 Then {
If 처리구분[0] == 신규 Then TL[0] = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]);
If 처리구분[0] == 연장 Then TL_SetEnd(TL[0],저[1,3],저[1,4],저[1,1]);
}
TL_SetColor(TL[0],BLACK); TL_SetSize(TL[0],1);
}
If 레벨1 == 1 Then {
If 최종상태[1] == 고점 Then {
If 처리구분[1] == 신규 Then TL[3] = TL_New(저[1,13],저[1,14],저[1,11],고[1,13],고[1,14],고[1,11]);
If 처리구분[1] == 연장 Then TL_SetEnd(TL[3],고[1,13],고[1,14],고[1,11]);
If 처리구분[1] == 연속 Then { TL[2] = TL_New(고[2,13],고[2,14],고[2,11],저[1,13],저[1,14],저[1,11]);
TL[3] = TL_New(저[1,13],저[1,14],저[1,11],고[1,13],고[1,14],고[1,11]); }
If 처리구분[1] == 삼선 Then { TL[1] = TL_New(저[2,13],저[2,14],저[2,11],고[2,13],고[2,14],고[2,11]);
TL[2] = TL_New(고[2,13],고[2,14],고[2,11],저[1,13],저[1,14],저[1,11]);
TL[3] = TL_New(저[1,13],저[1,14],저[1,11],고[1,13],고[1,14],고[1,11]); }
}
If 최종상태[1] == 저점 Then {
If 처리구분[1] == 신규 Then TL[3] = TL_New(고[1,13],고[1,14],고[1,11],저[1,13],저[1,14],저[1,11]);
If 처리구분[1] == 연장 Then TL_SetEnd(TL[3],저[1,13],저[1,14],저[1,11]);
If 처리구분[1] == 연속 Then { TL[2] = TL_New(저[2,13],저[2,14],저[2,11],고[1,13],고[1,14],고[1,11]);
TL[3] = TL_New(고[1,13],고[1,14],고[1,11],저[1,13],저[1,14],저[1,11]); }
If 처리구분[1] == 삼선 Then { TL[1] = TL_New(고[2,13],고[2,14],고[2,11],저[2,13],저[2,14],저[2,11]);
TL[2] = TL_New(저[2,13],저[2,14],저[2,11],고[1,13],고[1,14],고[1,11]);
TL[3] = TL_New(고[1,13],고[1,14],고[1,11],저[1,13],저[1,14],저[1,11]); }
}
TL_SetColor(TL[1],BLUE); TL_SetSize(TL[1],2);
TL_SetColor(TL[2],BLUE); TL_SetSize(TL[2],2);
TL_SetColor(TL[3],BLUE); TL_SetSize(TL[3],2);
}
If 레벨2 == 1 Then {
If 최종상태[2] == 고점 Then {
If 처리구분[2] == 신규 Then TL[6] = TL_New(저[1,23],저[1,24],저[1,21],고[1,23],고[1,24],고[1,21]);
If 처리구분[2] == 연장 Then TL_SetEnd(TL[6],고[1,23],고[1,24],고[1,21]);
If 처리구분[2] == 연속 Then { TL[5] = TL_New(고[2,23],고[2,24],고[2,21],저[1,23],저[1,24],저[1,21]);
TL[6] = TL_New(저[1,23],저[1,24],저[1,21],고[1,23],고[1,24],고[1,21]); }
If 처리구분[2] == 삼선 Then { TL[4] = TL_New(저[2,23],저[2,24],저[2,21],고[2,23],고[2,24],고[2,21]);
TL[5] = TL_New(고[2,23],고[2,24],고[2,21],저[1,23],저[1,24],저[1,21]);
TL[6] = TL_New(저[1,23],저[1,24],저[1,21],고[1,23],고[1,24],고[1,21]); }
}
If 최종상태[2] == 저점 Then {
If 처리구분[2] == 신규 Then TL[6] = TL_New(고[1,23],고[1,24],고[1,21],저[1,23],저[1,24],저[1,21]);
If 처리구분[2] == 연장 Then TL_SetEnd(TL[6],저[1,23],저[1,24],저[1,21]);
If 처리구분[2] == 연속 Then { TL[5] = TL_New(저[2,23],저[2,24],저[2,21],고[1,23],고[1,24],고[1,21]);
TL[6] = TL_New(고[1,23],고[1,24],고[1,21],저[1,23],저[1,24],저[1,21]); }
If 처리구분[2] == 삼선 Then { TL[4] = TL_New(고[2,23],고[2,24],고[2,21],저[2,23],저[2,24],저[2,21]);
TL[5] = TL_New(저[2,23],저[2,24],저[2,21],고[1,23],고[1,24],고[1,21]);
TL[6] = TL_New(고[1,23],고[1,24],고[1,21],저[1,23],저[1,24],저[1,21]); }
}
TL_SetColor(TL[4],MAGENTA); TL_SetSize(TL[4],3);
TL_SetColor(TL[5],MAGENTA); TL_SetSize(TL[5],3);
TL_SetColor(TL[6],MAGENTA); TL_SetSize(TL[6],3);
}
If 레벨3 == 1 Then {
If 최종상태[3] == 고점 Then {
If 처리구분[3] == 신규 Then TL[9] = TL_New(저[1,33],저[1,34],저[1,31],고[1,33],고[1,34],고[1,31]);
If 처리구분[3] == 연장 Then TL_SetEnd(TL[9],고[1,33],고[1,34],고[1,31]);
If 처리구분[3] == 연속 Then { TL[8] = TL_New(고[2,33],고[2,34],고[2,31],저[1,33],저[1,34],저[1,31]);
TL[9] = TL_New(저[1,33],저[1,34],저[1,31],고[1,33],고[1,34],고[1,31]); }
If 처리구분[3] == 삼선 Then { TL[7] = TL_New(저[2,33],저[2,34],저[2,31],고[2,33],고[2,34],고[2,31]);
TL[8] = TL_New(고[2,33],고[2,34],고[2,31],저[1,33],저[1,34],저[1,31]);
TL[9] = TL_New(저[1,33],저[1,34],저[1,31],고[1,33],고[1,34],고[1,31]); }
}
If 최종상태[3] == 저점 Then {
If 처리구분[3] == 신규 Then TL[9] = TL_New(고[1,33],고[1,34],고[1,31],저[1,33],저[1,34],저[1,31]);
If 처리구분[3] == 연장 Then TL_SetEnd(TL[9],저[1,33],저[1,34],저[1,31]);
If 처리구분[3] == 연속 Then { TL[8] = TL_New(저[2,33],저[2,34],저[2,31],고[1,33],고[1,34],고[1,31]);
TL[9] = TL_New(고[1,33],고[1,34],고[1,31],저[1,33],저[1,34],저[1,31]); }
If 처리구분[3] == 삼선 Then { TL[7] = TL_New(고[2,33],고[2,34],고[2,31],저[2,33],저[2,34],저[2,31]);
TL[8] = TL_New(저[2,33],저[2,34],저[2,31],고[1,33],고[1,34],고[1,31]);
TL[9] = TL_New(고[1,33],고[1,34],고[1,31],저[1,33],저[1,34],저[1,31]); }
}
TL_SetColor(TL[7],RED); TL_SetSize(TL[7],4);
TL_SetColor(TL[8],RED); TL_SetSize(TL[8],4);
TL_SetColor(TL[9],RED); TL_SetSize(TL[9],4);
}
If 레벨4 == 1 Then {
If 최종상태[4] == 고점 Then {
If 처리구분[4] == 신규 Then TL[12] = TL_New(저[1,43],저[1,44],저[1,41],고[1,43],고[1,44],고[1,41]);
If 처리구분[4] == 연장 Then TL_SetEnd(TL[12],고[1,43],고[1,44],고[1,41]);
If 처리구분[4] == 연속 Then { TL[11] = TL_New(고[2,43],고[2,44],고[2,41],저[1,43],저[1,44],저[1,41]);
TL[12] = TL_New(저[1,43],저[1,44],저[1,41],고[1,43],고[1,44],고[1,41]); }
If 처리구분[4] == 삼선 Then { TL[10] = TL_New(저[2,43],저[2,44],저[2,41],고[2,43],고[2,44],고[2,41]);
TL[11] = TL_New(고[2,43],고[2,44],고[2,41],저[1,43],저[1,44],저[1,41]);
TL[12] = TL_New(저[1,43],저[1,44],저[1,41],고[1,43],고[1,44],고[1,41]); }
}
If 최종상태[4] == 저점 Then {
If 처리구분[4] == 신규 Then TL[12] = TL_New(고[1,43],고[1,44],고[1,41],저[1,43],저[1,44],저[1,41]);
If 처리구분[4] == 연장 Then TL_SetEnd(TL[12],저[1,43],저[1,44],저[1,41]);
If 처리구분[4] == 연속 Then { TL[11] = TL_New(저[2,43],저[2,44],저[2,41],고[1,43],고[1,44],고[1,41]);
TL[12] = TL_New(고[1,43],고[1,44],고[1,41],저[1,43],저[1,44],저[1,41]); }
If 처리구분[4] == 삼선 Then { TL[10] = TL_New(고[2,43],고[2,44],고[2,41],저[2,43],저[2,44],저[2,41]);
TL[11] = TL_New(저[2,43],저[2,44],저[2,41],고[1,43],고[1,44],고[1,41]);
TL[12] = TL_New(고[1,43],고[1,44],고[1,41],저[1,43],저[1,44],저[1,41]); }
}
TL_SetColor(TL[10],BWHITE); TL_SetSize(TL[10],5);
TL_SetColor(TL[11],BWHITE); TL_SetSize(TL[11],5);
TL_SetColor(TL[12],BWHITE); TL_SetSize(TL[12],5);
}
2)지그재그표시가 불안정합니다.
수정부탁드립니다.
Input:hRate(1),하락색(LimE),상승색(Red),색상뚜게(40),선굵기(1);
Var:J(0),upTr(100),dnTr(-100),upRate(0),dnRate(0),Trnd(0),Trnd1(0),
dateF11(0),dateF12(0),timeF11(0),timeF12(0),TL1(0),수정TL(0),box(0),
dateF21(0),dateF22(0),timeF21(0),timeF22(0);
Array:hiVal[10](0),loVal[10](0),hiBar[10](0),loBar[10](0);
upRate = 1 + (hRate/100);
dnRate = 1 - (hRate/100);
for J = 1 to 9 {
loBar[J] = loBar[J] + 1;
hiBar[J] = hiBar[J] + 1;
}
if hiVal[0] <= H or hiVal[0] == 0 then {
hiVal[0] = H;
hiBar[0] = 0;
}
else {
hiBar[0] = hiBar[0] + 1;
}
if loVal[0] >= L or loVal[0] == 0 then {
loVal[0] = L;
loBar[0] = 0;
}
else {
loBar[0] = loBar[0] + 1;
}
if Trnd != dnTr && hiVal[0] > H && hiVal[0] * dnRate > L then Trnd = dnTr;
else if Trnd != upTr && loVal[0] < L && loVal[0] * upRate < H then Trnd = upTr;
if Trnd[1] == upTr and Trnd == dnTr then {
for J = 8 downto 1 {
hiVal[J+1] = hiVal[J];
hiBar[J+1] = hiBar[J];
}
hiVal[1] = hiVal[0];
hiBar[1] = hiBar[0];
hiVal[0] = H;
hiBar[0] = 0;
loVal[0] = L;
loBar[0] = 0;
dateF11 = date[loBar[1]];
timeF11 = stime[loBar[1]];
Value81 = loVal[1];
dateF12 = date[hiBar[1]];
timeF12 = stime[hiBar[1]];
Value92 = hiVal[1];
Text_New(sdate,stime,Value92,"하락"+NumToStr(Value92,2));
TL1 = TL_New(dateF11,timeF11,Value81,dateF12,timeF12,Value92);
}
if Trnd[1] == dnTr and Trnd == dnTr and
hiVal[1] < hiVal[0] and
hiVal[0] * dnRate > L then {
hiVal[1] = hiVal[0];
hiBar[1] = hiBar[0];
hiVal[0] = H;
hiBar[0] = 0;
loVal[0] = L;
loBar[0] = 0;
dateF12 = date[hiBar[1]];
timeF12 = stime[hiBar[1]];
Value92 = hiVal[1];
TL_SetEnd(TL1, dateF12,timeF12,Value92);
}
if Trnd[1] == dnTr and Trnd == upTr then {
for J = 8 downto 1 {
loVal[J+1] = loVal[J];
loBar[J+1] = loBar[J];
}
loVal[1] = loVal[0];
loBar[1] = loBar[0];
loVal[0] = L;
loBar[0] = 0;
hiVal[0] = H;
hiBar[0] = 0;
dateF11 = date[hiBar[1]];
timeF11 = stime[hiBar[1]];
Value91 = hiVal[1];
dateF12 = date[loBar[1]];
timeF12 = stime[loBar[1]];
Value82 = loVal[1];
Text_New(sdate,stime,Value82,"상승"+NumToStr(Value82,2));
TL1 = TL_New(dateF11,timeF11,Value91,dateF12,timeF12,Value82);
}
if Trnd[1] == upTr and Trnd == upTr and
loVal[1] > loVal[0] and
loVal[0] * upRate < H then {
loVal[1] = loVal[0];
loBar[1] = loBar[0];
loVal[0] = L;
loBar[0] = 0;
hiVal[0] = H;
hiBar[0] = 0;
dateF12 = date[loBar[1]];
timeF12 = stime[loBar[1]];
Value82 = loVal[1];
TL_SetEnd(TL1, dateF12,timeF12,Value82);
}
TL_SetSize(TL1,2);
2023-03-26
1336
글번호 167533