커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1645
글번호 230811
답변완료
문의 드립니다!
1, 아래 78834 답변관련하여 추가문의 드립니다
수식을 국선 분봉에 적용해본결과 plot5, plot6, plot7 선이 보이지않는데요
* 기본챠트속성창에서 "화면(기본챠트)"에 지정된 챠트입니다
"화면(기본챠트*지표))"에 지정시는 챠트가 상하로 벌어져서 캔들을 볼수가없네요
무엇이 문제인지 한번더 검토 부탁드리겠습니다
2, 아래수식중 제가 올린 원본수식의 아래부분에 해당되는 선이 대상입니다
* if trend == 1 Then
plot1(upv,"Trend",MAGENTA);
Else
plot1(dnv,"Trend",blue);
(1) 이수식을 서로 다른 조건의 행사가에 적용시는 선이 다르게 발생되는데요
예를들어 1분봉과 2분봉에 적용시 각각 선이 다른위치에 나타납니다
* 첫번째선은 data1에 지정하고 두번째선은 data2에 지정
(2) 이 2개의 선과 선사이에 색상을 입힐수있는 방법이 있을까요?
수식으로든 다른방법으로든 가능한 방법이 있다면 부탁드리겠습니다
감사합니다!!!
--------------------------------------------------------------------------------
안녕하세요
예스스탁입니다.
input : n(2),P1(5),P2(20),P3(60);
input : Periods(10),Multiplier(3.0),changeATR(true),showsignals(true),highlighting(true);
var : src(0),ATR2(0),ATrv(0),upv(0),dnv(0),trend(1);
var : mav1(0),mav2(0),mav3(0);
src = (h+l)/2;
atr2 = ma(TrueRange, Periods);
atrv = iff(changeATR, atr(Periods), atr2);
upv = src-(Multiplier*atrv);
upv = iff(close[1] > upv[1],max(upv,upv[1]), upv);
dnv = src+(Multiplier*atrv);
dnv = iff(close[1] < dnv[1],min(dnv, dnv[1]), dnv);
trend = iff(trend == -1 and close > dnv[1] , 1 ,IFf(trend == 1 and close < upv[1] , -1 , trend));
if trend == 1 Then
plot1(upv,"Trend",MAGENTA);
Else
plot1(dnv,"Trend",blue);
if C > Plot1 Then
plot2(999999999,"라인1");
Else
plot2(0,"라인1");
var1 = Round(IFf(Trend == 1,upv,dnv),2);
if CountIf(trend != 1,2) == 2 and
H < var1-PriceScale*n and H[1] >= var1[1]-PriceScale*n Then
plot3(999999999,"라인2");
Else
plot3(0,"라인2");
if CountIf(trend == 1,2) == 2 and
L > var1+PriceScale*n and L[1] <= var1[1]+PriceScale*n Then
plot4(999999999,"라인3");
Else
plot4(0,"라인3");
mav1 = round(ma(C,P1),2);
mav2 = round(ma(C,P2),2);
mav3 = round(ma(C,P3),2);
if var1 == mav1 Then
value11 = value1;
if var1 == mav2 Then
value12 = value1;
if var1 == mav3 Then
value13 = value1;
if value11 > 0 Then plot5(value11,"Plot1-mav1일치");
if value12 > 0 Then plot6(value12,"Plot1-mav2일치");
if value13 > 0 Then plot7(value13,"Plot1-mav3일치");
즐거운 하루되세요
> 유로파54 님이 쓴 글입니다.
> 제목 : 문의 드립니다!
> 안녕하세요!
일전에 작성해주신 수식 많은 도움이 될것같습니다
다시한번 감사드립니다!!
아래수식과 이평선이 동시에 만족될때(일치할때)의 수식도 한번더 부탁드립니다
이평선은 5일선 20일선 60일선을 예시로해서 3개의 선이 발생토록 부탁드립니다
---------------------------------------------------------
input : n(2);
input : Periods(10),Multiplier(3.0),changeATR(true),showsignals(true),highlighting(true);
var : src(0),ATR2(0),ATrv(0),upv(0),dnv(0),trend(1);
src = (h+l)/2;
atr2 = ma(TrueRange, Periods);
atrv = iff(changeATR, atr(Periods), atr2);
upv = src-(Multiplier*atrv);
upv = iff(close[1] > upv[1],max(upv,upv[1]), upv);
dnv = src+(Multiplier*atrv);
dnv = iff(close[1] < dnv[1],min(dnv, dnv[1]), dnv);
trend = iff(trend == -1 and close > dnv[1] , 1 ,IFf(trend == 1 and close < upv[1] , -1 , trend));
if trend == 1 Then
plot1(upv,"Trend",MAGENTA);
Else
plot1(dnv,"Trend",blue);
if C > Plot1 Then
plot2(999999999,"라인1");
Else
plot2(0,"라인1");
var1 = IFf(Trend == 1,upv,dnv);
if CountIf(trend != 1,2) == 2 and
H < var1-PriceScale*n and H[1] >= var1[1]-PriceScale*n Then
plot3(999999999,"라인2");
Else
plot3(0,"라인2");
if CountIf(trend == 1,2) == 2 and
L > var1+PriceScale*n and L[1] <= var1[1]+PriceScale*n Then
plot4(999999999,"라인3");
Else
plot4(0,"라인3");
2022-09-20
985
글번호 162334
답변완료
수식문의
1.지표구현이 안돼서요.확인좀 부탁 합니다.
Input:전환포인트(1);
Var:j(0),upTr(100),dnTr(-100),trnd(0),TL(0),
date11(0),date12(0),time11(0),time12(0),TL1(0),
date21(0),date22(0),time21(0),time22(0),TL2(0),
date31(0),date32(0),time31(0),time32(0),TL3(0);
Array:hiVal[10](0),loVal[10](0),hiBar[10](0),loBar[10](0);
var : TL13(0),TL14(0),color(0),Tx1(0),Tx2(0),tx3(0),tx4(0);
for j = 1 to 9 {
loBar[j] = loBar[j] + 1;
hiBar[j] = hiBar[j] + 1;
}
if hiVal[0] <= H or hiVal[0] == 0 then
{
hiVal[0] = H;
hiBar[0] = 0;
}
else
{
hiBar[0] = hiBar[0] + 1;
}
if loVal[0] >= L or loVal[0] == 0 then
{
loVal[0] = L;
loBar[0] = 0;
}
else
{
loBar[0] = loBar[0] + 1;
}
if trnd != dnTr && hiVal[0] > H && hiVal[0]-전환포인트 > L then
trnd = dnTr;
else if trnd != upTr && loVal[0] < L && loVal[0]+전환포인트 < H then
trnd = upTr;
if trnd[1] == upTr and trnd == dnTr then
{
SELL();
for j = 8 downto 1
{
hiVal[j+1] = hiVal[j];
hiBar[j+1] = hiBar[j];
}
hiVal[1] = hiVal[0];
hiBar[1] = hiBar[0];
hiVal[0] = H;
hiBar[0] = 0;
loVal[0] = L;
loBar[0] = 0;
date11 = date[loBar[1]]; //추세선 시작일. 전저점의 날짜
time11 = stime[loBar[1]]; //추세선 시작시간
Value11 = loVal[1]; //추세선 시작가격
date12 = date[hiBar[1]]; //추세선 종료일. 전고점의 날짜
time12 = stime[hiBar[1]]; //추세선 종료시간
Value12 = hiVal[1]; //추세선 종료가격
TL1 = TL_New(date11,time11,Value11,date12,time12,Value12);
}
if trnd[1] == dnTr and trnd == dnTr and
hiVal[1] < hiVal[0] and
hiVal[0]-전환포인트 > L then {
hiVal[1] = hiVal[0];
hiBar[1] = hiBar[0];
hiVal[0] = H;
hiBar[0] = 0;
loVal[0] = L;
loBar[0] = 0;
date12 = date[hiBar[1]]; //추세선 종료일
time12 = stime[hiBar[1]];
Value12 = hiVal[1];
TL_SetEnd(TL1, date12,time12,Value12);
if trnd[1] == dnTr and trnd == upTr then
{
BUY();
for j = 8 downto 1
{
loVal[j+1] = loVal[j];
loBar[j+1] = loBar[j];
}
loVal[1] = loVal[0];
loBar[1] = loBar[0];
loVal[0] = L;
loBar[0] = 0;
hiVal[0] = H;
hiBar[0] = 0;
date11 = date[hiBar[1]];
time11 = stime[hiBar[1]];
Value11 = hiVal[1];
date12 = date[loBar[1]];
time12 = stime[loBar[1]];
Value12 = loVal[1];
TL1 = TL_New(date11,time11,Value11,date12,time12,Value12);
}
if trnd[1] == upTr and trnd == upTr and
loVal[1] > loVal[0] and
loVal[0]+전환포인트 < H then
{
loVal[1] = loVal[0];
loBar[1] = loBar[0];
loVal[0] = L;
loBar[0] = 0;
hiVal[0] = H;
hiBar[0] = 0;
date12 = date[loBar[1]];
time12 = stime[loBar[1]];
Value12 = loVal[1];
TL_SetEnd(TL1, date12,time12,Value12);
}
if trnd == upTr and loVal[2] > loVal[1] then{
TL_SetColor(TL1,BLUE);
color = blue;
}
else if trnd == dnTr and hiVal[2] < hiVal[1] then{
TL_SetColor(TL1,RED);
color = RED;
}
else
{
TL_SetColor(TL1,BLACK);
color = BLACK;
}
TL_SetSize(TL1,2);
TL_SetColor(TL2,RED);
TL_SetColor(TL3,BLUE);
2. 분봉에서 첫봉이 완성되면, 첫봉의 고,저점이 당일 고가,저가가 됩니다.
a지표 ; 이때, 첫봉포함 새로운 고점을 만든봉만의 고점 누적평균값.[이전 당일 고점과
동일가제외]
b지표 ; " 저점을 " 저점 " [ "
]
c지표 ; " , 첫봉포함 새로운 고점,저점을 만든봉들만의 고점,저점 평균값.
즉, 첫봉포함해서 신고점,저점을 만든 봉만을 평균 하고 싶은것입니다.
2022-09-20
1495
글번호 162333
답변완료
질문드립니다
안녕하세요 어제 질문 답변 감사드립니다.
3% 이상 하락한 종목중에, DEMA 20선이 DEMA 60선을 상향돌파하는 종목 검색식을 만들어주셨는데요
DEMA20 선이 MA20(그냥 이평선)을 상햘돌파통과하는 것으로 만드는 것을 어려울까요?
원래 제가 이렇게 질문 드렸는데 DEMA 20/ DEMA60으로 주신건 이유가 있을 것 같지만 제가 평소 보는것은 DEMA20-MA20 인지라 한번 더 질문 드립니다.
다음 수식은 어제 답변 주셨던 내용입니다. 여기서 DEMA60 부분만 그냥 이평 20선으로 바꿔주시면 될 것 같습니다. 감사합니다.
INPUTS: LENGTH1(20),LENGTH2(60);
VARS : DEMA1(0),DEMA2(0);
var1= EMA(C,LENGTH1);
value1= EMA(EMa(C,LENGTH1),LENGTH1);
var2= EMA(C,LENGTH2);
value2= EMA(EMa(C,LENGTH2),LENGTH2);
DEMA1 = var1 * 2 - value1;
DEMA2 = var2 * 2 - value2;
if C <= highest(H,30)*0.97 and CrossUp(DEMA1,DEMA2) Then
Find(1);
2022-09-19
1385
글번호 162332
배움이 님에 의해서 삭제되었습니다.
2022-09-19
21
글번호 162330
답변완료
시뮬레이션 차트오류
var:A(false);
A=선언;
조건 A == false then ......
시뮬레이션차트 적용시
"논리값(참/거짓)이나 논리표현식이 와야합니다" 오류가 떠서
다른글을 보니 false 를 0으로 수정해야된다고 해서 수정하였더니
편집기에서 선언부분에 "연산자 앞뒤 형태가 같아야 합니다." 오류가 뜹니다.
도움부탁드립니다.
2022-09-19
904
글번호 162329
답변완료
지표
항상감사합니다.
지표문의드립니다
1]
봉(N) 100
고저사이에서
하락일때-하락1파저가/상승2파고가/하락3파저가/상승4파고가/
하락5파저가/상승6파고가/하락7파저가/
상승일때-상승1파고가/하락2파저가/상승3파고가/하락4파저가/
상승5파고가/하락6파저가/상승7파고가
지표에서 가격이 나올까요?
2]
지표에서 가격이 가능하다면
검색에서 꺽인캔들에 고가표시/저가표시 될까요?
2022-09-19
1048
글번호 162328
답변완료
수식 수정부탁드립니다
input : P1(5),P2(20),Period1(20),변곡기간(3);
var : A5(0),A20(0),A5U(False),A5D(False),A20U(False),A20D(False);
var : A5UN(False),A5DN(False),A20UN(False),A20DN(False);
var : Ucnt1(0),Ucnt2(0),Ucnt3(0),Dcnt1(0),Dcnt2(0),Dcnt3(0);
var : Utx1(0),Utx2(0),Utx3(0),Dtx1(0),Dtx2(0),Dtx3(0);
var : HMAD(False),HMAU(false);
#이평선 상승하락 정의
A5 = ma(C,P1);# 5이평
A20 = ma(C,P2);# 20이평
A5U = A5[2] > A5[1] and A5[1] < A5 ; //5이평선 하락후 상승전환
A5D = A5[2] < A5[1] and A5[1] > A5 ; //5이평선 상승후 하락전환
A20U = A20[2] > A20[1] and A20[1] < A20 ; //20이평선 하락후 상승전환
A20D = A20[2] < A20[1] and A20[1] > A20 ; //20이평선 상승후 하락전환
#HMA선 상승하락 정의
var1 = ma(C,Period1/2);
var2 = ma(C,Period1);
var3 = ma(2*var1-Var2,SqRt(Period1)); #HMA선
HMAU = var3 > var3[1] and CountIf( var3<var3[1], 변곡기간 )[1] == 변곡기간 ; #HMA선 상승전환(연속3봉하락후)
HMAD = var3 < var3[1] and CountIf( var3>var3[1], 변곡기간 )[1] == 변곡기간 ; #HMA선 하락전환(연속3봉상승후)
//5이평선 하락후 상승전환
if A5U == true Then
{
value1 = A5[1];
Value2 = value1[1];
if value1 >= Value2 Then
Ucnt1 = Ucnt1+1; //5이평상승의 전변곡점보다 높아지면 올람숫자카운팅을 계속해야하고
Else
Ucnt1 = 1; //5이평상승의 전변곡점보다 낮아지면 0이아닌 1로 계속 재세팅카운팅한다
Utx1 = text_new(sDate[1],sTime[1],L[1],NumToStr(Ucnt1,0)); //텍스트 신규숫자(날자, 시간, 표시위치, 넘버링)
Text_SetStyle(Utx1,2,0); //지정한 텍스트(Utx1)개체의 수평및수직의 정렬위치 설정/(개체,수평, 수직위치)/수평-왼쪽0,오른쪽1,중앙2/수직-상단0,하단1,중앙2
Text_SetSize(Utx1,14+(Ucnt1*6)); //발생횟수표현 숫자의 크기?
Text_SetColor(Utx1,Red); //발생횟수표현 숫자의 색상?
}
//5이평선 상승후 하락전환
if A5D == true Then
{
value3 = A5[1];
Value4 = value3[1];
if value3 < Value4 Then
Dcnt1 = Dcnt1+1; //5이평하락의 전변곡점보다 낮아지면 올람숫자카운팅을 계속해야하고
Else
Dcnt1 = 1; //5이평하락의 전변곡점보다 높아지면 0이아닌 1로 계속 재세팅카운팅한다
Dtx1 = text_new(sDate[1],sTime[1],H[1],NumToStr(Dcnt1,0));
Text_SetStyle(Dtx1,2,1);
Text_SetSize(Dtx1,14+(Dcnt1*4));
Text_SetColor(Dtx1,Blue);
}
//20이평선 하락후 상승전환
if A20U == true Then
{
value5 = A20[1];
Value6 = value5[1];
if value5 >= Value6 Then
Ucnt2 = Ucnt2+1;
Else
Ucnt2 = 1;
Utx2 = text_new(sDate[1],sTime[1],L[1],NumToStr(Ucnt2,0));
Text_SetStyle(Utx2,2,0);
Text_SetSize(Utx2,16+(Ucnt1*4));
Text_SetColor(Utx2,Yellow);
}
//20이평선 상승후 하락전환
if A20D == true Then
{
value7 = A20[1];
Value8 = value7[1];
if value7 < Value8 Then
Dcnt2 = Dcnt2+1;
Else
Dcnt2 = 1;
Dtx2 = text_new(sDate[1],sTime[1],H[1],NumToStr(Dcnt2,0));
Text_SetStyle(Dtx2,2,1);
Text_SetSize(Dtx2,16+(Dcnt1*4));
Text_SetColor(Dtx2,Turquoise);
}
//HMA선 하락후 상승전환
if HMAU == true Then
{
value9 = Var3[1];
Value10 = value9[1];
if value9 >= Value10 Then
Ucnt3 = Ucnt3+1;
Else
Ucnt3 = 1;
Utx3 = text_new(sDate[1],sTime[1],value9,NumToStr(Ucnt3,0));
Text_SetStyle(Utx3,2,0);
Text_SetSize(Utx3,18+(Ucnt1*4));
Text_SetColor(Utx3,White);
}
//HMA선 상승후 하락전환
if HMAD == true Then
{
value11 = Var3[1];
Value12 = value11[1];
if value11 < Value12 Then
Dcnt3 = Dcnt3+1;
Else
Dcnt3 = 1;
Dtx3 = text_new(sDate[1],sTime[1],value11,NumToStr(Dcnt3,0));
Text_SetStyle(Dtx3,2,1);
Text_SetSize(Dtx3,18+(Dcnt1*4));
Text_SetColor(Dtx3,Black);
}
위 수식에서 몇가지의 수정보완사항을 요청드립니다.
1. 이평선의 상승 또는 하락변곡이 있음에도 카운팅 표시가 되지 않는게 있는데 다시 한번도 수식재검토를 요청하고요
2. 제가 SetStyle에 대한 것을 공부해서 적용해도 잘 이해를 할 수가 없어 부탁드리는 것인데 5이평과 20이평선의 해당봉의 고가(하락변곡시), 저가(상승변곡시)에 카운팅 숫자가 표시하되 5이평선변곡은 원형 숫자로, 20이평선은 4각형테두리 숫자로 표시되고, HMA선의 변곡시에는 HMA선의 위/아래에 마름모테두리 숫자로 표시되게 해주세요
2022-09-19
1131
글번호 162316
답변완료
문의 드립니다.
안녕하십니까?
몇일전 종목 검색식 잘 받았습니다.
감사합니다.
일목균형표
기준선 = 26
선행1 = 52
선행2 = 75
를 사용 하고 있습니다.
전환선,후행스팬은 사용하지 않습니다.
수치를 이렇게 사용할때
주가가 기준선을 돌파하거나,같을때 차트에 화살표로 표시가 되었으면 합니다.
화살표가 아니더라도 표시가 강하게 볼수 있었으면 합니다.
부탁드립니다.
감사합니다.
2022-09-19
1063
글번호 162313
답변완료
시스템 문의 드립니다.
안녕하십니까
보조지표
이격도 에서
단기 : 20
장기 : 120
120선이 20선을 크로스 업 하는 자리를 검색 하고 싶습니다.
120선이 20선 보다 크거나 or 같을때
120 >,= 20
------------
또 이와는 반대로
120선이 20선을 하향 돌파 할때
120 <,= 20
이 상황 일때 기본차트에 화살표 표시가 매수,매도 나왔으면 합니다.
이걸 시스템에 문의 하는건지,아님 검색에 문의 하는건지는 잘 모르겠습니다.
이것도 알려주셔야 제가 nh 트레이더 에서 등록 할수 있을것 같습니다.
항상 감사합니다.
첨부파일은 종목검색편에 칼이쓰마빡가에 있습니다.
불편 드려 죄송합니다.
감사합니다.
2022-09-19
1266
글번호 162312