커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
3565
글번호 230811
답변완료
부탁 드릴께용~
어제 일봉 기준으로 잡고요.
금일 (오늘) 검색을 3분봉에서 어제 종가 기준 -1%, -2%~~~~5% 까지 종목을 찾을 수 있는 로직
좀 부탁 드릴께요.
수식을 -1% 따로 따로
해야 되는지, 아님 검색하는곳에서
분봉 기준만 바꾸면 되는지도 설명 부탁 드릴께요.
기준봉은 몇개쯤 인지도 ~~
부탁 드립니다.
2019-11-15
210
글번호 133658
답변완료
부탁 드릴께용~
어제 일봉 기준으로 잡고요.
금일 (오늘) 검색을 3분봉에서 어제 종가 기준 -1%, -2%~~~~5% 까지 종목을 찾을 수 있는 로직
좀 부탁 드릴께요.
수식을 -1% 따로 따로
해야 되는지, 아님 검색하는곳에서
분봉 기준만 바꾸면 되는지도 설명 부탁 드릴께요.
기준봉은 몇개쯤 인지도 ~~
부탁 드립니다.
2019-11-15
208
글번호 133657
답변완료
수식 부탁드립니다
input : period(20);
var1 = IfF(crossup(ma(c,1),ma(c,period)) ||(ma(c,1) > ma(c,period)),8,0);
var2 = IfF(crossdown(ma(c,1),ma(c,period)) ||(ma(c,1) < ma(c,period)),8,0);
plot1(var1);
plot2(var2);
시스템식으로 변경 부탁드립니다.
2019-11-15
184
글번호 133654
답변완료
PlaySound 횟수조절 문의합니다.
안녕하세요.
국선 장시작후 1 포인트 진폭시 음성이 나오게 사용중입니다.
그런데 이후로도 계속 소리가 나와서 장시작후 진폭이 1포인트가 되는
처음 1회만 음성이 나왔으면 합니다.
if (DayHigh-Daylow) > 1 Then
PlaySound("C:₩NHTrader₩data₩Sound₩.wav");
감사합니다.
2019-11-15
186
글번호 133653
답변완료
동일종목 다른시스템 적용하려면
동일종목에 다른시스템을 적용하려면 시스템 수식에서 설정해줘야 하나요?
예를들어
크루드오일 종목에서 같은 10분봉 이라고 할때
시스템A,B를 동시에 운용하려면,
시스템A의 수식과 시스템B의 수식에서 어떠한 방식으로 처리해줘야 할까요?
그냥 시스템A와 B를 적용시켜 버리면
시스템 A의 매수신호에 따라 롱포지션에 진입하고 있는데 시스템B의 숏포지션 진입 신호에 시스템 A의 롱포지션이 청산되어 버리는 현상이 일어날것 같은데, 어떤식으로 해결 가능할까요??
2019-11-15
185
글번호 133648
답변완료
수정좀 부탁드리겠습니다.
안녕하세요.
아래수식이 정상적으로 나올때도 있지만, 그림파일처럼 수평선으로 표시가 안되고 에러가 나는 경우가 빈번합니다. (그림파일)
에러가 나지않게끔 확인좀 부탁드리겠습니다. 항상 감사드립니다.
Input:chngRate(0.3),굵기(1);
input : Per1(0),Per2(23.6),Per3(38.2),Per4(50.0),Per5(61.8),Per6(76.4),Per7(100),Per8(123.6),Per9(161.8);
Var : j(0),lastHiVal(0),lastLoVal(0),turnPntBit(""),TL1(0);
var : TL11(0),TL12(0),TL13(0),TL14(0),TL15(0),TL16(0),TL17(0),TL18(0),TL19(0);
var : Tx11(0),Tx12(0),Tx13(0),Tx14(0),Tx15(0),Tx16(0),Tx17(0),Tx18(0),Tx19(0);
Array:valArr[10](0),barArr[10](0),turnPntArr[10]("");
For j = 0 To 9
{
barArr[j] = barArr[j] + 1;
}
Condition1 = Min(valArr[1],valArr[2]) * (1 + (chngRate/100)) < H and lastHiVal < H;
Condition2 = Max(valArr[1],valArr[2]) * (1 - (chngRate/100)) > L and (lastLoVal > L || lastLoVal == 0);
If Condition1 Then { lastHiVal = H; lastLoVal = 0; }
If Condition2 Then { lastLoVal = L; lastHiVal = 0; }
turnPntBit = "";
If Condition1 and Condition2 Then
{
If Max(valArr[1],valArr[2]) < H and Min(valArr[1],valArr[2]) > L Then
turnPntBit = "HiLo";
Else If Max(valArr[1],valArr[2]) < H Then turnPntBit = "Hi";
Else If Min(valArr[1],valArr[2]) > L Then turnPntBit = "Lo";
}
Else If Condition1 Then turnPntBit = "Hi";
Else If Condition2 Then turnPntBit = "Lo";
If turnPntBit <> "" Then
{
If turnPntBit == "HiLo" Then
{
valArr[1] = IFF(turnPntArr[1] == "Hi",H,L);
barArr[1] = 0;
TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
If turnPntArr[1] == "Hi" Then
turnPntBit = "Lo";
Else
turnPntBit = "Hi";
}
If turnPntBit <> turnPntArr[1] Then
{
for j = 8 downto 1
{
valArr[j+1] = valArr[j];
barArr[j+1] = barArr[j];
turnPntArr[j+1] = turnPntArr[j];
}
}
If turnPntBit <> turnPntArr[1] or
(turnPntBit == turnPntArr[1] and
((turnPntBit == "Hi" and valArr[1] < H) or
(turnPntBit == "Lo" and valArr[1] > L))) Then
{
valArr[1] = IFF(turnPntBit == "Hi",H,L);
barArr[1] = 0;
turnPntArr[1] = turnPntBit;
If turnPntArr[1][1] <> turnPntArr[1][0] Then
{
TL1 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
value1 = valArr[1]-valArr[2];
TL_Delete(TL11);
TL_Delete(TL12);
TL_Delete(TL13);
TL_Delete(TL14);
TL_Delete(TL15);
TL_Delete(TL16);
TL_Delete(TL17);
TL_Delete(TL18);
TL_Delete(TL19);
TL_SetExtRight(TL11,False);
TL_SetExtRight(TL12,False);
TL_SetExtRight(TL13,False);
TL_SetExtRight(TL14,False);
TL_SetExtRight(TL15,False);
TL_SetExtRight(TL16,False);
TL_SetExtRight(TL17,False);
TL_SetExtRight(TL18,False);
TL_SetExtRight(TL19,False);
TL11 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[1]+value1*(per1/100),sDate[barArr[1]],sTime[barArr[1]],valArr[1]-value1*(per1/100));
TL12 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[1]+value1*(per2/100),sDate[barArr[1]],sTime[barArr[1]],valArr[1]-value1*(per2/100));
TL13 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[1]+value1*(per3/100),sDate[barArr[1]],sTime[barArr[1]],valArr[1]-value1*(per3/100));
TL14 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[1]+value1*(per4/100),sDate[barArr[1]],sTime[barArr[1]],valArr[1]-value1*(per4/100));
TL15 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[1]+value1*(per5/100),sDate[barArr[1]],sTime[barArr[1]],valArr[1]-value1*(per5/100));
TL16 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[1]+value1*(per6/100),sDate[barArr[1]],sTime[barArr[1]],valArr[1]-value1*(per6/100));
TL17 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[1]+value1*(per7/100),sDate[barArr[1]],sTime[barArr[1]],valArr[1]-value1*(per7/100));
TL18 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[1]+value1*(per8/100),sDate[barArr[1]],sTime[barArr[1]],valArr[1]-value1*(per8/100));
TL19 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[1]+value1*(per9/100),sDate[barArr[1]],sTime[barArr[1]],valArr[1]-value1*(per9/100));
TL_SetExtRight(TL11,true);
TL_SetExtRight(TL12,true);
TL_SetExtRight(TL13,true);
TL_SetExtRight(TL14,true);
TL_SetExtRight(TL15,true);
TL_SetExtRight(TL16,true);
TL_SetExtRight(TL17,true);
TL_SetExtRight(TL18,true);
TL_SetExtRight(TL19,true);
TL_SetColor(TL11,RED);
TL_SetColor(TL12,BLUE);
TL_SetColor(TL13,MAGENTA);
TL_SetColor(TL14,YELLOW);
TL_SetColor(TL15,GRAY);
TL_SetColor(TL16,GREEN);
TL_SetColor(TL17,BLUE);
TL_SetColor(TL18,PINK);
TL_SetColor(TL19,Lblue);
TL_SetSize(TL11,굵기);
TL_SetSize(TL12,굵기);
TL_SetSize(TL13,굵기);
TL_SetSize(TL14,굵기);
TL_SetSize(TL15,굵기);
TL_SetSize(TL16,굵기);
TL_SetSize(TL17,굵기);
TL_SetSize(TL18,굵기);
TL_SetSize(TL19,굵기);
tx11 = Text_New(sdate,stime,TL_GetValue(TL11,sdate,stime),NumToStr(Per1,2)+"%("+NumToStr(TL_GetValue(TL11,sdate,stime),2)+")");
tx12 = Text_New(sdate,stime,TL_GetValue(TL12,sdate,stime),NumToStr(Per2,2)+"%("+NumToStr(TL_GetValue(TL12,sdate,stime),2)+")");
tx13 = Text_New(sdate,stime,TL_GetValue(TL13,sdate,stime),NumToStr(Per3,2)+"%("+NumToStr(TL_GetValue(TL13,sdate,stime),2)+")");
tx14 = Text_New(sdate,stime,TL_GetValue(TL14,sdate,stime),NumToStr(Per4,2)+"%("+NumToStr(TL_GetValue(TL14,sdate,stime),2)+")");
tx15 = Text_New(sdate,stime,TL_GetValue(TL15,sdate,stime),NumToStr(Per5,2)+"%("+NumToStr(TL_GetValue(TL15,sdate,stime),2)+")");
tx16 = Text_New(sdate,stime,TL_GetValue(TL16,sdate,stime),NumToStr(Per6,2)+"%("+NumToStr(TL_GetValue(TL16,sdate,stime),2)+")");
tx17 = Text_New(sdate,stime,TL_GetValue(TL17,sdate,stime),NumToStr(Per7,2)+"%("+NumToStr(TL_GetValue(TL17,sdate,stime),2)+")");
tx18 = Text_New(sdate,stime,TL_GetValue(TL18,sdate,stime),NumToStr(Per8,2)+"%("+NumToStr(TL_GetValue(TL18,sdate,stime),2)+")");
tx19 = Text_New(sdate,stime,TL_GetValue(TL19,sdate,stime),NumToStr(Per9,2)+"%("+NumToStr(TL_GetValue(TL19,sdate,stime),2)+")");
Text_Delete(Tx11);
Text_Delete(Tx12);
Text_Delete(Tx13);
Text_Delete(Tx14);
Text_Delete(Tx15);
Text_Delete(Tx16);
Text_Delete(Tx17);
Text_Delete(Tx18);
Text_Delete(Tx19);
Text_SetStyle(tx11,2,1);
Text_SetStyle(tx12,2,1);
Text_SetStyle(tx13,2,1);
Text_SetStyle(tx14,2,1);
Text_SetStyle(tx15,2,1);
Text_SetStyle(tx16,2,1);
Text_SetStyle(tx17,2,1);
Text_SetStyle(tx18,2,1);
Text_SetStyle(tx19,2,1);
}
Else
{
value1 = valArr[1]-valArr[2];
TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
TL_SetBegin(TL11,sDate[barArr[2]],sTime[barArr[2]],valArr[1]-value1*(per1/100));
TL_SetEnd(TL11,sDate,sTime,valArr[1]-value1*(per1/100));
TL_SetBegin(TL12,sDate[barArr[2]],sTime[barArr[2]],valArr[1]-value1*(per2/100));
TL_SetEnd(TL12,sDate,sTime,valArr[1]-value1*(per2/100));
TL_SetBegin(TL13,sDate[barArr[2]],sTime[barArr[2]],valArr[1]-value1*(per3/100));
TL_SetEnd(TL13,sDate,sTime,valArr[1]-value1*(per3/100));
TL_SetBegin(TL14,sDate[barArr[2]],sTime[barArr[2]],valArr[1]-value1*(per4/100));
TL_SetEnd(TL14,sDate,sTime,valArr[1]-value1*(per4/100));
TL_SetBegin(TL15,sDate[barArr[2]],sTime[barArr[2]],valArr[1]-value1*(per5/100));
TL_SetEnd(TL15,sDate,sTime,valArr[1]-value1*(per5/100));
TL_SetBegin(TL16,sDate[barArr[2]],sTime[barArr[2]],valArr[1]-value1*(per6/100));
TL_SetEnd(TL16,sDate,sTime,valArr[1]-value1*(per6/100));
TL_SetBegin(TL17,sDate[barArr[2]],sTime[barArr[2]],valArr[1]-value1*(per7/100));
TL_SetEnd(TL17,sDate,sTime,valArr[1]-value1*(per7/100));
TL_SetBegin(TL18,sDate[barArr[2]],sTime[barArr[2]],valArr[1]-value1*(per8/100));
TL_SetEnd(TL18,sDate,sTime,valArr[1]-value1*(per8/100));
TL_SetBegin(TL19,sDate[barArr[2]],sTime[barArr[2]],valArr[1]-value1*(per9/100));
TL_SetEnd(TL19,sDate,sTime,valArr[1]-value1*(per9/100));
Text_SetLocation(Tx11,sdate,stime,TL_GetValue(TL11,sdate,stime));
Text_SetLocation(Tx12,sdate,stime,TL_GetValue(TL12,sdate,stime));
Text_SetLocation(Tx13,sdate,stime,TL_GetValue(TL13,sdate,stime));
Text_SetLocation(Tx14,sdate,stime,TL_GetValue(TL14,sdate,stime));
Text_SetLocation(Tx15,sdate,stime,TL_GetValue(TL15,sdate,stime));
Text_SetLocation(Tx16,sdate,stime,TL_GetValue(TL16,sdate,stime));
Text_SetLocation(Tx17,sdate,stime,TL_GetValue(TL17,sdate,stime));
Text_SetLocation(Tx18,sdate,stime,TL_GetValue(TL18,sdate,stime));
Text_SetLocation(Tx19,sdate,stime,TL_GetValue(TL19,sdate,stime));
Text_SetString(Tx11,NumToStr(Per1,2)+"%("+NumToStr(TL_GetValue(TL11,sdate,stime),2)+")");
Text_SetString(Tx12,NumToStr(Per2,2)+"%("+NumToStr(TL_GetValue(TL12,sdate,stime),2)+")");
Text_SetString(Tx13,NumToStr(Per3,2)+"%("+NumToStr(TL_GetValue(TL13,sdate,stime),2)+")");
Text_SetString(Tx14,NumToStr(Per4,2)+"%("+NumToStr(TL_GetValue(TL14,sdate,stime),2)+")");
Text_SetString(Tx15,NumToStr(Per5,2)+"%("+NumToStr(TL_GetValue(TL15,sdate,stime),2)+")");
Text_SetString(Tx16,NumToStr(Per6,2)+"%("+NumToStr(TL_GetValue(TL16,sdate,stime),2)+")");
Text_SetString(Tx17,NumToStr(Per7,2)+"%("+NumToStr(TL_GetValue(TL17,sdate,stime),2)+")");
Text_SetString(Tx18,NumToStr(Per8,2)+"%("+NumToStr(TL_GetValue(TL18,sdate,stime),2)+")");
Text_SetString(Tx19,NumToStr(Per9,2)+"%("+NumToStr(TL_GetValue(TL19,sdate,stime),2)+")");
}
}
}
TL_SetSize(TL1,굵기);
TL_SetColor(TL1,black);
2019-11-15
251
글번호 133647
답변완료
식 하나만 부탁합니다
수고 합니다
아래 식를 작성좀 부탁합니다
예를 들어 이평선 5 20 만 사용합니다
기본조건 -- 20 이평선 아래 캔들이 있으면 조건에 맞아도 매수는 절대 없습니다
20 이평선 위에 캔들이 있으면 조건에 맞아도 매도는 절대 없습니다
매도식 1 -- 양봉 음봉 상관없이
20 이평선을 종가로 이탈하고
다음봉이 종가로 이탈한 봉보다 종가가 낮으면 매도
매도식 2 -- 반드시 매도1 이후 청산식이 있어야 매도2 가 작동됩니다
5 이평선을 종가로 이탈하고
다음봉이 종가로 이탈한 봉보다 종가가 낮으면 매도
청산식 -- 매도1 매도2 진입하고 있는상태에서
5 이평선을 캡들이 종가로 돌파하고
종가가 돌파봉보다 두번이상 가격이높아지면 청산
반대의 매수도 부탁합니다
2019-11-15
181
글번호 133646
답변완료
문의드립니다
안녕하세요 수식 문의드려요
var1 = wma(c,30); 에서
전봉보다 크고(바뀌자마자, 바뀐 그캔들에서만)의 조건을 아래 2가지 경우처럼 표현하면 어떤게 맞나요?
1. var1 > var1[1] and countif(var1 > var1[1],2) <= 1
2. var1 > var1[1] and countif(var1 < var1[1],2) >= 1
뒤에 추가로 조건을 넣으면 전봉보다 클때의 그캔들이 아니라 그후에 다른 조건이랑 같이 맞으면 신호가 나와서 문의드립니다
특히 1번의 경우에 그런 현상이 나오구요. 2번으로 하면 다른 조건은 맞는데 신호가 안나오는 경우가 있습니다
위의 방법 말고 다른 수식은 없을까요?
즐거운 하루 되세요~ 감사합니다
2019-11-15
172
글번호 133645
답변완료
재질문입니다
아래의 식으로 작성하니 첨부와 같이 나타납니다 (KP순매수금액)
첨부 차트의 하단의 "순매수체결"지표처럼 0선을 기준으로 나타나게 하고 싶습니다
즉, 개인, 외국인, 기관의 순매수 DATA를 합하여
0선을 기준으로 하는 막대차트를 만들고 싶습니다
수고하십시요
*******************************************************************************
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 수식작성
> 안녕하세요
예스스탁입니다.
1,2,3을 통합해 답변드립니다.
문의하신 내용은 사용자분이 투자주체별 데이타를 차트에 추가하고
추가된 데이타의 데이터번호 확인해서 수식을 구현하셔야 합니다.
예를 들어 거래소 개인, 외인, 기관을 보고자 하시면
참조데이타로 KP개인순매수금액, KP외인순매수금액,KP기타 순매수금액을 추가후
아래 지표적용하시면 됩니다.
참조데이타는 차트왼쪽 상단의 종목선택버튼 중 오른쪽을 클릭하시면
기본차트 아래에 추가할수 있습니다.
차트에 추가되는 순서로 data2부터 data99까지 번호가 부여되고
수식에서는 이 데이타번호로 값을 가져와 사용합니다.
개인 --> 외인 --> 기타 순으로 추가하시면 됩니다.
기관은 별도로 기관합이 제공되지 않고 세부기관별로 제공됩니다.
모든 투자주체의 순매수의 합이 0이고 모든 데이타를 차트에 추가하는 것은 번거로운 일이므로
개인,외인, 기타만 차트에 data2,data3,data4로 추가하고 아래식 적용하시면 됩니다.
기관은 개인+외인+기타의 역수를 취해서 사용하시면 됩니다.
지표 적용후에 막대차트로 지표속성에서 설정하셔야 합니다.
#data2 개인
#data3 외국인
#data4 기타
var : V1(0,data1);
V1 = -(data2(c)+data3(c)+data4(c));
plot1(data2(c),"개인");
plot2(data3(c),"외인");
plot3(V1,"기관");
즐거운 하루되세요
> 마추피추 님이 쓴 글입니다.
> 제목 : 수식작성
> 수고하십니다.
1. 거래소 순매수금액을 bar차트로 구현하는 식을 부탁드립니다.
2. 선물 순매수건수를 bar차트로 구현하는 식을 부탁드립니다.
3. 선물 순매수금액을 bar차트로 구현하는 식을 부탁드립니다.
수고하십시요
2019-11-14
235
글번호 133644