커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1581
글번호 230811
답변완료
식 부탁드립니다.
안녕하세요?
1)10.20,60 이평선이 정배열로 봉이 진행 중
2) 20이평선이 60이평선 위에 있는 동안 최초로 봉의 저점이 20이평선을 하회했을때 그 봉에서의 20이평선 가격을 sp라 하고
3) 그 뒤 60이평선이 상향 진행되어 sp 가격까지 도달된 이후
4) 두번째로 봉의 저점이 20이평선을 하회하게 되면 그 선에서 매도 1계약하고 그 때의 20이평선 가격을 sp2라 하고
5) 그 후 만일 봉의 저점이 60이평선을 하회하지 못한 채 봉의 저점이 20이평선 위로 올라가 최소한 10봉을 진행하게 되고 다시 60 이평선이 또 상향하여 sp2가격에 이르면 매도 1계약
6)...그 식으로 누적시켜 가다가 상황이 반전되어 그 다음엔 반대로 역배열이 되면 독같은 방식으로 일단 최초의 역sp에서 매도진입분 전량청산하고 매수 1계약, 그 다음 sp2에서 또 매수 1계약...하는 식 좀 부탁드립니다.
번번이 부탁드려 죄송합니다. 감사합니다.
2023-02-01
847
글번호 165921
답변완료
문의드립니다
안녕하세요?
아래지표식을 챠트에적용시 첨부사진처럼 선으로적용시와 막대로적용시 봉1개의 색상차이가있습니다
막대그래프는 무시하여주시고 선그래프기준으로 사진에표시한것과 같이(선의기울기,양선음선에따라) 매수매도 시스템식을 구합니다 (신호발생은 사진과달리 1봉 다음 에 발생하도록 부탁드립니다 )
감사드립니다
input : inp_Sensitivity(0.01),inp_HiLo_Lookback(5),
inp_Slow_MA_Period(26),inp_Slow_MA_Method("EMA"),
inp_Fast_MA_Period(12),inp_Fast_MA_Method("EMA"),
inp_Signal_MA_Period(9),inp_Signal_MA_Method("EMA");
var : inp_Source(0),Hbarssince(-1),Lbarssince(-1),HiLo_Range(0),MA_Slow_Deviation(0);
var : MA_Fast(0),MA_Slow(0),MA_Slow_ATR(0);
Var : SumSqrt(0), Avgv(0), cnt(0),Histogrm(0),Main_Line(0),Signal_Line(0),Histogrm_Color(0);
inp_Source = close;
if inp_Fast_MA_Method == "SMA" Then
MA_Fast = ma(inp_Source, inp_Fast_MA_Period);
Else
MA_Fast = ema(inp_Source, inp_Fast_MA_Period);
if High == highest(H,inp_HiLo_Lookback) Then
Hbarssince = 0;
Else
{
if Hbarssince >= 0 Then
Hbarssince = Hbarssince+1;
}
if low == Lowest(L,inp_HiLo_Lookback) Then
Lbarssince = 0;
Else
{
if Lbarssince >= 0 Then
Lbarssince = Lbarssince+1;
}
HiLo_Range = abs(Hbarssince-Lbarssince) * PriceScale * 100000;
if inp_Slow_MA_Method == "SMA" Then
MA_Slow = ma(inp_Source, inp_Slow_MA_Period);
Else
MA_Slow = ema(inp_Source, inp_Slow_MA_Period);
If inp_Slow_MA_Period != 0 Then
{
Avgv = MA_Slow;
SumSqrt = 0;
For cnt = 0 To inp_Slow_MA_Period - 1 Begin
SumSqrt = SumSqrt + (C[cnt] - Avgv) * (C[cnt] - Avgv);
End;
MA_Slow_Deviation = SquareRoot(SumSqrt / inp_Slow_MA_Period);
}
Else
MA_Slow_Deviation = 0;
MA_Slow_ATR = atr(inp_Slow_MA_Period);
Histogrm = MA_Slow_Deviation - MA_Slow_ATR;
Main_Line = Histogrm;
if inp_Signal_MA_Method == "SMA" Then
Signal_Line = ma(inp_Source, inp_Signal_MA_Period);
Else
Signal_Line = ema(inp_Source, inp_Signal_MA_Period);
Histogrm_Color = green;
if MA_Fast >= MA_Fast[1] then
{
if HiLo_Range >= inp_Sensitivity then
Histogrm_Color = Red;
else
Histogrm_Color = yellow;
}
else
{
if HiLo_Range >= inp_Sensitivity Then
Histogrm_Color = Blue;
else
Histogrm_Color = White;
}
var : T(0);
if Histogrm > Histogrm[1] Then
T = 1;
if Histogrm < Histogrm[1] Then
T = -1;
plot1(Histogrm,"BBMACD막대", Histogrm_Color);//속성에서 막대
2023-02-01
867
글번호 165909
답변완료
수식 부탁드립니다.
안녕하세요?
1)어느 봉의 고점이 볼린저밴드 상단을 돌파하게 되면,
2)그 봉을 제1봉이라 했을 때에 제1봉의 고점을 갱신하면 제2봉, 제2봉의 고점을 갱신하면 제3봉, 제3봉의 고점을 갱신하면 제4봉이라 하는 식으로 고점이 갱신되어 나갈 때
3) 제3봉에서 1계약, 제6봉에서 2계약, 제9봉에서 3계약을 매도하고
4) 10봉 이평선을 하향돌파하면 전량매도하고.
5) 반대로 어느 봉의 저점이 볼린저밴드 하단 밑에 위치하는 경우 반대방식으로 매수하였다가 20봉 이평선을 상향돌파하면 전량청산하는 식 부탁드립니다.
6) 몇째봉에서 몇계약을 사고팔지는 외부변수로 처리하여 변경해 볼 수 있으면 좋겠습니다.
감사합니다.
2023-02-01
781
글번호 165905
답변완료
문의드립니다
안녕하세요?
아래수식을 data2 불러오지않코 단독으로 사용할수있도록 부탁드립니다
감사합니다
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);
Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime
#==========================================#
HH = IFF(0==1,data2(C),data2(H));
LL = IFF(0==1,data2(C),data2(L));
If data2(Index) == 0 Then
{
고[1,1] = HH;
저[1,1] = LL;
}
Condition1 = data2(Highest(HH,length)) == HH and 최종고가 <> HH;
Condition2 = data2(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] = data2(Index);
고[1,3] = data2(sDate);
고[1,4] = data2(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] = data2(Index);
고[1,3] = data2(sDate);
고[1,4] = data2(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] = data2(Index);
저[1,3] = data2(sDate);
저[1,4] = data2(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] = data2(Index);
저[1,3] = data2(sDate);
저[1,4] = data2(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],data2(sdate),data2(stime),고[2,1]);
TL_Delete(TL13);
TL13 = TL_New(고[1,3],고[1,4],고[1,1],data2(Sdate),data2(Stime),고[1,1]);
TL_SetExtRight(TL13,true);
TL_SetSize(TL13,2);
TL_SetColor(TL12,clr1);
TL_SetSize(TL12,2);
clr1 = Pink;
TL_SetColor(TL13,Pink);
}
if T == 1 and T[1] != 1 Then
{
TL14= TL_New(저[2,3],저[2,4],저[2,1],data2(sdate),data2(stime),저[2,1]);
TL_Delete(TL15);
TL15= TL_New(저[1,3],저[1,4],저[1,1],data2(sdate),data2(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);
}
#================================================================#
VAR:mav5(0),mav10(0),mav20(0),mav40(0),mav60(0),mav120(0),aa(0);
mav5=ma(c,5);
mav10=ma(c,10);
mav20=ma(c,20);
mav40=ma(c,40);
mav60=ma(c,60);
mav120=ma(c,120);
condition11=CountIf(mav10<mav20,20) >= 10 and t==1 and
저[1,1] <mav20[Index-저[1,2]] and 고[1,1]>mav20[Index-고[1,2]];
var:box1(0);
if t == 1 Then
{
if t != t[1] Then
Condition12 = false;
if condition11 == true and Condition12 == False Then
{
Condition12 = true;
Box1 = Box_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]);
Box_Setcolor(box1,MAGENTA);
Box_Setfill(box1,true,100,true);
}
if Condition12 == true Then
Box_SetEnd(box1,고[1,3],고[1,4],고[1,1]);
}
2023-02-01
1009
글번호 165900
답변완료
안녕하세요. 시스템수식문의드립니다.
안녕하세요.
시스템 수식을 부탁드립니다.
양계좌를 사용하려 합니다. 매수 수식, / 매도 수식 각각 따로 1개씩 만들어 주시면 감사하겠습니다.
설명중에 ( ) 괄호친부분은 , 사용자가 input 에 입력조정할 수 있도록 만들어 주시면 감사하겠습니다.
=========
매수수식
input : P1(15),P2(60),P3(120);
var1 = ma(C,P1);
var2 = ma(C,P2);
var3 = ma(C,P3);
if O < var1 and var1 > var1[1] and var2 > var2[1] and var3 > var3[1] and C > O Then
[매수수식설명]
-해당봉이 완성되지 않은 상태라도- 현재가가 위의 조건이 충족하고 그 충족된 가격의 (+3)틱에 가격이 도달했을시 ,
보유포지션이 없을때만 매수 (1)계좌 시장가진입,
진입후 수익 (100) 틱 도달시 진입한 계좌 모두 강제수익청산
진입후 손실 (100) 틱 도달시 진입한 계좌 모두 강제손절청산
(18시)매매시작해서, 새벽(02시55분) 에 보유계좌 모두 강제청산, 매매종료
============
매도수식
input : P1(15),P2(60),P3(120);
var1 = ma(C,P1);
var2 = ma(C,P2);
var3 = ma(C,P3);
if O > var1 and var1 < var1[1] and var2 < var2[1] and var3 < var3[1] and C < O Then
[매도수식설명]
-해당봉이 완성되지 않은 상태라도- 현재가 위의 조건이 충족하고 그 충족된 가격의 (-3)틱에 가격이 도달했을시 ,
보유포지션이 없을때만 매도 (1)계좌 시장가진입,
진입후 수익 (100) 틱 도달시 진입한 계좌 모두 강제수익청산
진입후 손실 (100) 틱 도달시 진입한 계좌 모두 강제손절청산
(18시)매매시작해서, 새벽(02시55분) 시에 모든보유계좌 모두 강제청산, 매매종료
================
늘 감사드리며, 개발자님께 좋은일 가득하길 바랍니다.
감사합니다.~
2023-02-01
802
글번호 165899
답변완료
수식부탁드립니다.
매수 진입신호 발생시
전일 종가대비 150틱 이상 상승했을때에는 진입이 안되게 하고
매도 진입신호 발생시
전일 종가대비 150틱 이상 하락했을때에는 진입이 안되게 하는 수식 부탁드립니다.
2023-02-01
816
글번호 165898
답변완료
시스템 작성의뢰
수고 하십니다 !
obv 지표가 -38.09 로 상승하고 er bear lower 지표가-1,09 로 하락하고 on balance price 지표가 0.25
로 상승하고 pvi 지표가 100.01 이상 상승 하고 3840 이평선이 7680 이평선을 업크로스 하고 간격이 6틱이상 벌어지고 120
이평선과 240 이평선이 다운 크로스 할때 매도를 하고 1920 이평선 이 7680 이평선을 다운크로스 하고 120 이평선이 240 이평선을
업크로스 할때 청산을 한다
obv 지표가 -1064.90 으로 하락을 하고 er bear power지표가 -1.08 로 상승 하고 on balance price 지표가
-70.41 이하로 하락 하고 pvi 지표가 99.37 이하로 하락 하고 3840 이평선이 7680 이평선을 다운크로스 하고 간격이 6틱이상
벌어지고 120 이평선과 240 이평선이 업크로스 할때 매수를 하고 1920 이평선 이 7680 이평선을 업크로스 하고 120 이평선이 240
이평선을 다운크로스 할때 청산을 한다
2023-01-31
1068
글번호 165897
답변완료
질문입니다.
안녕하세요?
1. 어느 날의 종가에 청산하고자 할 때에, 미국의 지수선물은 동시호가가 없이 끝나지만, 국내 선물은 동시호가가 있는데, 각각 어떻게 하면 종가에 진입이나 청산이 가능한지요? 만일 일봉차트에서는 진입청산이 불가능하다면, 분봉차트에서는 하루의 종가에 진입청산이 가능하지 않을까 싶은데, 각각 그 식 좀 부탁드립니다.
2. 간혹 날짜나 시간을 지정해서 조건화하는 식을 보았는데, 거기에서 지정하는 날짜나 시간은 무엇 기준인지요? 개인의 컴퓨터에서 사용하는 시간인지, 거래소의 시간인지, 해외선물의 경우에는 국내것인지 해외것인지 가르쳐 주십시오. 예스트레이더 차트에 보면 봉마다 그 봉의 일시가 적혀 있던데, 혹시 그것 기준인가요?
감사합니다.
2023-01-31
913
글번호 165896
답변완료
문의드립니다
아래 첨부된 수식 감사드립니다... 감사 ^^
아래 첨부된 수식을 국내선물 기준으로 하여
년봉=>월봉
월봉=>주봉
주봉=>일봉
일봉=>30분봉
타주기분봉 형태로 만들어 주세요... 미리 감사드립니다
=====================
input : week(2000);
var : S1(0),D1(0),TM(0),TF(0),box(0);
var : oo(0),hh(0),ll(0),TL1(0),TL2(0),clr(0),ii(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%week;
if Bdate != Bdate[1] or
(Bdate == Bdate[1] and week > 1 and TF < TF[1]) or
(Bdate == Bdate[1] and week > 1 and TM >= TM[1]+week) or
(Bdate == Bdate[1] and week == 1 and TM > TM[1]) Then
{
oo = O;
hh = H;
ll = L;
box = Box_New(sDate,sTime,oo,NextBarSdate,NextBarStime,c);
TL1 = TL_New(sDate,sTime,max(C,oo),sDate,sTime,hh);
TL2 = TL_New(sDate,sTime,min(C,oo),sDate,sTime,ll);
ii = 1;
}
Else
{
ii = ii +1;
if h > hh Then
hh = h;
if l < ll Then
ll = l;
var1 = Round(ii/2,1);
Box_SetEnd(box,sDate,sTime,C);
TL_SetBegin(TL1,sDate[var1],sTime[var1],max(c,oo));
TL_SetEnd(TL1,sDate[var1],sTime[var1],hh);
TL_SetBegin(TL2,sDate[var1],sTime[var1],min(c,oo));
TL_SetEnd(TL2,sDate[var1],sTime[var1],ll);
}
if C > oo Then
clr = Red;
else if C < oo Then
clr = Blue;
Else
clr = Green;
Box_SetColor(box,clr);
Box_SetSize(box,1);
Box_SetFill(box,true,50,True); #박스채움 투명도 설정 0(투명) ~ 255(불투명), 마지막 True 봉 뒤 배치
TL_SetStyle(TL1,3); # 윗꼬리 아랫꼬리 점선처리
TL_SetStyle(TL2,3); # 윗꼬리 아랫꼬리 점선처리
TL_SetColor(tl1,clr);
TL_SetColor(tl2,clr);
}
2023-01-31
852
글번호 165895