커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1752
글번호 230811
회원 님에 의해서 삭제되었습니다.
2022-05-15
68
글번호 158873
답변완료
수식 수정부탁드립니다.
안녕하십니까
아래수식 잘 사용중입니다.
조건을 추가하고 싶어 글남깁니다.
--------------------------------------------
var : mav(0);
mav = ma(C,5);
if Bdate != Bdate[1] Then
{
Condition1 = False;
var1 = 0;
Var2 = 0;
}
var1 = var1+v;
Var2 = Var2+1;
Var3 = var1/Var2;
if C < DayOpen and mav < mav[1] Then
Condition1 = true;
if Condition1 == true and CrossUp(c,DayOpen) Then
Buy();
if MarketPosition == 1 Then
{
# if CrossDown(C,DayOpen) Then
# ExitLong();
# if v >= Var3[1]*5 then
# ExitLong();
}
SetStopProfittarget(2.3,PercentStop);
SetStopLoss(1.8,PercentStop);
SetStopEndofday(151500);
ㅇ현재 매수 조건
1. 개장 후 시가 형성 후 현재 가격이 시가 아래로 떨어지고
2. 5일 이동평균 하락(분봉에 적용)
위 조건이 만족된 후
3. 현재 가격이 당일 시가를 돌파 할 경우 매수
ㅇ 수정요청 매수 조건
1. 개장 후 시가 형성 후 현재 가격이 시가 아래로 떨어지고
2. 5일 이동평균 하락(분봉에 적용)
위 조건이 만족된 후
3. 현재 가격이 당일 시가를 돌파 AND
4. MACD 오실레이터 양의 값 AND
5. 20일 가격이동평균 상승 중 AND
6. 현재가격이 볼린저밴드 상단을 돌파 하지 않았다면 바로매수
7. 현재 가격이 볼린저밴드 상단을 돌파 하였다면, 현재가격이 5일 가격이동평균선 하향돌파 하면 매수
잘부탁 드립니다.
감사합니다.
2022-05-15
1005
글번호 158872
답변완료
수식에대한 질문입니다
서머타임에 따른 매매 허용 시간에 대한 질문의 답변을 이렇게 주셨었는데요
var : ST(0),ET(0),Tcond(False);
if Bdate != Bdate[1] Then
{
if stime >= 80000 Then
{
ST = 223000;
ET = 053000;
}
else
{
ST = 213000;
ET = 043000;
}
}
if (sdate != sdate[1] and stime >= ST) or
(sdate == sdate[1] and stime >= ST and stime[1] < ST) Then
Tcond = true;
if (sdate != sdate[1] and stime >= ET) or
(sdate == sdate[1] and stime >= ET and stime[1] < ET) Then
Tcond = False;
if Tcond == true Then
{
진입식
}
여기서 궁금한 단락이 이것입니다
(sdate != sdate[1] and stime >= ST)
(sdate != sdate[1] and stime >= ET)
이 식이 왜 있는것인지 이해하기가 어렵습니다. 자정을 넘긴시점(00시00분)에서 stime값이 ST값보다 크거나 같은 상황이 있을리 없지 않습니까? ET의 경우에도 마찬가지구요.
시뮬레이션에 물려봐도 두가지 경우가 true을 띄는 경우가 없던데 이 식은 왜 들어가있는것인지요?
2022-05-15
932
글번호 158871
답변완료
해외선물 (당일마감 문의)크루드오일 시스템 매매 중입니다.
해외선물 크루드오일 시스템 매매 중입니다.
당일 매매(오버나잇 금지) 조건식으로
알려주신대로 이렇게 운영 중인데 맞는지요?
매일 오전 06:10 에 당일 자동마감됩니다.
섬머타임 관련없이
연중 이 조건식으로 시스템운영이 가능한지요?
원하는 크루드오일 시스템 운영시간
*모두 한국시간 실시간 기준으로 요망
*시작: 매일 아침 장시작 직후 ---> 1분 59초 후
*종료: 매일 아침 장종료 직전 ---> 2분 00초 전
조건식과 그 결과물(첨부)은 아래와 같읍니다.
###################################################################
input : StartTime(070159),EndTime(055800);
var : Tcond(false);
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;
IF Endtime <= starttime Then
{
SetStopEndofday(0);
}
}
###################################################################
if Tcond == true Then
{
If ((sTime >= 070159) or (sTime < 055800)) and 매도조건식 ### <----- 매도조건식
Then
Sell ("sell-stocro-01");
If ((sTime >= 070159) or (sTime < 055800)) and 매수조건식 ### <----- 매수조건식
Then
Buy ("buy-stocro-01");
}
###################################################################
^^항상 감사합니다.
2022-05-15
1100
글번호 158870
답변완료
data2에 관한 문의
input: period(20), n(2);
value1 = BollBandUp(period,n) ;
Value2 = BollBandDown(period,n);
Value3 = ma(c,60);
if
CrossUp(Value2,Value3) and Value3[1] < Value3
Then
Buy("ll");
if CrossDown(Value1,Value3) Then Sell("ss");
예를 들면 이 전략을 data2에 적용하려면 data2(CrossUp(Value2,Value3) and Value3[1] < Value3 ) 이런식으로는 안되는건가요?
//
위 식으로 data2에서 "ll"이 발생하고 "ss"가 발생하기 사이에 data1에서 신호가 발생하게 만들고 싶은데 방법이 있을까요? 다시 말해 긴 시간프레임의 진입신호가 짧은시간프레임의 진입 조건이 되도록 하고 싶습니다
//
data1 이 3분봉
data2 가 15분봉일 경우 data2의 조건이 c>ma(c,50) 같은 지속형 조건이 아닌 crossup이라던지 c>o라던지 어떤 한 순간만 만족하는 조건일 경우 data2의 봉이 완성되는 순간 data1에서의 요구조건과 일치하는 경우에만 신호가 발생하나요? 즉 신호가 아무리 많이 발생할 수 있다고 해도 15분에 한번이 최대인가요?
//
data2(open) < data2(close) 와 data2(o<c) / data2(o<c)[1] 과 data2(o[1]<c[1])
이런것들은 뭐가 맞는 표현식인가요?
2022-05-15
1133
글번호 158869
답변완료
종가파라볼릭 일정폭에 알람소리
선물 거래시, 하락 종가파라볼릭이 발생하여 반등없이 계속 하락할때, 하락종가파라볼릭 최고꼭지점에서 -1p하락하면 알람 울리고 더 하락하면 -1.5p에서,또 더 하락하면 -2p에서,세 군데 알람 울리게 해주시고,
반대로 상승종가파라볼릭이 발생하여 계속 상승할때는,상승종가파라볼릭 최저꼭지점에서 +1p +1.5p +2p 세군데 도달시 알람 울리게 해주세요. 감사합니다.
2022-05-14
747
글번호 158868
답변완료
부탁드립니다
$,안녕하세요
아래식에서 사각박스가 완성된후 박스의 중심선을 최근2개박스(양,음관계없이)만
Y축까지 첨부그림처럼 우측추세선 그리기 하고 싶습니다,
도움 부탁드립니다.
input : n(0),굵R(0),굵b(0);
var : T(0),box(0);
if C > O Then
T = 1;
Else if C < O Then
T = -1;
Else
T = 0;
if T == 1 Then
{
if T != T[1] Then
{
var1 = sDate;
Var2 = sTime;
Var3 = max(h,l);
Var4 = max(h,l);
Var5 = 0;
}
Var5 = Var5+1;
if max(h,l ) > Var3 Then
Var3 = max(h,l);
if min(h,l ) < Var4 Then
Var4 = min(h,l);
if var5 == n Then
{
box = Box_New(var1,Var2,Var3,sDate,sTime,Var4);
Box_SetColor(box,MAGENTA);
TL_SetSize(box,굵R);
}
if var5 > n Then
{
Box_SetBegin(box,var1,Var2,Var3);
Box_SetEnd(box,sDate,sTime,Var4);
}
}
if T == -1 Then
{
if T != T[1] Then
{
var1 = sDate;
Var2 = sTime;
Var3 = max(h,l);
Var4 = max(h,l);
Var5 = 0;
}
Var5 = Var5+1;
if max(h,l ) > Var3 Then
Var3 = max(h,l);
if min(h,l ) < Var4 Then
Var4 = min(h,l);
if var5 == n Then
{
box = Box_New(var1,Var2,Var3,sDate,sTime,Var4);
Box_SetColor(box,BLUE);
TL_SetSize(box,굵b);
}
if var5 > n Then
{
Box_SetBegin(box,var1,Var2,Var3);
Box_SetEnd(box,sDate,sTime,Var4);
}
}
2022-05-16
762
글번호 158867
답변완료
안녕하세요 두 가지 문의 드리고 싶습니다.
전략 두 가지 부탁드립니다.
1.Envelope(5%)
-종가 < 21EMA
-종가 > 200일 sma
-종가 >= 1000원
-5일 평균 거래량 > 25만주
인 경우 이후 진입 신호가 나오는 경우 진입
진입 신호
-21일 EMA 5거래일 연속 상승 and 종가 > 21EMA인 경우 종가에 매수
-수량 : 총 자산의 1%(원)/{종가 - (당일 저가-1틱)}
청산 신호
-Stop loss : 매수 당일의 저가 - 1틱
-이익 청산 : Upper envelope - 1틱
-Time stop : 매수 후 7거래일 이후
2. Bollinger bands
-종가 > 200일 sma
-종가 >= 1000원
-5일 평균 거래량 > 25만주
-21일 SMA 5거래일 연속 상승 and %b <= 20 and MFI >= 50
인 경우 이후 진입 신호가 나오는 경우 진입
진입신호
-종가 > 전일 고가인 경우 매수
-수량 : 총 자산의 1%(원)/{종가 - (당일 저가-1틱)}
청산 신호
-Stop loss : 매수 당일의 저가 - 1틱
-이익 청산 : 중간선 - 1틱
-Time stop : 매수 후 7거래일 이후
감사합니다.
2022-05-14
789
글번호 158866
답변완료
수식 부탁드립니다
수고하십니다.
아래 식에서
1]첨부 그림 처럼
같은 종류의 다음 번 신호가 나올 때까지 신호봉의 고가/저가 기준 우측 연장
일자 라인을 그리고 싶습니다.
2] data2 차트에 적용하려면 어떻게 수정을 해야하는지요...?
늘 감사 드립니다..
수고하세요..
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 수식 변환 문의
> 안녕하세요
예스스탁입니다.
input : SFactor(6.138),SPd(10),lenColoured(36),lenSlow(178),hideSuperTrend(true);
var : src(0),len(0),ma_coloured(0),ma_slow(0),clrdirection(0);
src = close;
len = lenColoured;
ma_coloured = wma(2 * wma(src, len / 3) - wma(src, len), round(sqrt(len),0));
ma_slow = Ema(src,lenslow);
if ma_coloured > ma_coloured[13] then
clrdirection = 1;
else if ma_coloured < ma_coloured[13] then
clrdirection = -1;
else
clrdirection = clrdirection;
var : hl2(0),ATRV(0),SUp(0),SDn(0),STrendUp(0),STrendDown(0);
var : STrend(0),stbuy(0),stsell(0),long(False),short(False);
var : LongLineMarker(0),ShortLineMarker(0),tx(0);
hl2 = (H+L)/2;
ATRV = ATR(SPd);
SUp = hl2-(SFactor*atrv);
SDn = hl2+(SFactor*atrv);
if C[1] > STrendUp[1] Then
STrendUp = max(SUp,iff(isnan(STrendUp[1])==False,STrendUp[1],0));
else
STrendUp = SUp;
if close[1] < STrendDown[1] then
STrendDown = min(SDn,iff(isnan(STrendDown[1]) == False,STrendDown[1],0));
else
STrendDown = SDn;
if close > IFf(IsNan(STrendDown[1]) == False, STrendDown[1],0) then
STrend = 1;
else if close< IFf(IsNan(STrendUp[1]) == False, STrendUp[1],0) then
STrend = -1;
else
STrend = IFf(IsNan(STrend[1]) == False, STrend[1],1);
if clrdirection == 1 and STrend==1 then
stbuy = stbuy +1;
else
stbuy = 0;
if clrdirection ==-1 and STrend==-1 then
stsell = stsell+1 ;
else
stsell = 0;
If stbuy == 1 then
long = true;
else
long = False;
if stSell == 1 then
short = true;
else
short = False ;
if long then
{
LongLineMarker = low;
tx = Text_New(sDate,sTime,LongLineMarker,"▲");
Text_SetColor(tx,Green);
Text_SetStyle(tx,2,0);
}
Else
LongLineMarker = Nan;
if short then
{
ShortLineMarker = High;
tx = Text_New(sDate,sTime,ShortLineMarker,"▼");
Text_SetColor(tx,Red);
Text_SetStyle(tx,2,1);
}
Else
ShortLineMarker = Nan;
즐거운 하루되세요
2022-05-16
969
글번호 158865