커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4534
글번호 230811
답변완료
MACD 수식과 다중 스토캐스틱 변환
키움 MACD 수식 변환 부탁드립니다
1> 매수매도 신호 - macd
매수
a=macd(12,26)<0 and crossup(macd(12,26),eavg(macd(12,26),9));
매도
a=macd(12,26)>0 and crossdown(macd(12,26),eavg(macd(12,26),9));
매수매도 라인 - macd
a=MACD(short,long)-eavg(MACD(short,long),signal);
valuewhen(1,a>0 ,avg(c,10));
valuewhen(1,a<0 ,avg(c,10));
기본식
300틱
2 > 다중스톡캐스틱
수식1
Stochasticsslow(sto1,sto2)
수식2
eavg(Stochasticsslow(sto1,sto2),sto3)
수식3
Stochasticsslow(100,5)
수식4
eavg(Stochasticsslow(100,5),5)
수식5
Stochasticsslow(30,20)
부탁드립니다!
2016-09-16
236
글번호 101974
답변완료
수식 변환부탁드립니다
키움용 입니다!
예스로 변환 부탁드립니다.
첨부 파일 올립니다
valuewhen(1,time==090000,고가)
valuewhen(1,time==090000,시가)
valuewhen(1,time==090000,저가)
valuewhen(1,time==100000,종가)
감사합니다
2016-09-16
232
글번호 101973
답변완료
특정일 진입 금지 로직 요청
안녕하세요. 특정일 진입 금지 로직 부탁드립니다.
1. 특정 요일(예: 월요일) 진입금지 방법
2. 보다 정확히는 전일 거래가 없었던 날 진입금지 방법
- 오늘 전에 며칠을 쉬었는지 계산한 후, 0일 이면 거래가 되도록
- 이틀이면 (즉, 토일을 지난 월요일) 거래가 안되게
- 3일 이상이어도(추석 같은 경우) 거래가 안되게
- 하루인 경우(주중에 낀 공휴일)는 거래가 되게
하고 싶습니다.
4. 선물 만기일에는 진입이 안되게 하고 싶습니다.
감사합니다.
해피한 명절 보내시고 난중에 댓글 부탁드립니다.
2016-09-16
108
글번호 101972
답변완료
소리오류-----------------
if CrossUp(va1,va+돌파) and vp[1] < vp and dayindex >= 10 Then
{
plot21(vp+500,"수");}
if CrossUp(va1,va+돌파) and vp[1] < vp and dayindex >= 10 Then
{
PlaySound("C:₩예스트레이더₩data₩Sound₩bubbles.wav"); }
if CrossDown(va1,va-돌파) and vp[1] > vp and dayindex >= 10 Then
{
plot22(vp+200,"도");}
if CrossDown(va1,va-돌파) and vp[1] > vp and dayindex >= 10 Then
{
PlaySound("C:₩예스트레이더₩data₩Sound₩accept.wav" ); }
plot21이나 plot22 나올때만 소리나야하는데 일치하질않아요 plot이 안나와도 소리가나요
이상없다고 하셨는데 분명이상있슴니다 수정부탁드립니다
수고하세요
2016-09-16
94
글번호 101971
답변완료
수식 수정 좀 부탁드립니다
안녕하세요!
연휴는 잘 지내셨나요?
수식 몇 가지만 변경드려요!
1, 다음은 중앙선 챠트 수식인데요
이 중앙선 챠트를 위로 올라가면 매수 , 아래로 내려 가면 매도를 표시하는
화살표 시스템을 부탁드립니다.
var1 = (dayhigh+daylow)/2;
plot1(var1,"중앙선");
plot2(999999999999,"상단");
plot3(-99999999999,"하단");
2.다음은 이평 고저 수식입니다
추세 변환시 막대가 나오도록 되어 있습니다!
추세 변환시 매수 매도 신호도 같이 나오도록 시스템식으로 변경 붙탁드립니다.
var1 = ma(c,20);
if var1 > var1[1] Then
value1 = var1;
if var1 > value1 Then
value1 = var1;
if var1 < var1[1] Then
value2 = var1;
if var1 < value2 Then
value2 = var2;
plot1(value1);
plot2(value2);
3. 트릭스 교차 (키움수식)
수식1 / 수식이름 : 1
수식 : highestsince(1,crossup(trix(20),0),avg(c,20))
수식2 / 수식이름 : 2
수식 : lowestsince(1,crossdown(trix(20),0),avg(c,20))
수식3 / 수식이름 : 3
수식 : a=avg(c,20);if(a>a(1),a,0)
수식4 / 수식이름 : 4
수식 : a=avg(c,20);if(a< a(1),a,0)
라인설정 / 유형 : 원 으로 변경 굵기 : 3
색상 : 1 파랑 / 2 빨강 / 3 빨강 / 4 파랑
그리고 전체적으로 시스템 신호에서 매수화살표가 뜨면 반대신호가 나올때 까지 계속
매수화살표가 나오도록 부탁드립니다. 매도 화살표가 나오면 마찬가지로 반대 신호가
나올때 까지 계속 매도화살표가 나오도록요!
감사합니다!
2016-09-16
158
글번호 101970
운짱 님에 의해서 삭제되었습니다.
2016-09-15
0
글번호 101969
답변완료
수식부탁드립니다
안녕하세요..
PVI지표에 대해서
3분봉챠트에 나타나는 PVI지표를 (1분봉챠트에서 나타나는 PVI지표가 아닌 3분봉그래프가)1분봉챠트에서 나타나게 하고싶습니다..
감사합니다..
2016-09-14
133
글번호 101968
답변완료
수식수정
안영하세요
그림처럼 삼각형이되게 수정부탁드립니다.
Input:chRate(0.5); //전환율 또는 변동률
Var:j(0),upTr(100),dnTr(-100),upRate(0),dnRate(0),trnd(0),TL(0),
date11(0),date12(0),time11(0),time12(0),TL1(0),
date21(0),date22(0),time21(0),time22(0),TL2(0),
date31(0),date32(0),time31(0),time32(0),TL3(0);
Array:hiVal[10](0),loVal[10](0),hiBar[10](0),loBar[10](0);
//hiVal[1]은 전고점, hiVal[2]는 전전고점, hiVal[3]은 전전전고점
//hiVal[0]은 변곡점 이후 현재봉까지의 고점. 현재 고점은 진행중이므로 계속 바뀐다.
//loVal[0]은 반대 개념
upRate = 1 + (chRate/100); //상승률
dnRate = 1 - (chRate/100); //하락률
for j = 1 to 9 { //전고,전저점을 9개까지 보관
loBar[j] = loBar[j] + 1; //전저점의 위치. 현재 봉으로부터 떨어져 있는 거리
hiBar[j] = hiBar[j] + 1; //전고점의 위치
}
if hiVal[0] <= H or hiVal[0] == 0 then { //전고,전저점 이후 현재까지의 고점
hiVal[0] = H; //0을 체크한 이유는 초기에 값이 없는 구간이 생기기 때문
hiBar[0] = 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;
//저가가 고가 대비 변동률보다 밑으로 떨어지면 하락추세로 설정
//단, 현재봉의 고가가 변곡점 이후 최고가이면 상승 추세가 진행중이라고 본다.
//그래서 현재봉의 고가가 hiVal[0]보다 작다는 조건이 추가되었다.
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;
//전고점이 새로 생긴 것이니까 전저점에서 전고점까지 추세선을 긋는다.
date11 = date[loBar[1]]; //추세선 시작일. 전저점의 날짜
time11 = stime[loBar[1]]; //추세선 시작시간
Value11 = loVal[1]; //추세선 시작가격
date12 = date[hiBar[1]]; //추세선 종료일. 전고점의 날짜
time12 = stime[hiBar[1]]; //추세선 종료시간
Value12 = hiVal[1]; //추세선 종료가격
TL1 = TL_New(date11,time11,Value11,date12,time12,Value12);
//TL_New는 신규 추세선을 그려주는 함수
}
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;
//전고점이 추가된 게 아니고 바뀐 것이므로 종료일,종료시간,종료가격만 바꿔준다.
date12 = date[hiBar[1]]; //추세선 종료일
time12 = stime[hiBar[1]];
Value12 = hiVal[1];
TL_SetEnd(TL1, date12,time12,Value12);
//TL_SetEnd는 기존추세선의 종료지점을 변경해주는 추세선 함수이다.
//TL_Delete 함수를 써서 직전의 추세선을 지우고 다시 TL_New로 추세선을 추가해도 된다.
}
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;
date11 = date[hiBar[1]]; //전저점이 새로이 생긴 것이므로 시작점은 전고점이 된다.
time11 = stime[hiBar[1]];
Value11 = hiVal[1];
date12 = date[loBar[1]];
time12 = stime[loBar[1]];
Value12 = loVal[1];
TL1 = TL_New(date11,time11,Value11,date12,time12,Value12);
}
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;
date12 = date[loBar[1]];
time12 = stime[loBar[1]];
Value12 = loVal[1];
TL_SetEnd(TL1, date12,time12,Value12);
}
if trnd == upTr and loVal[2] > loVal[1] then
TL_SetColor(TL1,BLUE);
else if trnd == dnTr and hiVal[2] < hiVal[1] then
TL_SetColor(TL1,RED);
else
TL_SetColor(TL1,BLACK);
TL_SetSize(TL1,2);
TL_SetColor(TL2,RED);
TL_SetColor(TL3,BLUE);
if var1 <= 0 and Trnd == uptr and Trnd != Trnd[1] Then{
var1 = 1;
value1 = loval[1];
TL1 = Text_New(sdate[lobar[1]],stime[lobar[1]],value1-PriceScale*2,"●");
TL_SetColor(TL,RED);
TL_SetSize(TL,2);
Text_SetStyle(TL1,2,2);
Text_SetColor(TL1,RED);#텍스트 색상
TL= Text_New(sdate[lobar[1]],stime[lobar[1]],L,"상승");
Text_SetColor(TL,RED);#텍스트 색상
}
if var1 >= 0 and Trnd == dntr and Trnd != Trnd[1] then{
var1 = -1;
value1 = hival[1];
TL2 = Text_New(sdate[hibar[1]],stime[hibar[1]],value1+PriceScale*2,"●");
TL_SetColor(TL,BLUE);
TL_SetSize(TL,2);
Text_SetStyle(TL2,2,2);#텍스트 좌우 상하 정렬
Text_SetColor(TL2,BLUE);#텍스트 색상
TL= Text_New(sdate[hibar[1]],stime[hibar[1]],H,"하락");
Text_SetColor(TL,BLUE);#텍스트 색상
}
2016-09-14
320
글번호 101967
답변완료
안녕하세요
당일 두번의 매매후에 결과가
2번연속 수익이거나 2연속 손실이발생하면 당일은 매매 정지하고
매매중이라도 손실이 100틱이상이면 청산후 매매정지
부탁드립니다^^
2016-09-16
109
글번호 101966