커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
6065
글번호 230811
답변완료
74455번 수식 수정 부탁드립니다
1.
전일하고 연속되는 파라볼릭 차트에서 양전환 캔들 포함 5캔들 10캔들 고가,저가를 표시
->전일하고 연속되는 파라볼릭 차트에서 양전환 캔들 포함 5캔들째, 10캔들째 고가,저가
2.
당일부터 표시되는 파라볼릭 차트에서 양전환 캔들 포함 5캔들 10캔들 고가,저가를 표시
->당일부터 표시되는 파라볼릭 차트에서 양전환 캔들 포함 5캔들째, 10캔들째 고가,저가
감사합니다
2021-10-29
624
글번호 153229
답변완료
부탁 드립니다.
항상 도움에 감사 드립니다.
틱봉용 수식으로 작성 해본 것입니다.
어딘가에 오류가 있어 보입니다.
수정 부탁 드립니다.
질문수식)
input:p(10),sig(30);
var1=obv();
var2=ma(var1,p);
var3=var1-var2;
var4=ma(var3,sig);
틱봉용 수식)
input : ntime(6),P(60),sig(5);
var : S1(0),D1(0),TM(0),TF(0),cnt(0),sum1(0),sum2(0);
var : v2(0),v4(0),pre(0),C1(0),idx(0),vv(0);
Array : v1[100](0),v3[100](0);
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
idx = 0;
}
Else
idx = idx+1;
if D1 > 0 then
{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TF = idx%ntime;
if Bdate != bdate[1] or (TF < TF[1] and Bdate == Bdate[1]) Then
{
// idx = idx+1;
C1 = C[1];
vv = 0;
pre = v1[0][1];
For cnt = 1 to 99
{
v1[cnt] = v1[cnt-1][1];
v3[cnt] = v3[cnt-1][1];
}
}
vv = vv + v;
if C > C1 Then
v1[0] = pre + vv;
else if C < C1 Then
v1[0] = pre - vv;
else
v1[0] = pre;
if idx >= P then
{
sum1 = 0;
For cnt = 0 to P-1
{
sum1 = sum1+v1[cnt];
}
v2 = sum1/p;
v3[0] = v1[0]-v2;
}
if idx >= P+sig then
{
sum2 = 0;
For cnt = 0 to sig-1
{
sum2 = sum2+v3[cnt];
}
v4 = sum2/sig;
Plot1(v4);
}
}
PlotBaseLine1(0);
2021-10-28
673
글번호 153226
답변완료
문의 드립니다.~~~~
항상 감사합니다. 건강하세요~~~
input : StartTime1(070000),EndTime1(100000);
input : StartTime2(110000),EndTime2(120000);
input : StartTime3(130000),EndTime3(140000);
input : StartTime4(010000),EndTime4(030000);
input : ntime(100000),n(10);
<질문1>
전체시간 조건 중
input : StartTime1(070000),EndTime1(100000);
input : StartTime2(110000),EndTime2(120000);
위 조건만 적용하고
전체조건중
아래 조건을 삭제하지 않고 적용되지 않게 하려면
어떻게 시간을 설정해야 하나요?
input : StartTime3(130000),EndTime3(140000);
input : StartTime4(010000),EndTime4(030000);
<질문2>
ntime(100000) 의 의미는 무엇인가요?
감사합니다~~~
2021-10-28
799
글번호 153219
답변완료
키움지표예스로 변경부탁드립니다
질문1
키움수식
기간=14
======================
M1=Max(C,O);
M2=Min(C,O);
M3=Highest(M1,기간);
M4=Lowest(M2,기간);
M5=(M3+M4)/2;
B=valuewhen(1, M5<M5(1), C);
ma(B,35)
========================
위수식을 예스로 변경하면 다음과같습니다
input:기간(14);
var:M1(0),M2(0),M3(0),M4(0),M5(0),M6(0);
M1=Max(C,O);
M2=Min(C,O);
M3=Highest(M1,기간);
M4=Lowest(M2,기간);
M5=(M3+M4)/2;
if M5<M5[1] Then
Value1=C;
M6=ma(Value1,35);
Plot1(M6);
위와같이하면 키움과예스의 수치가 정확히 일치를 합니다만
M1=Max(C,O);
M2=Min(C,O);
M3=Highest(M1,기간);
M4=Lowest(M2,기간);
M5=(M3+M4)/2;
B=valuewhen(1, M5<M5(1), C);
D=ma(B,35);
M11=Max(C,O);
M12=Min(C,O);
M13=Highest(M11,기간);
M14=Lowest(M12,기간);
M15=(M13+M14)/2;
B1=valuewhen(1, M15<M15(1), C);
D1=ma(B1,35);
E=(D+D1)/2:
이렇게 키움수식이 되었을시에 예스로변경하면
input:기간(14);
var:M1(0),M2(0),M3(0),M4(0),M5(0),M6(0);
M1=Max(C,O);
M2=Min(C,O);
M3=Highest(M1,기간);
M4=Lowest(M2,기간);
M5=(M3+M4)/2;
if M5>M5[1] Then
Value1=C;
M6=ma(Value1,35);
var:M11(0),M12(0),M13(0),M14(0),M15(0),M16(0),M17(0);
M11=Max(C,O);
M12=Min(C,O);
M13=Highest(M11,기간);
M14=Lowest(M12,기간);
M15=(M13+M14)/2;
if M15<M15[1] Then
Value2=C;
M16=ma(Value2,35);
M17=(M6+M16)/2;
Plot1(M17);
각각하나씩은 수치가 같은데요 두개의식을 합치면 수치가 달라집니다
질문2
또한 종목검색으로 만들시
input:기간(14);
var:M1(0),M2(0),M3(0),M4(0),M5(0),M6(0);
M1=Max(C,O);
M2=Min(C,O);
M3=Highest(M1,기간);
M4=Lowest(M2,기간);
M5=(M3+M4)/2;
if M5>M5[1] Then
Value1=C;
M6=ma(Value1,35);
var:M11(0),M12(0),M13(0),M14(0),M15(0),M16(0),M17(0);
M11=Max(C,O);
M12=Min(C,O);
M13=Highest(M11,기간);
M14=Lowest(M12,기간);
M15=(M13+M14)/2;
if M15<M15[1] Then
Value2=C;
M16=ma(Value2,35);
M17=(M6+M16)/2;
if crossup(C,M17) then find(1);
분명히 종목들이 존재를 하는데도 검색이 안됩니다
열흘이상 고민해봐도 해답을 모르겠습니다
도움이 절실합니다 부탁드리겠습니다
감사합니다 수고하세요
2021-10-28
1019
글번호 153217
답변완료
영웅문 수식을 변환하고 싶습니다.
안녕하세요?
영웅문에서 시스템 신호로 사용을 했는데요.
예스트레이더로 이전하고 싶습니다.
수식변환 도움 주실수 있나요?
<<<매수진입/매도청산>>>
R=highest(H,X);
S=lowest(L,X);
A=countsince(time>=T1,crossUp(c,R(1)) or crossDown(c,S(1)));
crossUp(A,0.5) and C>R(1)
<<<매수청산/매도진입>>>
R=highest(H,X);
S=lowest(L,X);
crossDOWN(C,S(1))
<<<변수>>>
T1 = 15
X = 30
<<<매매시간>>>
오전 9시 ~ 익일새벽 2시
<<<하루목표 수익 및 손절>>>
목표수익 100틱(나스닥)
목표손절 100틱(나스닥)
2021-10-28
957
글번호 153212
답변완료
수식문의 드립니다.
전일종가는 dayclose()로 나타내는데 전일이평선은 어떻게 나타낼수 있나요?
예를 들어
전일종가때 20이평선은 어떻게 수식이 나오나요?
2021-10-28
678
글번호 153211
푸른물결 님에 의해서 삭제되었습니다.
2021-10-28
29
글번호 153210
답변완료
문의 드립니다.
안녕하세요
키움 수식인데 변환좀 부탁드립니다.
수식1
aa=MACD(short,long);
bb=if(aa(1)<=aa,1,-1);
sum(bb)
수식2
aa=MACD(short,long);
bb=if(aa(1)<=aa,1,-1);
sum(bb)
수식3
aa=MACD(short,long);
bb=if(aa(1)<=aa,1,-1);
cc=sum(bb);
if(cc(1)>=cc,cc,0)
수식4
0
지표조건
short 30
long 60
항상 도움주심에 감사드립니다.
2021-10-28
760
글번호 153209
답변완료
문의드립니다.
안녕하세요.
1분봉에서 일봉 이평선 가격을 기준으로 매수/매도하는 수식을 작성하려고 합니다.
거의 일봉으로만 거래를 하다보니 분봉 시스템에 익숙치 않아서 도움을 부탁드립니다.
시스템 제작에 많은 도움을 주셔서 항상 감사드립니다.
전략은 개장 후 시가가 밀리면 1% 하락 시마다 분할 매수(현재는 4회만 표시하였으나 횟수 제한 없이 매수할 예정)한 후 평균가 대비 5% 상승 시 매도하는 전략입니다.
단 일봉 이평선(5,10,20,60) 중 현재가격 바로 아래에 있는 일봉이평선을 기준으로 삼아서 그 이평선 도달 전까지만 매수하고 이평선을 이탈(-2%)하면 손절할 예정이며, 일 1회만 거래하려고 합니다.
아래 수식으로 작성을 해봤는데 수정 부탁드립니다. 좋은 하루 보내세요.
input : p5(0), p10(0),p20(20), p60(60),p120(120),p240(240);
input : dayperiod5(5), dayperiod10(10), dayperiod20(20),dayperiod60(60);
var : cond1(False), cond11(False), cond12(False);
var : ma5(0),ma10(0),ma20(0),ma60(0),ma120(0),ma240(0), 이평(0), count(0);
var : cnt(0),sum5(0), sum10(0), sum20(0), sum60(0), daymav(0), daymav5(0), daymav10(0), daymav20(0), daymav60(0);
var : min1(0), min2(0), min3(0), min4(0);
if Bdate != Bdate[1] Then
{
Cond1 = False; #당일조건만족여부
count = 0;
}
#일봉 이동평균계산
sum5 = 0;
For cnt = 0 to dayPeriod5-1
{
sum5 = sum5 + DayClose(cnt);
}
daymav5 = sum5/dayPeriod5; // 현재 20일선
sum10 = 0;
For cnt = 0 to dayPeriod10-1
{
sum10 = sum10 + DayClose(cnt);
}
daymav10 = sum10/dayPeriod10; // 현재 20일선
sum20 = 0;
For cnt = 0 to dayPeriod20-1
{
sum20 = sum20 + DayClose(cnt);
}
daymav20 = sum20/dayPeriod20; // 현재 20일선
sum60 = 0;
For cnt = 0 to dayPeriod60-1
{
sum60 = sum60 + DayClose(cnt);
}
daymav60 = sum60/dayPeriod60; // 현재 20일선
// 분봉 종가와 일봉이평선과의 간격 확인
min1 = nthminlist(1,C-daymav5,C-daymav10,C-daymav20,C-daymav60);
min2 = nthminlist(2,C-daymav5,C-daymav10,C-daymav20,C-daymav60);
min3 = nthminlist(3,C-daymav5,C-daymav10,C-daymav20,C-daymav60);
min4 = nthminlist(4,C-daymav5,C-daymav10,C-daymav20,C-daymav60);
// 종가가 모든 이평선보다 위에 있으면 daymav를 제일 높은 가격의 이평선선택
if min1>0 Then daymav = NthMaxList(1, daymav5, daymav10, daymav20, daymav60);
// 1개의 이평선이 종가보다 높은 경우, 2번재 높은 가격의 이평선을 선택
Else if min2 > 0 Then daymav = NthMaxList(2, daymav5, daymav10, daymav20, daymav60);
Else if min3 > 0 Then daymav = NthMaxList(3, daymav5, daymav10, daymav20, daymav60);
Else if min4 > 0 Then daymav = NthMaxList(4, daymav5, daymav10, daymav20, daymav60);
Else daymav = 0;
If cond1 == False and MarketPosition == 0 and C < DayOpen(0) and C>daymav and count< 1 Then
{
Buy("b1", AtLimit, DayOpen(0)*0.99,1);
}
If cond1 == False and MarketPosition == 1 and C < DayOpen(0) and C>daymav and count< 2 Then
{
Buy("b2", AtLimit, DayOpen(0)*0.98,1);
}
If cond1 == False and MarketPosition == 1 and C < DayOpen(0) and C>daymav and count< 3 Then
{
Buy("b3", AtLimit, DayOpen(0)*0.97,1);
}
If cond1 == False and MarketPosition == 1 and C < DayOpen(0) and C>daymav and count< 4 Then
{
Buy("b4", AtLimit, DayOpen(0)*0.96,1);
}
If MarketPosition == 1 then
{
// 이평선 2% 이탈 시 손절
ExitLong("bx1",AtLimit,daymav*0.98,"",1,2);
//익절(5%)
ExitLong("bx11",AtLimit,AvgEntryPrice*1.05,"",1,2);
}
If CurrentEntries<CurrentEntries[1] Then
count = count + 1;
2021-10-27
694
글번호 153208