커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4351
글번호 230811
답변완료
수식요청 드립이다.
안녕하세요.
연결선물 분봉 틱봉 차트에서 장시작 후 실시간으로 봉이 완성될때마다 차트에 표시.
-> 직전완성봉 기준으로, 당일시가에서 직전완성봉 고가 까지의 변폭 시가라인 위에 표시
예) 고가변폭 : 0.5P
-> 직전완성봉 기준으로, 당일시가에서 직전완성봉 저가 까지의 변폭 시가라인 아래에 표시
예) 저가변폭 : 0.8P
수식요청 드립이다.
감사합니다.
2018-02-08
129
글번호 116449
답변완료
문의드립니다
이미지와 같이 5개의 이평을 한번에 돌파하는 양봉 강조식 부탁드립니다.
이미지는 20, 60, 120, 240, 480 선을 돌파한것입니다.
2018-02-08
177
글번호 116446
답변완료
문의 드립니다.
input : N(20);
var1 = AccumN(V*C,N);
var2 = AccumN(V,N);
var3 = var1/var2;
plot1(var3);
이수식에서 n거래량이 높은 거래량만 포함시키고 싶습니다
감사합니다
2018-02-08
139
글번호 116445
답변완료
문의드립니다.
매번 고맙습니다.
1. 시스템
분봉
외부변수
금액,n개봉,RSI기간,타주기봉기간
진입
1-타주기 이평 40이상에서 타주기 RSI가 2봉 연속 25이하면 금액의 10% 매수
2-1에서 n개봉 지났는데 1보다 가격이 낮으면 20% 매수
3-2에서 n개봉 지났는데 2보다 가격이 낮으면 30% 매수
청산
-1,2,3, 진행하는 동안 RSI가 70에 도달하면 추가 매수는 안하고 모두 청산.
-3까지 진행된 뒤 RSI가 70까지 도달하지 못하고 전체포지션 손실률이 n2%에 도달하면 청산
2018-02-08
164
글번호 116435
답변완료
문의드립니다.
도움주시는 덕분에 도전하고 있습니다. 매번 감사합니다.
1. 기타
예스코드로 변환 부탁드립니다.
inputs:
Price( Close ),
RetracePct( 5 ) ;
variables:
LowPrice( 0 ),
HighPrice( 0 ),
RetraceFctrUp( 0 ),
RetraceFctrDn( 0 ) ;
if CurrentBar = 1 then
begin
LowPrice = Price ;
HighPrice = Price ;
RetraceFctrUp = 1 + 0.01 * RetracePct ;
RetraceFctrDn = 1 - 0.01 * RetracePct ;
end
else
begin
if Price < LowPrice then
LowPrice = Price ;
if Price > HighPrice then
HighPrice = Price ;
if MarketPosition < 1 and Price >= LowPrice *
RetraceFctrUp then
begin
Buy this bar on Close ;
HighPrice = Price ;
end
else if MarketPosition > -1 and Price <= HighPrice *
RetraceFctrDn then
begin
Sell Short this bar on Close ;
LowPrice = Price ;
end ;
end ;
2018-02-08
152
글번호 116429
답변완료
도움을 부탁드립니다.
아직 뼈대를 잡지 못했습니다. 도움을 부탁드립니다.
키움에서 시험적용해서 사용하던 것인데 예스 트레이더 시스템으로 변환을 하고 싶습니다.
변수값
p=20
m=2
매수진입
c>=avg(c,p)+m*stdev(c,p) or c>=lowest(c,p)+3*atr(p)
매수청산
c<=avg(c,p)-m*stdev(c,p) or c<=highest(c,p)-3*atr(p)
매도진입
c<=avg(c,p)-m*stdev(c,p) or c<=highest(c,p)-3*atr(p)
매도청산
c>=avg(c,p)+m*stdev(c,p) or c>=lowest(c,p)+3*atr(p)
매일매일 고생 하심에 감사드립니다.
2018-02-08
159
글번호 116428
답변완료
동일계좌 진입 청산 질문 입니다.
안녕하세요. ^^
"A" 라는 시스템이 있는데,
한개의 동일계좌로
30분, 60분, 90분 각각의 차트에 동일한 "A" 라는 시스템을 연결했을 때,
진입 신호는 B 또는 S ,
청산 신호는 BB 또는 SS 라고 명했습니다.
매수청산은 BB , 매도청산은 SS 입니다.
한개의 동일계좌로 동일시스템을 진행 할 때,
일,분,틱에 복수로 적용했을 때, 문제 될 건 없는지요?
예를 들어, 30분 매수로 B가 진입하면, 90분 매수청산 신호로 BB 가 뜬다면,
동일계좌에서 먼저 매수로 진입한 30분 B 매수 포지션이,
90분 매수청산 신호인 BB로 청산 되면서 문제가 되지 않을까 하는 질문입니다.
(증권사들은 먼저 진입한 포지션을 첫 청산으로 처리하는것 같아서 문의합니다.)
답변 부탁드립니다. 감사합니다~ ^^
2018-02-08
140
글번호 116427
답변완료
검색식 부탁드립니다..
차트상에서 적용(A)에서 검색으로 들어가면
N일 신고가 처럼 N일 거래대금 신고가 검색 부탁드립니다
따로 검색이 되는게 아니라 차트상에서 표시되게 해주시면
감사하겟습니다
2018-02-08
141
글번호 116426
답변완료
질문있습니다.
현물시스템 3분봉 3000봉에 참조데이타로 지수연결선물 3분봉 3000봉으로 지수 이평선을 보고 매수매도를 결정하려고하는 시스템을 구현하려고합니다.
var : mt_sum3(0),mt_sum5(0),mt_sum10(0),mt_sum15(0),mt_sum20(0);
var : mt_ma3(0),mt_ma5(0),mt_ma10(0),mt_ma15(0),mt_ma20(0);
var : mt_ma3Flag(0),mt_ma5Flag(0),mt_ma10Flag(0),mt_ma15Flag(0),mt_ma20Flag(0);
var : mt_10(0),mt_20(0),mt_30(0),mt_40(0),mt_120(0),mt_600(0);
var : mt_buyFlag(1),mt_sellFlag(0),mt_changeFlag(0),mt_change_t1(0),mt_change_t2(0);
var : mt_buyfactor(0);
var : i(0);
if index==0 Then{
ClearDebug;
mt_10=30/BarInterval;
mt_20=60/BarInterval;
mt_30=90/BarInterval;
mt_40=120/BarInterval;
mt_120=360/BarInterval;
mt_600=600/BarInterval;
}
if DayIndex==0 Then{
mt_sum3 = 0;
mt_sum5 = 0;
mt_sum10 = 0;
mt_sum15 = 0;
mt_sum20 = 0;
for i=1 to 19 {
if i<3 Then
mt_sum3 = mt_sum3 + DayClose(i);
if i<5 Then
mt_sum5 = mt_sum5 + DayClose(i);
if i<10 Then
mt_sum10 = mt_sum10 + DayClose(i);
if i<15 Then
mt_sum15 = mt_sum15 + DayClose(i);
mt_sum20 = mt_sum20 + DayClose(i);
}
}
mt_ma3 = (mt_sum3 + DayClose(0))/3;
mt_ma5 = (mt_sum5 + DayClose(0))/5;
mt_ma10 = (mt_sum10 + DayClose(0))/10;
mt_ma15 = (mt_sum15 + DayClose(0))/15;
mt_ma20 = (mt_sum20 + DayClose(0))/20;
MessageLog("%.f %.f %.f",mt_ma3,mt_ma5,mt_ma10);
MessageLog("%.f %.f %.f",DayClose(0),DayClose(1),DayClose(2));
if(mt_ma3<c)Then{
mt_ma3Flag=1;
}Else
mt_ma3Flag=0;
if(mt_ma5<c)Then{
mt_ma5Flag=1;
}Else
mt_ma5Flag=0;
if(mt_ma10<c)Then{
mt_ma10Flag=1;
}Else
mt_ma10Flag=0;
if(mt_ma15<c)Then{
mt_ma15Flag=1;
}Else
mt_ma15Flag=0;
if(mt_ma20*0.99<c)Then{
mt_ma20Flag=1;
}Else
mt_ma20Flag=0;
//지수로 확인하는 것
if(DayIndex==0)Then{
mt_changeFlag = 0;
mt_change_t1 = 0;
mt_change_t2 = 0;
mt_buyFlag = 1;
mt_sellFlag = 0;
}
if(mt_ma3Flag+mt_ma5Flag+mt_ma10Flag+mt_ma20Flag==0)Then{
mt_sellFlag = 1;
mt_buyFlag = 0;
MessageLog("모두팔기!1");
}
if(mt_ma20Flag==0&&(mt_ma3Flag+mt_ma5Flag+mt_ma10Flag>=2))Then{
mt_buyFlag = 1;
mt_sellFlag = 0;
}
if(mt_changeFlag==0)Then{
if(DayHigh*0.985>c||DayClose(1)*0.985>c)Then{
mt_buyFlag = 0;
}
if(DayHigh*0.98>c||DayClose(1)*0.98>c)Then{
mt_buyFlag = 0;
mt_sellFlag = 1;
MessageLog("모두팔기!2");
}
}
if(mt_buyFlag==0)Then{
if(ma(c,mt_20)>ma(c,mt_120))Then{
mt_change_t1 = 1;
}Else
mt_change_t1 = 0;
if((Lowest(h,mt_600)[15]*1.005<c||Lowest(h,mt_600)[30]*1.005<c)&&(ma(c,mt_10)*1.01<c||Highest(h,mt_10)[2]*1.005<c))Then{
mt_change_t2 = 1;
}Else
mt_change_t2 = 0;
if(mt_change_t1==1||mt_change_t2==1)Then{
mt_changeFlag = 1;
mt_buyFlag = 1;
mt_sellFlag = 0;
}
}
if(mt_changeFlag==1)Then{
if(ma(c,mt_20)>ma(c,mt_120))Then{
mt_change_t1 = 1;
}Else
mt_change_t1 = 0;
if((Lowest(h,mt_600)[15]*1.005<c||Lowest(h,mt_600)[30]*1.005<c)&&(ma(c,mt_10)*1.01<c||Highest(h,mt_10)[2]*1.005<c))Then{
mt_change_t2 = 1;
}Else
mt_change_t2 = 0;
if(mt_change_t1+mt_change_t2==0)Then{
mt_changeFlag = 0;
mt_buyFlag = 0;
}
}
//20선 위
if(mt_buyFlag==1&&mt_ma20Flag==1)Then{
mt_buyfactor = ((mt_ma3Flag+mt_ma5Flag+mt_ma10Flag+mt_ma10Flag)*10+60)/100;
Plot1(mt_buyfactor);
}
//20선 아래
if(mt_buyFlag==1&&mt_ma20Flag==0)Then{
var1 = 0;
if(ma(c,mt_20)>ma(c,mt_120))Then
var1 = var1+1;
if(Lowest(h,mt_600)[15]*1.005<c)Then
var1 = var1+1;
if(Lowest(h,mt_600)[30]*1.005<c)Then
var1 = var1+1;
if(ma(c,mt_10)*1.01<c)Then
var1 = var1+1;
if(Highest(h,mt_10)[2]*1.005<c)Then
var1 = var1+1;
mt_buyfactor = (var1*10)/100;
Plot2(mt_buyfactor);
}
위의 식은 일반적으로 연결선물지수 차트에 지표로 사용하는 것입니다.
위에 것을 현물 차트(3분봉 3000봉)에 참조데이터 연결선물지수(3분봉 3000봉)인 곳에서 사용할수 있도록 변환을 아래와 같이하였지만 정상작동하지않습니다.
var : mt_sum3(0,data2),mt_sum5(0,data2),mt_sum10(0,data2),mt_sum15(0,data2),mt_sum20(0,data2);
var : mt_ma3(0,data2),mt_ma5(0,data2),mt_ma10(0,data2),mt_ma15(0,data2),mt_ma20(0,data2);
var : mt_ma3Flag(0,data2),mt_ma5Flag(0,data2),mt_ma10Flag(0,data2),mt_ma15Flag(0,data2),mt_ma20Flag(0,data2);
var : mt_10(0,data2),mt_20(0,data2),mt_30(0,data2),mt_40(0,data2),mt_120(0,data2),mt_600(0,data2);
var : mt_buyFlag(1,data2),mt_sellFlag(0,data2),mt_changeFlag(0,data2),mt_change_t1(0,data2),mt_change_t2(0,data2);
var : mt_buyfactor(0,data2);
var : i(0,data2);
if index==0 Then{
ClearDebug;
mt_10=30/data2(BarInterval);
mt_20=60/data2(BarInterval);
mt_30=90/data2(BarInterval);
mt_40=120/data2(BarInterval);
mt_120=360/data2(BarInterval);
mt_600=600/data2(BarInterval);
}
if DayIndex==0 Then{
mt_sum3 = 0;
mt_sum5 = 0;
mt_sum10 = 0;
mt_sum15 = 0;
mt_sum20 = 0;
for i=1 to 19 {
if i<3 Then
mt_sum3 = data2(mt_sum3 + CloseD(i));
if i<5 Then
mt_sum5 = data2(mt_sum5 + CloseD(i));
if i<10 Then
mt_sum10 = data2(mt_sum10 + CloseD(i));
if i<15 Then
mt_sum15 = data2(mt_sum15 + CloseD(i));
mt_sum20 = data2(mt_sum20 + CloseD(i));
}
}
mt_ma3 = data2((mt_sum3 + CloseD(0))/3);
mt_ma5 = data2((mt_sum5 + CloseD(0))/5);
mt_ma10 = data2((mt_sum10 + CloseD(0))/10);
mt_ma15 = data2((mt_sum15 + CloseD(0))/15);
mt_ma20 = data2((mt_sum20 + CloseD(0))/20);
MessageLog("%.f %.f %.f",data2(mt_ma3),data2(mt_ma5),data2(mt_ma10));
MessageLog("%.f %.f %.f",data2(CloseD(0)),data2(CloseD(1)),data2(CloseD(2)));
if(mt_ma3<c)Then{
mt_ma3Flag=1;
}Else
mt_ma3Flag=0;
if(mt_ma5<c)Then{
mt_ma5Flag=1;
}Else
mt_ma5Flag=0;
if(mt_ma10<c)Then{
mt_ma10Flag=1;
}Else
mt_ma10Flag=0;
if(mt_ma15<c)Then{
mt_ma15Flag=1;
}Else
mt_ma15Flag=0;
if(mt_ma20*0.99<c)Then{
mt_ma20Flag=1;
}Else
mt_ma20Flag=0;
//지수로 확인하는 것
if(DayIndex==0)Then{
mt_changeFlag = 0;
mt_change_t1 = 0;
mt_change_t2 = 0;
mt_buyFlag = 1;
mt_sellFlag = 0;
}
if(mt_ma3Flag+mt_ma5Flag+mt_ma10Flag+mt_ma20Flag==0)Then{
mt_sellFlag = 1;
mt_buyFlag = 0;
//MessageLog("모두팔기!1");
}
if(mt_ma20Flag==0&&(mt_ma3Flag+mt_ma5Flag+mt_ma10Flag>=2))Then{
mt_buyFlag = 1;
mt_sellFlag = 0;
}
if(mt_changeFlag==0)Then{
if(data2(HighD(0)*0.985>c||CloseD(1)*0.985>c))Then{
mt_buyFlag = 0;
}
if(data2(HighD(0)*0.98>c||CloseD(1)*0.98>c))Then{
mt_buyFlag = 0;
mt_sellFlag = 1;
//MessageLog("모두팔기!2");
}
}
if(mt_buyFlag==0)Then{
if(data2(ma(c,mt_20)>ma(c,mt_120)))Then{
mt_change_t1 = 1;
}Else
mt_change_t1 = 0;
if(data2((Lowest(h,mt_600)[15]*1.005<c||Lowest(h,mt_600)[30]*1.005<c)&&(ma(c,mt_10)*1.01<c||Highest(h,mt_10)[2]*1.005<c)))Then{
mt_change_t2 = 1;
}Else
mt_change_t2 = 0;
if(mt_change_t1==1||mt_change_t2==1)Then{
mt_changeFlag = 1;
mt_buyFlag = 1;
mt_sellFlag = 0;
}
}
if(mt_changeFlag==1)Then{
if(data2(ma(c,mt_20)>ma(c,mt_120)))Then{
mt_change_t1 = 1;
}Else
mt_change_t1 = 0;
if(data2((Lowest(h,mt_600)[15]*1.005<c||Lowest(h,mt_600)[30]*1.005<c)&&(ma(c,mt_10)*1.01<c||Highest(h,mt_10)[2]*1.005<c)))Then{
mt_change_t2 = 1;
}Else
mt_change_t2 = 0;
if(mt_change_t1+mt_change_t2==0)Then{
mt_changeFlag = 0;
mt_buyFlag = 0;
}
}
//20선 위
if(mt_buyFlag==1&&mt_ma20Flag==1)Then{
mt_buyfactor = ((mt_ma3Flag+mt_ma5Flag+mt_ma10Flag+mt_ma10Flag)*10+60)/100;
Plot1(mt_buyfactor);
}
//20선 아래
if(mt_buyFlag==1&&mt_ma20Flag==0)Then{
var1 = 0;
if(data2(ma(c,mt_20)>ma(c,mt_120)))Then
var1 = var1+1;
if(data2(Lowest(h,mt_600)[15]*1.005<c))Then
var1 = var1+1;
if(data2(Lowest(h,mt_600)[30]*1.005<c))Then
var1 = var1+1;
if(data2(ma(c,mt_10)*1.01<c))Then
var1 = var1+1;
if(data2(Highest(h,mt_10)[2]*1.005<c))Then
var1 = var1+1;
mt_buyfactor = (var1*10)/100;
Plot2(mt_buyfactor);
}
어디가어떻게 잘못되었는지 알려주시면 감사하겠습니다
감사합니다
2018-02-08
159
글번호 116425