커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
3169
글번호 230811
빗소리7 님에 의해서 삭제되었습니다.
2024-05-22
2
글번호 179889
답변완료
종목검색식 해석 확인 요청
안녕하세요? 항상 많은 도움 주셔셔 감사드립니다. 궁금한게 있어서 전문가님께 여쭙고자 합니다.
1. 만약 아래와 같은 조건검색식이 있다고 한다면, "CrossUp(C,Var1[1])"의 의미가
전일 볼린져 밴드 상한선을 오늘 주가가 돌파하는 시점에 종목을 검색하는 검색조건식이 맞는지 궁금합니다.(아니면 올바르게 수정 부탁드립니다.)
2. CrossUp(C,Var1[1])를 CrossUp(H,Var1[1])로 바꾸면 오늘 전일 볼밴상한선을 돌파했던
모든 종목들이 검색되는게 맞는지요? 아니면 올바르게 수정 부탁드립니다.
2. 그리고 분봉에서 아래 "var1 = BollBandUp(20,2)"라인을 표시되도록 요청드립니다.
항상 감사합니다.
*조건식
===================================================================================
var1 = BollBandUp(20,2);
if CrossUp(C,Var1[1]) Then
Find(1);
===================================================================================
2024-05-22
1068
글번호 179888
답변완료
수식 수정 좀 부탁드립니다.
아래의 원래의 식 중 몇 가지 수정 좀 부탁드립니다.
볼린저밴드(bolinger band)전략
전략실행시간 17(진입시작)-05시52분(강제청산)
1.매수:
1.종가가 볼린저 밴드 상단선 돌파
2.아래 볼린저밴드 넓이 식으로 나온값 >=0.5
1+2만족시에 종가 매수진입
2.매도:
1종가가 볼린저 밴드 하단선 이탈
2아래 볼린저밴드 넓이 식으로 나온값 >=0.5
1+2만족시에 종가 매도진입
손절
1.매수:일목구름대 중심선 이탈시 실시간 손절
2.매도;일목구름대 중심선 돌파시 실시간 손절
익절
기존대로
재진입
익절 손절 모두 1+2만족시에 종가 재진입
볼린저밴드 넓이구하는 식
Inputs: Period(20), D(2);
Variables: BBTop(0), BBMid(0), BBBot(0),Bwidth(0);
BBTop = BollBandUp(Period,D);
BBMid = ma(C,Period);
BBBot = BollBandDown(Period,D);
BWidth = ((BBTop - BBBot)/ BBMid)*100;
Plot1(Bwidth, "Band Width");
PlotBaseLine1(0);
input : starttime(213000),Endtime(055000);
Inputs: Length(20), StdDev(2), Bars(2);
Var : BBTop(0),BBBot(0),T(0);
var : Tcond(False),trade(False),Sarv(0),entry(0);
BBTop = BollBandup(Length, StdDev);
BBBot = BollBanddown(Length, StdDev);
IF Endtime > starttime Then
SetStopEndofday(Endtime);
Else
{
if sDate != sDate[1] Then
SetStopEndofday(Endtime);
}
if (sdate != sdate[1] and stime >= EndTime) or
(sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then
Tcond = False;
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
{
Tcond = true;
trade = true;
IF Endtime <= starttime Then
{
SetStopEndofday(0);
}
T = 0;
if C > value1 and C > Sarv Then
T = 1;
if C < value2 and C < Sarv Then
T = -1;
}
Else
{
if T == 1 and !(C > value1 and C > Sarv) Then
T = 0;
if T == -1 and !(C < value2 and C < Sarv) Then
T = 0;
}
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
if Tcond == true and Trade == true Then
{
If MarketPosition <= 0 and CrossUp(C,BBTop) and C > O Then
{
Buy("b");
ExitLong("bx1",AtStop,L);
}
If MarketPosition >= 0 and CrossDown(C,BBBot) and C < O Then
{
Sell("s");
ExitShort("sx1",AtStop,H);
}
}
if MarketPosition == 1 Then
{
ExitLong("bx2",AtStop,L[BarsSinceEntry]);
}
if MarketPosition == -1 Then
{
ExitShort("sx2",AtStop,H[BarsSinceEntry]);
}
SetStopProfittarget(1000,PointStop);
#고가가 저가대비 300포인트 이상 크면
if Tcond == true and H >= L+300 Then
{
#trade는 False
trade = False;
#매수포지션이면 청산
if MarketPosition == 1 Then
exitlong();
#매도포지션이면 청산
if MarketPosition == -1 Then
ExitShort();
}
2024-05-22
1199
글번호 179887
답변완료
종목검색식 문의입니다.
아래 수식은 키움증권 영웅문에서 사용 중인 신심리도 수식입니다. 이것을 예스스팟 수식으로 변경할 수 있을까요? (아래 조건의 종목검색 수식을 부탁드려요)
(sum(if(C>C(1),1,0),10)*sum(if(C>C(1),C-C(1),0),10)/(sum(if(C>C(1),C-C(1),0),10)+sum(if(C<C(1),C(1)-C,0),10))-sum(if(C<C(1),1,0),10)*sum(if(C<C(1),C(1)-C,0),10)/(sum(if(C>C(1),C-C(1),0),10)+sum(if(C<C(1),C(1)-C,0),10)))/10 < 0.5
2024-05-22
960
글번호 179886
답변완료
문의 드립니다.
아래 식에서 신호발생 후 바로 매매하는 것이 아니라 틱수를 설정하여 매매하고자 합니다.
예를 들어 신호 발생 후 10틱 위에서 매수 진입하고
매도 경우는 신호 발생 후 10틱 아래서 매도 진입하도록 부탁드립니다.
신호 발생 후 원하는 매매가를 설정할 수 있도록 추가 부탁드립니다.
Input : Period(12);
value1 = TRIX(Period);
If CrossDown(value1, 0) and C > DayOpen(0) Then
{
Buy();
}
Input : Period(12);
value1 = TRIX(Period);
If CrossUp(value1, 0) and C < DayOpen(0) Then
{
Sell();
}
2024-05-22
1078
글번호 179885
답변완료
문의 드립니다.
Input : a(1), length(10),크기(15);
var : truehighv(0),TrueLowv(0),TrueRangev(0),xatr(0),nLoss(0),src(0) ;
var : xClose(0),xOpen(0),xHigh(0),xLow(0);
var : xATRTrailingStop(0),poss(0), emav(0), ab(False), be(False),tx(0) ;
var : dir(0) ;
if index == 0 then
{
xOpen = open;
xClose = (O+H+L+C)/4;
xHigh = MaxList( high, xOpen, xClose);
xLow = MinList( low, xOpen,xClose);
}
else
{
xClose = (O+H+L+C)/4;
xOpen = (xOpen [1] + xClose [1])/2 ;
xHigh = MaxList(High, xOpen, xClose) ;
xLow = MinList(Low, xOpen, xClose) ;
}
////////
If xClose[1] > xHigh then
TrueHighv = xClose[1];
else
TrueHighv = xHigh;
If xClose[1] < xLow then
TrueLowv = xClose[1];
else
TrueLowv = xLow;
TrueRangev = TrueHighv - TrueLowv;
xatr = ma(TrueRangev,length);
nLoss = a * xatr ;
##########
src = xClose ;
xATRTrailingStop = 0.0 ;
xATRTrailingStop = iff(src > xATRTrailingStop[1] and src[1] > xATRTrailingStop[1],
max(xATRTrailingStop[1], src - nLoss),
iff(src < xATRTrailingStop[1] and src[1] < xATRTrailingStop[1],
min(xATRTrailingStop[1],src + nLoss),
iff(src > xATRTrailingStop[1], src - nLoss, src + nLoss)));
poss = 0 ;
poss = iff(src[1] < xATRTrailingStop[1] and src > xATRTrailingStop[1], 1,
iff(src[1] > xATRTrailingStop[1] and src < xATRTrailingStop[1], -1, poss[1])) ;
emav = ema(src,1);
if crossup(emav, xATRTrailingStop) Then
ab = true ;
Else
ab = False;
if crossup(xATRTrailingStop, emav) Then
be = true ;
Else
be = False;
////////////
dir = iff(src > xATRTrailingStop and ab == true , 1 ,iff( src < xATRTrailingStop and be == true , -1 , dir));
Plot1( dir);
if dir == 1 and dir[1] == -1
Then
{
tx = Text_New(sDate,sTime,low,"▲");
Text_SetStyle(tx,2,0);
Text_SetSize(tx, 크기);
Text_SetColor(tx,black);
}
if dir == -1 and dir[1] == 1
Then
{
tx = Text_New(sDate,sTime,high,"▼");
Text_SetStyle(tx,2,1);
Text_SetSize(tx, 크기);
Text_SetColor(tx,black);
}
위 수식을 시스템식으로 좀 바꿔주세요.
2024-05-22
1020
글번호 179884
답변완료
재검토 부탁드립니다.
안녕하세요.
87355번 수식수정 감사합니다.
그런데 잘못된 결과가 나옵니다.
1개전봉부터 30개봉까지의 거래량으로 최고거래량보다 현재봉의 거래량이 더 커야 하는데
2023년 1월봉을 기준으로 해서 검색을 해보면 첨부하는 종목이 A보다 B가 더 커서 조건 불만족인데 검색이 됩니다.
다시 재검토 부탁드립니다.
2024-05-22
952
글번호 179881
답변완료
부탁 드립니다.
1번이라는 고점이 만들어지고 (5일선 언덕), 언덕을 만든 마지막 양봉 종가 =>A
1번 보다 작은 저점을 만든 후, (조정이 있었다는 것) => 2번 이라는 저점
2번의 저점을 만든 후, 다시
1번의 고점을 돌파를 한다. 이후
조정시 1번 고점 까지 눌림시. 그 5일선 언덕의 양봉 종가 5% 부근 에서 검색을
하고 싶습니다.
2024-05-22
1088
글번호 179880
답변완료
수식 부탁드립니다.
아래 수식에서 추가 할려고 합니다.
현재가가 5분봉 5선 아래 있을때는 매수 신호가 나오지 않게하고
5분봉 5선 위에 있을때는 매도 신호가 나오지 않게 할려고 합니다.
var : mav1(0),mav2(0),mav3(0),T1(0),T2(0),T3(0);
mav1 = ma(c,5);
mav2 = ma(c,20);
mav3 = ma(c,60);
if mav1 > mav1[1] Then
T1 = 1;
if mav1 < mav1[1] Then
T1 = -1;
if T1 == 1 and T1[1] != 1 Then
var1 = 0;
// if T1 == 1 and C > O and (C+O)/2 >= mav1 and mav2 > mav2[1] and mav3 > mav3[1] Then{ 60이평포함
if T1 == 1 and C > O and (C+O)/2 >= mav1 and mav2 > mav2[1] and mav1 > mav2 Then{
var1 = var1+1;
if var1 == 1 Then
buy("5매수");
}
if T1 == -1 and T1[1] != -1 Then
var2 = 0;
// if T1 == -1 and C < O and (C+O)/2 <= mav1 and mav2 < mav2[1] and mav3 < mav3[1] Then{ 60이평포함
if T1 == -1 and C < O and (C+O)/2 <= mav1 and mav2 < mav2[1] and mav1 < mav2 Then{
var2 = var2+1;
if var2 == 1 Then
sell("5매도");
}
2024-05-22
1067
글번호 179874