커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1722
글번호 230811
답변완료
문의
오류가 뜨네요. 정정부탁드립니다.
var : 상한가(0), UpLimit(0);
var : up1(0), up2(0), up3(0), up4(0), up5(0),up6(0),Up7(0);
if date >= 19981207 then {
if date < 20050328 && CodeCategory() == 2 then
UpLimit = (BP[0] * 1.12);
Else if date >= 20050328 and date < 20150615 Then
UpLimit = (BP[0] * 1.15);
Else
UpLimit = (BP[0] * 1.30);
if CodeCategory() == 2 then {
if date >= 20030721 then {
up1 = int(UpLimit/100+0.00001)*100;
up2 = int(UpLimit/100+0.00001)*100;
up3 = int(UpLimit/100+0.00001)*100;
up4 = int(UpLimit/50+0.00001)*50;
up5 = int(UpLimit/10+0.00001)*10;
up6 = int(UpLimit/5+0.00001)*5;
up7 = int(UpLimit/1+0.00001)*1;
}
else {
up1 = int(UpLimit/1000+0.00001)*1000;
up2 = int(UpLimit/500+0.00001)*500;
up3 = int(UpLimit/100+0.00001)*100;
up4 = int(UpLimit/50+0.00001)*50;
up5 = int(UpLimit/10+0.00001)*10;
up6 = int(UpLimit/10+0.00001)*10;
up7 = int(UpLimit/1+0.00001)*1;
}
}
Else {
up1 = int(UpLimit/1000+0.00001)*1000;
up2 = int(UpLimit/500+0.00001)*500;
up3 = int(UpLimit/100+0.00001)*100;
up4 = int(UpLimit/50+0.00001)*50;
up5 = int(UpLimit/10+0.00001)*10;
up6 = int(UpLimit/5+0.00001)*5;
up7 = int(UpLimit/1+0.00001)*1;
}
if CodeCategory() == 1 || CodeCategory() == 2 then {
if sdate < 20101004 Then{
If BP >= 500000 Then
상한가 = up1;
Else If BP >= 100000 Then
상한가 = iff(up2>=500000, up1, up2);
Else If BP >= 50000 Then
상한가 = iff(up3>=100000, up2, up3);
Else If BP >= 10000 Then
상한가 = iff(up4>=50000, up3, up4);
Else If BP >= 5000 Then
상한가 = iff(up5>=10000, up4, up5);
Else If BP >= 1000 Then
상한가 = iff(up5>=5000, up5, up6);
Else
상한가 = iff(up6>=1000, up6, up6);
}
Else{
If BP >= 500000 Then
상한가 = up1;
Else If BP >= 100000 Then
상한가 = iff(up2>=500000, up1, up2);
Else If BP >= 50000 Then
상한가 = iff(up3>=100000, up2, up3);
Else If BP >= 10000 Then
상한가 = iff(up4>=50000, up3, up4);
Else If BP >= 5000 Then
상한가 = iff(up5>=10000, up4, up5);
Else If BP >= 1000 Then
상한가 = iff(up5>=5000, up5, up6);
Else
상한가 = iff(up6>=1000, up6, up7);
}
}
else if CodeCategory() == 8 || CodeCategory() == 9 then { // ETF
상한가 = up6;
}
}
if C >= 상한가 Then
PlotPaintBar1(H,"상한가1",RED);
if H >= 상한가 and C < 상한가 Then
plot2(H,"상한가2",MAGENTA);
2021-03-17
733
글번호 147188
답변완료
문의
검증에러가 뜹니다. 수정부탁드려요
input: P5(20);
VAR : HC(0), HO(0), HH(0), HL(0), MH(0), ML(0), MMH(0), MML(0);
var : T(0);
var : BTL1(0),BTL2(0),BTL3(0),BTL4(0),BTL5(0),BTL6(0);
var : STL1(0),STL2(0),STL3(0),STL4(0),STL5(0),STL6(0);
HC= (C+H+O+L)/4;
HO= AMA(HC[1], 0.5);
HH= MAX(H, HC, HO);
HL= MIN(L, HC, HO);
MH=MA(HC, P5);
ML=MA(HO, P5);
MMH= MAX(MH, ML);
MML= MIN(MH, ML);
if MH > MH[1] Then
T = 1;
if MH < MH[1] Then
T = -1;
#이평상승중 가격이 하락해 이평+1틱 이하의 시세가 발생하면 즉시 매수진입
if T == 1 and MarketPosition <= 0 and L > MH+PriceScale*1 Then
buy("b",atlimit,MH+PriceScale*1,4);
#이평하락중 가격이 상승해 이평-1틱 이상의 시세가 발생하면 즉시 매도진입
if T == -1 and MarketPosition >= 0 and L > MH+PriceScale*1 Then
sell("s",atlimit,MH+PriceScale*1,4);
if MarketPosition == 1 Then{
ExitLong("BP1",Atlimit,EntryPrice+PriceScale*5,"",Floor(MaxContracts*(1/4)),1);
ExitLong("BP2",Atlimit,EntryPrice+PriceScale*10,"",Floor(MaxContracts*(1/4)),1);
ExitLong("BP3",Atlimit,EntryPrice+PriceScale*15,"",Floor(MaxContracts*(1/4)),1);
ExitLong("BP4",Atlimit,EntryPrice+PriceScale*20);
ExitLong("BL1",AtStop,EntryPrice-PriceScale*15,"",Floor(MaxContracts*0.5),1);
ExitLong("BL2",AtStop,EntryPrice-PriceScale*20);
TL_Delete(BTL1);
TL_Delete(BTL2);
TL_Delete(BTL3);
TL_Delete(BTL4);
TL_Delete(BTL5);
TL_Delete(BTL6);
BTL1 = TL_New(EntryDate,EntryTime,EntryPrice+PriceScale*5,sdate,stime,EntryPrice+PriceScale*5);
BTL2 = TL_New(EntryDate,EntryTime,EntryPrice+PriceScale*10,sdate,stime,EntryPrice+PriceScale*10);
BTL3 = TL_New(EntryDate,EntryTime,EntryPrice+PriceScale*15,sdate,stime,EntryPrice+PriceScale*15);
BTL4 = TL_New(EntryDate,EntryTime,EntryPrice+PriceScale*20,sdate,stime,EntryPrice+PriceScale*20);
BTL5 = TL_New(EntryDate,EntryTime,EntryPrice-PriceScale*15,sdate,stime,EntryPrice-PriceScale*15);
BTL6 = TL_New(EntryDate,EntryTime,EntryPrice-PriceScale*20,sdate,stime,EntryPrice-PriceScale*20);
TL_SetColor(BTL1,RED);
TL_SetColor(BTL2,RED);
TL_SetColor(BTL3,RED);
TL_SetColor(BTL4,RED);
TL_SetColor(BTL5,BLUE);
TL_SetColor(BTL6,BLUE);
}
if MarketPosition == -1 Then{
ExitShort("SP1",Atlimit,EntryPrice-PriceScale*5,"",Floor(MaxContracts*(1/4)),1);
ExitShort("SP2",Atlimit,EntryPrice-PriceScale*10,"",Floor(MaxContracts*(1/4)),1);
ExitShort("sP3",Atlimit,EntryPrice-PriceScale*15,"",Floor(MaxContracts*(1/4)),1);
ExitShort("SP4",Atlimit,EntryPrice-PriceScale*20);
ExitShort("sL1",AtStop,EntryPrice+PriceScale*15,"",Floor(MaxContracts*0.5),1);
ExitShort("SL2",AtStop,EntryPrice+PriceScale*20);
TL_Delete(STL1);
TL_Delete(STL2);
TL_Delete(STL3);
TL_Delete(STL4);
TL_Delete(STL5);
TL_Delete(STL6);
STL1 = TL_New(EntryDate,EntryTime,EntryPrice-PriceScale*5,sdate,stime,EntryPrice-PriceScale*5);
STL2 = TL_New(EntryDate,EntryTime,EntryPrice-PriceScale*10,sdate,stime,EntryPrice-PriceScale*10);
STL3 = TL_New(EntryDate,EntryTime,EntryPrice-PriceScale*15,sdate,stime,EntryPrice-PriceScale*15);
STL4 = TL_New(EntryDate,EntryTime,EntryPrice-PriceScale*20,sdate,stime,EntryPrice-PriceScale*20);
STL5 = TL_New(EntryDate,EntryTime,EntryPrice+PriceScale*15,sdate,stime,EntryPrice+PriceScale*15);
STL6 = TL_New(EntryDate,EntryTime,EntryPrice+PriceScale*20,sdate,stime,EntryPrice+PriceScale*20);
TL_SetColor(STL1,RED);
TL_SetColor(STL2,RED);
TL_SetColor(STL3,RED);
TL_SetColor(STL4,RED);
TL_SetColor(STL5,BLUE);
TL_SetColor(STL6,BLUE);
}
2021-03-17
937
글번호 147187
후니러비 님에 의해서 삭제되었습니다.
2021-03-17
2
글번호 147186
답변완료
문의드립니다 !!!
안녕하세요!!!
아래수식을 적용할때 챠트를 "Y축 뒤집어보기"로 설정하니까 세로선이 안나오네요
이때도 새로선이 가능하도록 수식변경 부탁드립니다
매번 도움주심에 항상 감사드립니다!!
===========================================================================
var : TL1(0);
if sTime < 93000 Then
{
var1 = DayHigh;
Var2 = DayLow;
Var3 = (var1-Var2);
if NextBarStime >= 93000 Then
{
TL1 = TL_New(sDate,sTime,0,sDate,sTime,999999999);
TL_SetColor(TL1,blue);#세로선색
TL_SetSize(TL1,5);#세로선굵기
}
}
Plot1(var1);
Plot2(var2);
Plot3(var1+Var3*1,"+1");
Plot4(var1+Var3*2,"+2");
Plot5(var1+Var3*3,"+3");
Plot6(var1+Var3*4,"+4");
Plot7(var2-Var3*1,"-1");
Plot8(var2-Var3*2,"-2");
Plot9(var2-Var3*3,"-3");
Plot10(var2-Var3*4,"-4");
2021-03-17
727
글번호 147185
답변완료
수식 다시 문의드립니다
캔들 4개가 (조건 - 3일전 오픈값보다 오늘 종가가 크다 0[3]<C 이구요)
주봉처럼 3일전 오픈값보다 오늘 종가가 크면 양봉인데 세부적으로 이렇케 표현하고 싶어요
1 양봉,양봉,양봉,양봉
2 양봉,양봉,음봉,양봉
3 양봉,음봉,음봉,양봉
4 양봉,음봉,양봉,양봉
5 양봉,음봉,음봉,양봉
위 5가지 경우에서 조금 누락이 되는경우도 있고 1.2.3.4.5 경우도 수정 보완부탁드립니다
==>
이방법 말고(전화상으로 이방법말고 다르게 표현가능하다는 것 같아서요...)
4개의 봉을 묶어서 하나의 봉처럼(주봉처럼) 양봉을 표현하려면 조건은 세가지만
1. 3일전 시가보다 오늘 종가가 크거나 같다
2. 3일전 봉은 양봉이다
3. 오늘 봉은 양봉이다
사봉=(c[3]>=o[3])
삼봉=
이봉=
일봉=(c>=o) and o[4]<c;
그러면 삼봉과 이봉은 다른 표현이 필요치 않나요?
어떻케 표현하는지 궁금해서 다시 문의드립니다
2021-03-17
924
글번호 147184
답변완료
대신증권 사이보스 수식 예스수식으로 변환 부탁드립니다.
두 가지입니다.
하나는
input : alpha(0.07), len(12)
Var7 = 0
If len = 0 Then
Var1 = (high + low)/2
Else Var1 = (high + low)/2 - mov((high + low)/2, len, s)
End If
Var2 = (Var1 + 2*var1(1) + 2*var1(2) + Var1(3))/6
Var3 = ((1 - 0.5 * alpha)^2)*(Var2 - 2*var2(1) + Var2(2)) + 2*(1 - alpha)*var3(1) - ((1 - alpha)^2)*var3(2)
If currentbar < 7 Then Var3= (Var1 - 2*var1(1) + Var1(2))/4
Var4 = (0.0962*var3 + 0.5769*var3(2) - 0.5769*var3(4) - 0.0962*var3(6))*(0.5 + 0.8*var7(1))
Var5 = Var3(3)
If Var4 <> 0 And Var4(1) <> 0 Then Var6 = (Var5/var4 - Var5(1)/var4(1))/(1 + Var5*var5(1)/(Var4*var4(1)))
If Var6 < 0 Then Var6 = Var6(1)
If Var6 > 1.1 Then Var6 = 1.1
Var8=0
Var9=0
For i = 0 To 40
Var8 = Var9 + Var6
If Var8 >= 6.28318 And Var9 < 6.28318 Then Var10 = i + 1
Var9 = Var8
Next
Var7 = 0.2*var10 + 0.8*var7(1)
Call ploti1("period",Var7)
다른 하나는
input : len(10)
Var1 = (high + low) / 2
Var2 = hhv(1, Var1, len)
Var3 = llv(1, Var1, len)
If Var2-var3=0 Then Var2=var3+0.001
Var4 = 0.5*2*((Var1 - Var3)/(Var2 - Var3) - 0.5) + 0.5*var4(1)
If Var4 > 0.999 Then Var4 = 0.999
If Var4 < -0.999 Then Var4 = -0.999
Var5 = 0.5*log((1+var4)/(1-Var4)) + 0.5 * Var5(1)
Call ploti1("fisher", Var5)
Call ploti2("signal", Var5(1))
입니다.
2021-03-17
1063
글번호 147178
답변완료
감사합니다
안녕하세요...글번호 71442 만들어주신수식 사용해보니 제의도대로 잘되어서
감사인사드립니다.
한가지문의드립니다 .이베스트차트에서 해외선물 수식도 가능한지요.?
수고하세요...꾸벅
2021-03-17
1005
글번호 147168
답변완료
수식문의
수식편집기 처음사용해보는데요
키움에서는 자주사용했는데
키움에서 쓰는 수식이 이거거든요
(npredayclose(2)+npredayclose(1))/2
이거 예스차트에서는 어떻게 써야되나요
그리고 키움에서는
하나의 수식편집기에 수식5개까지 한번에 넣어서 지표선을 5개까지 한번에 나오도록 할수있는데
여기 예스 편집기에서도 한번에 다수의 지표 나오게 할수있나요?
가능하다면 이렇게 총 7가지 수식좀 예스수식에 맞게 변환좀해주세요
-각 이평선의 끝자락-마지노선-
(npredayclose(2)+npredayclose(1))/2
(npredayclose(4)+npredayclose(3)+npredayclose(2)+npredayclose(1))/4
(npredayclose(7)+npredayclose(6)+npredayclose(5)+npredayclose(4)+npredayclose(3)+npredayclose(2)+npredayclose(1))/7
(npredayclose(12)+npredayclose(11)+npredayclose(10)+npredayclose(9)+npredayclose(8)+npredayclose(7)+npredayclose(6)+npredayclose(5)+npredayclose(4)+npredayclose(3)+npredayclose(2)+npredayclose(1))/12
(((npredayclose(2)+npredayclose(1))/2)+((npredayclose(4)+npredayclose(3)+npredayclose(2)+npredayclose(1))/4))/2
-분봉상 내일의 이평선-
(npredayclose(1)+dayclose()+dayclose())/3
(npredayclose(3)+npredayclose(2)+npredayclose(1)+dayclose()+dayclose())/5
2021-03-17
1055
글번호 147166
답변완료
문의드립니다.
안녕하세요.
해외선물 시스템 입니다.
매수 준비:
무포지션일 때 음봉뒤에 양봉이 두개 연속 되고 이 때
첫양봉 종가 < 두번째 양봉 종가 를 만족하면 대양봉이 형성되었다고 가정합니다.
이 때의 대양봉 저가 = 첫양봉 시가
대양봉 고가 = 두번째 양봉 종가
대양봉 진폭 = 대양봉 고가 - 대양봉 저가
대양봉 1/2 가격 = 대양봉 저가 + (대양봉 진폭 /2)
라고 정의합니다
대양봉이 형성된 후 양봉이 생기면 새로 생긴 양봉 종가 > 대양봉 고가
이면 대양봉 고가 = 새로 생긴 양봉 종가 로 바뀝니다.
그리고 대양봉 형성후 에 발생되는 음봉이 생길 때 이 음봉의 저가가 대양봉 1/2 가격을
하향 돌파하면 대양봉은 취소되고 모든 변수는 초기화 합니다.
매수:
대양봉이 형성되고 나서 다시 음봉이 발생후 음봉 다음에 양봉이 2연속 발생하면 매수합니다.
이 때의 양봉 2연속 일 때
매수손절가 = 첫양봉의 시가 ( 매수시의 양봉 2연속 일 때 ) 라고 합니다.
매수후 30틱 이상 수익이 나면
매수손절가 = 두번째 양봉의 종가 ( 위에 매수시의 양봉 2연속 일 때 ) 로 수정합니다
매수손절 :
위의 매수 손절가를 음봉 종가가 하방 돌파시 손절합니다.
이익 청산 :
300틱 이익이 나면 수익 청산합니다.
매도:
매수시의 반대 논라로 수식 부탁드립니다.
2021-03-17
852
글번호 147165