커뮤니티
예스랭귀지 Q&A
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1458
글번호 230811
답변완료
피보나치 전환 박스
input : 전환포인트(0.7);
Array : HD[10](0),HT[10](0),HV[10](0);
Array : LD[10](0),LT[10](0),LV[10](0);
var : cnt(0),Hprice(0),Lprice(0);
var : UpTrend(false),DownTrend(False),Trend(0),ZigZagTL(0),TX(0);
var : TL1(0),TL2(0),TL3(0),TL4(0),TL5(0);
Plot1 (c);
HPrice = H;
LPrice = L;
if Index == 0 or Bdate != Bdate[1] Then
{
HD[0] = sDate;
HT[0] = sTime;
HV[0] = HPrice;
LD[0] = sDate;
LT[0] = sTime;
LV[0] = LPrice;
trend = 0;
}
Else
{
UpTrend = HPrice >= LV[0]+전환포인트;
DownTrend = LPrice <= HV[0]-전환포인트;
if trend <= 0 and UpTrend == true Then
{
trend = 1;
For cnt = 9 DownTo 1
{
HD[cnt] = HD[cnt-1];
HT[cnt] = HT[cnt-1];
HV[cnt] = HV[cnt-1];
}
HD[0] = sDate;
HT[0] = sTime;
HV[0] = HPrice;
ZigZagTL = TL_New(LD[0],LT[0],LV[0],HD[0],HT[0],HV[0]);
TL_SetColor(ZigZagTL,Red);
TL_SetSize(ZigZagTL,1);
TX = text_new(HD[0],HT[0],HV[0],NumToStr(HV[0]-LV[0],2)+" ");
Text_SetStyle(TX,1,1);
Text_SetColor(TX,Black);
Text_SetSize(tx,25);
Text_SetBold(tx,1);
var2 = 10^(LOG10(HV[0])-(LOG10(HV[0])-LOG10(LV[0]))*(38.2/100));
var3 = 10^(LOG10(HV[0])-(LOG10(HV[0])-LOG10(LV[0]))*(50/100));
var4 = 10^(LOG10(HV[0])-(LOG10(HV[0])-LOG10(LV[0]))*(61.8/100));
TL1 = TL_New(LD[0],LT[0],HV[0],NextBarSdate,NextBarStime,HV[0]);
TL2 = TL_New(LD[0],LT[0],var2,NextBarSdate,NextBarStime,var2);
TL3 = TL_New(LD[0],LT[0],var3,NextBarSdate,NextBarStime,var3);
TL4 = TL_New(LD[0],LT[0],var4,NextBarSdate,NextBarStime,var4);
TL5 = TL_New(LD[0],LT[0],LV[0],NextBarSdate,NextBarStime,LV[0]);
TL_SetColor(TL1,Magenta);
TL_SetColor(TL2,Orange);
TL_SetColor(TL3,Green);
TL_SetColor(TL4,Orange);
TL_SetColor(TL5,Green);
}
Else if trend >= 0 and DownTrend Then//하락추세 전환
{
trend = -1;
For cnt = 9 DownTo 1
{
LD[cnt] = LD[cnt-1];
LT[cnt] = LT[cnt-1];
LV[cnt] = LV[cnt-1];
}
LD[0] = sDate;
LT[0] = sTime;
LV[0] = LPrice;
ZigZagTL = TL_New(HD[0],HT[0],HV[0],LD[0],LT[0],LV[0]);
TL_SetColor(ZigZagTL,Blue);
TL_SetSize(ZigZagTL,1);
TX = text_new(LD[0],LT[0],LV[0],NumToStr(HV[0]-LV[0],2)+" ");
Text_SetStyle(TX,1,0);
Text_SetColor(TX,Black);
Text_SetSize(tx,25);
Text_SetBold(tx,1);
var2 = 10^(LOG10(HV[0])-(LOG10(HV[0])-LOG10(LV[0]))*(38.2/100));
var3 = 10^(LOG10(HV[0])-(LOG10(HV[0])-LOG10(LV[0]))*(50/100));
var4 = 10^(LOG10(HV[0])-(LOG10(HV[0])-LOG10(LV[0]))*(61.8/100));
TL1 = TL_New(HD[0],HT[0],HV[0],NextBarSdate,NextBarStime,HV[0]);
TL2 = TL_New(HD[0],HT[0],var2,NextBarSdate,NextBarStime,var2);
TL3 = TL_New(HD[0],HT[0],var3,NextBarSdate,NextBarStime,var3);
TL4 = TL_New(HD[0],HT[0],var4,NextBarSdate,NextBarStime,var4);
TL5 = TL_New(HD[0],HT[0],LV[0],NextBarSdate,NextBarStime,LV[0]);
TL_SetColor(TL1,Magenta);
TL_SetColor(TL2,Orange);
TL_SetColor(TL3,Green);
TL_SetColor(TL4,Orange);
TL_SetColor(TL5,Green);
}
Else
{
if trend == 1 Then
{
if HPrice > HV[0] Then
{
HD[0] = sDate;
HT[0] = sTime;
HV[0] = HPrice;
TL_SetEnd(ZigZagTL,HD[0],HT[0],HV[0]);
Text_SetLocation(TX,HD[0],HT[0],HV[0]);
Text_SetString(TX,NumToStr(HV[0]-LV[0],2)+" ");
var2 = 10^(LOG10(HV[0])-(LOG10(HV[0])-LOG10(LV[0]))*(38.2/100));
var3 = 10^(LOG10(HV[0])-(LOG10(HV[0])-LOG10(LV[0]))*(50/100));
var4 = 10^(LOG10(HV[0])-(LOG10(HV[0])-LOG10(LV[0]))*(61.8/100));
TL_SetBegin(TL1,LD[0],LT[0],HV[0]);
TL_SetBegin(TL2,LD[0],LT[0],Var2);
TL_SetBegin(TL3,LD[0],LT[0],Var3);
TL_SetBegin(TL4,LD[0],LT[0],Var4);
TL_SetBegin(TL5,LD[0],LT[0],LV[0]);
TL_SetEnd(TL1,Sdate,Stime,HV[0]);
TL_SetEnd(TL2,Sdate,Stime,Var2);
TL_SetEnd(TL3,Sdate,Stime,Var3);
TL_SetEnd(TL4,Sdate,Stime,Var4);
TL_SetEnd(TL5,Sdate,Stime,LV[0]);
}
}
if trend == -1 Then
{
if LPrice < LV[0] Then
{
LD[0] = sDate;
LT[0] = sTime;
LV[0] = LPrice;
TL_SetEnd(ZigZagTL,LD[0],LT[0],LV[0]);
Text_SetLocation(TX,LD[0],LT[0],LV[0]);
Text_SetString(TX,NumToStr(HV[0]-LV[0],2)+" ");
var2 = 10^(LOG10(HV[0])-(LOG10(HV[0])-LOG10(LV[0]))*(38.2/100));
var3 = 10^(LOG10(HV[0])-(LOG10(HV[0])-LOG10(LV[0]))*(50/100));
var4 = 10^(LOG10(HV[0])-(LOG10(HV[0])-LOG10(LV[0]))*(61.8/100));
TL_SetBegin(TL1,HD[0],HT[0],HV[0]);
TL_SetBegin(TL2,HD[0],HT[0],Var2);
TL_SetBegin(TL3,HD[0],HT[0],Var3);
TL_SetBegin(TL4,HD[0],HT[0],Var4);
TL_SetBegin(TL5,HD[0],HT[0],LV[0]);
TL_SetEnd(TL1,Sdate,Stime,HV[0]);
TL_SetEnd(TL2,Sdate,Stime,Var2);
TL_SetEnd(TL3,Sdate,Stime,Var3);
TL_SetEnd(TL4,Sdate,Stime,Var4);
TL_SetEnd(TL5,Sdate,Stime,LV[0]);
}
}
}
}
피보나치 38.2부터 50까지 박스. 50부터 61.8까지 박스. 감사합니다.
2024-03-06
575
글번호 177202
2wnwn 님에 의해서 삭제되었습니다.
2024-03-06
12
글번호 177201
답변완료
변환 부탁드려요
늘 감사드리며 신호수식을 종목검색식으로 부탁드립니다
AA=dayhigh()>daylow()*1.07;
BB=dayhigh()-daylow();
상단=Valuewhen(1,AA,BB*상단비율/100+daylow());
하단=Valuewhen(1,AA,BB*하단비율/100+daylow());
M5=ma(c,5);
KK5=M5>M5(1) && M5(1)<M5(2);
q=valuewhen(1,KK5,M5);
M20=ma(c,20);
M60=ma(c,60);
KK5 && c> 0 && crossup(C,상단) && q>하단 &&
(M5>M20 or M5>M60)
지표설정:
상단비율:65
하단비율;50
2024-03-06
467
글번호 177195
nicebs 님에 의해서 삭제되었습니다.
2024-03-06
99
글번호 177194
답변완료
시스템식 요청드립니다.
위의 그림을 확인해보시면,
아래의 수식에 의해서 타점 1이 매수되어야 하는데, 매수가 안되었습니다.
If c >= HH*1.005 AND LatestEntryName(0) == "타점" AND LatestExitName(1) == "5%익절" AND LatestExitName(0) == "P5청산" TheN
Buy("타점1",AtLimit,타점,Floor((베팅금)/타점)*0.6);
혹시 왜 매수가 안되었는지 알수가 있을까요???
예상하기로는 돌파매수타점인데, 고점이 갱신되면서 매수가 안된건가 싶기도 하고, 그렇게 되면 HH(1)을 적용 해야 하나 싶기도 하고
확인이 어려워 요청드립니다.
---------------------------------------------------------------------------------------------
input : 베팅금(1000000);
input : 시작날짜 (20240113),Xtime(110000) ;
input : 타점(5000),손절(1000);
var : P618(0),P5(0),P382(0),HH(0),LL(0);
Var : day(0),EntryDay(0),entry(False),dd(0),ED(0);
if sDate >= 시작날짜 Then
{
if Bdate != Bdate[1] Then
{
entry = true;
day = day+1;
dd = dd+1;
}
if HH == 0 or (HH > 0 and H > HH) Then
HH = H;
if LL == 0 or (LL > 0 and L < LL) Then
LL = L;
}
P618 = LL+(HH-LL)*0.618;
P5 = LL+(HH-LL)*0.5;
P382 = LL+(HH-LL)*0.382;
if TotalTrades > TotalTrades[1] Then
entry = False;
if MarketPosition == 0 and entry == true and c > 타점 Then
Buy("타점",AtLimit,타점,Floor((베팅금)/타점));
If c >= HH*1.005 AND LatestEntryName(0) == "타점" AND LatestExitName(1) == "5%익절" AND LatestExitName(0) == "P5청산" TheN
Buy("타점1",AtLimit,타점,Floor((베팅금)/타점)*0.6);
if ((LatestEntryName(0) == "타점") )Then
ExitLong("5%익절",AtLimit,AvgEntryPrice*1.05,"",Floor((베팅금)/타점)*0.3);
if((LatestEntryName(0) == "타점") ) Then
ExitLong("20%익절",AtLimit,AvgEntryPrice*1.2,"",Floor((베팅금)/타점)*0.3);
if (LatestExitName(0) == "5%익절") and c <= P5 Then
ExitLong("P5청산",AtLimit,P5,"",Floor((베팅금)/타점)*0.3);
if (LatestExitName(0) == "5%익절") and c <= P382 Then
ExitLong("P382청산",AtLimit,P382,"",Floor((베팅금)/타점)*0.4);
if MarketPosition == 1 and sTime > xtime and 손절 >= c Then
ExitLong("손절");
2024-03-06
866
글번호 177193
답변완료
키움수식으로 종목 검색
안녕하세요? 아래 키움증권 수식1, 수식2는 조건을 만족하는 종목에 일봉상 라인을 표시하는 수식인데 예스트레이더로 수식에 맞는 종목만 검색하고 싶습니다. 종목검색식으로 변환 가능할까요? 부탁드립니다.^^
요청검색식은 2가지 입니다.
1. 아래 수식1 또는 수식2를 기간내에 만족하는 종목들을 검색하고 싶습니다.
예) 기간값 15일 이내 이면 15일 이내에 수식1이나 수식2를 만족하는 종목들 검색
2. 기간값 이내에 수식1과 수식 2를 만족하는 종목들 중에 수식1과 수식2를 재돌파하는 종목검색
이 두가지 종목검색식 요청 드립니다.
* 키움수식은 아래와 같습니다.
수식1
A=crossup(C*V,100000000000);
B=countsince(date!=date(1),A)==1;
valuewhen(1,B&&!B(1),종가)
수식2
A=crossup(C*V,50000000000);
B=countsince(date!=date(1)==1,A);
valuewhen(1,B&&!B(1),종가)
2024-03-06
1137
글번호 177192
답변완료
봉번호 수식
함수사전에서 검색되는 다음 3가지 인덱스의 차이를 알고 싶습니다.
Index
BarIndex
GlobalBarIndex
지표 스크립트에 넣고 비교해봐도 차이를 모르겠습니다.
2024-03-05
951
글번호 177191
답변완료
키움에서 사용하는 신호수식을 예스로 옴기고 싶습니다
max( avg(C,short), avg(C,mid), avg(C,long)) <
min( avg(C,short), avg(C,mid), avg(C,long)) * (1+Percent/100) &&
C > highest(H(1),5)
and
avg(V, 5) >= 5000
and
V > V(1) * Multiple
and
C > (highest(high,midPeriod)+lowest(low,midPeriod))/2
and
C > avg(C,60)
and
키움5분봉차트 에서 사용하고 있습니다 예스에서 종목 검색으로 사용하고 싶어서 문의드립니다
2024-03-05
914
글번호 177190
답변완료
문의드립니다
1.
아래수식으로 검색해봤는데
{
CountIF(CrossDown(C,Var22),5)>=1 and C > 2000;
Find(1);
}
5봉이후에 조건에만족한 종목도검색이됩니다 종목수도 몇백개씩 검색이되구요
당일부터 5봉이전에 1번이상 하락크로스한 종목을찾고싶은데 어케해야할까요?
2.
또 전일에,전전일에,전전전일에 <--- 이런식으로 과거에 검색되어진종목도찾고싶은데
알려주신Condition1 = (조건); 이렇게 검색했더니 이것도 과거에검색되어진 종목까지 검색됩니다 최근에조건을 만족시킨종목은 어케수식을 만들수있나요?
2024-03-05
907
글번호 177189