커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1653
글번호 230811
답변완료
수식부탁드립니다.
안녕하세요. 거래량지표를 ,( 일봉 캔들에서, 위아래꼬리를 배제하고)
변형한 키움 HTS 수식을 에스랭귀지로 부타드립니다.
Up=V*(C-L)/(H-L);
Dn=V*(H-C)/(H-L);
VV=if(C>0,Up, if(C<),Dn,0));
A=sum(VV,Preiod)/sum(V,Period)*100;
B=eavg(A,signal);
Crossup(A, B)
Period (20) signal(5)
A를 지수평균한 값을 돌파하는 검색식을 부탁드립니다, 감사합니다
2022-08-30
1511
글번호 161842
답변완료
수식 작성 부탁드립니다
1. Period1(20) 지표속성에서 변수를 (20이평을 5, 60 이평으로) 변경 하는것과 같이data2, data3를 data3, data4로 변경 선택할수 있도록 수식 부탁 드립니다.
Input : Period1(20);
var1 = ma(C,Period1);
var2 = data2(ma(C,Period1));
var3 = data3(ma(C,Period1));
var4 = data4(ma(C,Period1));
Plot1(var1, "MA");
Plot2(var2, "MA2");
Plot3(var1, "MA3");
Plot4(var2, "MA4");
2. 남은시간 막대그래프 시간이 맞지 않습니다 수정 부탁 드립니다
#봉 시작 시각(stime)을 초로 변환
var1 = sTime;
Var2 = int(var1/10000); //시간 추출
Var3 = var1 - int(var1/10000)*10000; //분초 추출
Var4 = int(Var3/100);//분 추출
Var5 = Var3 - int(Var3/100)*100; //초 추출
Var6 = Var2*3600; //시간을 초로
Var7 = Var4*60; //분을 초로
Var8 = Var6+Var7+Var5; //초로 변환 된 값
#봉 끝 시각(time)을 초로 변환
var11 = Time;
Var12 = int(var11/10000); //시간 추출
Var13 = var11 - int(var11/10000)*10000; //분초 추출
Var14 = int(Var13/100);//분 추출
Var15 = Var13 - int(Var13/100)*100; //초 추출
Var16 = Var12*3600; //시간을 초로
Var17 = Var14*60; //분을 초로
Var18 = Var16+Var17+Var15; //초로 변환 된 값
# 차트의 주기를 초로 변환(봉 완성시각 계산을 위한 것)
Var21 = BarInterval * 60;
# 분봉 일간단위 마지막봉(9시 전봉)의 봉완성시간 조정
if Var8 < 32400 and Var8 + Var21 > 32400 Then //봉시작 시각은 9시보다 작고 봉 끝시간은 9시보다 크면
Var21 = 32400 - Var8;
# 밤12시에 걸쳐 있는 봉의 경과 시간 계산 조정
if Var8 < 32400 and Var8 + Var21 >= 32400 Then {
if time >= sTime Then
Var31 = (Var8 + Var21) - var18;
Else
Var31 = (Var8 + Var21) - (32400+var18);
}
Else
Var31 = (Var8 + Var21) - var18;
# 봉 시작 후 경과된 초를 시분초로 변환
Var41 = int(Var31/3600); //시간 추출
Var42 = Mod(Var31, 3600); //분초 추출
Var43 = int(Var42/60); //분추출
Var44 = Mod(Var42, 60); //초 추출
Var45 = Var41*10000;//시간 자리수 조정
Var46 = Var43*100; //분 자리수 조정
Var47 = Var45+Var46+Var44; //시+분+초
plot1(Var31); //남은 시간을 초로 표시
2022-08-30
1470
글번호 161839
답변완료
수식 부탁드립니다
먼저 감사드립니다
해외선물 페어트레이딩으로 두 데이터 차를 구하고 그값의 이동평균값으로
매수 매도를 하려 합니다
아래수식과 같이 해보았는데 잘안되서요
수식 수정 부탁드립니다.
Input :익절(0),손절(0);
Inputs: FastLen(5), SlowLen(40);
Variables: FastAvg(0), SlowAvg(0);
var : diff(0,Data1);
diff = abs(Data1(c)-Data2(c));
FastAvg = MA(diff(c), FastLen);
SlowAvg = MA(diff(c), SlowLen);
if CrossUp(FastAvg, SlowAvg) Then
Buy();
if CrossDown(FastAvg, SlowAvg) Then
Sell();
SetStopProfittarget(익절,PointStop);
SetStopLoss(손절,PointStop);
2022-08-30
1686
글번호 161838
답변완료
선굵기 및 글자크기
아래 수식에서 선 색상과 글자 크기(색상)도 변경 가능하게 수정 부탁드립니다^^
input : N(150),소숫점자리표시(2);
if Bdate != Bdate[1] Then
{
TL_Delete(var4);
Text_Delete(Var5);
var1 = sdate[1];
var2 = stime[1];
}
if abs(C-O) >= PriceScale*N Then
{
var3 = (C+O)/2;
TL_Delete(var4);
var4 = TL_New(var1,var2,var3,sDate,Stime,var3);
TL_SetExtRight(var4,true);
Text_Delete(Var5);
var5 = Text_New(NextBarSdate,NextBarStime,var3," "+NumToStr(Var3,소숫점자리표시));
Text_SetStyle(var5,0,2);
}
Text_SetLocation(Var5,NextBarSdate,NextBarStime,Var3);
2022-08-30
2018
글번호 161837
답변완료
수식 문의
input: CC(Numeric), n(Numeric);
CC(C 나 H, ...)에 대해서
현재봉의 과거 n(10)봉 중에서 큰 순위를 리턴해 주는 함수 mrank(CC,n)을 부탁드립니다.
예컨대,
현재봉의 H가 과거 10봉 중에서 최고치를 갱신해서 1번째로 크다면 mrank(H,10) == 1이고,
현재봉의 종가가 과거 10봉 중에서 3번째로 크다면 mrank(C,10) == 3 이 되어야 합니다.
감사합니다.
2022-08-30
1491
글번호 161835
답변완료
파라볼릭 폭
Input : AF(0.02), AFMAX(0.2);
Var:Direction(0),SAR_Value(Close),AF_Value(.02),HighValue(High),LowValue(Low),EP(0),CSarv(0);
if Bdate != Bdate[1] Then
{
Direction = 0;
SAR_Value = C;
AF_Value = 0.02;
HighValue = H;
LowValue = L;
EP = 0;
}
if EP != 0 Then
{
if Direction == 1 then
{
EP = HighValue;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if High > HighValue then
{
HighValue = High;
AF_Value = AF_Value + AF;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
if Close < SAR_Value then
{
Direction = -1;
SAR_Value = EP;
AF_Value = 0;
EP = 0;
LowValue = low;
}
}
else
{
EP = LowValue;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if Low < LowValue then
{
LowValue = Low;
AF_Value = AF_Value + Af;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
if Close > SAR_Value then
{
Direction = 1;
SAR_Value = EP;
AF_Value = 0;
EP = 0;
HighValue = High;
}
}
CSarv = SAR_Value;
}
else
{
if SAR_Value != 0 && EP == 0 then
{
if Direction == 1 then
{
EP = HighValue;
AF_Value = AF;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if High > HighValue then
{
HighValue = High;
AF_Value = AF_Value + AF;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
}
else
{
EP = LowValue;
AF_Value = Af;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if Low < LowValue then
{
LowValue = Low;
AF_Value = AF_Value + AF;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
}
CSarv = SAR_Value;
}
else
{
if Direction == 0 then
{
if Close > Close[1] then Direction = 1;
else
if Close < Close[1] then Direction = -1;
}
else
{
if Direction == 1 then
{
if Close < Close[1] then
{
Direction = -1;
SAR_Value = HighValue;
CSarv = SAR_Value;
}
}
if Direction == -1 then
{
if Close > Close[1] then
{
Direction = 1;
SAR_Value = LowValue;
CSarv = SAR_Value;
}
}
}
LowValue = min(Low, LowValue);
HighValue = max(High, HighValue);
}
}
var : hh(0),LL(0),t(0);
if Bdate != Bdate[1] Then
Var10 = 0;
if CrossUp(C,CSarv) Then
{
t = 1;
hh = h;
var1 = LL+0.5;
var2 = LL+1.0;
Var3 = LL+1.5;
Var4 = LL+2;
Var5 = LL+2.5;
Var6 = LL+3;
Var7 = LL+3.5;
Var8 = LL+4;
Var9 = LL+4.5;
if Var10 == 0 or (Var10 > 0 and LL < Var10) Then
var10 = LL;
}
if CrossDown(C,CSarv) Then
{
t = -1;
LL = l;
var1 = hh-0.5;
var2 = hh-1.0;
Var3 = hh-1.5;
Var4 = hh-2.0;
Var5 = hh-2.5;
Var6 = hh-3.0;
Var7 = hh-3.5;
Var8 = hh-4.0;
Var9 = hh-4.5;
}
if t == 1 Then
{
if hh > 0 and h > hh Then
hh = h;
}
if t == -1 Then
{
if LL > 0 and l < LL Then
LL = l;
}
if var1 > 0 Then
{
plot1(var1,"HL1");
plot2(var2,"HL2");
plot3(var3,"HL3");
plot4(var4,"HL4");
Plot5(Var5,"HL5");
Plot6(Var6,"HL6");
Plot7(Var7,"HL7");
Plot8(Var8,"HL8");
Plot9(Var9,"HL9");
}
if Var10 > 0 Then
Plot10(Var10+0.1,"l+0.1");
Else
NoPlot(10);
if Var10 > 0 Then
Plot11(Var10-0.25,"l-0.25");
Else
NoPlot(11);
+0.1~-0.25 채우기 부분이 시초에 갭 보정을 하면 정상인데, 갭 보정을 안하면 전일 하락파라 영향을 받아 차이가 납니다.
전일은 출력이 안되어도 상관 없습니다. 수정 부탁드립니다.
2022-08-30
2303
글번호 161834
답변완료
종목검색식을 부탁합니다.
안녕하세요? 종목검색식을 부탁합니다.
특정일(ndate) 기준 상승율 상위 종목을 검색하는 수식을 부탁합니다.
그리고 가능하다면 특정일(ndate)에서 다음 특정일(ndate1) 사이의 상승율 상위 종목을 검색하는
수식도 함께 알려주셨으면 감사하겠습니다.
같은 개념인데 다음 특정일을 지정하지 않으면 현재날짜가 될것이고 특정하면 그 특정일까지의
상승율 상위 종목을 검색하는 것이 되겠네요.
감사합니다.
2022-08-30
1661
글번호 161829
신대륙발견 님에 의해서 삭제되었습니다.
2022-08-30
8
글번호 161825
답변완료
문의 드립니다.~~~~
아래 답변에
"저가와 고가의 차이의 틱수를 봉위에 표시하고"
부분이 누락되어 다시 부탁드립니다..
안녕하세요
예스스탁입니다.
input : n(10);
if MarketPosition >= 0 and C > O and H-L >= PriceScale*n Then
{
Sell();
PlaySound("C:₩예스트레이더₩data₩Sound₩alert.wav");
}
if MarketPosition <= 0 and C < O and H-L >= PriceScale*n Then
{
Sell();
PlaySound("C:₩예스트레이더₩data₩Sound₩alert.wav");
}
즐거운 하루되세요
> 예스요 님이 쓴 글입니다.
> 제목 : 문의 드립니다.~~~~
> 항상 감사합니다,
다음식 부탁드립니다,
-양봉의 크기(저가와 고가의 차이)가 n틱 이상일 때
저가와 고가의 차이의 틱수를 봉위에 표시하고 경보음 울리고 종가에 매도
-음봉의 크기(저가와 고가의 차이)가 n틱 이상일 때 종가에 매수
저가와 고가의 차이의 틱수를 봉위에 표시하고 경보음 울리고 종가에 매수
2022-08-30
1157
글번호 161824