커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
5420
글번호 230811
답변완료
수정좀 부탁드립니다.
Condition40 = Condition89 == true and abs(L-q12)<=PriceScale*2 and abs(L+q12)>=PriceScale*2 ;
if Condition40 == true Then
buy("매수",OnClose);
위 수식에서 q12번 대신 q12, q13, q14, q15, q16, q17, q18, q19,q20 까지 넣어 어느 것 하나라도 만족하면 진입하는 수식으로 수정좀 부탁합니다.
2019-11-15
202
글번호 133665
답변완료
좋~은 주 말 되십시요.^^
* 좋은 주말 되십시요.
var1 = ma(c,5) ;
var2 = ma(c,10);
if crossup(var1,va2) then buy();
if crossdown(var1,var2) then sell();
일경우
* 손실이 20틱 이상이면서 매수 신호 기준 으로 매수후 신저가 3번 이상 이면 청산
손실이 20틱 이상이면서 매도 신호 기준 으로 매도후 신고가 3번 이상 이면 청산
* 고맙 습니다.
2019-11-15
214
글번호 133663
답변완료
종목검색식 부탁합니다
Input : 가격배수D(2.0), 거래량배수D(3.0), 몸통비율하D(1.5), 몸통비율상D(2.0),
가격배수M(2.0), 거래량배수M(3.0), 몸통비율하M(1.5), 몸통비율상M(2.0%), 갭(7.0);
<A> 일봉
① abs(C-O) / MA(abs(C-O), 5) >= 가격배수D and
// (일봉) 현재봉 몸통이 5이평 몸통보다 2.0배 크고
② V / MA(V, 5) >= 거래량배수D and
// (일봉) 현재거래량이 5이평 거래량보다 3.0배 많고
③ (abs(C-O)/O * 100 >= 몸통비율하D and abs(C-O)/O * 100 <= 몸통비율상D) and
// (일봉) 현재봉 몸통 크기가 1.5% 이상 ~ 2.0% 이하이고
<B> 1분봉
① abs(C-O) / MA(abs(C-O), 5) >= 가격배수M and
// (1분봉) 현재봉 몸통이 5이평 몸통보다 2.0배 크고
② V / MA(V, 5) >= 거래량배수M and
// (1분봉) 현재거래량이 5이평 거래량보다 3.0배 많고
③ (abs(C-O)/O * 100 >= 몸통비율하M and abs(C-O)/O * 100 <= 몸통비율상M) and
// (1분봉) 현재봉 몸통 크기가 1.5% 이상 ~ 2.0% 이하이고
④ (DayOpen() - PreDayClose()) / PreDayClose() * 100 <= 갭
// (일봉) 전일종가 대비 갭이 7.0% 이하인 종목 검색.
<A>가 한번 이상 발생하고 (and) <B>가 참인 종목이 검색되게 수식 부탁합니다.
2019-11-15
260
글번호 133661
답변완료
부탁 드릴께용~
어제 일봉 기준으로 잡고요.
금일 (오늘) 검색을 3분봉에서 어제 종가 기준 -1%, -2%~~~~5% 까지 종목을 찾을 수 있는 로직
좀 부탁 드릴께요.
수식을 -1% 따로 따로
해야 되는지, 아님 검색하는곳에서
분봉 기준만 바꾸면 되는지도 설명 부탁 드릴께요.
기준봉은 몇개쯤 인지도 ~~
부탁 드립니다.
2019-11-15
242
글번호 133658
답변완료
부탁 드릴께용~
어제 일봉 기준으로 잡고요.
금일 (오늘) 검색을 3분봉에서 어제 종가 기준 -1%, -2%~~~~5% 까지 종목을 찾을 수 있는 로직
좀 부탁 드릴께요.
수식을 -1% 따로 따로
해야 되는지, 아님 검색하는곳에서
분봉 기준만 바꾸면 되는지도 설명 부탁 드릴께요.
기준봉은 몇개쯤 인지도 ~~
부탁 드립니다.
2019-11-15
237
글번호 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
212
글번호 133654
답변완료
PlaySound 횟수조절 문의합니다.
안녕하세요.
국선 장시작후 1 포인트 진폭시 음성이 나오게 사용중입니다.
그런데 이후로도 계속 소리가 나와서 장시작후 진폭이 1포인트가 되는
처음 1회만 음성이 나왔으면 합니다.
if (DayHigh-Daylow) > 1 Then
PlaySound("C:₩NHTrader₩data₩Sound₩.wav");
감사합니다.
2019-11-15
214
글번호 133653
답변완료
동일종목 다른시스템 적용하려면
동일종목에 다른시스템을 적용하려면 시스템 수식에서 설정해줘야 하나요?
예를들어
크루드오일 종목에서 같은 10분봉 이라고 할때
시스템A,B를 동시에 운용하려면,
시스템A의 수식과 시스템B의 수식에서 어떠한 방식으로 처리해줘야 할까요?
그냥 시스템A와 B를 적용시켜 버리면
시스템 A의 매수신호에 따라 롱포지션에 진입하고 있는데 시스템B의 숏포지션 진입 신호에 시스템 A의 롱포지션이 청산되어 버리는 현상이 일어날것 같은데, 어떤식으로 해결 가능할까요??
2019-11-15
217
글번호 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
288
글번호 133647