커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내

안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
프로필 이미지
예스스탁
2026-02-27
3393
글번호 230811
지표
답변완료

수식부탁드립니다.

안녕하세요 분봉에서 사용할 수식 부탁드립니다. 매수 조건은 분봉에서 일봉상 20봉 이내에 전일 종가 대비 10% 이상 상승한 적이 있으면 매수 조건이 성립되고 음봉 발생 시 종가에 2백만원 매수 매도 조건은 분할 매도하는데 1차 매도 5% 수익 1백만 원 매도 2차 매도 10% 수익 1백만 원 매도 10% 손실 시 전량 손절 변수 처리해 주시기 바랍니다. 미리 감사드립니다. 수고하세요
프로필 이미지
머신
2020-04-27
795
글번호 138425
시스템
답변완료

이 매수 매도 조건일때 소리 나올게 할수 없나요?

Input : Period(10), Period1(240), Period3(20); value1 = ma(C, Period); value2 = ma(C, Period1); value3 = ma(C, Period3); var1 = ma(C,10); var2 = ma(C,70); var3 = var1-var2; # 매수/매도청산 If Crossup(value1, c) and value2<c and value2<value3 Then { plot1(2,"매수"); } # 매도/매수청산 If Crossdown(value1, c) and value2>c and value2>value3 Then { plot2(2,"매도"); }
프로필 이미지
장군777
2020-04-27
875
글번호 138424
지표

느와르 님에 의해서 삭제되었습니다.

프로필 이미지
느와르
2020-04-27
0
글번호 138423
종목검색
답변완료

분할매수, 분할청산 문의 드립니다.

안녕하세요. 1. 주식 종목에 대해 오늘 매수후 그 다음날 매도하는 수식을 만들고 싶습니다. 오늘 오후 분할매수 2:00 예수금의 1/3 매수 2:01 현재 예수금 의 1/2 매수 2:02 잔량 전부 매수 다음날 아침 분할 매도 9:01 보유수량 전체의 1/3 매도 9:03 잔량의 1/2 매도 9:05 잔량 전부 매도 2. 현재가로 매수 진행 후에 미체결 되면, 주문은 취소 되는건가요? 아니면 장마감까지 계속 유지되나요? 2시에 매수주문한게 미체결 되면, 2시 1분에 주문할 때 예수금은 체결이 되지 않아도 줄어든 상태인지요? 3. AvgEntryPrice, MaxContracts, MaxEntries 같은 포지션 함수들도 주식 매매에 동일하게 사용 가능한가요?
프로필 이미지
찰리03
2020-04-27
1053
글번호 138422
시스템
답변완료

신호 검색 수식 부탁드리겠습니다.

수식 M = BBANDSUP(30, 1.8); LL = LOWEST(M, 기간); HH = HIGHEST(M, 기간); NL = VALUEWHEN(1, M<LL(1),M); VALUEWHEN(1,BARSSINCE(M<LL(1))==(기간-K),NL); CROSSUP(C,NL) 지표변수 기간 = 5 k = 2
프로필 이미지
asdfasef
2020-04-27
1674
글번호 138421
종목검색

로즈버드 님에 의해서 삭제되었습니다.

프로필 이미지
로즈버드
2020-04-27
9
글번호 138406
지표
답변완료

수식 문의

스토케스틱을 이용하여 다음과 같은 수식을 추가 하고 싶습니다. 컨디션 1 : 스토케스틱 침체권 돌파 컨디션 2 : (1 이후의 봉들 중 그 저가가) =< (컨디션 1이 발생한 캔들의 종가) - (5틱) 컨디션 3 : 컨디션 1, 2가 발생한 이후, 어떤 캔들의 고가가 2의 캔들 저가를 훼손하지 않은 상태에서 ((컨디션 1이 발생한 캔들의 종가) - (5틱)) + 20틱에 도달하면 매도. 항상 친절한 답변 감사드립니다.
프로필 이미지
부똘이
2020-04-28
1001
글번호 138404
시스템
답변완료

부탁드립니다.

항상 감사드립니다. 다시좀 부탁드리겠습니다. R3값이 20이하가 되면 T3값이 40이 될때 까지만 ■가 포함된 진입으로 표시가 되어야 하는데 한번 R3값이 20 이하가 되면 계속 ■가 포함진 진입으로 표시됩니다. R3값이 20이하가 되면 T3값이 40 이상이 될때 까지만 ■포함 요청드립니다. 아래는 요청사항입니다. 2. 최근 N(10)개의 R3의 값이 30 이하가 되면 "10개를 포함하여 누적으로 T3가 40 까지 도달" 할때까지 ■가 포함된 신호 (B■,S■)로 표현하고 싶습니다. (3,4,5번에 설명) "T3"값이 50까지 도달 되면 다시 B,S 으로 표시 3. "T3" : "10개를 포함"하여 stoploss, stoptrailing 수 누적 된 값 R3의 값이 30 이하가 되면 R3의 값을 30으로 만들어준 10개를 포함하여 이후 청산되는 stoploss, stoptrailing 수를 누적시켜 T3 값을 만들고 싶습니다. R3 = [(STrailing개수)/(N(10)개)] x100 T3 = [(누적STrailing개수)/(누적SLoss+누적STrailing)개수] x100 T3전체모수: (누적SLoss+누적STrailing)개수 = 10개+1개, 10개+2개, 10개+3개 ... 표시 예) ------------------------------------------------------------- R3 = 20.0 =(2개/10개*100) <- STrailing 2개, SLoss 8개, 분모모수: 10개 *R3 < 20 조건만족 (■포함시작) T3= 27.2 = (3개/11개*100) <- STrailing 3개, SLoss 8개, 분모모수: 11개 *T3 < 40 T3= 33.3 = (4개/12개*100) <- STrailing 4개, SLoss 8개, 분모모수: 12개 *T3 < 40 T3= 38.4 = (5개/13개*100) <- STrailing 5개, SLoss 8개, 분모모수: 13개 *T3 < 40 T3= 35.7 = (5개/14개*100) <- STrailing 5개, SLoss 9개, 분모모수: 14개 *T3 < 40 T3= 40.0 = (6개/15개*100) <- STrailing 6개, SLoss 9개, 분모모수: 15개 *T3 >= 40 (■포함종료) R3= [(STrailing개수)/(N(10)개)] x100 <- 최근 N(10)개의 R3의 값 분모모수: 10개 ------------------------------------------------------------ *R3 30 이하가 되고 T3가 40이 될때 까지는 R3 값은 무시 (T3가 40이 될때 까지 R3값에 의한 조건발생 없음) (T3가 40 도달 이후에 최근 10개에 대한 R3값에 의해 조건 발생) 4. T3값 표시(빨강): ■가 포함된 신호발생 후 청산(stoploss, stoptrailing) 다음 봉에 T3가 40이 될때 까지 만 표시 input : 시작(20), 종료(40), N(10); input : 손절(20),익절(15),익절하락(3); input : P1(30), P2(120), p3(240); input : StartTime(090000),EndTime(050000); var : tt(0),tx(0),X(false),tx1(0),cnt(0),sum(0); var: Tcond(false),ht(0),lcnt(0),trcnt(0),R(-1); Array : XX[200](-1); var : tx3(0),cnt3(0),sum3(0),lcnt3(0),trcnt3(0),R3(-1),TR3(0),GR3(0), tx4(0),T3(0); Array : XX3[200](-1); var1 = ma(C, P1); var2 = ma(C, P2); var3 = ma(C, P3); if (sdate != sdate[1] and stime >= StartTime) or (sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then { Tcond = true; tt = 0; X = false; } if Tcond == true then { if marketposition == 0 and crossup(var1,var2) Then { if Condition3 == true then #### buy("B1■"); Else buy("B1"); } if marketposition == 0 and crossdown(var1,var2) Then { if Condition3 == true then #### sell("S1■"); Else sell("S1"); } if marketposition == 0 and crossup(var2,var3) and var3[1] < var3 Then { if Condition3 == true then #### buy("B2■"); Else buy("B2"); } if marketposition == 0 and crossdown(var3,var4) and var3[1] > var3 Then { if Condition3 == true then #### sell("S2■"); Else sell("S2"); } if MarketPosition == 1 then { SetStopTrailing(익절하락,익절,PointStop); SetStopLoss(손절,PointStop); } if MarketPosition == -1 Then { SetStopTrailing(익절하락,익절,PointStop); SetStopLoss(손절,PointStop); } } ### 수정 요청 (삭제해도 무방합니다.) if TotalTrades > TotalTrades[1] then { if IsExitName("StopLoss",1) == true then { lcnt3 = lcnt3+1; XX3[0] = 0; for cnt3 = 1 to 199 { XX3[cnt3] = XX3[cnt3-1][1]; } if (trcnt3+lcnt3) >= N then { sum3 = 0; for cnt3 = 0 to N-1 { if XX3[cnt3] == 1 Then sum3 = sum3 + 1; } R3 = sum3/N*100; if Condition3 == false and R3 <= 시작 and R3[1] > 시작 Then { Condition3 = true; value1 = sum3; value2 = 1; } else { if Condition3 == true Then { value1 = value1 + 0; value2 = value2 + 1; T3 = value1/value2*100; ## T3 추가 if value1/value2*100 >= 종료 Then Condition3 = true; } } } } if IsExitName("StopTrailing",1) == true then { trcnt3 = trcnt3+1; XX3[0] = 1; for cnt3 = 1 to 199 { XX3[cnt3] = XX3[cnt3-1][1]; } if (trcnt3+lcnt3) >= N then { sum3 = 0; for cnt3 = 0 to N-1 { if XX3[cnt3] == 1 Then sum3 = sum3+1; } R3 = sum3/N*100; if Condition3 == false and R3 <= 시작 and R3[1] > 시작 Then { Condition3 = true; value1 = sum3; value2 = 1; } else { if Condition3 == true Then { value1 = value1 + 1; value2 = value2 + 1; T3 = value1/value2*100; ## T3 추가 if value1/value2*100 >= 종료 Then Condition3 = true; } } } } TR3 = trcnt3/(trcnt3+lcnt3)*100 ; } Text_Delete(tx3); tx3 = Text_New(NextBarSdate,NextBarStime,H,NumToStr(TR3,1)+NewLine+NumToStr(R3,1)); Text_SetSize(tx3,15); Text_Setstyle(tx3,2,20); #### ■일때 T3 표시 추가 /* t4 = Text_New(NextBarSdate,NextBarStime,H,+NewLine+NumToStr(T3,1)); Text_SetSize(tx3,15); Text_Setstyle(tx3,2,20); */ if (sdate != sdate[1] and stime >= EndTime) or (sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then { Tcond = false; if MarketPosition == 1 Then { ExitLong("BE6"); } if MarketPosition == -1 Then { ExitShort("SE6"); } }
프로필 이미지
라떼처럼
2020-04-27
1021
글번호 138402
시스템
답변완료

[전략실행 차트]에서의 매매가격 설정이 되지 않습니다.

수고 많으십니다. 시스템 매매 관련해서 질문 드립니다. 1. [시뮬레이션 차트]에서는 매매가격 설정(현재가, 시장가 등)이 불가능한 것인가요? 2. [전략실행 차트]에서도 첨부파일1,2 에서 보이듯, 매매가격 설정을 바꿔도 시스템 적용 결과는 물론 차트 상의 진입, 청산 포인트가 바뀌지 않는데 어떻게 하면 되는 건가요? 3. 예를 들어 atlimit를 사용한 매수의 경우, 지정가 한 틱 위에서 매수가 일어나게 하려면 어떻게 해야 합니까? 제 HTS 상에서는 위 2번에서 언급한 것처럼 시장가나 지정가+1호가로 지정해도 항상 지정가에 거래가 이루어진 것으로 결과가 나옵니다. 제가 뭘 놓치고 잇는지 모르겠네요...
프로필 이미지
zeppelin
2020-04-27
1207
글번호 138401
시스템