커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1699
글번호 230811
답변완료
지난 N봉동안 교차횟수가 N회이상인 종목
감사합니다.
예를 들어
지난 60봉동안
이평(5), 이평(20)의 교차횟수가
2회 이상인 종목을 검색하는 식을 구합니다.
2021-11-18
685
글번호 153700
답변완료
컴파일 에러 : memory exhausted
수고하십니다. 안녕하십니까!!!
1번.
C:₩예스트레이더₩data₩InterestGroup 내에 있는
관심종목XXX.gup 의 file format과 encoding 방식, 사용 에디터 등을 알고 싶습니다.
2번.
컴파일 에러 : memory exhausted
변수를 아래와 같이 0 ~ 940 까지 분기를 시켰을 때 컴파일하면
가상 메모리 부족이라는 뜻 "memory exhausted" 메시지가 뜹니다.
if buyfilter1 == 0 Then Condition1 = True;
#--------------------------------------------------------------------------------------------
Else if buyfilter1 == 1 Then Condition1 = con31000 == true and con49020 == true;
Else if buyfilter1 == 2 Then Condition1 = con31000 == true and con50000 == true;
Else if buyfilter1 == 3 Then Condition1 = con31000 == true and con56000 == true;
~~~~~~~~~~~~~~~~~~중략
Else if buyfilter1 == 399 Then Condition1 = con31006 == true and con56000 == true;
Else if buyfilter1 == 400 Then Condition1 = con31040 == true and con56030 == true;
~~~~~~~~~~~~~~~~~~중략
Else if buyfilter1 == 798 Then Condition1 = con31900 == true and con56800 == true;
~~~~~~~~~~~~~~~~~~중략
Else if buyfilter1 == 940 Then Condition1 = con31090 == true and con56900 == true;
#--------------------------------------------------------------------------------------------
Else Condition1 = False;
여러 번 테스트 한 결과 변수 1개의 분기 처리 갯수가 400개를 넘지 못하는 것 같습니다.
미봉책으로 399개 단위로 컴파일하고 나머지는 주석처리해서 테스트하고 있는데,
근본적으로 해결할 수 있는 방안을 부탁드리겠습니다.
2021-11-18
641
글번호 153699
답변완료
문의드립니다.
안녕하새요.
매수
무포지션에서 음봉 뒤에 양봉으로 2연속 양봉이 연속 발생하면
매수준비1 이 완성됩니다,
음봉 뒤에 최초 양봉의 시가 = 대양봉의 시가 라고 정의 합니다.
매수준비1 이 성립된 후에 음봉이 발생하면
음봉 바로 직전의 양봉의 종가 = 대양봉의 종가
대양봉 몸통 폭 = 대양봉의 종가 - 대양봉의 시가 라고 정의 합니다
헤제
이 음봉의 종가가 가장 최근에 발생한 양봉중에서 현재봉에서 첫 번째 이전에 발생 된 양봉을 즉
가장 최근의 첫번째의 양봉의 시가를 아래로 깨면 매수준비1 은 성립을 해제 합니다.
이 때의 가장 최근의 첫번째 양봉의 종가를 매수준비가 a 라고 정의 합니다,
매순준비 1 이 계속 유효한 상태에서 음봉이 1회 발생하고 이후에 새로 생기는 양봉의
종가가 매수준비가 a 위에 있으면 매수 합니다.
손절 청산
매수후 발생한 음봉 종가가 매수봉의 시가를 깨면 손절합니다,
청산
매수후에 위에서 구한 대양봉 몸통폭 값만킁 이익이 생기면 이익 청산합니다.
매도
반대논리로 부탁드립니다.
2021-11-18
622
글번호 153691
답변완료
지표 부탁드립니다.
안녕하세요?
또 부탁드립니다.
아래내용에 고가, 저가, 중심가 평균도 포함해주세요.
오늘도 좋은날 되시길 바랍니다.
정말 고맙습니다.
===============
var : sumV(0),sumB(0),mav(0);
if bdate != Bdate[1] Then
{
sumV = 0;
sumB = 0;
}
sumV = sumV+c;
sumB = sumB+1;
mav = sumV/sumB;
Plot1(mav+0.01);
Plot2(mav+0.05);
Plot3(mav-0.01);
Plot4(mav-0.05);
Plot5(mav+0.625);
Plot6(mav-0.625);
Plot7(mav+1.25);
Plot8(mav-1.25);
Plot9(mav+2.5);
Plot10(mav-2.5);
Plot11(mav+0.5);
Plot12(mav-0.5);
Plot13(mav+1.00);
Plot14(mav-1.00);
Plot15(mav+2.00);
Plot16(mav-2.00);
2021-11-18
603
글번호 153686
답변완료
수식작성 부탁드립니다.
// 타 증권사 시스템 전략입니다. 예스트레이더로 전환 부탁드립니다.??
Params :
Profit_Target( 20 ), // 익절 ( 단위 : 틱 )
Stop_Loss( 30 ); // 손절 ( 단위 : 틱 )
param : BuyA_ShortLeng(5) // 단기 이동평균
, BuyA_LongLeng(20) // 장기 이동평균
, BuyA_SignalLeng(10) // SigSignal 기간
;
param : Exit_Len(10);
var : BuyA_Price1(0), BuyA_Price2(0), BuyA_Result(FALSE), SellA_Result(False) ;
var : Vol_check(False) ;
var : C_high(0), C_low(0);
if Volume > 100 Then
vol_check = true
Else
vol_check = False
;
C_high = Highest(Close, Exit_Len);
C_low = Lowest(Close, Exit_Len);
BuyA_Price1 = MACD(Close, BuyA_ShortLeng, BuyA_LongLeng);
BuyA_Price2 = Sma(MACD(Close, BuyA_ShortLeng, BuyA_LongLeng), BuyA_SignalLeng);
BuyA_Result = CrossUp(BuyA_Price1, BuyA_Price2);
SellA_Result = CrossDown(BuyA_Price1 , BuyA_Price2);
if ( BuyA_Result = true And BuyA_Price1 < 0 And vol_check = True )
Then
Begin
ExitShort("방향전환S") ;
Buy("Buy",atmarket);
End;
if ( SellA_Result = true And BuyA_Price1 > 0 And vol_check = True )
Then
Begin
ExitLong("방향전환B") ;
Sell("Sell",atmarket);
End;
if c < c_low[1] Then
Begin
ExitLong("오류진입_매수",atmarket ) ;
End;
if c > c_high[1] Then
Begin
ExitShort("오류진입_매도",atmarket) ;
End;
Var : TickSize( 0 );
TickSize = OneTick * PriceScale; // 호가 단위
SetStopProfitTarget( Profit_Target * TickSize );
SetStopLoss( Stop_Loss * TickSize );
//SetExitOnClose();
2021-11-18
493
글번호 153685
chlangs 님에 의해서 삭제되었습니다.
2021-11-18
0
글번호 153684
답변완료
수식수정 부탁드립니다.
현재수식은 첫번째 매수가 RSI30이하가 시작될때 입니다.
첫번째 매수를 RSI30이하로 두번 내려갈때로 수정하고 싶습니다.
두번째 매수부터는 원래대로.
매도도 원래대로.
Input : 투자금액(10000000),RSIP(14), P1(5), P2(25), P3(100), 시작일(20210805),시작시간(090000),청산시간(153000);
var : value(0),e(0),x(0),count(0),Vma(0), Tcond(false);
var : Rsiv(0),vv(0), Entry(0), mav1(0);
var1 = ma(C,p1);
var2 = ma(C,p2);
var3 = ma(C,p3);
var4 = sar(0.02,0.2);
mav1 = ma(C,30);
Rsiv = RSI(RSIP);
if NextBarSdate >= 시작일 and NextBarStime >= 시작시간 Then
Tcond = true;
if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then
count = count+1;
if sdate >= 시작일 and stime >= 시작시간 Then
Tcond = true;
if Tcond == true then
{
if crossup(c,var4) Then
Entry = 0;
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
if MarketPosition == 0 and Entry < 1 and Crossup(Rsiv, 30) Then
buy("b1",OnClose,DEF,Floor((투자금액*0.08)/c));
if MarketPosition == 1 and Entry < 1 and CrossUp(var1,var2) and Rsiv < 70 and C > var4 and MaxEntries == 1 Then
buy("b2",atlimit,LatestEntryPrice(0)*0.99,Floor((투자금액*0.13)/min(NextBarOpen,LatestEntryPrice(0)*0.98)));
if MarketPosition == 1 and Entry < 1 and CrossUp(var1,var2) and Rsiv < 70 and C > var4 and MaxEntries == 2 Then
buy("b3",atlimit,LatestEntryPrice(0)*0.99,Floor((투자금액*0.16)/min(NextBarOpen,LatestEntryPrice(0)*0.98)));
if MarketPosition == 1 and Entry < 1 and CrossUp(var1,var2) and Rsiv < 70 and C > var4 and MaxEntries == 3 Then
buy("b4",atlimit,LatestEntryPrice(0)*0.99,Floor((투자금액*0.17)/min(NextBarOpen,LatestEntryPrice(0)*0.98)));
if MarketPosition == 1 and Entry < 1 and CrossUp(var1,var2) and Rsiv < 70 and C > var4 and MaxEntries == 4 Then
buy("b5",atlimit,LatestEntryPrice(0)*0.99,Floor((투자금액*0.21)/min(NextBarOpen,LatestEntryPrice(0)*0.98)));
if MarketPosition == 1 and Entry < 1 and CrossUp(var1,var2) and Rsiv < 70 and C > var4 and MaxEntries == 5 Then
buy("b6",atlimit,LatestEntryPrice(0)*1.00,Floor((투자금액*0.25)/min(NextBarOpen,LatestEntryPrice(0)*0.98)));
if MarketPosition == 1 and
highest(l,BarsSinceEntry) >= EntryPrice*1.10 Then
ExitLong("bx");
if MarketPosition == 1 and
Rsiv > 80 Then
ExitLong("br");
if MarketPosition == 1 and Rsiv > 65 and var1 > var2 and var2 > var3 and C < var4 Then
exitlong("s");
}
2021-11-18
505
글번호 153683
중방 님에 의해서 삭제되었습니다.
2021-11-18
7
글번호 153682
답변완료
수정 부탁드립니다
안녕하세요
아래 시스템 수정부탁드립니다.
틱 챠트에 30분봉 4등분선을 사용중이며 이 30분봉 4등분선을 가중이평 20선의 5선이
1. 25%,50%,75% 선중 위로 먼저 통과하는것에 매수
2. 25%,50%,75% 선중 아래로 먼저 통과하는것에 매도
이렇게 부탁드립니다
input : ntime(30),P(5);
var : S1(0),D1(0),TM(0),TF(0);
var : HH(0),LL(0),hh1(0),ll1(0),mav(0),ntimemav(0),sum(0),cnt(0);
Array : CC[10](0);
#기본차트이평
mav = ma(C,P);
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%ntime;
if Bdate != Bdate[1] or
(Bdate == Bdate[1] and ntime > 1 and TF < TF[1]) or
(Bdate == Bdate[1] and ntime > 1 and TM >= TM[1]+ntime) or
(Bdate == Bdate[1] and ntime == 1 and TM > TM[1]) Then
{
hh = h;
ll = l;
hh1 = hh[1];
ll1 = ll[1];
For cnt = 1 to 9
{
CC[cnt] = CC[cnt-1][1];
}
}
if hh > 0 and h > hh Then
hh = h;
if ll > 0 and l < ll Then
ll = l;
#30분봉 이평
if CC[P-1] > 0 Then
{
sum = 0;
For cnt = 0 to P-1
{
sum = sum +CC[cnt];
}
ntimemav = sum/P;
}
if CrossUp(mav,ll+(hh-ll)*0.25) Then
Buy("b1");
if ntimeMav > 0 and CrossUp(ntimeMav,ll1) Then
Buy("b2");
if ll1 > 0 and CrossUp(mav,ll1+(hh1-ll1)*0.25) Then
Buy("b3");
if hh1 > 0 and CrossUp(mav,hh1) Then
Buy("b4");
if CrossDown(mav,ll+(hh-ll)*0.75) Then
Sell("s1");
if ntimeMav > 0 and CrossDown(ntimeMav,hh1) Then
Sell("s2");
if ll1 > 0 and CrossDown(mav,ll1+(hh1-ll1)*0.75) Then
sell("s3");
if ll1 > 0 and CrossDown(mav,ll1) Then
Sell("s4");
}
2021-11-17
906
글번호 153681