커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7526
글번호 230811
답변완료
지표식
전봉과의 종가차를 누적시키는 지표 A
A가 100 과 200 에서의
스토케스틱K 값 B
즉 기존 스토케스틱K(100,200)에서 100과200의 기간값을
지표A가 100과200을 갱신할때마다의 개념으로 대체하여 쓰고싶습니다
2013-12-27
157
글번호 70831
답변완료
프로그램 사용법 6694 질문에 대한 답변을 주셔서, 여기서 여쭙습니다.
안녕하세요? 아래와 같이 답변을 주셔서 수식을 올립니다.
일봉 기준입니다.
var: md(0);
md = MACD(10,20);
var1 = ma(c,5);
Condition1 = var1[4] > var1[5] and countif(var1>var1[1],4) == 4;
Condition2 = var1[4] < var1[5] and countif(var1>var1[1],4) == 4;
Condition3 = var1[3] < var1[4] and countif(var1>var1[1],3) == 3;
Condition4 = var1[2] > var1[3] and countif(var1>var1[1],2) == 2;
Condition5 = var1[1] > var1[2] and countif(var1>var1[1],1) == 1;
if Condition1 and Condition2 and Condition3 and Condition4 and Condition5 and
md>md[1] Then
buy();
1)위와 같은 조건식으로 말씀하신대로 종목들을 검색해 주시면 매우 감사하겠습니다.
2)답변에서 “최근 3년 이내” 라고 말씀하셨는데 2005년 1월~2007년 12월...이런 식으로는
주식 종목들을 검색할 수 없는지요?
감사합니다. 건승하세요. ^^*~~~
------------------------------------------------------
안녕하세요? 예스스탁입니다.
종목검색 기능을 이용해서 일봉상 “최근 3년 이내”에 특정 조건을 만족한 적이 있는 종목을 검색하실 수는 있을것 같습니다.
검색하시고자 하는 조건을 수식Q&A쪽으로 올려주시면 답변드리도록 하겠습니다.
감사합니다.
> 스테디어드밴서 님이 쓴 글입니다.
> 제목 : 시뮬레이션차트에서 ,,,
> 예스트레이더의 시뮬레이션차트를 보면,
삼성전자의 과거 10년간 일봉 차트에서
A라는 조건을 만족시키는 여러 일봉들을 검색할 수 있습니다.
-----------
제가 여쭙고 싶은 것은
주식 수십 종목의 과거 3년 차트들을 대상으로, A라는 조건을 만족시키는 일봉들을,
한번에 검색하는 방법 혹은 유사한 방법이 있는지 여쭙고 싶습니다.
꼭 좀 알려주시길 부탁드리겠습니다. 건승하세요.
2013-12-27
200
글번호 70830
답변완료
행복; 수식 작성 바랍니다
한국의 금융산업 발전을 위해 불철주야 애쓰시는 귀하의 노고를 높이 평가합니다
시스템식 작성 바랍니다
====================================================================
< 현대차 주가 >
일자 종가 대비 대비율 거래량
---------- ------- ----- ------- ---------
2013/12/26 225,500 -500 -0.22% 372,399
2013/12/24 226,000 -2,500 -1.09% 390,524
2013/12/23 228,500 4,000 1.78% 526,734
2013/12/20 224,500 4,000 1.81% 609,925
2013/12/19 220,500 -7,000 -3.08% 1,119,205
2013/12/18 227,500 500 0.22% 957,351
2013/12/17 227,000 -1,000 -0.44% 1,243,467
2013/12/16 228,000 -3,500 -1.51% 389,360
2013/12/13 231,500 1,500 0.65% 676,239
2013/12/12 230,000 1,000 0.44% 826,526
2013/12/11 229,000 500 0.22% 608,863
2013/12/10 228,500 -1,500 -0.65% 544,323
2013/12/09 230,000 0.00% 514,208
2013/12/06 230,000 -2,500 -1.08% 452,464
2013/12/05 232,500 -500 -0.21% 791,121
2013/12/04 233,000 -6,000 -2.51% 706,716
2013/12/03 239,000 -10,500 -4.21% 880,074
========================================================
상기에 있는 현대차 주가를 기초로 질문을 드리겠습니다
<< 시스템식 1 >>
=================
주기; 일봉
< 매수 조건 >
가. 매수하는 오늘을 D 데이 라고 할 때
나. D 데이의 주가가 상승하지 않으면( C <= C[1] )
다. 당일 D 데이의 거래량(V)의 (10,000 분의 1) 만큼 종가에 진입한다
< 매도 조건 >
가. 매수 다음날인 D+1 데이부터, 주가가 상승하지 않으면 D 데이의 거래량(V)의 (10,000 분의 1) 만큼 보유하다가 주가가 상승하면( C > C[1] ) 종가에 전량 청산한다
예1) (현대차의 예를 들면,)
주가가 상승하지 않은 12월 3일에 88주를(해당 일 거래량 880,074주의 1만분의 1) 매수하여 보유를 하다가,
주가가 상승한 12월 11일 종가에 88주를 전량 청산하는 것입니다.
예2) 주가가 상승하지 않은 12월 16일 38주를(해당 일 거래량 389,360주의 1만분의 1) 매수하여 보유하다가,
주가가 상승한 12월 18일 종가에 38주를 전량 청산하는 것입니다
<< 시스템식 2 >>
=================
주기; 일봉
< 매수 조건 >
가. 매수하는 오늘을 D 데이 라고 할 때
나. D 데이의 주가가 상승하지 않으면( C <= C[1] )
다. 당일 D 데이의 거래량(V)의 (10,000 분의 1) 만큼 종가에 진입한다
< 매도 조건 >
가. 매수 다음날인 D+1 데이부터, 주가가 상승하지 않은 날은 해당 일 거래량(V)의 (10,000 분의 1) 만큼만 보유하다가(보유 수량이 줄어들 수도 있고 늘 수도 있습니다) 주가가 상승한 날은( C > C[1] ) 종가에 전량 청산한다
예1) (현대차의 예를 들면,)
주가가 상승하지 않은 12월 3일에 88주를(해당 일 거래량 880,074주의 1만분의 1) 매수하여 보유를 하다가,
주가가 상승하지 않은 12월 4일에는 18주를 청산하여 70주만(해당 일 거래량 706,716주의 1만분의 1) 보유하고,
주가가 상승하지 않은 12월 5일에는 9주를 매수하여 79주만(해당 일 거래량 791,121주의 1만분의 1) 보유하고,
주가가 상승하지 않은 12월 6일에는 34주를 청산하여 45주만(해당 일 거래량 452,464주의 1만분의 1) 보유하고,
주가가 상승하지 않은 12월 9일에는 6주를 매수하여 51주만(해당 일 거래량 514,208주의 1만분의 1) 보유하고,
주가가 상승하지 않은 12월 10일에는 3주를 매수하여 54주만(해당 일 거래량 544,323주의 1만분의 1) 보유하고,
주가가 상승한 12월 11일에는 12월 10일에 보유하였던 54주를 종가에 전량 청산합니다
예2)
주가가 상승하지 않은 12월 16일에 38주를(해당 일 거래량 389,360주의 1만분의 1) 매수하여 보유를 하다가,
주가가 상승하지 않은 12월 17일에는 86주를 매수하여 124주만(해당 일 거래량 1,243,467주의 1만분의 1) 보유하고,
주가가 상승한 12월 18일에는 12월 17일에 보유하였던 124주를 종가에 전량 청산합니다
감사합니다
2013-12-27
289
글번호 70829
답변완료
print 파일명 지정 (변수)
print 함수에서 파일명을 고정문자열이 아닌 변수로 처리할 수 없나요 ?
예를들면 아래 파일명을 data_yyyymmdd.csv를 data_20131225.csv처럼
현재 날짜로 [자동적]으로 변경해서 출력하도록
(매번 날짜를 변경하지 않아도 되도록)
print("C:₩data_yyyymmdd.csv",",시가,%.2f,고가,%.2f,저가,%.2f,종가,%.f",O,H,L,C)
수고하세요
2013-12-26
178
글번호 70828
답변완료
틱봉에서 SetStopTrailing의 값이 정밀하게 제어되지 않습니다.
틱봉 적용시
최대 수익대비 하락 0.6포인트 수익후 0.6포인트 하락시 청산을 셋팅한후 적용하였는데요.
12월 26일 선물지수에서
264.10 포인트에 매수 진입한후 264.7 포인트 까지 최고가 형성된후 264.10 포인트로
재하락시 청산되어야 맞는데 264.10에 청산되지 않도 자체 시간함수에 의해 청산되었어요.
시뮬레이션도 그렇고 실전매매도 같이 오류가 발생됩니다.
1) 왜 이런 오류가 발생되는지 궁금합니다.
긴급으로 회신부탁합니다.
2) SetStopTrailing(0.6,0.55,Pointstop,0) 의 경우는 신호가 잘 발생됩니다.
차이점도 궁금하네요.
3)
if MarketPosition() == 1 Then {
Hvalue = Highest(H,BarsSinceEntry+1);
ExitLong("TrailStop_EL",AtStop, Hvalue - TsValue); 의 경우 0.6포인트 수익이후를
표현하는 방법도 알고 싶네요.
2013-12-26
283
글번호 70827
답변완료
시장가 주문
항상 수고 많으십니다....
진입과 청산의 매매 가격을 시장가로 정해놓고 자동매매주문시 지정가 주문만 가능하다는 주문오류가 나옵니다..
자동매매 진입과청산 신호발생시 시장가로 주문할려면 어찌해야할련지요,,????
수식으로 atmarket 을 사용해야 할까요.?
자세한 수식설명 부탁드립니다...
2013-12-26
189
글번호 70826
답변완료
시스템식
안녕하세요
신호가발생이안되네요
Input : Period1(10),Period2(5),Period3(5);
Var : HH(0),LL(0),FK(0),EP1(0),EP2(0),SK(0),SD(0);
if dayindex < Period1 Then{
HH = DayHigh;
LL = DayLow;
}
Else{
HH = highest(H,Period1);
LL = lowest(L,Period1);
}
FK = (Close - LL) / (HH - LL) * 100;
EP1 = 2/(Period2+1);
EP2 = 2/(Period3+1);
if dayindex == 0 Then{
SK = FK;
SD = SK;
}
Else{
SK = FK * EP1 + SK[1] * (1-EP1);
SD = SK * EP2 + SD[1] * (1-EP2);
}
if date != date[1] Then{
value1 = 0;
value2 = 0;
}
if CrossDown(sk,sd) then{
value1 = value1+1;
var1 = sk;
var2 = var1[1];
var3 = c;
var4 = var3;
if value1 >= 2 and var1 < var2 and var3 > var4
and dayhigh >= DayOpen+2 Then
buy();
}
if CrossDown(sk,sd) then{
value2 = value2+1;
var11 = sk;
var12 = var11[1];
var13 = c;
var14 = var13;
if value2 >= 2 and var11 > var12 and var13 < var14
and daylow <= dayopen-2 Then
sell();
}
2.
Input : Period1(10),Period2(5),Period3(5);
Var : HH(0),LL(0),FK(0),EP1(0),EP2(0),SK(0),SD(0);
if dayindex < Period1 Then{
HH = DayHigh;
LL = DayLow;
}
Else{
HH = highest(H,Period1);
LL = lowest(L,Period1);
}
FK = (Close - LL) / (HH - LL) * 100;
EP1 = 2/(Period2+1);
EP2 = 2/(Period3+1);
if dayindex == 0 Then{
SK = FK;
SD = SK;
}
Else{
SK = FK * EP1 + SK[1] * (1-EP1);
SD = SK * EP2 + SD[1] * (1-EP2);
}
if date != date[1] Then{
value1 = 0;
value2 = 0;
}
if CrossDown(sk,sd) then{
value1 = value1+1;
var1 = sk;
var2 = var1[1];
var3 = c;
var4 = var3;
if value1 >= 2 and var1 < var2 and var3 > var4
and dayopen >= DayClose(1)+2 Then
buy();
}
if CrossDown(sk,sd) then{
value2 = value2+1;
var11 = sk;
var12 = var11[1];
var13 = c;
var14 = var13;
if value2 >= 2 and var11 > var12 and var13 < var14
and dayopen <= DayClose(1)-2 Then
sell();
}
2013-12-26
182
글번호 70825
답변완료
수식문의드립니다.
아래와 같은 수식 부탁드립니다.
1. 양봉의 몸통이나 꼬리가 이동평균선의 5일선과 볼린저밴드 중간선을 동시에 닿거나 걸치는 경우 - 해당 양봉이 신호봉(봉완성시)
----> 매수 진입
반대로,
음봉의 몸통이나 꼬리가 이동평균선의 5일선과 볼린저밴드 중간선을 동시에 걸치는 경우 - 해당 음봉이 신호봉(봉완성시)
----> 매도 진입
그럼 수고하세요
2013-12-26
168
글번호 70820
답변완료
수식문의
Input:상승률(0.2),하락률(0.2);
Var:j(0),상승(100),하락(-100),양방향(2),색깔(0),파랑(-1),빨강(1),
기준고(0),기준저(0),기준고Bar(0),기준저Bar(0),추세(0),이중파동(0);
var : hbody(0),lbody(0);
Array:고[20](0),저[20](0),고Bar[20](0),저Bar[20](0);
#==========================================#
# 전고점,전저점 index 증가
#==========================================#
For j = 1 To 19
{
저Bar[j] = 저Bar[j] + 1;
고Bar[j] = 고Bar[j] + 1;
}
#==========================================#
# 이중파동 처리
#==========================================#
If 이중파동 > 0 Then
{
if 색깔 == 빨강 Then{
Plot1(이중파동,"Zigzag",blue);
var2 = 이중파동;
var3 = -1;
}
Else{
Plot1(이중파동,"Zigzag",red);
var1 = 이중파동;
var3 = 1;
}
이중파동 = 0;
}
#==========================================#
# 최근 고,저 갱신
#==========================================#
If 기준고 <= Hbody || 기준고 == 0 || IsNaN(기준고) == True Then
{
기준고 = Hbody;
기준고Bar = 0;
}
Else
기준고Bar = 기준고Bar + 1;
If 기준저 >= Lbody || 기준저 == 0 || IsNaN(기준저) == True Then
{
기준저 = Lbody;
기준저Bar = 0;
}
Else
기준저Bar = 기준저Bar + 1;
#==========================================#
# 추세방향 결정
#==========================================#
If 기준고 * (1 - (하락률/100)) > Hbody && 기준저 * (1 + (상승률/100)) < Lbody Then
{
추세 = Iff(기준고Bar==기준저Bar,양방향,Iff(기준고Bar>기준저Bar,상승,하락));
}
Else If 기준고 * (1 - (하락률/100)) > Hbody Then 추세 = 하락;
Else If 기준저 * (1 + (상승률/100)) < Lbody Then 추세 = 상승;
#==========================================#
# 추세변화에 따른 변곡점 처리
#==========================================#
If 추세[1] == 상승 && 추세 == 하락 Then
{
For j = 18 DownTo 1 {
고[j+1] = 고[j];
고Bar[j+1] = 고Bar[j];
}
고[1] = 기준고;
고Bar[1] = 기준고Bar;
기준고 = Hbody;
기준고Bar = 0;
기준저 = Lbody;
기준저Bar = 0;
If 고[2] < 고[1] Then 색깔 = 빨강 ;
If 이중파동[1] > 0 Then 이중파동 = 고[1];
Else {
plot1(고[1],"Zigzag",RED);
var1 = 고[1];
var3 = 1;
}
}
If 추세[1] == 하락 && 추세 == 하락 &&
고[1] < 기준고 &&
기준고 * (1 - (하락률/100)) > Hbody Then
{
For j = 18 DownTo 1
{
고[j+1] = 고[j];
고Bar[j+1] = 고Bar[j];
저[j+1] = 저[j];
저Bar[j+1] = 저Bar[j];
}
고[1] = 기준고;
고Bar[1] = 기준고Bar;
저[1] = 기준저;
저Bar[1] = 기준저Bar;
기준고 = Hbody;
기준고Bar = 0;
기준저 = Lbody;
기준저Bar = 0;
If 저[2] > 저[1] Then 색깔 = 파랑;
plot1(저[1],"Zigzag",blue);
var2 = 저[1];
var3 = -1;
If 고[2] < 고[1] Then 색깔 = 빨강;
이중파동 = 고[1];
}
If 추세[1] == 하락 && 추세 == 상승 Then
{
For j = 18 DownTo 1
{
저[j+1] = 저[j];
저Bar[j+1] = 저Bar[j];
}
저[1] = 기준저;
저Bar[1] = 기준저Bar;
기준저 = Lbody;
기준저Bar = 0;
기준고 = Hbody;
기준고Bar = 0;
If 저[2] > 저[1] Then 색깔 = 파랑;
If 이중파동[1] > 0 Then 이중파동 = 저[1];
Else {
plot1(저[1],"Zigzag",blue);
var2 = 저[1];
var3 = -1;
}
}
If 추세[1] == 상승 && 추세 == 상승 &&
저[1] > 기준저 &&
기준저 * (1 + (상승률/100)) < Lbody Then
{
For j = 18 DownTo 1
{
고[j+1] = 고[j];
고Bar[j+1] = 고Bar[j];
저[j+1] = 저[j];
저Bar[j+1] = 저Bar[j];
}
고[1] = 기준고;
고Bar[1] = 기준고Bar;
저[1] = 기준저;
저Bar[1] = 기준저Bar;
기준저 = Lbody;
기준저Bar = 0;
기준고 = Hbody;
기준고Bar = 0;
If 고[2] < 고[1] Then 색깔 = 빨강;
plot1(고[1],"Zigzag",RED);
var1 = 고[1];
var3 = 1;
If 저[2] > 저[1] Then 색깔 = 파랑;
이중파동 = 저[1];
}
If 추세 == 양방향 Then
{
For j = 18 DownTo 1
{
고[j+1] = 고[j];
고Bar[j+1] = 고Bar[j];
저[j+1] = 저[j];
저Bar[j+1] = 저Bar[j];
}
고[1] = 기준고;
고Bar[1] = 기준고Bar;
저[1] = 기준저;
저Bar[1] = 기준저Bar;
기준고 = Hbody;
기준고Bar = 0;
기준저 = Lbody;
기준저Bar = 0;
추세 = 추세[1];
If 추세[1] == 상승 Then
{
If 고[2] < 고[1] Then 색깔 = 빨강;
Plot1(고[1],"Zigzag",RED);
var1 = 고[1];
var3 = 1;
If 저[2] > 저[1] Then 색깔 = 파랑;
이중파동 = 저[1];
}
Else
{
If 저[2] > 저[1] Then 색깔 = 파랑;
Plot1(저[1],"Zigzag",blue);
Text_New(sdate,stime,저[1],NumToStr(저[1],2));
var2 = 저[1];
var3 = -1;
If 고[2] < 고[1] Then 색깔 = 빨강;
이중파동 = 고[1];
}
}
위의수식에서 전고와전저의 봉의갯수나 걸리는시간을 텍스트로알고싶은데요 가능하면 수식부탁합니다
2013-12-26
194
글번호 70810