커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

안녕하세요

안녕하세요 수식 문의 드립니다 아래의 식을 Input : shortPeriod(5), longPeriod(20); value1 = ma(C, shortPeriod); value2 = ma(C, longPeriod); # 매수/매도청산 If CrossUP(value1, value2) Then { Buy(); } # 매도/매수청산 If CrossDown(value1, value2) Then { Sell(); } 삼각 가중평균으로 치환된 수식으로 부탁드립니다 감사합니다 수고하세요
프로필 이미지
금보
2014-12-09
159
글번호 81205
시스템
답변완료

안녕하세요

반갑습니다. 아래식은 전번에 작성된것입니다 이것을 틱챠트로 하면 표시가 안됩니다 틱으로 신호 받을수있게좀 부탁합니다 틱수(75.150.) input : maP1(5),maP2(20),RSIP(14),RSIsig(9),MACDP1(12),MACDP2(26),MACDP3(9),CCIP(36),CCIsig(9); var : TF2(0),TF3(0),cnt(0),TT(0); var : sum21(0),sum22(0),sum41(0),sum42(0); var : mav11(0),mav12(0),mav21(0),mav22(0),mav41(0),mav42(0); Var : MACDEP21(0),MACDEP22(0),MACDEP23(0); var : JISU21(0),JISU22(0),JISU23(0); var : PreJISU21(0),PreJISU22(0),PreMACDSIG2(0); var : MACDIDX2(0),MACDVal2(0),MACDSig2(0),MACDOsc2(0); Var : MACDEP41(0),MACDEP42(0),MACDEP43(0); var : JISU41(0),JISU42(0),JISU43(0); var : PreJISU41(0),PreJISU42(0),PreMACDSIG4(0); var : MACDIDX4(0),MACDVal4(0),MACDSig4(0),MACDOsc4(0); var : MACDval1(0),MACDSig1(0),MACDOsc1(0); var : CCIsum2(0),CCIAvg2(0),CCIMD2(0),CCIv2(0),CCIEP2(0),CCIdx2(0),CCIs2(0),PreCCIs2(0),CCIV1(0); var : CCIsum4(0),CCIAvg4(0),CCIMD4(0),CCIv4(0),CCIEP4(0),CCIdx4(0),CCIs4(0),PreCCIs4(0),CCIS1(0); Array : O2[100](0),H2[100](0),L2[100](0),C2[100](0); Array : O4[100](0),H4[100](0),L4[100](0),C4[100](0); var : RSIV1(0),RSIS1(0),RSIV2(0),RSIS2(0), RSIV4(0),RSIS4(0);; var : RSIdx2(0),PreUpAvg2(0),PreDownAvg2(0),UpSum2(0),DownSum2(0); var : UpAmt2(0),DownAmt2(0),UpAvg2(0),DownAvg2(0),RSIEP2(0),PreRSIS2(0); var : RSIdx4(0),PreUpAvg4(0),PreDownAvg4(0),UpSum4(0),DownSum4(0); var : UpAmt4(0),DownAmt4(0),UpAvg4(0),DownAvg4(0),RSIEP4(0),PreRSIS4(0); if date != date[1] Then TT = TimeToMinutes(stime); TF2 = (TimeToMinutes(stime)-TT)%Int(BarInterval*2); TF3 = (TimeToMinutes(stime)-TT)%int(BarInterval*2); if dayindex() == 0 or (TF2 < TF2[1]) or stime == 151500 Then{ O2[0] = O; H2[0] = H; L2[0] = L; for cnt = 1 to 99{ O2[cnt] = O2[cnt-1][1]; H2[cnt] = H2[cnt-1][1]; L2[cnt] = L2[cnt-1][1]; C2[cnt] = C2[cnt-1][1]; } CCIdx2 = CCIdx2+1; PreCCIS2 = CCIS2[1]; } C2[0] = C; if H > H2[0] Then H2[0] = H; if L < L2[0] Then L2[0] = L; if dayindex() == 0 or (TF3 < TF3[1]) or stime == 151500 Then{ O4[0] = O; H4[0] = H; L4[0] = L; for cnt = 1 to 99{ O4[cnt] = O4[cnt-1][1]; H4[cnt] = H4[cnt-1][1]; L4[cnt] = L4[cnt-1][1]; C4[cnt] = C4[cnt-1][1]; } CCIdx4 = CCIdx4+1; PreCCIS4 = CCIS4[1]; } C4[0] = C; if H > H4[0] Then H4[0] = H; if L < L4[0] Then L4[0] = L; sum21 = 0; sum22 = 0; for cnt = 0 to maP2{ if cnt < maP1 Then sum21 = sum21+C2[cnt]; if cnt < maP2 Then sum22 = sum22+C2[cnt]; } mav21 = sum21/maP1; mav22 = sum22/maP2; sum41 = 0; sum42 = 0; for cnt = 0 to maP2{ if cnt < maP1 Then sum41 = sum41+C4[cnt]; if cnt < maP2 Then sum42 = sum42+C4[cnt]; } mav41 = sum41/maP1; mav42 = sum42/maP2; mav11 = ma(c,maP1); mav12 = ma(c,maP2); #MACD MACDEP21 = 2/(MACDP1+1); MACDEP22 = 2/(MACDP2+1); MACDEP23 = 2/(MACDP3+1); if dayindex() == 0 or (TF2 < TF2[1]) Then{ MACDIDX2 = MACDIDX2 + 1; PreJISU21 = JISU21[1]; PreJISU22 = JISU22[1]; PreMACDSIG2 = MACDSIG2[1]; } if MACDIDX2 <= 1 then { JISU21 = C; JISU22 = C; MACDVal2 = JiSu21-Jisu22; } else{ JISU21 = C * MACDEP21 + PreJISU21 * (1-MACDEP21); JISU22 = C * MACDEP22 + PreJISU22 * (1-MACDEP22); MACDVal2 = JiSu21-Jisu22; } if MACDIDX2 <= 2 then MACDSIG2 = MACDVal2; else MACDSIG2 = MACDVal2 * MACDEP23 + PreMACDSIG2 * (1-MACDEP23); MACDOsc2 = MACDVal2-MACDsig2; MACDEP41 = 2/(MACDP1+1); MACDEP42 = 2/(MACDP2+1); MACDEP43 = 2/(MACDP3+1); if dayindex() == 0 or (TF3 < TF3[1]) then{ MACDIDX4 = MACDIDX4 + 1; PreJISU41 = JISU41[1]; PreJISU42 = JISU42[1]; PreMACDSIG4 = MACDSIG4[1]; } if MACDIDX4 <= 1 then { JISU41 = C; JISU42 = C; MACDVal4 = JiSu41-Jisu42; } else{ JISU41 = C * MACDEP41 + PreJISU41 * (1-MACDEP41); JISU42 = C * MACDEP42 + PreJISU42 * (1-MACDEP42); MACDVal4 = JiSu41-Jisu42; } if MACDIDX4 <= 2 then MACDSIG4 = MACDVal4; else MACDSIG4 = MACDVal4 * MACDEP43 + PreMACDSIG4 * (1-MACDEP43); MACDOsc4 = MACDVal4-MACDsig4; MACDVal1 = MACD(MACDP1,MACDP2); MACDsig1 = ema(MACDVal1,MACDP3); MACDOsc1 = MACDVal1-MACDSig1; #CCI if dayindex() == 0 or (TF2 < TF2[1]) or stime == 151500 Then{ CCIdx2 = CCIdx2+1; PreCCIS2 = CCIS2[1]; } if dayindex() == 0 or (TF3 < TF3[1]) Then{ CCIdx4 = CCIdx4+1; PreCCIS4 = CCIS4[1]; } CCIsum2 = 0; If C2[CCIP] > 0 Then Begin for cnt = 0 to CCIP-1{ CCIsum2 = CCIsum2+(C2[cnt]+H2[cnt]+L2[cnt]); } CCIAvg2 = CCIsum2/CCIP; CCIMD2 = 0; For cnt = 0 To CCIP - 1 Begin CCIMD2 = CCIMD2 + Abs(H2[cnt] + L2[cnt] + C2[cnt] - CCIAvg2); End; CCIMD2 = CCIMD2 / CCIP; If CCIMD2 == 0 Then CCIv2 = 0; Else CCIv2 = (H2[0] + L2[0] + C2[0] - CCIAvg2) / (0.015 * CCIMD2); End Else CCIv2 = 0; CCIEP2 = 2/(CCIsig+1); if CCIdx2 <= CCIP then CCIS2 = CCIv2; else CCIS2 = CCIv2 * CCIEP2 + PreCCIS2 * (1-CCIEP2); CCIsum4 = 0; If C4[CCIP] > 0 Then Begin for cnt = 0 to CCIP-1{ CCIsum4 = CCIsum4+(C4[cnt]+H4[cnt]+L4[cnt]); } CCIAvg4 = CCIsum4/CCIP; CCIMD4 = 0; For cnt = 0 To CCIP - 1 Begin CCIMD4 = CCIMD4 + Abs(H4[cnt] + L4[cnt] + C4[cnt] - CCIAvg4); End; CCIMD4 = CCIMD4 / CCIP; If CCIMD4 == 0 Then CCIv4 = 0; Else CCIv4 = (H4[0] + L4[0] + C4[0] - CCIAvg4) / (0.015 * CCIMD4); End Else CCIv4 = 0; CCIEP4 = 2/(CCIsig+1); if CCIdx4 <= CCIP then CCIS4 = CCIv4; else CCIS4 = CCIv4 * CCIEP4 + PreCCIS4 * (1-CCIEP4); CCIV1 = CCI(CCIP); CCIS1 = ema(CCIV1,CCIsig); #RSI if dayindex() == 0 or (TF2 < TF2[1]) Then{ if C2[RSIP] > 0 Then RSIdx2 = RSIdx2+1; PreUpAvg2 = UpAvg2[1]; PreDownAvg2 = DownAvg2[1]; PreRSIS2 = RSIS2[1]; } If RSIdx2 == 1 Then Begin UpSum2 = 0; DownSum2 = 0; For cnt = 0 To RSIP - 1 Begin UpAmt2 = C2[cnt] - C2[cnt+1]; If UpAmt2 >= 0 Then DownAmt2 = 0; Else Begin DownAmt2 = -UpAmt2; UpAmt2 = 0; End; UpSum2 = UpSum2 + UpAmt2; DownSum2 = DownSum2 + DownAmt2; End; UpAvg2 = UpSum2 / RSIP; DownAvg2 = DownSum2 / RSIP; End If RSIdx2 > 1 Then { UpAmt2 = C2[0] - C2[1]; If UpAmt2 >= 0 Then DownAmt2 = 0; Else Begin DownAmt2 = -UpAmt2; UpAmt2 = 0; End; UpAvg2 = (PReUpAvg2 * (RSIP - 1) + UpAmt2) / RSIP; DownAvg2 = (PreDownAvg2 * (RSIP - 1) + DownAmt2) / RSIP; } If UpAvg2 + DownAvg2 <> 0 Then RSIv2 = 100 * UpAvg2 / (UpAvg2 + DownAvg2); Else RSIv2 = 0; RSIEP2 = 2/(RSIsig+1); if RSIdx2 <= 1 then RSIS2 = RSIV2; else RSIS2 = RSIV2 * RSIEP2 + PreRSIS2 * (1-RSIEP2); if dayindex() == 0 or (TF3 < TF3[1]) Then{ if C4[RSIP] > 0 Then RSIdx4 = RSIdx4+1; PreUpAvg4 = UpAvg4[1]; PreDownAvg4 = DownAvg4[1]; PreRSIS4 = RSIS4[1]; } C4[0] = C; If RSIdx4 == 1 Then Begin UpSum4 = 0; DownSum4 = 0; For cnt = 0 To RSIP - 1 Begin UpAmt4 = C4[cnt] - C4[cnt+1]; If UpAmt4 >= 0 Then DownAmt4 = 0; Else Begin DownAmt4 = -UpAmt4; UpAmt4 = 0; End; UpSum4 = UpSum4 + UpAmt4; DownSum4 = DownSum4 + DownAmt4; End; UpAvg4 = UpSum4 / RSIP; DownAvg4 = DownSum4 / RSIP; End If RSIdx4 > 1 Then { UpAmt4 = C4[0] - C4[1]; If UpAmt4 >= 0 Then DownAmt4 = 0; Else Begin DownAmt4 = -UpAmt4; UpAmt4 = 0; End; UpAvg4 = (PReUpAvg4 * (RSIP - 1) + UpAmt4) / RSIP; DownAvg4 = (PreDownAvg4 * (RSIP - 1) + DownAmt4) / RSIP; } If UpAvg4 + DownAvg4 <> 0 Then RSIv4 = 100 * UpAvg4 / (UpAvg4 + DownAvg4); Else RSIv4 = 0; RSIEP4 = 2/(RSIsig+1); if RSIdx4 <= 1 then RSIS4 = RSIV4; else RSIS4 = RSIV4 * RSIEP4 + PreRSIS4 * (1-RSIEP4); RSIV1 = RSI(RSIP); RSIS1 = ema(RSIV1,RSISig); if mav11 > mav12 and RSIV1 > 50 and RSIV1 > RSIS1 and MACDOSC1 > 0 and CCIV1 > CCIS1 And mav21 > mav22 and RSIV2 > 50 and RSIV2 > RSIS2 and MACDOSC2 > 0 and CCIV2 > CCIS2 Then buy(); if mav11 < mav12 and RSIV1 < 50 and RSIV1 < RSIS1 and MACDOSC1 < 0 and CCIV1 < CCIV2 and mav21 < mav22 and RSIV2 < 50 and RSIV2 < RSIS2 and MACDOSC2 < 0 and CCIV2 < CCIS2 Then sell(); 감사합니다.
프로필 이미지
회원
2014-12-09
227
글번호 81204
시스템

회원 님에 의해서 삭제되었습니다.

프로필 이미지
회원
2014-12-09
0
글번호 81203
강조

닉크네임 님에 의해서 삭제되었습니다.

프로필 이미지
닉크네임
2014-12-09
2
글번호 81198
지표
답변완료

문의 합니다.

아래수식을 적용한 결과 일부구간에서 첨부된 차트와 같이 무수한 신호가 발생되고 있습니다. 원인이 무엇인지요? 아래수식에 잘못 된 오류 사항이 있으면 바르게 수정하여 주십시요. 차트에 적용한 변수는 수식의 변수와 같습니다. Input : p1(120),Period(12.5), Period1(5),period2(5),L1(20),L2(80); var : StoK(0),StoD(0); var1 = wma(c,p1); StoK = StochasticsK(Period,Period1); StoD = StochasticsD(Period,Period1,Period2); If CrossUp(stoK,stoD) Then { Value1 = stok; Value2 = Value1[1]; value3 = var1; value4 = value3[1]; } If Value2 < L1 Then { If Value1 >= Value2 and value3 <= Value4 Then Buy("B",AtMarket); } If CrossDown(stoK,stoD) then { Value11 = stok; Value12 = Value11[1]; value13 = var1; value14 = value13[1]; } If Value12 > L2 Then { If Value11 <= Value12 and value13 >= value14 Then sell("S",AtMarket); }
프로필 이미지
너무조아
2014-12-09
179
글번호 81197
시스템
답변완료

수식문의드립니다

수식문의 드립니다 매수신호 170틱상 챠트에 예비매수신호(내부빈 적색화살표), 매수확정신호(내부채운 적색화살표)표시 ①10일선이 하락하다가 상승하여 각도가 0도 이상으로 변할 때, 20일선 각도는 -20이상으로 하락중 상승하여 -20도로 완만하게 턴하고 있으면 해당봉에 예비매수신호를 표시하고 있다가 ②완성봉으로 위 조건이 확정되면 예비매수신호대신 매수확정신호를 표시하고 ③만약 예비봉에서 ①에서 제시한 조건이 소멸되면 예비봉에서 예비매수신호를 지움 매도신호(반대의 경우임) 170틱상 챠트에 예비매도신호(내부빈 청색화살표), 매도확정신호(내부채운 청색화살표)표시 ①10일선이 상승하다가 하락하여 각도가 0도 이하로 변할 때, 20일선은 +20도이상 상승하다가 하락하여 +20도이하로 되면 해당봉에 예비매도신호를 표시하고 있다가 ②완성봉으로 위조건이 확정되면 예비매도신호대신 매도확정신호를 표시하고 ③만약 예비봉에서 ①에서 제시한 조건이 소멸되면 예비봉에서 예비매도신호를 지움
프로필 이미지
회원
2014-12-09
154
글번호 81196
시스템
답변완료

문의드려요~

제가 컴퓨터도 새로맞추고 인터넷도 빠른것으로 바꿨는데 선물시장이 급등락할때 모래시계(?)가 뜨면서 짧게는 10초 길게는 30초정도 렉이걸리면서 멈춰버립니다. 작업표시줄의 예스트레이더 아이콘 옆으로 회색의 아이콘이 몇개가 뜰때도 있습니다. 살펴보니깐..캔들하나에서 거래량이 좀 붙으면서 5틱이상으로 움직일때부터 그런것 같습니다. 시장이 잠잠할때는 그래도 괜찮은것 같구요. 타증권사를 켜서 비교해보면 시세차이가 많이납니다. 고객센터로 문의하니깐 수식을 최적화하라는데 어떻게해야하나요? 초보라서 수식도 다 문의해서 만든건데 최적화방법이 따로있나요? 캔들간격을 넓혀봐도 그렇구요. 차트마다 220에서 230바만 띄워놓은 상태입니다. 듀얼모니터에 10개정도의 차트(분봉,틱봉)가 있고 각각 같은 보조지표들이 셋팅되어있습니다. 분할차트가 3개 그차트안에 각각 2-3개의 차트가 있구요. 사용하는 수식에서 복잡한건없다고 판단됩니다. 도움받을수있는 방법이 있나요? 매매하기 힘들고 답답하네요;; 도와주세요~
프로필 이미지
국산3
2014-12-09
269
글번호 81191
지표
답변완료

계좌 당일 총손실 (spot 수식)

안녕하세요. 다음 spot수식 부탁드립니다. ------------------------------- YT신호를 기준으로 연결선물을 spot으로 매매를 할 때, 당일 총손실금액이 500만원이면 1) 포지션이 있을 경우 모든 포지션을 정리한다. --> 이때 주의사항은 계좌에 매수,매도 포지션이 혼합되어 있기 때문에 실질적으로는 매수 또는 매도의 진입수량이 서로 상쇄되어 잔고포지션이 적게 나타나는 경우가 있다는 점임 --> 그러므로 2)는 당일 총손실금액에 의한 잔고청산시 이후에는 진입,청산 모두 발생하지 않는다는 의미임 2) 이후 추가로 YT신호가 발생하더라도 진입하지 않는다. 위와 더블어, 다음 수식도 부탁드립니다. 3) YT신호는 14:50에 장마감청산이 발생합니다. --> 한번 더 안전장치를 두기 위하여 14:55에 잔고를 check하여, 잔고에 포지션이 있을 경우 모두 청산하라는 spot수식 이상의 내용을 일반적인 signalkind 1,2,3,4 수식에 덧붙여 작성하고 싶습니다. ------------------------------------- 위의 수식과 별도로 다음 spot수식 부탁드립니다. (연결선물 기준) A계좌에는 5개의 시스템이 포트로 운용되고 있습니다. 그러므로 매수 또는 매도 최대 0~5개의 포지션 변화가 일어날 수 있습니다. B계좌는 A계좌의 포지션변동이 있을 때마다 수량을 check하여 동일한 운용이 되도록 하려면 어떻게 spot 수식을 작성해야 하는지요. (즉 시간차에 의해 슬리피지가 발생할 수는 있지만, 궁극적으로는 동일한 운용효과를 보려면) -------------------------------------- 이상입니다. 감사합니다 !!!
프로필 이미지
새로운세상
2014-12-09
234
글번호 81190
시스템
답변완료

검색식 부탁드립니다.

검색식 2개 부탁드리겠습니다. 당일 장이 끝난 후에 검색함 첫번째 검색식 9:00~9:30분내에 2분봉 기준으로 5이평 이격 102이상 발생된 종목 두번째 검색식 9:30~10:00내에 2분봉 기준으로 5이평 이격 102이상 발생된 종목 단, 9:00~9:30에는 이격 102이상이 발생되지 않아야 함 감사합니다.
프로필 이미지
엠제이
2014-12-09
163
글번호 81189
종목검색