커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1662
글번호 230811
답변완료
예스 스탁 프로그램을 처음 사용 합니다
안녕 하세요?
yes stock 수식을 이해 하고 작성 할줄 알게 되면 절망을 희망으로 바꿀수 있을것 같아 감히
수식의 수자도 모르는 문외한이 도전해 볼까 합니다
아~~~
근데 문턱이 높이 매달려 있네요/
어디서 부터 공부해야 할지 모르겠습니다
키움에선 따라 하며 작성 하던 수식이 하이 투자증권에서는 전혀 먹히지 않습니다
다음 신호를 예스 종목검색에서 제대로 적용 하려면 어떵게 해야 할까요?
Tgt=대상;
상승=Tgt>Tgt(1);
하락=Tgt>Tgt(1);
하락조건=Sum(하락,하락횟수) == 하락횟수;
Valuewhen(1,하락조건(1) && 상승,Open);
공부 할수 있는 경로를 알수 없습니다
공부 할수 있는 페이지 링크를 부탁 드립니다
첨부한 파일은 수식을 붇였더니
아래처럼 형식이 맞지 않아 오류가 가득 합니다
수고 하십시요
감사 합니다.
2021-09-11
1131
글번호 152121
불불불 님에 의해서 삭제되었습니다.
2021-09-08
16
글번호 152118
답변완료
수식 문의 드립니다.
조건1 [일]최근 50봉 안에 240 지수이평 골든크로스 1회이상
조건2 [일]최근 20봉 이내에서 최저가 대비 최고가 20% 이상 상승
조건3 [일]최근 20봉 이내 이전 56봉의 평균 거래량의 10배 이상의 거래량 발생한 봉이 있음
조건4 [일]최근 20봉의 최고거래량은 120봉 최고거래량
조건5 [일]이평이격도: 전일종가가 240지수이평의 0%~50% 이내
조건6 [일]최근 20봉의 양봉의 최고거래량은 20봉의 최고거래량과 같다. 즉, 음봉 최고거래량이 양봉최고거래량 보다 작다
조건7 [일]최근 20봉의 중심선으로부터 전일 종가가 -7%~+7%에 해당
조건8 [일]최고거래량 발생이후 이거래량의 10% 이하로 발생한 봉이 2회 이상 있음
조건9 최고가 이후 일봉이 음음양 형태일 경우 다음날 시초가 매수
위 조건으로 종목검색식과 강조식을 부탁드립니다.
2021-09-08
970
글번호 152117
답변완료
수식 문의 입니다
Input : n(0.3);
var : v1(0);
v1 = dayhigh(1) - daylow(1);
var2 = DayOpen + n * v1;
var3 = DayOpen - n * v1;
buy("LE", atstop, var2);
sell("SE", atstop, var3);
전일 레인지 돌파 전략입니다
청산은 시뮬레이션 옵션에서 당일 청산으로 설정해서 테스트 하는데
자꾸 시가 진입이 발생합니다
왜 그런 걸까요?
2021-09-08
834
글번호 152113
답변완료
문의드립니다
가.매수종목검색
1.윌리엄스R지표를 이용한 매수종목
A=WilliamsR(Period) // Period 13
B=eavg(A,이평기간); // 이평기간 5 (윌리엄스R의 이평선)
F=SUM(if(L<=Lowest(L(1), 비교기간),1,0),비교봉수)>= 1;
(F는 최근 비교기간(20봉)중 최근 3봉(비교봉수)이내에 최저가가 있어야 함)
조건1) A(윌리엄스R)가 현재봉포함하여 최근 10봉중 과매도비율(-80)아래에 있는
만족봉이 5봉이상이면서 과매도비율(-80)을 상향돌파하는 종목
조건2) B는 과매도비율(-70)이하이면서 A가 B를 상향돌파하는 종목
조건1 또는 조건2를 만족하면서 F를 충족하고 양봉인 종목검색식
2.볼밴을 이용한 매수종목
B= BBandsDown(52,2);
BB= BBandsDown(20,2);
종가돌파B=C>O and Crossup(C,B);
저종돌파B=C>O and L<B and B<C;
종가돌파BB=C>O and Crossup(C,BB);
저종돌파BB=C>O and L<BB and BB<C;
조건1=(종가돌파B or 저종돌파B) && B>=BB;
조건2=(종가돌파BB or 저종돌파BB) && B>=BB;
F=SUM(if(L<=Lowest(L(1), 비교기간),1,0),비교봉수)>= 1;
(조건1 or 조건2) && F && C>O
조건1 또는 조건2를 만족하면서 F를 충족하고 양봉인 종목검색식
3. RSI를 이용한 매수가능종목
A=RSI(기간); //기간14
B1=crossup(A,과매도비율1); //과매도비율1, 25
B2=crossup(A,과매도비율2); //과매도비율2, 30
D1=valuewhen(1,B1,표시가격); //표시가격 O(시가)
D2=valuewhen(1,B2,표시가격); //RSI가 과매도비율(30)을 돌파하면 그때 시가라인설정
조건1= C>O && D1(1)>D1; 위 D1이 1봉전라인(가격)보다 낮아지고 양봉인 경우
조건2= C>O && D2(1)>D2; 위 D2가 1봉전라인(가격)보다 낮아지고 양봉인 경우
(조건1 or 조건2)
4. 위 조건중 2개이상 만족시의 종목 검색
(1 && 2) OR (1 && 3) OR (2 && 3)
세개의 신호중 2개이상 만족시의 매수가능종목검색식
기간, 비율등은 변수로 처리하여 변경가능하게 해주세요
요구사항이 많아 죄송합니다. 감사합니다.
2021-09-08
985
글번호 152111
답변완료
라인 돌파 5포인트
kospi 200선물
데이트레이딩기준
먼저, 5포인트 간격을 설정합니다.
수식 1) 개장 후 가격이 5포인트 간격라인을 상향 돌파할 때 buy
ex) 시가 422.50 에서 상승하여 425.00 상승돌파하면 buy
수식 2) 개장 후 가격이 5포인트 간격라인을 하향 돌파할 때 buy
ex) 시가 422.50 에서 하락하여 420.00 하락돌파하면 buy
위 수식 2개 부탁드립니다.
2021-12-16
749
글번호 152110
답변완료
[73828]관련 재문의 드립니다.
아래의 수식에 추가해 주시면 감사하겠습니다.
var : PV(0);
var1 = Highest(H,20);
Var2 = Lowest(L,20);
Var3 = Highest(H,240);
var4 = (c-Var2)/(var1-Var2)*100;
if C > O Then
PV = V;
Else
PV = 0;
Condition1 = var1 >= Var2*1.5 and var1 <= Var2*2.0;
#20봉 최고가는 20봉 최저가의 1.5배 이상이고 2.0배 이하이다.
Condition2 = CountIf(C>=C[1]*1.15,20) >= 1;
#20봉 내 전일 종가 대비 종가 15%이상 상승한것이 1회 이상이다.
Condition3 = Var1 == Var3;
#20봉 최고가는 240봉 최고가이다.
Condition4 = CountIf(L<=H*0.90,10) >= 1;
#최근 10봉중에 최고가와 최저가가 -10%이상이 1회 이상이다.
Condition5 = C <= var1*0.85;
#현재가는 20봉 최고가 대비 15% 이상 하락하였다.
Condition6 = CrossDown(Var4,50);
#20일 최고가 초저가 중신선을 데드크로스 한다.
Condition7 = Highest(H,10) == var1;
#10봉 최고가는 20봉 최고가와 같다
Condition8 = H != Highest(H,10);
#현재봉은 10봉최고가가 아님
Condition9 = Highest(PV,20) == Highest(V,20);
#20봉의 양봉의 최고거래량은 20봉의 최고거래량과 같다
if Condition1 and
Condition2 and
Condition3 and
Condition4 and
Condition5 and
Condition6 and
Condition7 and
Condition8 and
Condition9 Then
{
Find(1);
}
Condition6을 삭제하고
아래의 추가조건 부탁드립니다.
1. 최근 20봉 중 발생한 최고거래량은 이전 52봉의 평균 거래량의 10배이상이다.
2. 최고거래량 발생이후 해당 거래량의 10% 이하로 거래량이 발생한 봉이 2개 이상이다.
3. 최근 20봉간 발생한 총 거래금액의 합이 1,000억원 이상이다.
4. 최근 10봉간 종가기준 20봉 중심선의 -10% 이하로 하락한적이 없다.
5. 최근 50봉간 종가가 240일 지수이평선 골든크로스를 1회 이상 한적이 있다. or 종가가 240일 지수이평대비 50% 이하이다.
매수조건을 바꾸려고 합니다.
데드크로스가 아닌 음봉, 음봉, 양봉 순으로 나온경우 다음날 시초가에서 매수하려고 합니다. 마지막 양봉의 종가는 중신선에서 +- 10% 이내 범위이다.
[강조]
최고가와 최저가에 블랙과 그린색, 그리고 매수일에 magenta색으로 강조 부탁드립니다.
2021-09-08
866
글번호 152106
답변완료
검색식 문의 드립니다.
안녕하세요.
일목 후행스팬이 지수51이평과 일목선행1 or 선행2을 돌파하는 검색식 만들려고 하는데요.
후행스팬하고 같은 위치 선행스팬 돌파하는 거 찾으려면
그냥 선행스팬 이라고 해야 하는지 26봉전으로 돌려서 선행스팬[26]이라고 해야 하나요.
즉 위에 게 맞나요? 아래가 맞나요?
검색하니 위치가 정확히 안 맞는 것도 나오고 그래서 헷갈리네요.
정확한 검색시 좀 작성해 주시면 고맙겠습니다.
Input : Period1(51), TurnLen(9), StdLen(26), PrdLen(52);
Variables: 기준선(0), 전환선(0), 후행스팬(0), 선행스팬1(0), 선행스팬2(0);
전환선 = (Highest(High, TurnLen) + Lowest(Low, TurnLen)) / 2;
기준선 = (Highest(High, StdLen) + Lowest(Low, StdLen)) / 2;
후행스팬 = Close;
선행스팬1 = (전환선 + 기준선) / 2 ;
선행스팬2 = (Highest(High, PrdLen) + Lowest(Low, PrdLen)) / 2;
var1 = ema(C,Period1);
if crossup(후행스팬, var1[26])
and
(CrossUp(후행스팬, 선행스팬2) or CrossUp(후행스팬, 선행스팬1))
then Find(1);
/////////////
Input : Period1(51), TurnLen(9), StdLen(26), PrdLen(52);
Variables: 기준선(0), 전환선(0), 후행스팬(0), 선행스팬1(0), 선행스팬2(0);
전환선 = (Highest(High, TurnLen) + Lowest(Low, TurnLen)) / 2;
기준선 = (Highest(High, StdLen) + Lowest(Low, StdLen)) / 2;
후행스팬 = Close;
선행스팬1 = (전환선 + 기준선) / 2 ;
선행스팬2 = (Highest(High, PrdLen) + Lowest(Low, PrdLen)) / 2;
var1 = ema(C,Period1);
if crossup(후행스팬, var1[26])
and
(CrossUp(후행스팬, 선행스팬2[26]) or CrossUp(후행스팬, 선행스팬1[26]))
then Find(1);
2021-09-08
646
글번호 152105
답변완료
문의드립니다!!!
안녕하세요!
1, 아래수식1은 N의 자리에서 세로선과 알람소리가 발생되는데요..
이때 이 N의 조건이 만족시 이 자리와 목표점인 최고저선까지의 사이에 특정색상이 자동으로 칠해지도록 수정이 가능할까요?
가능하다면 이후 목표지점에 도달했을때나 혹은 이조건이 소멸되었을때(즉, 아래 수식에서 N의값이 11틱으로 다시 벌어질때) 이 색상도 다시 소멸될수있으면 좋겠습니다
2, 만약 위의내용이 불가하다면 뭔가 위의내용과 비슷하게 챠트상에 시각적으로 표시할수있는 다른방법이 있다면 도움 부탁드리겠습니다
3, 아래 수식2에서 화면 우하단에 생성되는 알림창은 삭제 부탁드립니다
매번 부탁만 드려서 죄송하고 항상 고마울따름입니다
감사합니다!!!
------------------------------------------------------------------------------
(수식1)
input : N(10),굵기(1);
var : H1(0,data1),L1(0,data1),H2(0,Data1),L2(0,Data1);
var : TL1(0,data1),TL2(0,data1),TL3(0,data1),TL4(0,data1);
H1 = data1(DayHigh(0));
L1 = data1(DayLow(0));
H2 = data4(HighD(0));
L2 = data4(LowD(0));
Plot1(H1,"data1 최고");
Plot2(L1,"data1 최저");
Plot3(H2,"data4 최고");
Plot4(L2,"data4 최저");
#data1가격이 상승해 Data4 최고가-N틱을 만날때
if data1(H) >= H2-PriceScale*N and data1(H[1]) < H2[1]-PriceScale*N Then
{
PlaySound("C:₩예스트레이더₩data₩Sound₩.wav");
TL1 = TL_new(sDate,sTime,99999999,sDate,sTime,0);
TL_SetSize(TL1,굵기);
TL_SetColor(TL1,RED);
}
#data1가격이 하락해 Data4 최저가+N틱을 만날때
if data1(L) <= L2+PriceScale*N and data1(L[1]) > L2[1]+PriceScale*N Then
{
PlaySound("C:₩예스트레이더₩data₩Sound₩.wav");
TL2 = TL_new(sDate,sTime,99999999,sDate,sTime,0);
TL_SetSize(TL2,굵기);
TL_SetColor(TL2,BLUE);
}
#data4가격이 상승해 Data1 최고가-N틱을 만날때
if data4(H) >= H1-PriceScale*N and data4(H[1]) < H1[1]-PriceScale*N Then
{
PlaySound("C:₩예스트레이더₩data₩Sound₩.wav");
TL3 = TL_new(sDate,sTime,99999999,sDate,sTime,0);
TL_SetSize(TL3,굵기);
TL_SetColor(TL3,RED);
}
#data4가격이 하락해 Data1 최저가+N틱을 만날때
if data4(L) <= L1+PriceScale*N and data4(L[1]) > L1[1]+PriceScale*N Then
{
PlaySound("C:₩예스트레이더₩data₩Sound₩.wav");
TL4 = TL_new(sDate,sTime,99999999,sDate,sTime,0);
TL_SetSize(TL4,굵기);
TL_SetColor(TL4,blue);
}
(수식 2)
input : P1(5), P2(10), P3(20), P4(60), P5(120);
var1 = ma(C,P1);
Var2 = ma(C,p2);
Var3 = ma(C,p3);
Var4 = ma(C,p4);
var5 = ma(C,p5);
if (h >= var1 and H[1] < var1[1]) or (L <= var1 and L[1] > var1[1]) Then
{
value1 = var1;
Alert("P1이평 터치");
PlaySound("C:예스트레이더dataSound.wav");
}
if (h >= var2 and H[1] < var2[1]) or (L <= var2 and L[1] > var2[1]) Then
{
value2 = Var2;
Alert("P2이평 터치");
PlaySound("C:예스트레이더dataSound.wav");
}
if (h >= var3 and H[1] < var3[1]) or (L <= var3 and L[1] > var3[1]) Then
{
value3 = Var3;
Alert("P3이평 터치");
PlaySound("C:예스트레이더dataSound.wav");
}
if (h >= var4 and H[1] < var4[1]) or (L <= var4 and L[1] > var4[1]) Then
{
value4 = Var4;
Alert("P4이평 터치");
PlaySound("C:예스트레이더dataSound.wav");
}
if (h >= var5 and H[1] < var5[1]) or (L <= var5 and L[1] > var5[1]) Then
{
value5 = Var5;
Alert("P5이평 터치");
PlaySound("C:예스트레이더dataSound.wav");
}
if value1 > 0 Then
Plot1(value1);
if value2 > 0 Then
Plot2(value2);
if value3 > 0 Then
Plot3(value3);
if value4 > 0 Then
Plot4(value4);
if value5 > 0 Then
Plot5(value5);
2021-09-08
797
글번호 152104