커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7504
글번호 230811
답변완료
부탁드립니다.
수고가 많으십니다~
다음의 지표를
1.일봉에서보는 주봉수식 과
2.분봉에서보는 일봉수식 을 부탁드립니다.
input:period(30),sigperiod(10);
var1=ema((High+Low)/(Volume/(High-Low)),period);
var2=ma(var1,sigperiod);
plot1(var1);
plot2(var2);
항상 감사 드립니다~
2014-06-26
144
글번호 76137
답변완료
수식문의
당일 선물에서 고점을만들고 저점(눌림)하고 차이가 8틱차이가나면은 고저점세로수평선을 만들어주세요 반대로 저점을만들고 고점(눌림)하고 차이가 8틱차이가나면은 저고점세로수평선을 만들어주세요 그리고 8틱차이가 안나거나 넘으면 수평선표시는 안나오게해주세요 그리고 다음고저점이만들어지면 자동으로 전에생긴 수평선은 지워주세요 감사합니다 .
2014-06-26
141
글번호 76136
답변완료
거래회수 제한좀 알려주세요
수고하십니다
전에 제게 아래와 같은 수식을 만들어 주셨는데
하루 3번만 거래할수있도록 할려면 어떻게 고쳐야 하는지 알려주세요
아래의 코드를 3회거래만 할수있도록 수정해 주세요
4번째 신호가 나오면 청산하고 그날 매매를 끝내는거로요
감사합니다
input : P(5);
var : cnt(0),count(0),mav(0);
mav = ma(C,P);
count = 0;
for cnt = 0 to 20{
if sdate == EntryDate(cnt) Then
count = count+1;
}
if count == 0 and MarketPosition == 0 Then
if crossup(mav,dayopen+1) Then{
Buy("b");
var1 = dayopen+1;
}
if crossdown(mav,dayopen-1) then{
sell("s");
var2 = dayopen-1;
}
if count >= 1 and MarketPosition == -1 Then{
if crossup(mav,var2+1) and var2+1 != dayopen Then{
Buy("b1");
var1 = var2+1;
}
if CrossUp(mav,var2-1) and var2-1 != dayopen Then{
Buy("b2");
var1 = var2-1;
}
if crossup(mav,var2+1) and var2+1 == dayopen Then{
var1 = var2+1;
}
if CrossUp(mav,var2-1) and var2-1 == dayopen Then{
var1 = var2-1;
}
if CrossUp(mav,var2) Then{
Buy("b3");
var1 = var2;
}
}
if count >= 1 and MarketPosition == 1 Then{
if crossdown(mav,var1+1) and var1+1 != dayopen then{
sell("s1");
var2 = var1+1;
}
if crossdown(mav,var1-1) and var1-1 != dayopen then{
sell("s2");
var2 = var1-1;
}
if crossdown(mav,var1+1) and var1+1 == dayopen then{
var2 = var1+1;
}
if crossdown(mav,var1-1) and var1-1 == dayopen then{
var2 = var1-1;
}
if crossdown(mav,var1) then{
sell("s3");
var2 = var1;
}
}
2014-06-26
161
글번호 76135
이재찬 님에 의해서 삭제되었습니다.
2014-06-26
0
글번호 76134
답변완료
거래제한을넣었는데 오류가뜨네요 부탁드림니다
저번문의작성에감사를드림니다 꾸벅!!!
부탁드림니다 오류가뜨네요
count = 0;
for cnt = 0 to 20{
if sdate ==EntryDate(cnt) Then
count = count+1;
}
var : AA(0,data2);
AA = -(data2(c)+data3(c));
if crossdown(data2(c),AA) and count < 3 Then
buy();
if CrossUp(data2(c),AA) and count < 3 Then
sell();
2014-06-26
129
글번호 76133
답변완료
Demark지표를 추세선으로 인식...
아래의 Demark지표를 차트에 나타낼때 당일아침에 시작시 오후시간까지 미리 선을 그으놓을려고 하면 예스트레이드에서는 안되는걸로 알고 그 대체로 추세선으로 대체하면 되는걸로 알고 있습니다.
아래의 Demark지표를 추세선으로 인식시켜 주는 산식을 좀 부탁드립니다.
If DayClose(1) > DayOpen(1) Then
{
value1 = (DayHigh(1)+DayLow(1)+DayClose(1)+DayHigh(1))/2-DayLow(1);
value2 = (DayHigh(1)+DayLow(1)+DayClose(1)+DayHigh(1))/2-DayHigh(1);
}
Else If DayClose(1) < DayOpen(1) Then
{
value1 = (DayHigh(1)+DayLow(1)+DayClose(1)+DayLow(1))/2-DayLow(1);
value2 = (DayHigh(1)+DayLow(1)+DayClose(1)+DayLow(1))/2-DayHigh(1);
}
Else
{
value1 = (DayHigh(1)+DayLow(1)+DayClose(1)+DayClose(1))/2-DayLow(1);
value2 = (DayHigh(1)+DayLow(1)+DayClose(1)+DayClose(1))/2-DayHigh(1);
}
Plot1(value1, "Demark분봉상한");
Plot2(value2, "Demark분봉하한");
2014-06-26
176
글번호 76132
erwe343 님에 의해서 삭제되었습니다.
2014-06-26
10
글번호 76131
답변완료
시스템 관련 질문드립니다. ㅠ.ㅠ
아래 수식은 키움증권의 매수수식입니다.
=================================================
a=lowestsince(1,CrossUp(StochasticsSlow(12,6),20)
,avg(c,5));
b=avg(c,5);
d=if(a<b,a,0);
l <= d and h > d
===================================================
아래수식은 예스로 변환한 것인데요 예스에서는 황당한 곳에서 매수신호가 자꾸 나옵니다.
아..ㅠㅠ 이걸로 몇일 고민중인데 해결이 안되네요
분명 도움받아서 같다고 말씀해 주셨는데 신호는 분명 다르게 나옵니다.
위의 키움수식을 다시 한번 확인해서 예스신호를 다른수식을 변경해주세면 감사겠습니다.
같다고는 하는데 분명 신호가 이상하게 나옵니다 중간에 분명 공중에 신호가 나올때가 있습니다. 조건이 만족안됬는데도 나올때가 있고.. 검토 좀 부탁드리겠습니다..ㅠㅠ
분명 제가 분석을 해봐도 두식의 해석이 조금 다릅니다....
=================================================
input : Period1(12),Period2(6)
var : 스토(0), 이평(0)
스토 = AccumN(C-lowest(L,Period1),Period2)/AccumN((highest(H,Period1)-lowest(L,Period1)),Period2)* 100;
이평 = ma(c,5);
if crossup(스토, 10) Then
value1 = 이평;
if 이평 < value1 Then
value1 = 이평;
if MarketPosition <= 0 and L > Value1
then buy("매수",Atlimit,value1);
====================================================
2014-06-25
166
글번호 76130
답변완료
YT 수행모델에 대한 문의
10개 봉으로된 챠트에 적용한 지표입니다.
첫번째 봉에서는 마치 line 5 에서만 호출된 것처럼 보여주고,
마지막 봉에서는 몰래 line 6, line 7 에서 호출하는 모양입니다.
일반적인 프로그램 수행모델에 따르면 10, 20, ... 100 으로 나와야 하고,
YT는 모든 함수호출을 조건에 관계없이 다 수행한다는 수행모델이라하므로 30, 60, ... 300 이 나와야 하는데, 실제 결과가 10, 40, ... 280 입니다.
함수 호출을 모두 수행한다는 것만으로는 프로그램을 작성하는데는 애매모호한 설명입니다.
프로그래머가 출력을 정확히 예측할 수 있도록 매뉴얼을 더 상세하게 하여 애매모호한 점이 없어야 할 것 같읍니다.
출력으로 보아 예상되는 규칙은,
1. 먼저, 일반적인 프로그램처럼 조건에 맞는 수행경로를 따라 수행한다.
2. 다음에, 수행경로에 없던 모든 함수호출들을 나타난 순서에 따라 수행한다.
이런 것 같은데, 이 예상이 맞는 것입니까?
그리고 이것은 일관적으로 항상지켜집니까? 아니면 경우에 따라 다른게 수행되기도 합니까?
함수호출이 프로그램 라인번호에 따라 정확히 그 순서를 지켜서 2번단계가 수행됩니까? 아니면 그 순서를 보장할 수 없읍니까?
YT 프로그램 수행모델을 제대로 파악하지 못하면, 그렇지 않아도 일반 프로그램 수행모델에 맞지 않아 프로그램에 어려움이 있는데, 프로그램을 작성하는데 시간낭비가 많을 것같으니, 상세하고 정확히 알려주시면 감사하겠읍니다. 예를 들어 2. 과정에서 함수호출에 사용되는 파라메터값은 1과정을 마친후 최종적으로 확정된 변수들에의해 만들어지는 값으로 호출되는 것입니까?
============ 지표:
Input: p(0);
Var: par(0);
Var: dummy(0);
if p == 0 then _func_1("line 5", par);
if p == 1 then _func_1("line 6", par);
if p == 2 then _func_1("line 7", par);
print("_test_1.txt", "index = %.0f; par = %.0f", index, par);
============ 함수: _func_1
Input: line(StringSimple), par(NumericRef);
print("_test_1.txt", "_func_1 begin: called from %s: par = %.0f", line, par);
par = par + 10;
print("_test_1.txt", "_func_1 end: called from %s: par = %.0f", line, par);
_func_1 = 1;
============ 출력
2014-06-12 9:00:00 _func_1 begin: called from line 5: par = 0
2014-06-12 9:00:00 _func_1 end: called from line 5: par = 10
2014-06-12 9:00:00 index = 0; par = 10
2014-06-12 9:00:00 _func_1 begin: called from line 6: par = 10
2014-06-12 9:00:00 _func_1 end: called from line 6: par = 20
2014-06-12 9:00:00 _func_1 begin: called from line 7: par = 20
2014-06-12 9:00:00 _func_1 end: called from line 7: par = 30
2014-06-13 9:00:00 _func_1 begin: called from line 5: par = 30
2014-06-13 9:00:00 _func_1 end: called from line 5: par = 40
2014-06-13 9:00:00 index = 1; par = 40
2014-06-13 9:00:00 _func_1 begin: called from line 6: par = 40
2014-06-13 9:00:00 _func_1 end: called from line 6: par = 50
2014-06-13 9:00:00 _func_1 begin: called from line 7: par = 50
2014-06-13 9:00:00 _func_1 end: called from line 7: par = 60
2014-06-16 9:00:00 _func_1 begin: called from line 5: par = 60
2014-06-16 9:00:00 _func_1 end: called from line 5: par = 70
2014-06-16 9:00:00 index = 2; par = 70
2014-06-16 9:00:00 _func_1 begin: called from line 6: par = 70
2014-06-16 9:00:00 _func_1 end: called from line 6: par = 80
2014-06-16 9:00:00 _func_1 begin: called from line 7: par = 80
2014-06-16 9:00:00 _func_1 end: called from line 7: par = 90
2014-06-17 9:00:00 _func_1 begin: called from line 5: par = 90
2014-06-17 9:00:00 _func_1 end: called from line 5: par = 100
2014-06-17 9:00:00 index = 3; par = 100
2014-06-17 9:00:00 _func_1 begin: called from line 6: par = 100
2014-06-17 9:00:00 _func_1 end: called from line 6: par = 110
2014-06-17 9:00:00 _func_1 begin: called from line 7: par = 110
2014-06-17 9:00:00 _func_1 end: called from line 7: par = 120
2014-06-18 9:00:00 _func_1 begin: called from line 5: par = 120
2014-06-18 9:00:00 _func_1 end: called from line 5: par = 130
2014-06-18 9:00:00 index = 4; par = 130
2014-06-18 9:00:00 _func_1 begin: called from line 6: par = 130
2014-06-18 9:00:00 _func_1 end: called from line 6: par = 140
2014-06-18 9:00:00 _func_1 begin: called from line 7: par = 140
2014-06-18 9:00:00 _func_1 end: called from line 7: par = 150
2014-06-19 9:00:00 _func_1 begin: called from line 5: par = 150
2014-06-19 9:00:00 _func_1 end: called from line 5: par = 160
2014-06-19 9:00:00 index = 5; par = 160
2014-06-19 9:00:00 _func_1 begin: called from line 6: par = 160
2014-06-19 9:00:00 _func_1 end: called from line 6: par = 170
2014-06-19 9:00:00 _func_1 begin: called from line 7: par = 170
2014-06-19 9:00:00 _func_1 end: called from line 7: par = 180
2014-06-20 9:00:00 _func_1 begin: called from line 5: par = 180
2014-06-20 9:00:00 _func_1 end: called from line 5: par = 190
2014-06-20 9:00:00 index = 6; par = 190
2014-06-20 9:00:00 _func_1 begin: called from line 6: par = 190
2014-06-20 9:00:00 _func_1 end: called from line 6: par = 200
2014-06-20 9:00:00 _func_1 begin: called from line 7: par = 200
2014-06-20 9:00:00 _func_1 end: called from line 7: par = 210
2014-06-23 9:00:00 _func_1 begin: called from line 5: par = 210
2014-06-23 9:00:00 _func_1 end: called from line 5: par = 220
2014-06-23 9:00:00 index = 7; par = 220
2014-06-23 9:00:00 _func_1 begin: called from line 6: par = 220
2014-06-23 9:00:00 _func_1 end: called from line 6: par = 230
2014-06-23 9:00:00 _func_1 begin: called from line 7: par = 230
2014-06-23 9:00:00 _func_1 end: called from line 7: par = 240
2014-06-24 9:00:00 _func_1 begin: called from line 5: par = 240
2014-06-24 9:00:00 _func_1 end: called from line 5: par = 250
2014-06-24 9:00:00 index = 8; par = 250
2014-06-24 9:00:00 _func_1 begin: called from line 6: par = 250
2014-06-24 9:00:00 _func_1 end: called from line 6: par = 260
2014-06-24 9:00:00 _func_1 begin: called from line 7: par = 260
2014-06-24 9:00:00 _func_1 end: called from line 7: par = 270
2014-06-25 9:00:00 _func_1 begin: called from line 5: par = 270
2014-06-25 9:00:00 _func_1 end: called from line 5: par = 280
2014-06-25 9:00:00 index = 9; par = 280
2014-06-25 9:00:00 _func_1 begin: called from line 6: par = 280
2014-06-25 9:00:00 _func_1 end: called from line 6: par = 290
2014-06-25 9:00:00 _func_1 begin: called from line 7: par = 290
2014-06-25 9:00:00 _func_1 end: called from line 7: par = 300
2014-06-26
169
글번호 76129