커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
6176
글번호 230811
답변완료
문의드립니다
안녕하세요
장시작후 5번째 봉 이후(Dayindex > 5)의 최저가와 최고가를 내는 식이 궁금합니다.
항상 감사합니다
2018-03-02
164
글번호 117100
답변완료
문의드립니다.
5분봉에서 당일 이격도(60) 값이 당일 최고값을 갱신하는 검색식이 궁금합니다.
DParity = Disparity(60);
분봉은 고가 저가 이런게 있는데 지표에 고가 갱신을 적용할려니 잘 모르겠네요
2018-03-02
150
글번호 117098
답변완료
질문드립니다.
안녕하세요
예스스탁입니다.
data2의 당일고가/당일저가/당일종가이면 아래와 같이
작성하시면 됩니다.
var : cnt(0);
Array : H2[100](0,data2),L2[100](0,data2),c2[100](0,data2);
if data2(bdate != bdate[1]) Then{
      H2[0] = data2(H);
      L2[0] = data2(L);
      for cnt = 1 to 99{
            H2[cnt] = H2[cnt-1][1];
            L2[cnt] = L2[cnt-1][1];
            c2[cnt] = c2[cnt-1][1];
      }
}
if data2(H) > H2[0] Then
      H2[0] = data2(H);
if data2(L) < L2[0] Then
      L2[0] = data2(L);
c2[0] = data2(c);
이전 답변 잘 받았습니다.
여기서 추가로 궁금한 것이 있습니다.
data2 고가 와 저가를 만든것이 H2[0], L2[0] 인데요.
이걸 for문에 넣으면 외부함수입력값때문에 안되네요.
가령
for n = 1 to 20 {
x = h2[0][n] + L2[0][n];}
이렇게하게되면 저기에 [n]을 넣을 수 없습니다. 이런경우 외부함수라면 사용자 함수를 응용해야하는지요? 만약 그렇다면 논리형인지 숫자형인지..
for문에 넣을려면 어떻게 해야하나요?
2018-03-02
163
글번호 117096
답변완료
부탁드립니다
수고하십니다
56849번 재질문입니다
*하락시일때 전일봉에 표시부탁드립니다
2018-03-02
165
글번호 117095
답변완료
지표 수정 부탁 드립니다.
input : period1(0),period2(0),period3(0);
plot1(period1,"기준선");
if date != date[1] Then
value1 = 0;
value1 = value1+(Upvol);
if date != date[1] Then
value2 = 0;
value2 = value2+(downvol);
if value1-value2>0 Then
plot5(value1-value2,">0",red);
Else
plot6(value1-value2,"<0",blue);
이 지표(plot5,plot6)를 "점 그래프"로 해놓은 상태입니다.
1. value1-value2 > 0 일 때, 당일최대값을 노란색으로
2. value1-value2 < 0 일 때, 당일최소값을 노란색으로
3. 1번에서 당일최대값-period4 값을 plotbaseline으로 혹은 수평선으로 표시하고 싶습니다.
4. 2번에서 당일최소값+period5 값을 plotbaseline으로 혹은 수평선으로 표시하고 싶습니다.
2018-03-02
148
글번호 117092
답변완료
재문의 드립니다.
1
시간 셋팅의 문제인것 같습니다.
시간이 8시, 5시50분 기점으로 되어 있는데
날짜가 변경되고 첫봉이 8시이면 2개 시간 조건이 동시 충족되어
2개 중 밑에 작성한 5시50분 조건으로 인해
Tcond가 false가 되어 해당일 거래가 되지 않습니다.
영업일(bdate) 변경기준으로 사용하지 않고
시간이 지정되어 있어 다른 방법은 없고
두 시간 지정의 내용의 순서를 변경하여 8시 체크가 나중에
체크되게 했습니다.
지금 대입해보니까 저번꺼보다는 안들어 갔던 진입이 들어가고 합니다.
그런데 아직도 진입조건인데도 들어가지 않는 부분들이 있습니다.
5분봉 기준으로.. 1월19일새벽시간부분..1월23일새벽시간부분..2월1일새벽시간부분..
2월7일 밤00시부분.. 이 부분들을 한번 확인해보셨으면 합니다.
시간 순서를 변경하고 안들어 갔던 부분이 들어가는거 보면 뭔가 있는거 같은데요.
시간 자체를 빼면 문제해결이 될까요?
다시 부탁드립니다.
2018-03-02
178
글번호 117088
답변완료
문의입니다.
공휴일 잘 쉬셨습니까?
주말 앞두고 너무 고생하십니다.
수식 문의 드리는데요
이평선값으로 시스템 시뮬레이션 돌려서 누적수익, 누적손실을 알아볼려고 하는데요
조건은 아래와 같습니다.
1. 자기가 변수에 이평선 숫자를 입력할 수 있게 부탁합니다.(차트에서 이평선은 1개만 임)
2. 캔들종가가 이평선에 터치하고 바로 올라갈러고 하면 매수 한다.
3. 반대로 캔들종가가 이평선을 터치하고 바로 내려가면 매도한다.
4. 만약 캔들 종가가 이평선을 터치하고 뚫고 내려갔다가 다시 이평선 위로 올라가면 매수 한다.
5. 반대로 캔들 종가가 이평선을 터치하고 뚫고 올라갔다 다시 이평선 아래로 내려가면 매도 한다.
6. 매수 매도 후 10틱 버티고 10틱 이상시 손절한다.(손절값도 제가 설정할 수 있게)
7. 수익실현은 임으로 제가 몇틱 설정 할 수 있게 해주시면 좋겠습니다. (예 10틱 20틱 30틱)
마지막으로 제가 알아보고 수정 입력 할 수 있게 주석을 달아주시면 매우 감사하겠습니다.
주말 잘 보내세요~~^^
2018-03-02
146
글번호 117087
대박나라 님에 의해서 삭제되었습니다.
2018-03-02
10
글번호 117080
답변완료
문의드립니다.
도움주시는 덕분에 도전하고 있습니다. 매번 감사합니다.
1. 기타
시뮬레이션에 적용할 수 있는 코드로 코딩 변환 부탁드립니다.
중간에 업데이트가 금지어라고 나와서 영어 업데이트는 한글로 바꾸었습니다. 적당한 것으로 바꿔주심 됩니다.
Function: TL_Zigzag
inputs:
Price( numericseries ),
RetraceMethod( numericsimple ), { 1 = percent, 2 = number }
retrace( numericsimple ),
LineColor( numericsimple ),
LineWidth( numericsimple ),
PlotLine( truefalse ) ;
variables:
NewSwingPrice( 0 ),
SwingPrice( Price ), { used as a convenient 2-element array }
SwingDate( Date ), { used as a convenient 2-element array }
SwingTime( Time ), { used as a convenient 2-element array }
TLDir( 0 ), { TLDir = -1 implies prev TL dn, +1 implies prev TL up }
RetraceFctrUp( 1 + retrace * .01 ),
RetraceFctrDn( 1 - retrace * .01 ),
SaveSwing( false ),
AddTL( false ),
업데이트TL( false ),
TLRef( 0 ),
ZigZagTrend( 0 ) ;
{ Candidate swings are just confirmed, 3-bar (Str=1), SwingHi’s and
SwingLo’s }
NewSwingPrice = SwingHigh( 1, Price, 1, 2 ) ;
if NewSwingPrice <> -1 then
begin
if ( RetraceMethod = 1 and TLDir <= 0 and NewSwingPrice >=
SwingPrice * RetraceFctrUp ) or ( RetraceMethod = 2 and TLDir <=
0 and NewSwingPrice >= SwingPrice + Retrace ) then
{ prepare to add new up TL }
begin
SaveSwing = true ;
AddTL = true ;
TLDir = 1 ;
end
else if TLDir = 1 and NewSwingPrice >= SwingPrice then
{ prepare to 업데이트 prev up TL }
begin
SaveSwing = true ;
업데이트TL = true ;
end ;
end
else
begin
NewSwingPrice = SwingLow( 1, Price, 1, 2 ) ;
if NewSwingPrice <> -1 then
begin
if (RetraceMethod = 1 and TLDir >= 0 and NewSwingPrice <=
SwingPrice * RetraceFctrDn) or (RetraceMethod = 2 and TLDir >= 0
and NewSwingPrice <= SwingPrice - retrace )
then
{ prepare to add new dn TL }
begin
SaveSwing = true ;
AddTL = true ;
TLDir = -1 ;
end
else if TLDir = -1 and NewSwingPrice <= SwingPrice then
{ prepare to 업데이트 prev dn TL }
begin
SaveSwing = true;
업데이트TL = true ;
end ;
end ;
end ;
if SaveSwing then
{ save new swing and reset SaveSwing }
begin
SwingPrice = NewSwingPrice ;
SwingDate = Date[1] ;
SwingTime = Time[1] ;
SaveSwing = false ;
end ;
if AddTL then
{ add new TL and reset AddTL }
begin
if Plotline then
begin
TLRef = TL_New( SwingDate, SwingTime, SwingPrice,
SwingDate[1], SwingTime[1], SwingPrice[1] ) ;
TL_SetExtLeft( TLRef, false ) ;
TL_SetExtRight( TLRef, false ) ;
TL_SetSize( TLRef, LineWidth ) ;
TL_SetColor( TLRef, LineColor ) ;
end ;
AddTL = false ;
end
else if 업데이트TL then
{ 업데이트 prev TL and reset 업데이트TL }
begin
if PlotLine then
TL_SetEnd( TLRef, SwingDate, SwingTime, SwingPrice ) ;
업데이트TL = false ;
end ;
TL_ZigZag = SwingPrice ;
Indicator: Zigzag Trend
inputs:
Price( Close ),
RetraceMethod( 1 ), { 1 = percent, 2 = number }
retrace( .75 ),
LineColor( Yellow ),
LineWidth( 1 ),
PlotLine( true ) ;
variables:
SwingPrice( Price ), { used as a convenient 2-element array }
ZigZagTrend( 0 ) ;
{ Candidate swings are just-confirmed, 3-bar (Str=1), SwingHi’s and
SwingLo’s }
SwingPrice = TL_ZigZag( Price, RetraceMethod, retrace, LineColor,
LineWidth, PlotLine ) ;
if SwingPrice > SwingPrice[1] then
begin
print( SwingPrice, " ", SwingPrice[1] ) ;
ZigZagTrend = 1 ;
end
else if SwingPrice < SwingPrice[1] then
begin
ZigZagTrend = -1 ;
end ;
Plot1( ZigZagTrend, “Zig” ) ;
print( date, " ", time, " ", SwingPrice, " ", SwingPrice[1], " ",
zigZagtrend ) ;
Strategy: Zigzag Trend Strat
inputs:
Price( Close ),
RetraceMethod( 1 ), { 1 = percent, 2 = number }
retrace( .75 ),
LineColor( Yellow ),
LineWidth( 1 ),
PlotLine( true ) ;
variables:
SwingPrice( Price ), { used as a convenient 2-element array }
ZigZagTrend( 0 ) ;
{ Candidate swings are just-confirmed, 3-bar (Str=1), SwingHi’s
and SwingLo’s }
SwingPrice = TL_ZigZag( Price, RetraceMethod, retrace, LineColor,
LineWidth, PlotLine ) ;
if SwingPrice > SwingPrice[1] then
begin
ZigZagTrend = 1;
end
else if SwingPrice < SwingPrice[1] then
begin
ZigZagTrend = -1;
end;
if ZigZagTrend =1 and ZigZagTrend[1]= -1 then
buy next bar at market
else if ZigZagTrend =-1 and ZigZagTrend[1]= 1 then
sellshort next bar at market ;
Function: CMO
inputs:
Length( numericsimple );
variables:
CMO_1(0),
CMO_2(0),
CMO_Final(0);
if C > C[1] then
begin
CMO_1 = C - C[1] ;
CMO_2 = 0 ;
end
else
begin
CMO_1 = 0 ;
CMO_2 = C[1] - C ;
end;
Value1 = Summation( CMO_1, Length );
Value2 = Summation( CMO_2, Length ) ;
CMO = ( Value1 - Value2 )/( Value1 + Value2 ) * 50 + 50 ;
Indicator: CMO
inputs:
Length( 14 ) ;
if CurrentBar > Length then
Plot1( CMO( Length ), “CMO” ) ;
Plot2( 0, “Zero” ) ;
print( plot1 ) ;
2018-03-02
383
글번호 117067