커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

문의드립니다.

키움식 변환부탁드립니다. 1. A = valuewhen(1,crossup(RSI(Period),10),c); E=avg(c,MA1); F=avg(c,MA2); G=avg(c,MA3); 5000 c<a and crossup(RSI(Period),20) and barssince(crossup(RSI(Period),10))<20 and H < E-0.01 2. crossdown(RSI(Period),20) or crossdown(RSI(Period),10) 3. D= valuewhen(1,crossdown(RSI(Period),20),c); D<c and crossdown(RSI(Period),20) 4. crossup(RSI(Period),20) barssince(crossdown(RSI(Period),30))<20 감사합니다.
프로필 이미지
생생파생
2016-12-23
157
글번호 105239
시스템
답변완료

수식부탁드립니다

1분봉입니다 전일의 같은시간 data2와 비교해서 200% 이상 크면 매수하는 수식 부탁드립니다. data2 data1 전일 9:36 100 >> 금일 9:36 200 행복한 성탄되세요~
프로필 이미지
산인
2016-12-23
120
글번호 105238
시스템
답변완료

한가지만 더 여줘볼께요

연결선물1분봉 사용중입니다. 당일 매수 매도 진입을 한번만 하고...당일 청산 방법 사용중입니다. 당일 매수 매도 진입을...9시20분 전에는 하지 않고, 이후에나 조건 만족하는경우 하는걸로 수식 작성 바랍니다. 아래는 이전에 제가 물은 수식에 대한 답변인데, 밑에 수식을 바꺼주심 감사하겠습니다. 날씨 추운데 건강 조심하시고, 항상 빠른 답변 감사드립니다....(__) ----------- 50978번 답변내용. ------------- var : HH(0),LL(0),EntryCond(false),EntryCnt(0),T1(0); var : ema1(0),ema2(0),ema3(0),ema4(0),HL(0),LH(0); HH = dayhigh(1); LL = daylow(1); ema1 = ema(C,20); ema2 = ema(C,35); ema3 = ema(C,60); ema4 = ema(C,120); if bdate != bdate[1] Then{ T1 = TotalTrades; EntryCond = false; if O < HH and O > LL Then entrycond = true; } if MarketPosition == 0 Then EntryCnt = TotalTrades-T1; Else EntryCnt = (TotalTrades-T1)+1; if entrycond == true and EntryCnt < 1 then{ if crossup(C,HH) Then buy(); if CrossDown(c,LL) Then sell(); } if MarketPosition == 1 Then{ if max(ema1,ema2,ema3,ema4) < HH then{ if CrossDown(c,HH) Then exitlong(); } Else{ HL = max(ema1,ema2,ema3,ema4); if ema1 > HH and ema1 < HL Then HL = ema1; if ema2 > HH and ema2 < HL Then HL = ema2; if ema3 > HH and ema3 < HL Then HL = ema3; if ema4 > HH and ema4 < HL Then HL = ema4; if CrossDown(C,HL) Then exitlong(); } } if MarketPosition == 1 Then{ if min(ema1,ema2,ema3,ema4) > LL then{ if CrossUp(c,LL) Then ExitShort(); } Else{ LH = Min(ema1,ema2,ema3,ema4); if ema1 < LL and ema1 > LH Then HL = ema1; if ema2 < LL and ema2 > LH Then HL = ema2; if ema3 < LL and ema3 > LH Then HL = ema3; if ema4 < LL and ema4 > LH Then HL = ema4; if CrossDown(C,LH) Then exitlong(); } } SetStopEndofday(150000);
프로필 이미지
묻어가는자
2016-12-23
121
글번호 105237
시스템
답변완료

전일 거래량 비교

만약 오늘 09:10분에 매수신호가 발생하였고 현재신호가 유지되어 있는 상태에서 15:18분 시점에 데이로 마감할 것인지, 아니면 내일로 넘어갈 것인지 결정짓기 위해 아래 내용을 추가하고자 합니다. 1분봉의 식에 적용코자 합니다. 15:18분 시점의 금일거래량 총합이 전일 마감거래량보다 증가하였고, 변동폭이 7%이하이며, 시가대비 현재까지의 일봉 예상모습이 양봉이면 당일청산 안함 if (MARKETPOSITION == 1) then { // DESCRIPTIONS: SetStopEndofDay if ( (stime >= 151800) AND ( 관련식 ) ) then { EXITLONG("EL[SetEnd]"); } } 식으로 부탁드립니다. 늘 감사드립니다.
프로필 이미지
TRF
2016-12-23
133
글번호 105235
시스템
답변완료

검토부탁드립니다.

안녕하세요. 아래 수식은 어제 작성해주신 것인데요. 이것을 특정날짜를 기준으로 바꾸고 싶어서 해보았는데 잘안되네요. var : AA(0),BB(0),CC(0),DD(0); AA = AccumN(V,10); BB = AA[10]; CC = AA[20]; DD = AA[30]; var1 = ma(C,5); var2 = ma(c,10); Condition1 = C > var1 and C > O and C <= O*1.25 and AA > BB*1.55; Condition2 = C > var1 and C > O and C <= O*1.30 and AA > BB*1.50 and AA > CC*1.7; Condition3 = C > var1 and C > var2 and C > O and C <= O*1.35 and AA > BB*1.50 and AA > CC*1.7 and AA > CC*2.1; if Condition1 == true or Condition2 == true or Condition3 == true Then find(1); 위 수식을 아래와 같이 하면 아무것도 검색이 안됩니다. 어디가 잘못된것인가요? input : ndate(20141201); var : AA(0),BB(0),CC(0),DD(0); AA = AccumN(V,10); BB = AA[10]; CC = AA[20]; DD = AA[30]; var1 = ma(C,5); var2 = ma(c,10); Condition1 = C > var1 and C > O and C <= O*1.25 and AA > BB*1.55; Condition2 = C > var1 and C > O and C <= O*1.30 and AA > BB*1.50 and AA > CC*1.7; Condition3 = C > var1 and C > var2 and C > O and C <= O*1.35 and AA > BB*1.50 and AA > CC*1.7 and AA > CC*2.1; if sdate == ndate and (Condition1 == true or Condition2 == true or Condition3 == true) Then find(1);
프로필 이미지
강태공3
2016-12-23
114
글번호 105234
검색
답변완료

처음 진입과 이후 매매를 다르게 처리해보고 싶습니다.

안녕하세요. 처음 진입만 이평을 넘었을때 하고(b), 이후 거래는 최고(h)/최저가(l)를 갱신했을때만 진입해보고 싶습니다. 그리고 주식에도 sell, exitlong 둘 다 적용된다는걸 알았는데, 둘 각각 결과가 다르게 나오더군요. 둘의 차이가 무엇인가요? input : N(14); var : mav(0); var1 = highest(H,N); var2 = lowest(L,N); mav = ma(c,20); #이평상향돌파 매수 if crossup(c,mav) Then buy("b"); if c >= Var1 Then buy("h"); if c <= Var2 Then sell("l");
프로필 이미지
가치투자꾼
2016-12-23
116
글번호 105230
시스템
답변완료

수식문의 문의드립니다.

안녕하세요 여기서 전저점이랑 직전저점에 추세선추가 및 전고점이랑 직전고점에 추세선 추가를 추가할수 있나요? Input:length(12); Var:j(0),lastHiVal(0),lastLoVal(0),sBar(0),eBar(0),TL1(0),TL2(0),TL3(0),Text1(0),처리구분(""), TL_Val1(0),TL_Val2(0); Array:고점[10,2](0),저점[10,2](0); 처리구분 = ""; If Highest(H,length) == H and lastHiVal <> H and Lowest(L,length) == L and lastLoVal <> L Then { If 저점[1,1] > L Then 처리구분 = "저점처리"; If 고점[1,1] < H Then 처리구분 = "고점처리"; } Else If Highest(H,length) == H and lastHiVal <> H Then 처리구분 = "고점처리"; Else If Lowest(L,length) == L and lastLoVal <> L Then 처리구분 = "저점처리"; If 처리구분 == "고점처리" Then { lastHiVal = H; If 고점[1,2] < 저점[1,2] Then { For j = 10 DownTo 2 { 고점[j,1] = 고점[j-1,1]; 고점[j,2] = 고점[j-1,2]; } } If 고점[1,2] < 저점[1,2] or 고점[1,1] < H Then { 고점[1,1] = H; 고점[1,2] = Index; sBar = Index - 저점[1,2]; eBar = 0; If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then { TL_Delete(TL1); Text_Delete(Text1); If 고점[3,1][1] < 고점[2,1][1] and 고점[2,1][1] > 고점[1,1][1] and 저점[2,1][1] < 저점[1,1][1] Then TL_Delete(TL2); } TL1 = TL_New(sDate[sBar],sTime[sBar],저점[1,1],sDate[eBar],sTime[eBar],고점[1,1]); Text1 = Text_New(sDate[eBar],sTime[eBar],고점[1,1],NumToStr(고점[1,1],2)); Text_SetStyle(Text1, 2, 1); If 고점[3,1] < 고점[2,1] and 고점[2,1] > 고점[1,1] and 저점[2,1] < 저점[1,1] Then { sBar = Index - 저점[2,2]; eBar = Index - 저점[1,2]; TL2 = TL_New(sDate[sBar],sTime[sBar],저점[2,1],sDate[eBar],sTime[eBar],저점[1,1]); TL_SetColor(TL2,BLUE); } } } If 처리구분 == "저점처리" Then { lastLoVal = L; If 저점[1,2] < 고점[1,2] Then { For j = 10 DownTo 2 { 저점[j,1] = 저점[j-1,1]; 저점[j,2] = 저점[j-1,2]; } } If 저점[1,2] < 고점[1,2] or 저점[1,1] > L Then { 저점[1,1] = L; 저점[1,2] = Index; sBar = Index - 고점[1,2]; eBar = 0; If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then { TL_Delete(TL1); Text_Delete(Text1); If 저점[2,1][1] < 저점[1,1][1] and 저점[2,1][1] < 저점[3,1][1] and 고점[2,1][1] > 고점[1,1][1] Then TL_Delete(TL3); } TL1 = TL_New(sDate[sBar],sTime[sBar],고점[1,1],sDate[eBar],sTime[eBar],저점[1,1]); Text1 = Text_New(sDate[eBar],sTime[eBar],저점[1,1],NumToStr(저점[1,1],2)); Text_SetStyle(Text1, 2, 0); If 저점[2,1] < 저점[1,1] and 저점[2,1] < 저점[3,1] and 고점[2,1] > 고점[1,1] Then { sBar = Index - 고점[2,2]; eBar = Index - 고점[1,2]; TL3 = TL_New(sDate[sBar],sTime[sBar],고점[2,1],sDate[eBar],sTime[eBar],고점[1,1]); TL_SetColor(TL3,RED); } } } TL_SetSize(TL1,1); TL_SetColor(TL1,CYAN); TL_SetSize(TL2,1); TL_SetSize(TL3,1); TL_Val1 = 0; TL_Val2 = 0; If 고점[2,1] > 고점[1,1] and 고점[2,1] > 고점[3,1] Then { If 고점[1,2] < 저점[1,2] and 저점[3,1] < 저점[2,1] Then TL_Val1 = (저점[2,1]-저점[3,1])/(저점[2,2]-저점[3,2]) * (Index-저점[3,2])+저점[3,1]; If 저점[1,2] < 고점[1,2] and 저점[2,1] < 저점[1,1] Then TL_Val1 = (저점[1,1]-저점[2,1])/(저점[1,2]-저점[2,2]) * (Index-저점[2,2])+저점[2,1]; } If 저점[2,1] < 저점[1,1] and 저점[2,1] < 저점[3,1] Then { If 저점[1,2] < 고점[1,2] and 고점[3,1] > 고점[2,1] Then TL_Val2 = (고점[2,1]-고점[3,1])/(고점[2,2]-고점[3,2]) * (Index-고점[3,2])+고점[3,1]; If 고점[1,2] < 저점[1,2] and 고점[2,1] > 고점[1,1] Then TL_Val2 = (고점[1,1]-고점[2,1])/(고점[1,2]-고점[2,2]) * (Index-고점[2,2])+고점[2,1]; } If TL_Val1 > 0 Then Plot1(TL_Val1,"추세선1",BLUE); //점그래프 If TL_Val2 > 0 Then Plot2(TL_Val2,"추세선2",RED); //점그래프
프로필 이미지
장군777
2016-12-23
154
글번호 105229
지표
답변완료

질문

Cond99와 TimeToMin 이 에러라고 뜨는데요. 교정부탁드립니다. 감사합니다. If date <> date[1] Then Begin vA_value == H; vB_value == L; Cond99 == False; PreTT == TotalTrades[1]; End; If Fracportion(TimeToMin(time[1])/60) == 0 And Cond99 == False Then Cond99 == True; If Cond99 == False Then Begin if vA_value < H Then vA_value == H; if vB_value > L Then vB_value == L; End; if Cond99 Then Begin If CrossUp(C, vA_value) Then ExitShort("BX"); If CrossDown(C, vB_value) Then ExitLong("SX");
프로필 이미지
이주엽
2016-12-23
107
글번호 105228
시스템
답변완료

walk-forward 분석 결과값 대입 방법 문의

안녕하세요, 아래 수식에서 EntryBuffer과 MinDayMvt이라는 항목에 대해서 walk-forward 분석을 실행하였다고 가정하겠습니다. Input : EntryBuffer(-2), MinDayMvt(0.5), StopProfit(3),StopLoss(3); Var : count(0); 그 결과 2016/01/01~2016/06/30 까지는 EntryBuffer(5), MinDayMvt(0.6)을, 2016/07/01~2016/12/31 까지는 EntryBuffer(3), MinDayMvt(0.8)을 적용하기로 하였고, 이를 통합하여 하나의 walk-forward 시뮬레이션 결과를 보고자 아래과 같이 수식을 수정하였습니다. Input : EntryBuffer(-2), MinDayMvt(0.5), StopProfit(3),StopLoss(3); Var : count(0); If date >= 20160101 and date <= 20160630 Then EntryBuffer == 5 and MinDayMvy == 0.6; If date >= 20160701 and date <= 20161231 Then EntryBuffer == 3 and MinDayMvy == 0.8; 수식을 위와 같이 수정하고 기존 시스템과 비교하여 보니 추가한 기간별 walk-forward input 값들이 반영되지 않고 수정 전 시스템과 동일한 결과값이 나왔습니다. 기간별로 walk-forward input 값들을 달리 적용하여 하나의 시뮬레이션 결과를 보고자 하면 어떻게 수식을 수정해야 할까요? 감사합니다.
프로필 이미지
라면의비밀
2016-12-23
120
글번호 105224
시스템