커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1547
글번호 230811
답변완료
수식요청드려요~
1. [종목검색식요청]
아래 수식은 전에 만들어주신 wave trend 라는 검색식 입니다.
기존엔 wt1 wt2 크로스되는 종목을 찾는거였는데요
이번엔 wt1-wt2 값이 연속 1봉,2봉,3봉 상승하는걸 찾고 싶습니다.
(연속봉수 설정 변수를 알려주시면 됩니다.)
[첨부]기존에 만들어주신 크로스 검색식
input : n1(5),n2(22);
var : ap(0),esa(0),dd(0),ci(0),d(0);
var : wt1(0),wt2(0);
ap = (H+L+C)/3;
esa = ema(ap, n1);
d = ema(abs(ap - esa), n1);
ci = (ap - esa) / (0.015 * d);
wt1 = ema(ci,n2);
wt2 = ma(wt1,4);
if crossup(wt1,wt2) Then
Find(1);
==============================
2.[지표요청]
만들고 싶은 지표는 Williams Alligator 입니다.
제가 설명이 부족할듯하여 간단하게 설명된 사이트 링크를 첨부합니다.
번거로우시겠지만 확인 부탁드립니다.
색상은 사이트랑 동일하게 해주세요 ^^;
입술(녹색) > 이빨(빨강) > 턱(파랑)
https://www.ifcmarkets.com/ko/ntx-indicators/alligator
3.[종목검색식요청]
조건1. 2번의 Williams Alligator 지표 이평선이 정배열 이고
(입술(녹색) > 이빨(빨강) > 턱(파랑) 순서입니다.)
조건2. 종가가 입술(녹색) 보다 큰 종목
4.[종목검색식요청]
조건1. 10봉이내에 Williams Alligator 지표 이평선이 정배열로 바뀐 종목
(1봉전 역배열 0봉전 정배열 바뀐걸로 하면 종목수가 거의안나와서 그렇습니다.)
조건2. 정배열 전환시 종가가 입술(녹색) 보다 큰 종목
(5봉 이내도 하나 해주세요. 너무많이 나올까봐요 ^^)
도움에 감사드리고 항상 좋은일만 있으시길 바랍니다~
감사합니다~
2023-03-21
1925
글번호 167353
답변완료
문의드립니다
value1=cci(21);
if value1[0] >= 60 then find(1);
//검증 문제없는데 결과가 없네요...
2023-03-20
1431
글번호 167352
답변완료
문의 드립니다.~~~~
수고하십니다,
아래식의 손익의 결과가
완전히 반대로 되는 식을 부탁드립니다.
input : ntime(60),n(20);
input : 익절틱수(100),손절틱수(50);
input : StartTime(70000),EndTime(45000);
var : S1(0),D1(0),TM(0),TF(0);
var : cnt(0),SumSqrt(0),Stdv(0);
var : sum(0),BBmd(0),Bbup(0),BBdn(0);
Array : CC[100](0);
var : Tcond(false);
if (NextBarSdate != sdate and NextBarStime >= EndTime) or
(NextBarSdate == sdate and NextBarStime >= EndTime and stime < EndTime) Then
Tcond = False;
if (NextBarSdate != sdate and NextBarStime >= StartTime) or
(NextBarSdate == sdate and NextBarStime >= StartTime and stime < StartTime) Then
{
Tcond = true;
S1 = TimeToMinutes(NextBarStime);
D1 = NextBarSdate;
}
if D1 > 0 then
{
if NextBarSdate == D1 Then
TM = TimeToMinutes(NextBarStime)-S1;
Else
TM = TimeToMinutes(NextBarStime)+1440-S1;
TF = TM%ntime;
if NextBarSdate != sdate or
(NextBarSdate == sdate and ntime > 1 and TF < TF[1]) or
(NextBarSdate == sdate and ntime > 1 and TM >= TM[1]+ntime) or
(NextBarSdate == sdate and ntime == 1 and TM > TM[1]) Then
{
var1 = NextBarOpen;
}
if Tcond == true and MarketPosition >= 0 Then
Sell("시작매도",AtStop,var1-PriceScale*n);
}
IF Endtime > starttime Then
SetStopEndofday(Endtime);
Else
{
if sDate != sDate[1] Then
SetStopEndofday(Endtime);
}
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
{
IF Endtime <= starttime Then
{
SetStopEndofday(0);
}
}
2023-03-20
1325
글번호 167351
답변완료
문의드립니다.
전환비율을 수정할 수 있도록 외부변수 수정부탁드립니다.(전환비율 5)
Input : length(10),Per1(1),Per2(2),Per3(3),Per4(4),Per5(5);
Var:j(0),jj(0),HH(0),LL(0),최종고가(0),최종저가(0),최종꼭지점(""),처리구분("");
var : TL1(0),TL11(0),TL12(0),TL13(0),TL14(0),TL15(0);
var : TL2(0),TL21(0),TL22(0),TL23(0),TL24(0),TL25(0);
Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime
HH = H;
LL = L;
If Index == 0 Then
{
고[1,1] = HH;
저[1,1] = LL;
}
Condition1 = Highest(HH,length) == HH and 최종고가 <> HH;
Condition2 = Lowest (LL,length) == LL and 최종저가 <> LL;
처리구분 = "";
If Condition1 and Condition2 Then// 기간고점과 기간저점 동시 발생
{
If 최종꼭지점 == "저점" Then
{
If 저[1,1] > LL Then 처리구분 = "저점처리";
Else 처리구분 = "고점처리";
}
Else If 최종꼭지점 == "고점" Then
{
If 고[1,1] < HH Then 처리구분 = "고점처리";
Else 처리구분 = "저점처리";
}
}
Else If Condition1 Then 처리구분 = "고점처리";
Else If Condition2 Then 처리구분 = "저점처리";
If 처리구분 == "고점처리" Then
{
최종고가 = HH;// 신규고점을 체크하기 위해 저장
If 최종꼭지점 == "저점" Then
{
TL_SetEnd(TL11,저[1,3],저[1,4],고[1,1]*(1-Per1/100));
TL_SetEnd(TL12,저[1,3],저[1,4],고[1,1]*(1-Per2/100));
TL_SetEnd(TL13,저[1,3],저[1,4],고[1,1]*(1-Per3/100));
TL_SetEnd(TL14,저[1,3],저[1,4],고[1,1]*(1-Per4/100));
TL_SetEnd(TL15,저[1,3],저[1,4],고[1,1]*(1-Per5/100));
For j = 10 DownTo 2
{
For jj = 1 To 4
{
고[j,jj] = 고[j-1,jj];
}
}
고[1,1] = HH;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]);
TL_SetColor(TL1,Red);
TL_SetSize(TL1,1);
#TL11 = TL_New(고[1,3],고[1,4],고[1,1]*(1-Per1/100),NextBarSdate,NextBarStime,고[1,1]*(1-Per1/100));
#TL12 = TL_New(고[1,3],고[1,4],고[1,1]*(1-Per2/100),NextBarSdate,NextBarStime,고[1,1]*(1-Per2/100));
#TL13 = TL_New(고[1,3],고[1,4],고[1,1]*(1-Per3/100),NextBarSdate,NextBarStime,고[1,1]*(1-Per3/100));
#TL14 = TL_New(고[1,3],고[1,4],고[1,1]*(1-Per4/100),NextBarSdate,NextBarStime,고[1,1]*(1-Per4/100));
#TL15 = TL_New(고[1,3],고[1,4],고[1,1]*(1-Per5/100),NextBarSdate,NextBarStime,고[1,1]*(1-Per5/100));
#TL_SetColor(TL11,Blue);
#TL_SetColor(TL12,Blue);
#TL_SetColor(TL13,Blue);
#TL_SetColor(TL14,Blue);
#TL_SetColor(TL15,Blue);
}
Else If 고[1,1] < HH Then// 1번 고점보다 높은 고가 출현
{
고[1,1] = HH;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]);
TL_SetBegin(TL11,고[1,3],고[1,4],고[1,1]*(1-Per1/100));
TL_SetBegin(TL12,고[1,3],고[1,4],고[1,1]*(1-Per2/100));
TL_SetBegin(TL13,고[1,3],고[1,4],고[1,1]*(1-Per3/100));
TL_SetBegin(TL14,고[1,3],고[1,4],고[1,1]*(1-Per4/100));
TL_SetBegin(TL15,고[1,3],고[1,4],고[1,1]*(1-Per5/100));
}
최종꼭지점 = "고점";
}
#==========================================#
If 처리구분 == "저점처리" Then
{
최종저가 = LL;
If 최종꼭지점 == "고점" then
{
TL_SetEnd(TL21,고[1,3],고[1,4],저[1,1]*(1+Per1/100));
TL_SetEnd(TL22,고[1,3],고[1,4],저[1,1]*(1+Per2/100));
TL_SetEnd(TL23,고[1,3],고[1,4],저[1,1]*(1+Per3/100));
TL_SetEnd(TL24,고[1,3],고[1,4],저[1,1]*(1+Per4/100));
TL_SetEnd(TL25,고[1,3],고[1,4],저[1,1]*(1+Per5/100));
For j = 10 DownTo 2
{
For jj = 1 To 4
{
저[j,jj] = 저[j-1,jj];
}
}
저[1,1] = LL;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
TL2 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]);
TL_SetColor(TL2,Blue);
TL_SetSize(TL2,1);
TL21 = TL_New(저[1,3],저[1,4],저[1,1]*(1-Per1/100),NextBarSdate,NextBarStime,저[1,1]*(1+Per1/100));
TL22 = TL_New(저[1,3],저[1,4],저[1,1]*(1-Per2/100),NextBarSdate,NextBarStime,저[1,1]*(1+Per2/100));
TL23 = TL_New(저[1,3],저[1,4],저[1,1]*(1-Per3/100),NextBarSdate,NextBarStime,저[1,1]*(1+Per3/100));
TL24 = TL_New(저[1,3],저[1,4],저[1,1]*(1-Per4/100),NextBarSdate,NextBarStime,저[1,1]*(1+Per4/100));
TL25 = TL_New(저[1,3],저[1,4],저[1,1]*(1-Per5/100),NextBarSdate,NextBarStime,저[1,1]*(1+Per5/100));
TL_SetColor(TL21,Red);
TL_SetColor(TL22,Red);
TL_SetColor(TL23,Red);
TL_SetColor(TL24,Red);
TL_SetColor(TL25,Red);
}
Else If 저[1,1] > LL then
{
저[1,1] = LL;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
TL_SetEnd(TL2,저[1,3],저[1,4],저[1,1]);
TL_SetBegin(TL21,저[1,3],저[1,4],저[1,1]*(1+Per1/100));
TL_SetBegin(TL22,저[1,3],저[1,4],저[1,1]*(1+Per2/100));
TL_SetBegin(TL23,저[1,3],저[1,4],저[1,1]*(1+Per3/100));
TL_SetBegin(TL24,저[1,3],저[1,4],저[1,1]*(1+Per4/100));
TL_SetBegin(TL25,저[1,3],저[1,4],저[1,1]*(1+Per5/100));
}
최종꼭지점 = "저점";
}
TL_SetEnd(TL11,NextBarSdate,NextBarStime,고[1,1]*(1-Per1/100));
TL_SetEnd(TL12,NextBarSdate,NextBarStime,고[1,1]*(1-Per2/100));
TL_SetEnd(TL13,NextBarSdate,NextBarStime,고[1,1]*(1-Per3/100));
TL_SetEnd(TL14,NextBarSdate,NextBarStime,고[1,1]*(1-Per4/100));
TL_SetEnd(TL15,NextBarSdate,NextBarStime,고[1,1]*(1-Per5/100));
TL_SetEnd(TL21,NextBarSdate,NextBarStime,저[1,1]*(1+Per1/100));
TL_SetEnd(TL22,NextBarSdate,NextBarStime,저[1,1]*(1+Per2/100));
TL_SetEnd(TL23,NextBarSdate,NextBarStime,저[1,1]*(1+Per3/100));
TL_SetEnd(TL24,NextBarSdate,NextBarStime,저[1,1]*(1+Per4/100));
TL_SetEnd(TL25,NextBarSdate,NextBarStime,저[1,1]*(1+Per5/100));
2023-03-20
1256
글번호 167350
답변완료
data1과 data2로 만든 값(지표)의 +값 평균, -값 평균
아래처럼 data1과 data2로 '대비'라는 지표 하나를 만들었는데, 0을 기준으로 위아래로 움직이는 지표입니다.
---------------------------------------------------
var : ratio(0), ratio전일(0), 대비(0);
ratio = data2(c)/c*100;
ratio전일 = data2(CloseD(1))/c[1]*100;
대비 = ratio - ratio전일;
plot2(대비, "대비");
-------------------
여기서
1) +일때의 값만 모아서 20일 평균값
2) -일때의 값만 모아서 20일 평균값
이렇게 지표로 부탁드립니다
2023-03-20
953
글번호 167349
구호리 님에 의해서 삭제되었습니다.
2023-03-20
5
글번호 167348
답변완료
즉시 매도
60분봉에서 30분 경과후부터 해당하는 60분봉의 최저가를 경신하면 무조건 즉시 매도 가능합니까? (즉, 저가 하단값 아래로 돌파시)
감사합니다.
2023-03-20
1028
글번호 167347
답변완료
도움부탁드립니다
안녕하세요.
문의 하여답변감사합니다.
수식을기록 하여 검증을 한결과 오류창에 메세지가
줄수20 ,열수79 -선언되지 않은 이름 한두호가 위아래라인굵기'아(가)사용되었습니다.
Plot 라인의 두께값으로 수치형 데이터가 와야 합니다.
라고 나옵니다. 어떻게 수정을 하는지요 알려주세요.
감사합니다.
2023-03-20
961
글번호 167342
돈을잃자 님에 의해서 삭제되었습니다.
2023-03-20
46
글번호 167331