커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1863
글번호 230811
답변완료
안녕하세요^^
매수진입
1조건
전종가가 전5평선 보다 작고 그리고 종가가 5평선보다 크다.
전cci 5선이 전-100보다 작거나 같다 그리고 현cci 5선이 현-100보다 크다
또는 전전cci 5선이 전전-100보다 작거나 같다 그리고 전cci 5선이 전-100보다 크다
2조건
(시가가 Bollinger band 중앙선보다 작고 종가가 Bollinger band 중앙선보다 크다
종가가 Bollinger band 상한선보자 작다)
cci 5선이 0보다 작다
5평선이 전5평선보다 크다
3조건
(시가가 Bollinger band 하한선보다 작다 그리고 종가가 Bollinger band 하한선보다 크다 그리고 Bollinger band 하한선 전 Bollinger band 하한선이 크거나 같다)
종가가 5평선보다 작다
공통조건
07시 05분부터 다음날 05.40분까지
청산(매도)
종가가 5평선보다 작다(진입봉이 종가가 5평선보다 작으면 아나다) 또는
종가가 Bollinger band 산한선 작고 시가가 Bollinger band 산한선보다 크다.
강제청산 = Bollinger band 산한선 전Bollinger band 하한선이 작거나 같다 그리고
h가 Bollinger band 하한선보다 크거나 같으면.
강제 청산 = 06시55분 보다 같거나 크면.
매도진입
1조건 = 종가가 5평선보다 작다.
(시가가 5평선보 크고 종가가 5평선보다 작다
시가가 Bollinger band 중앙선보다 크고 종가가 Bollinger band 중앙선보다
5평선이 전5평선보다 작다
Bollinger band 중앙선 전 Bollinger band 중앙선 작거나 같다
전 5평선이 전 Bollinger band 중앙선보다 크다.)
2조건 = 조가가 5평선보다 작다.
((전 종가가 전 시가보다 작다) 또는 (전전종가가 전전시가보다 작다 그리고 전종가가 전시가보다 크다))
전cci 5선이 100보다 크거나 같고 현cci 5선이 100보다 작다
3조건
공통조건
07시 05분부터 다음날 05.40분까지
청산(매수)
종가가 5평선보다 크다.
( Bollinger band 하한선 전Bollinger band 하한선이 크거나 같고
저가 Bollinger band 하한선보다 작고 종가가 Bollinger band 하한선보다 크고
종가가 시가보다 크다)
강제 청산 = 06시55분 보다 같거나 크면.
수고 부탁드립니다 ^^
2022-08-28
1114
글번호 161795
답변완료
수식문의드립니다
안녕하세요~
아래와 같이 수식을 짰는데 테스트 중 원인을 알수없는 진입을 발견해 문의드립니다
-----------------------------------------------
input : HB(13163), LB(13128), TT1(120000), TT2(213200), TD(20220826), MDD(100000);
var : Bsystem(False), Ssystem(False), Fsystem(true), unitP(0), condition1(true);
// MACD 변수
input : 타주기분(5),short(12),long(26),sig(9);
var : S1(0),D1(0),TM(0),EP1(0),EP2(0),EP3(0),MACDO(0);
var : TF(0),xma1(0),xma2(0),idx(0),Prexma1(0),Prexma2(0),MACDV(0),MACDS(0),PreMACDS(0);
unitP = floor(MDD/(2*ATR(14)*BigPointValue*1400));
if sDate >= TD && TT2 > sTime && sTime > TT1 Then condition11 = true;
Else condition11 = False;
if condition11 == true Then
{
MessageLog("rsi %.4f, ATR %.4f, unitP %.4f, MP %.4f, macdV %.4f", rsi(14), ATR(14), unitP, MarketPosition, MACDV);
MessageLog("H %.4f, L %.4f, BS %4s, SS %4s, FS %4s", H, L, Bsystem, Ssystem, Fsystem);
// 횡보구간 이탈 - 회귀 - 매수매도구간 진입
if H > HB + 15 Then Fsystem = False;
if L < LB - 15 Then Fsystem = False;
if HB > C && C > LB && condition1 == true Then Fsystem = true;
if H > HB + 30 Then
{
Bsystem = true;
condition1 = False;
}
if L < LB - 30 Then
{
Ssystem = true;
condition1 = False;
}
// 진입
if Bsystem == true && RSI(14) <= 30 Then Buy("b1-1", OnClose, Def, unitP);
if Ssystem == true && RSI(14) >= 70 Then Sell("s2-1", OnClose, Def, unitP);
if Fsystem == true Then
{
if RSI(14) <= 30 Then Buy("b3-1", OnClose, Def, unitP);
if RSI(14) >= 70 Then Sell("s3-1", OnClose, Def, unitP);
}
//청산
if marketposition == 1 then
{
ExitLong("xL1", AtLimit, EntryPrice + 2*ATr(14));
ExitLong("xL2", AtStop, EntryPrice - 2*ATr(14));
}
if MarketPosition == -1 Then
{
ExitShort("xS1", AtLimit, EntryPrice - 2*ATr(14));
ExitShort("xS2", AtStop, EntryPrice + 2*ATr(14));
}
}
// 매수매도 off
Ep1 = 2/(short+1);
Ep2 = 2/(long+1);
Ep3 = 2/(sig+1);
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
{
idx = idx + 1;
Prexma1 = xma1[1];
Prexma2 = xma2[1];
PreMACDS = MACDS[1];
}
if idx <= 1 then
{
xma1 = C;
xma2 = C;
MACDV = xma1-xma2;
MACDS = MACDV;
MACDO = MACDV-MACDS;
}
else
{
xma1 = C * EP1 + Prexma1 * (1-EP1);
xma2 = C * EP2 + Prexma2 * (1-EP2);
MACDV = xma1-xma2;
MACDS = MACDV * EP3 + PreMACDS * (1-EP3);
MACDO = MACDV-MACDS;
}
if condition11 == True Then
{
if Ssystem == true && MACDV > 0 Then Ssystem = False;
if Bsystem == true && MACDV < 0 Then Bsystem = false;
}
}
------------------------------
제가 짠 수식에선 Bsystem, Ssystem, Fsystem 최소한 셋 중 하나는 true이어야만 진입이 발생할 수 있는데
첨부한 사진을 보면 21:31에 세 조건이 모두 false인데 매도진입이 이뤄졌습니다
=>로그 상의 BS, SS, FS 값이 모두 false인 상황
3개 조건에 한해서만 진입조건을 걸어뒀는데 왜 이런 진입이 일어났는지 아무리 봐도 모르겠어서 살펴봐주시면 감사하겠습니다
감사합니다
2022-08-28
1365
글번호 161794
답변완료
시스템식 문의드립니다.
안녕하세요, 시스템식 문의드립니다.
if then 조건문을 걸때
포지션이 있는 상태에서 "진입후 +30분 이상이 경과시"에 청산조건수행 입니다.
if entrytime+003000 then{ } 으로는 안되더군요
A라는 조건으로 진입시 진입이후 30분 이상 경과시
B라는 조건만족하면 포지션을 청산한다 부탁드립니다. 감사합니다.
2022-08-28
1292
글번호 161793
답변완료
문의 드립니다.~~~~
항상 감사합니다,
다음식 부탁드립니다,
-양봉의 크기(저가와 고가의 차이)가 n틱 이상일 때
저가와 고가의 차이의 틱수를 봉위에 표시하고 경보음 울리고 종가에 매도
-음봉의 크기(저가와 고가의 차이)가 n틱 이상일 때 종가에 매수
저가와 고가의 차이의 틱수를 봉위에 표시하고 경보음 울리고 종가에 매수
2022-08-27
1170
글번호 161792
강물처름 님에 의해서 삭제되었습니다.
2022-08-26
1
글번호 161791
답변완료
추가수정 요청...
잘 작동됩니다. 감사합니다. ^^
문제가 있는데요
*정해진 체크시간에 돌파 체크하고 만약 돌파 하지 않는다면 아래 정해진 시간에 강제 진입
위 상황인데 정해진 시간 전에 종료가 되면 또 한번 진입합니다.
만약 이평선 크로스로 진입하되 강제시간 전에 수익이 난다면 추가 진입을 안했으면 좋겠습니다.
감사합니다. ^^
-----------------------------------------------------------------------------------------------------
안녕하세요
예스스탁입니다.
input : position(1), P1(5),P2(20);
input : StartTime(220000),EndTime(223000),xtime(55800),vol1(1);
input : 최소수익틱수(100),수익감소틱수(10);
var : Tcond(false);
IF xtime > starttime Then
SetStopEndofday(xtime);
Else
{
if sDate != sDate[1] Then
SetStopEndofday(xtime);
}
if (sdate != sdate[1] and stime >= EndTime) or
(sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then
{
Tcond = False;
if MarketPosition == 0 and position == 1 Then
Buy("b2",OnClose,Def,vol1);
if MarketPosition == 0 and position == -1 Then
Sell("s2",OnClose,Def,vol1);
}
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
{
Tcond = true;
IF xtime <= starttime Then
{
SetStopEndofday(0);
}
}
var1 = ma(C,P1);
Var2 = ma(C,P2);
if Tcond == true Then
{
if MarketPosition == 0 and position == 1 and CrossUp(var1,Var2) Then
Buy("b1",OnClose,Def,vol1);
if MarketPosition == 0 and position == -1 and CrossDown(var1,Var2) Then
Sell("s1",OnClose,Def,vol1);
}
if MarketPosition == 1 and Highest(H,BarsSinceEntry) >= EntryPrice+PriceScale*최소수익틱수 Then
ExitLong("매수스탑x",AtStop,Highest(H,BarsSinceEntry)-PriceScale*수익감소틱수);
if MarketPosition == -1 and lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*최소수익틱수 Then
ExitShort("매도스턉x",AtStop,lowest(L,BarsSinceEntry)+PriceScale*수익감소틱수);
즐거운 하루되세요
> 스카스카 님이 쓴 글입니다.
> 제목 : 수정 요청드립니다. ^^ 감사합니다~
> 아래 수식을 사용하고 있습니다.
추가 내용을 요청드립니다. ^^ 감사합니다.
-----------------------------------------------------------------------------------------------------
포지션에 따라 (1 or -1) 매수/매도 진입을 하는데
이동평균선 돌파 후 진입 기능 (5일선 / 20일선)
*단 정해진 체크시간에 돌파 체크하고 만약 돌파 하지 않는다면 아래 정해진 시간에 강제 진입
[예시]
1. 매수의 경우 22시 부터 22시 30분까지 이동평균선 (5일선 20일선) 5일선이 20일선을 크로스하면 매수진입...
만약 크로스 안하면 22시 30분 강제 진입
매도의 경우 반대
** 5일선 10일선은 마음대로 (일수)수정이 가능했으면 좋겠습니다.
** 이동평균선 진입 시간도 수정이 가능하면 좋겠습니다.
요청 드립니다~ ^^
--------------------------------------------------------------------------------------------------------
input : position1(1),ntime1(223000),vol1(1);
input : xtime(55800);
input : 최소수익틱수(100),수익감소틱수(10);
var : ST(0);
if Bdate != Bdate[1] Then
{
ST = sTime;
}
if ST > 0 then
{
if (sdate != sdate[1] and stime >= ntime1) or
(sdate == sdate[1] and stime >= ntime1 and stime[1] < ntime1) Then
{
if position1 == 1 Then
Buy("매수-1",OnClose,DEf,vol1);
if position1 == -1 Then
Sell("매도-1",OnClose,DEf,vol1);
}
if MarketPosition == 1 and Highest(H,BarsSinceEntry) >= EntryPrice+PriceScale*최소수익틱수 Then
ExitLong("매수스탑x",AtStop,Highest(H,BarsSinceEntry)-PriceScale*수익감소틱수);
if MarketPosition == -1 and lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*최소수익틱수 Then
ExitShort("매도스턉x",AtStop,lowest(L,BarsSinceEntry)+PriceScale*수익감소틱수);
}
IF Xtime > ST Then
SetStopEndofday(Xtime);
Else
{
if sDate != sDate[1] Then
SetStopEndofday(Xtime);
}
if (sdate != sdate[1] and stime >= ST) or
(sdate == sdate[1] and stime >= ST and stime[1] < ST) Then
{
IF Xtime <= ST Then
{
SetStopEndofday(0);
}
}
2022-08-26
1406
글번호 161785
답변완료
문의드립니다.
안녕하세요.
언제나 수고하심에 감사드립니다.
1.
주식 1분봉에서 호가 대비 1% 이상 급등하는 종목들을
검색하고 싶습니다.
2. 당일 VI 걸리는 종목만을 검색하는 검색식도 부탁드립니다.
3. 한 호가에서 단 한번에 5000만원 이상 매수되거나 매도 되는 종목들을 검색하고 싶습니다.
2022-08-26
1171
글번호 161783
답변완료
문의 드립니다.
국내 선물에서 투자주체 매매종합에서 외국인 선물 순매수를
기준선 0을 기준으로 막대그래프로 표시하기를 원합니다.
기준선 0 위에 있으면 빨강색 아래 있으면 파랑색으로...
가능하다면 부탁드립니다.
2022-08-26
985
글번호 161780
hipbro 님에 의해서 삭제되었습니다.
2022-08-26
29
글번호 161779