커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
3295
글번호 230811
답변완료
시스템 신호 수식 요청
매수신호
1. 프로그램 순매수(차익+비차익) 5이평선이 우상향하고 있고,
2. 스토캐스틱K(20,10,10)가 침체권(20)에서 벗어난 후,
3. 선물 90틱 20이평선이 우상향하고 있을 때,
20이평선 위에서 5이평선이 상방으로 턴하면 매수
매도신호
1. 프로그램 순매수(차익+비차익) 5이평선이 우하향하고 있고,
2. 스토캐스틱K(20,10,10)가 과열권(80)에서 이탈한 후,
3. 선물 90틱 20이평선이 우하향하고 있을 때,
20이평선 아래에서 5이평선이 하방으로 턴하면 매도
부탁해요^^
2023-02-06
902
글번호 166043
답변완료
전일종가 대비 상승, 하락에 반대로 진입(최적화 기능을 사용)
최적화 기능을 사용하여서 전일 종가에서 몇틱까지 갔을때 반대로 진입하는게 좋을지 수식으로 찾고있습니다.
수식 부탁드립니다.
input : a(0), b(0);
if 전일 종가 대비 a틱만큼 상승하면 매도 진입 -> 당일 종가청산
if 전일 종대 대비 b틱만틈 하락하면 매수 진입 -> 당일 종가청산
조건
1) 하루에 1번만 진입 가능(피라미딩 안함)
2) 등락을 퍼센트로 찾는것이 아니라 각 종목마다 틱으로 찾을 예정
2023-02-06
996
글번호 166042
답변완료
부탁드립니다.
1. 옵션 월물 첫날의 시가(흰색), 고가(빨강색), 저가(파란색), 종가(검정색)를 만기시까지 수평선으로 구현해 주세요. 또 월최고가, 월최저가도 함께 구현해 주세요
고맙습니다.
2023-02-06
950
글번호 166041
답변완료
문의 드립니다!
안녕하세요!
아래수식을 N번째 캔들부터(예 2번째 캔들) 가로선이 발생되도록 수정 부탁드립니다
감사합니다!
----------------------------------------------------------------------------
input : 타주기분(30),n(10),nth(5);
var : S1(0),D1(0),TM(0),TF(0),cnt(0),OO(0),HH(0),LL(0),CC(0);
var : ii(0),i1(0),i2(0),tempmax(0),tempi(0);
Array : RR[200](0),MM[200](0),DI[50](0);
Array : tempRR[200](0),tempMM[200](0),NTHVALUE[200](0);
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
}
if D1 > 0 then
{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TF = TM%타주기분;
if Bdate != Bdate[1] or
(Bdate == Bdate[1] and 타주기분 > 1 and TF < TF[1]) or
(Bdate == Bdate[1] and 타주기분 > 1 and TM >= TM[1]+타주기분) or
(Bdate == Bdate[1] and 타주기분 == 1 and TM > TM[1]) Then
{
ii = ii+1;
if Bdate != Bdate[1] Then
{
DI[0] = ii;
for cnt = 1 to 49
{
Di[cnt] = Di[cnt-1][1];
}
}
OO = O;
HH = H;
LL = L;
RR[0] = 0;
MM[0] = 0;
for cnt = 1 to 199
{
RR[cnt] = RR[cnt-1][1];
MM[cnt] = MM[cnt-1][1];
tempRR[cnt] = RR[cnt];
tempMM[cnt] = MM[cnt];
}
}
if H > HH Then
HH = H;
if L < LL Then
LL = L;
CC = C;
RR[0] = abs(OO-CC);
MM[0] = (OO+CC)/2;
tempRR[0] = RR[0];
tempMM[0] = MM[0];
if D1[n] > 0 Then
{
if Bdate != Bdate[1] Then
{
For i1 = 1 to nth
{
tempmax = -1;
For i2 = 1 to ii-DI[n]
{
if (tempRR[i2] >= tempmax ) then
{
tempmax = tempRR[i2];
tempi = i2;
}
}
NTHVALUE[i1] = tempMM[tempi];
tempRR[tempi] = -1;
}
}
Plot1(NTHVALUE[1]);
Plot2(NTHVALUE[2]);
Plot3(NTHVALUE[3]);
Plot4(NTHVALUE[4]);
Plot5(NTHVALUE[5]);
Plot6(NTHVALUE[1]);
Plot7(NTHVALUE[2]);
Plot8(NTHVALUE[3]);
Plot9(NTHVALUE[4]);
Plot10(NTHVALUE[5]);
}
}
2023-02-06
878
글번호 166040
답변완료
80651 지표 수정 부탁드려요
아래와 같이 답변주셨는데
일단 박스가 형성안되고 시가대비 상단만 빨간선으로 표시 되네요
박스보다는
변수를 1. 상단, 2. 시가 , 3. 하단
3개를 선으로 표시하여 주세요
제가 채우기 하여 자유롭게 색이랑은 표시하도록 하겠습니다
시스템식으로도 하나 부탁드려요!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
압도적으로 감사드립니다!
-----------------------------------------------------------------------
> 돈을잃자 님이 쓴 글입니다.
> 제목 : 지표부닥트려요
> 첨부된 그림과 같이
1. 30분봉으로 봤을때
2. 주봉단위로 잘라서
3. 아래와 같이 주봉 시가 대비 일정부분 위 아래 비율을 제가 변수로 넣으면
4. 박스로 표시 되게 하고 싶어요
5. 박스 색깔 및 시가대비 비율은 제가 지정할 수 있게 해주세요
항상 고맙습니다
-----------------------
안녕하세요
예스스탁입니다.
input : upPercent(10),dnPercent(5);
var : box(0);
if DayOfWeek(Bdate) < DayOfWeek(Bdate[1]) Then
{
var1 = O;
box = Box_New(sDate,sTime,var1*(1+UpPercent/100),NextBarSdate,NextBarStime,var1*(1+DnPercent/100));
#색상
Box_SetColor(box,Red);
Box_SetStyle(box,3);
}
Else
Box_SetEnd(box,NextBarSdate,NextBarStime,var1*(1+DnPercent/100));
즐거운 하루되세요
2023-02-06
818
글번호 166037
답변완료
수식 문의
아래 지표는 하케아쉬에 이평을 넣어 더욱 스무드하게 만든 지표입니다.
문제는, 본 지표를 분봉에 적용할 때, 전일 종가를 반영해서 계산하다 보니
시가봉~n봉까지는 움직임과는 다르게 표현될 때가 있습니다.
이에, 본 수식을 수정하여,
예를 들어, ma5를 적용한다 했을 때,
5째봉까지는 누적으로 이평값을 계산해서 적용하고
5째봉 이후 부터는 쭉 ma5를 적용하고 싶습니다.
즉,
시가가 양봉이면 양봉으로, 음봉이면 음봉으로 표시
시가+2봉 : ma2를 적용
시가+2+3봉 : ma3을 적용
시가+2+3+4봉 : ma4를 적용
시가+2+3+4+5봉 : ma5를 적용
6봉 부터는 종가까지 ma5를 적용하여 뿌려줍니다.
-------- 아래 ------------
input : MaPeriod(6),MaPeriod2(2);
var : maOpen(0),maClose(0),maLow(0),maHigh(0);
var : haOpen(0),haClose(0),haLow(0),haHigh(0);
var : ExtMapBuffer5(0),ExtMapBuffer6(0),ExtMapBuffer4(0),ExtMapBuffer3(0),ExtMapBuffer2(0),ExtMapBuffer1(0);
var : ExtMapBuffer7(0),ExtMapBuffer8(0);
var : r(0),g(0),b(0);
if Index == 0 Then
{
maOpen=Open;
maClose=Close;
maLow=Low;
maHigh=High;
}
Else
{
maOpen=(maOpen[1]*(MAperiod-1)+Open)/MAPeriod;
maClose=(maClose[1]*(MAperiod-1)+Close)/MAPeriod;
maLow=(maLow[1]*(MAperiod-1)+Low)/MAPeriod;
maHigh=(maHigh[1]*(MAperiod-1)+High)/MAPeriod;
haOpen=(ExtMapBuffer5[1]+ExtMapBuffer6[1])/2;
haClose=(maOpen+maHigh+maLow+maClose)/4;
haHigh=Max(maHigh, Max(haOpen, haClose));
haLow=Min(maLow, Min(haOpen, haClose));
if (haOpen<haClose) then
{
r=255;
g=94;
b=0;
ExtMapBuffer7=haLow;
ExtMapBuffer8=haHigh;
}
else
{
r=92;
g=209;
b=229;
ExtMapBuffer7=haHigh;
ExtMapBuffer8=haLow;
}
ExtMapBuffer5=haOpen;
ExtMapBuffer6=haClose;
ExtMapBuffer1=WMA(ExtMapBuffer7,MAperiod2);
ExtMapBuffer2=WMA(ExtMapBuffer8,MAperiod2);
ExtMapBuffer3=WMA(ExtMapBuffer5,MAperiod2);
ExtMapBuffer4=WMA(ExtMapBuffer6,MAperiod2);
}
PlotPaintBar(ExtMapBuffer2,ExtMapBuffer1,ExtMapBuffer3,ExtMapBuffer4,"강조",Rgb(r,g,b));
2023-02-06
575
글번호 166033
답변완료
선물 호가잔량 차
선물호가 잔량차에서
기준선 "0" 을 중심으로 상향돌파시 매수.
기준선 "0" 을 중심으로 하향돌파시 매도.
var1 = bids-asks;
plot1(var1,"잔량차",iff(var1 > 0,RED,BLUE));
PlotBaseLine1(0,"기준선");
2023-02-06
519
글번호 166031
답변완료
지표 부탁드려용
아래의 지표를
시작점과 끝점을 정해서 하고 싶은데 가능할까요?
(게시글 80649 지표 답변하신거 수정하여 활용하려고요)
버전1: 한 주의 시가부터 종가까지
(예를들면 30분봉으로 했을때 그 주 월요일 9시부터 금요일 종가까지 표시되게
월요일이 공휴일이었으면 화요일 시가부터 종가까지
일봉이든 분봉이든 적용가능하게
버전2: 하루의 시가부터 종가까지
분봉에서 쓰려고 하는데요
예를들면 20분봉으로 하면 그날 시가부터 종가까지 표시
------------------------------------------------------------------------
input:length(6);
Var:j(0),jj(0),HH(0),LL(0),최종고가(0),최종저가(0),최종꼭지점(""),처리구분(""),
TL1(0),Text1(0),TL2(0),TL3(0),TL4(0),TL5(0),TL12(0),TL13(0),TL14(0),TL15(0),T(0),고점변곡(""),저점변곡("");
var : clr1(0),clr2(0),BE(0),SE(0),cnt(0),upcond(False),dncond(False),text2(0);
Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime
#==========================================#
HH = IFF(0==1,C,H);
LL = IFF(0==1,C,L);
If Index == 0 Then
{
고[1,1] = HH;
저[1,1] = LL;
}
Condition1 = Highest(HH,length) == HH and 최종고가 <> HH;
Condition2 = Lowest (LL,length) == LL and 최종저가 <> LL;
처리구분 = "";
If Condition1 and Condition2 Then // 기간고점과 기간저점 동시 발생
{
If 최종꼭지점 == "저점" Then
{
If 저[1,1] > LL Then 처리구분 = "저점처리";
Else 처리구분 = "고점처리";
}
Else If 최종꼭지점 == "고점" Then
{
If 고[1,1] < HH Then 처리구분 = "고점처리";
Else 처리구분 = "저점처리";
}
}
Else If Condition1 Then 처리구분 = "고점처리";
Else If Condition2 Then 처리구분 = "저점처리";
#==========================================#
If 처리구분 == "고점처리" Then
{
T = 1;
최종고가 = HH; // 신규고점을 체크하기 위해 저장
If 최종꼭지점 == "저점" Then
{
For j = 10 DownTo 2
{
For jj = 1 To 4
{
고[j,jj] = 고[j-1,jj];
}
}
고[1,1] = HH;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]);
If 1 == 1 Then
{
Text1 = Text_New(고[1,3],고[1,4],고[1,1],NumToStr(고[1,1],2));
Text_SetStyle(Text1, 0, 1);
Text_SetColor(Text1,Red);
}
TL_SetSize(TL1,1);
TL_SetColor(TL1,Gray);
}
Else If 고[1,1] < HH Then // 1번 고점보다 높은 고가 출현
{
고[1,1] = HH;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]);
// 시작점은 변동없고 끝점의 위치가 현재 봉으로 연장된 것임
If 1 == 1 Then
{
Text_SetLocation(Text1,고[1,3],고[1,4],고[1,1]);
Text_SetString(Text1,NumToStr(고[1,1],2));
}
}
최종꼭지점 = "고점";
}
#==========================================#
If 처리구분 == "저점처리" Then
{
T = -1;
최종저가 = LL;
If 최종꼭지점 == "고점" then
{
For j = 10 DownTo 2
{
For jj = 1 To 4
{
저[j,jj] = 저[j-1,jj];
}
}
저[1,1] = LL;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]);
If 1 == 1 Then
{
Text1 = Text_New(저[1,3],저[1,4],저[1,1],NumToStr(저[1,1],2));
Text_SetStyle(Text1, 0, -1);
Text_SetColor(Text1,Blue);
}
TL_SetSize(TL1,1);
TL_SetColor(TL1,Gray);
}
Else If 저[1,1] > LL then
{
저[1,1] = LL;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]);
If 1 == 1 Then
{
Text_SetLocation(Text1,저[1,3],저[1,4],저[1,1]);
Text_SetString(Text1,NumToStr(저[1,1],2));
}
}
최종꼭지점 = "저점";
}
if T == -1 and T[1] != -1 Then
{
TL12 = TL_New(고[2,3],고[2,4],고[2,1],sdate,stime,고[2,1]);
TL_Delete(TL13);
TL13 = TL_New(고[1,3],고[1,4],고[1,1],Sdate,Stime,고[1,1]);
TL_SetExtRight(TL13,true);
TL_SetSize(TL13,2);
TL_SetColor(TL12,clr1);
TL_SetSize(TL12,2);
clr1 = Pink;
TL_SetColor(TL13,clr1);
upcond = False;
}
if T == 1 and T[1] != 1 Then
{
TL14= TL_New(저[2,3],저[2,4],저[2,1],sdate,stime,저[2,1]);
TL_Delete(TL15);
TL15= TL_New(저[1,3],저[1,4],저[1,1],sdate,stime,저[1,1]);
TL_SetExtRight(TL15,true);
TL_SetColor(TL14,clr2);
TL_SetSize(TL14,2);
clr2 = LightBlue;
TL_SetColor(TL15,clr2);
TL_SetSize(TL15,2);
dncond = False;
}
#===================================================#
VAR:mav5(0),mav10(0),mav20(0),mav40(0),mav60(0),mav120(0),mav30(0);
mav5=ma(c,5);
mav10=ma(c,10);
mav20=ma(c,20);
mav30=ma(c,30);
mav40=ma(c,40);
mav60=ma(c,60);
mav120=ma(c,120);
#============#
if (min(C,ma(c,5)) > TL_GetValue(TL13,sDate,sTime)) Then
{
clr1 = Red;
TL_SetColor(TL13,clr1);
}
if max(C,ma(c,5)) < TL_GetValue(TL15,sDate,sTime) Then
{
clr2 = Blue;
TL_SetColor(TL15,clr2);
}
#=========================================================================#
array:Redline[4](0),Blueline[4](0),Pinkline[4](0),liblueline[4](0),libluex[4](0),Pinkx[4](0);
var:x(0);
#==============레드==========================#
if upcond == False and min(c,mav5)>TL_GetValue(TL13,sDate,sTime) Then
{
upcond = true;
Redline[0]=TL_GetValue(TL13,sDate,sTime);
x=0;
For cnt=1 to 4
{
Redline[cnt]=Redline[cnt-1][1];
}
}
condition1 = mav20<Redline[0]and max(c,mav5)<Redline[0]and mav5<mav10;
condition2 = mav20>Redline[0]and min(c,mav5)>Redline[0]and mav5>mav10;
condition3= min(c,mav5)>mav20 and mav10>=mav20;
if Condition2 == False and Condition3 == true and condition1 Then
{
x=x+1;
}
Plot1(x);
2023-02-06
593
글번호 166030
답변완료
지표 좀...
감사합니다 부탁드려요
나스닥 분봉에서 당일시가에서 출발하여 0.5(변수) 퍼센트 상승시 상승지점에 시가부터 사각형표시하고
이 사각형을 기준으로 또 상승시마다 사각형표시(사각형이 0.5마다 생성되게)
하락시 에도 동일하게 부탁드립니다.
(사각형 0.5 퍼센트를 기준으로 상승, 하락을 반복으로 표시)
지표가 상승,하락 지점까지 봉갯수에 따라서 정사각형, 세로선 긴 직사각형, 가로가 긴 직사각형
으로 나타날것 같습니다.
2023-02-06
678
글번호 166029