커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4477
글번호 230811
답변완료
수식 문의
일일이 수고해주심에 감사드립니다.
아래식은 당일 조건을 만족하는 종목을 검색하는 식인데
이식을 과거 몇일전 지정하는 날(P 일전)에만 만족하는 종목을 선택할 수 있도록
수정 부탁드립니다.
과거 몇일 전은 외부변수로 부탁드립니다.
input : 백이십선보정(50),Per(20), N(1), 이격1(70),이격2(130);
Var : Body(0),Highbody(0),Lowbody(0),value(0);
Body = Abs(C-O);
Highbody = MaxList(Open,Close);
Lowbody = MinList(Open,Close);
var1 = Disparity(60);
var2 = ma(c,5);
var4 = ma(c,20);
var6 = ma(c,60);
var7 = ma(c,120);
var8 = ma(v,60);
value2 = max(var2,var4,var6);
value3 = min(var2,var4,var6);
value1 = 0;
if crossup(c,var2) Then
value1 = value1+1;
if crossup(c,var4) Then
value1 = value1+1;
if crossup(c,var6) Then
value1 = value1+1;
if crossup(c,var7) Then
value1 = value1+1;
if var1[1] >= 이격1 and var1[1] <= 이격2 and
C > var2 and
value1 >= 1 and
body >= C[1]*0.05 and Body <= C[1]*0.20 and
H-Highbody >= body*0.0 and H-highbody <= Body*5 and
Lowbody-L >= body*0.00 and lowbody-L <= Body*5 and
C > O and
var7[1]*(1+백이십선보정/1000) > var7[2] and
CountIF(value2<= value3*(1+per/100),N) == N Then
find(1);
2016-12-12
99
글번호 104919
리턴 님에 의해서 삭제되었습니다.
2016-12-12
0
글번호 104918
마코 님에 의해서 삭제되었습니다.
2016-12-12
0
글번호 104916
답변완료
지표에 관한 질문입니다.
안녕하세요.
항상 수고가 많으십니다.
-------- 질문입니다 ----------------------------------------------
분봉에서
전일 20이평 종가값을 오늘 화면에 가로선으로 주욱 그리고 싶습니다.
다음과 같이 했더니 안됩니다.
if bdate != bdate[1] then
{
var1 = 0; // 변수-1 을 0으로 초기화
}
if bdate == bdate[1] then
{
var2 = ma(c, 20);
var3 = var2(1); <--- 전일 20 이평 종가를 var3 에 저장
}
plot1(var3, "전일 20 이평 종가값", blue);
--------------------------------------------------------------------
수정 부탁드립니다.
항상 하시는 일에 좋은 결실 거두시기를 바랍니다.
감사합니다.
2016-12-12
110
글번호 104911
답변완료
거래량 관련 매수 매도 수식 문의
안녕하세요. 다음 수식 문의드립니다.
- 이전 5개 봉 거래량 평균보다 최근 봉 거래량 200% 증가하고 양봉일때 매수
- 5이평선이 20이평선 밑으로 떨어질 때 매도
감사합니다.
2016-12-12
138
글번호 104905
답변완료
시간에 대한 var 입력
안녕하세요,
condition1 에 대해서 18:00 이후에 계약을 시작하라는 함수를 작성하였습니다.
if condition1 == true and (stime>=180000 or stime <= 050000) then buy();
여기서 180000와 050000에 대하여 아래와 같이 변형하였습니다.
var : starttime(180000)
if condition1 == true and (stime>=starttime or stime <= (starttime-130000)) then buy();
이렇게 하고 시스템을 돌려보니 위의 수식과 아래 수식의 결과 값이 다르게 나타납니다.
(starttime-130000) 에서 오류가 난것이 아닌가 추정하고 있는데 어떻게 수정하면 될까요?
감사합니다.
2016-12-12
96
글번호 104903
답변완료
시스템 매매 수식을 잘 못 쓴것 같은데 봐주십시요
안녕하세요.
아래와 같이 수식을 작성했는데 제 의도와 다르게 작동해서 질문드립니다.
vup1_high26 이라는 선이 있습니다.
가격이 상승하다가 이 선에 닿거나 돌파할 때 매도를 하는 식을 만들려고 합니다.
원하는 규칙
1. 한번 선을 돌파해 올라갔다 내려와 재상승한 경우는 매도를 하지 않습니다.
2. 돌파해 올라가는 것만 잡습니다.
3. 매일 정해진 시간에만 매매합니다.
제가 작성한 아래 식으로 돌려보면, 캡쳐2번과 같이 선을 한번 돌파한 뒤 하락했다가 재상승 해야지만이 매도주문이 들어갑니다.
캡쳐1번이 제가 원하는 그림인데 그럴 때는 전혀 매도주문이 안들어갑니다.
수식이 어느부분이 잘못되었을까요? 도움 부탁드립니다.
//변수 설정
var : vup1_high26(0), vup1_uflag1(0), vup1_tflag1(0);
input : profit(30), lose(40), entry_time(15);
//매일 변수 초기화 시키기
If Bdate!=Bdate[1] Then{
vup1_uflag1=0;}
//매매시간 지정
if sTime>101700 and sTime<=110000 Then{
vup1_tflag1=0;}
Else{
vup1_tflag1=1;}
//매매식
If H<vup1_high26 and vup1_uflag1==0 and vup1_tflag1==0 Then {
//선보다 작고, 전번 매매가 없고, 시간대 조건이 맞을 때
Sell("vup1_매도주문", AtLimit, vup1_high26-2); //2틱 선진입
SetStopLoss(lose, PointStop); //손절설정
SetStopProfittarget(profit, PointStop); //익절설정
vup1_uflag1=1; //다음번 매매 금지
}
If MarketPosition==-1 Then{ //진입 포지션이 있을 경우
If BarsSinceEntry>=entry_time Then{ //봉 15개 지났으면
If Abs(EntryPrice-C)<=10 and Abs(EntryPrice-C)>=0 Then{ //손익절 10틱 이하일때
ExitShort("vup1_본청", OnClose);} //그자리에서 청산
Else{
If Highest(H, entry_time)<EntryPrice Then{ //봉15개 고가가 진입가보다 작다면
SetStopLoss(Highest(H, entry_time)-EntryPrice, PointStop);}} //손절을 전고가-진입가로 변경
}
}
If Stime>=105500 and MarketPosition==-1 Then{ //만약 현재시간이 10시 55분이고 매도 포지션 들고있다면
ExitShort("vup1_시간손절", OnClose);} //그자리에서 청산
2016-12-12
130
글번호 104902
산인 님에 의해서 삭제되었습니다.
2016-12-12
14
글번호 104897
답변완료
문의드립니다.
안녕하세요.
Input : N(9);
var : Hv(0),Lv(0),cnt(0),Hiv(0),Liv(0),sum3(0),sum4(0);
Array : HH[50](0),HI[50](0),LL[50](0),LI[50](0);
if date != date[1] Then {
HH[0] = H;
HI[0] = index;
LL[0] = L;
LI[0] = index;
for cnt = 1 to 49 {
HH[cnt] = HH[cnt-1][1];
HI[cnt] = HI[cnt-1][1];
LL[cnt] = LL[cnt-1][1];
LI[cnt] = LI[cnt-1][1]; } }
if H > HH[0] Then {
HH[0] = H;
HI[0] = index; }
if L < LL[0] Then {
LL[0] = L;
LI[0] = index; }
if HH[N-1] > 0 and LL[N-1] > 0 Then {
Hv = HH[0];
Hiv = Hi[0];
Lv = LL[0];
Liv = Li[0];
for cnt = 0 to N-1 {
if HH[cnt] >= Hv Then {
Hv = HH[cnt];
Hiv = HI[cnt];
}
if LL[cnt] <= Lv Then {
Lv = LL[cnt];
Liv = LI[cnt];
} }
var55 = C*V;
sum3 = 0;
sum4 = 0;
for cnt = 0 to max(index-Hiv,index-Liv) {
sum3 = sum3 + var55[cnt];
sum4 = sum4 + V[cnt];
} }
var64 = sum3/sum4;
var65 = Hv; # n일 고가
var66 = Lv;
plot1(var64);
plot2(var65,"n일 고가");
plot3(var66,"n일 저가");
===========================================
위 수식을
연결선물차트 봉개수 1300개, 5분봉에 적용하면
N 값이 9 이하일 때는 var64 값이 괜찮은데
N 값이 11 이면 var64 값이 이상하게 나옵니다.
41행과 46행의 var55 때문인 것 같은데...?
수식 수정 부탁드립니다.
수고하세요.
2016-12-12
95
글번호 104896