커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

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

프로필 이미지
Solomon
2015-05-29
0
글번호 86528
지표

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

프로필 이미지
Solomon
2015-05-29
7
글번호 86527
지표
답변완료

함수 검수 요청

안녕하세요? 한투예스로 모의투자와 실전투자를 동시에 진행하고 있습니다. 장마감 전(오전 6시 15분)까지 청산을 하고자 수식을 넣었는데, 첨부와같이 장마감이 되었습니다. 1. 금일 아침에 개장해서보니, 모의투자 및 실전투자 모두에서 #3010 전략실행차트에서는 전일 마지막 거래내역 및 신호가 사라졌습니다. 2. 그런데 예스가 아닌 한투HTS에는 모의투자와 실계좌 무두 거래내역 및 포지션이 살아 있습니다. 물론 청산은 안되어 미결제약정으로 남아있구요 아래의 함수에서 당일청산이 안된이유가 무엇이며, 신호는 왜 사라졌으며, 다음에 어떤 신호(매수, 또는 매수청산)에 따라 기존 매수 포지션은 어떻게 처리 되나요? 적용한 함수는 다음과 같습니다. 상품은 CLN15입니다. var : TF(0); var : Xtime(0), Etime(false),cnt(0),mav1(0),mav2(0); var : HV(0),LV(0),HV1(0),LV1(0),HV2(0),LV2(0); Array : HH[50](0),LL[50](0),CC[50](0); mav1 = ma(c,5); mav2 = ma(C,20); TF = TimeToMinutes(stime)%30; if Bdate != Bdate[1] Then{ Etime = true; if stime >= 090000 Then Xtime = 050000; Else Xtime = 060000; } if Bdate != Bdate[1] or (TF < TF[1] and stime > stime[1]) or date != date[1] Then{ HH[0] = H; LL[0] = L; for cnt = 1 to 49{ HH[cnt] = HH[cnt-1][1]; LL[cnt] = LL[cnt-1][1]; CC[cnt] = CC[cnt-1][1]; } } if H > HH[0] Then HH[0] = H; if L < LL[0] Then LL[0] = L; CC[0] = C; if HH[25+2] > 0 Then{ HV = HH[0]; LV = LL[0]; HV1 = HH[1]; LV1 = LL[1]; HV2 = HH[2]; LV2 = LL[2]; for cnt = 0 to 25{ if HH[cnt] > HV Then HV = HH[cnt]; if LL[cnt] < LV Then LV = LL[cnt]; if HH[cnt+1] > HV Then HV = HH[cnt+1]; if LL[cnt+1] < LV Then LV = LL[cnt+1]; if HH[cnt+2] > HV Then HV = HH[cnt+2]; if LL[cnt+2] < LV Then LV = LL[cnt+2]; } var1 = (HV+LV)/2; var2 = (HV1+LV1)/2; var3 = (HV2+LV2)/2; if Etime == true then{ if MarketPosition == 0 and CC[0] > var1 and CC[1] < var2 and CC[2] < var3 and C >= daylow+0.5 Then buy("b",AtMarket); if MarketPosition == 1 and c <= highest(H,BarsSinceEntry)-0.5 and CrossDown(mav1,mav2) Then ExitLong("bx",AtMarket); } } if stime == Xtime or (stime > Xtime and stime[1] < Xtime) Then{ Etime = false; ExitLong(); }
프로필 이미지
통큰베팅
2015-05-29
153
글번호 86525
시스템
답변완료

시스템 부탁드립니다.

안녕하세요... 수고 많으십니다... 두가지 질문이 있습니다. 첫번째 : 그림1에서 (1)추세선을돌파할 때 신호가 나오게 하고 싶습니다. 상승하던 캔들이 N자 파동을 그리고 상승하다가 상승추세선을 이탈할때 매도신호 반대로 하락하던 캔들이 N자 파동을 그리고 하락하다가 하락추세선을 돌파할때 매수신호 (2)또한 추세선을 자동으로 그려지게 할 수도 있나요? 추세선이 그려질 수 있다면 수식으로 부탁드립니다. 두번째: 그림2에서 (1)지그재그 파동을 그려놓은 차트입니다 초록색으로 지그재그 파동이 그려지면 첫번째 그림1에서 말씀드렸던 것처럼 지그재그 파동을 이용해서 지그재그 파동이 최소한 두번이상 그려지고 추세선을 돌파할때 매수신호 또 반대로는 추세선을 이탈할때는 매도신호가 나오게 할 수 있나요? (2)또한 위와 마찬가지로 추세선을 자동으로 그려지게 할 수 도 있나요? 지그재그파동 수식은 아래와 같습니다. Input:length(12),per1(23.6),per2(38.2),per3(50.0),per4(76.4); Var:j(0),lastHiVal(0),lastLoVal(0),turnPntBit(""),TL1(0),diff(0); Array:valArr[10](0),barArr[10](0),turnPntArr[10](""); For j = 0 To 9 { barArr[j] = barArr[j] + 1; } Condition1 = Highest(H,length) == H and lastHiVal <> H; Condition2 = Lowest(L,length) == L and lastLoVal <> L; If Condition1 Then lastHiVal = H; If Condition2 Then lastLoVal = L; turnPntBit = ""; If Condition1 and Condition2 Then { If Max(valArr[1],valArr[2]) < H and Min(valArr[1],valArr[2]) > L Then turnPntBit = "HiLo"; Else If Max(valArr[1],valArr[2]) < H Then turnPntBit = "Hi"; Else If Min(valArr[1],valArr[2]) > L Then turnPntBit = "Lo"; } Else If Condition1 Then turnPntBit = "Hi"; Else If Condition2 Then turnPntBit = "Lo"; // if 전환점구분에 값이 있을 때만 then 아래 실행, 없으면 통과 If turnPntBit <> "" Then { If turnPntBit == "HiLo" Then { valArr[1] = IFF(turnPntArr[1] == "Hi",H,L); barArr[1] = 0; TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]); If turnPntArr[1] == "Hi" Then turnPntBit = "Lo"; Else turnPntBit = "Hi"; } If turnPntBit <> turnPntArr[1] Then { for j = 8 downto 1 { valArr[j+1] = valArr[j]; barArr[j+1] = barArr[j]; turnPntArr[j+1] = turnPntArr[j]; } } If turnPntBit <> turnPntArr[1] or (turnPntBit == turnPntArr[1] and ((turnPntBit == "Hi" and valArr[1] < H) or (turnPntBit == "Lo" and valArr[1] > L))) Then { valArr[1] = IFF(turnPntBit == "Hi",H,L); barArr[1] = 0; turnPntArr[1] = turnPntBit; If turnPntArr[1][1] <> turnPntArr[1][0] Then TL1 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2], sDate[barArr[1]],sTime[barArr[1]],valArr[1]); Else TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]); } } TL_SetSize(TL1,4); TL_SetColor(TL1,GREEN); if turnPntArr[1] != turnPntArr[1][1] and barArr[3] > 0 Then{ if turnPntArr[2] == "Hi" then{ value1 = TL_New(sdate[barArr[3]],stime[barArr[3]],L[barArr[3]],sdate[barArr[2]],stime[barArr[2]],L[barArr[3]]); value2 = TL_New(sdate[barArr[3]],stime[barArr[3]],H[barArr[4]],sdate[barArr[2]],stime[barArr[2]],H[barArr[4]]); diff = abs(L[barArr[3]]-H[barArr[4]]); value3 = TL_New(sdate[barArr[3]],stime[barArr[3]],H[barArr[4]]-diff*(per1/100),sdate[barArr[2]],stime[barArr[2]],H[barArr[4]]-diff*(per1/100)); value4 = TL_New(sdate[barArr[3]],stime[barArr[3]],H[barArr[4]]-diff*(per2/100),sdate[barArr[2]],stime[barArr[2]],H[barArr[4]]-diff*(per2/100)); value5 = TL_New(sdate[barArr[3]],stime[barArr[3]],H[barArr[4]]-diff*(per3/100),sdate[barArr[2]],stime[barArr[2]],H[barArr[4]]-diff*(per3/100)); value6 = TL_New(sdate[barArr[3]],stime[barArr[3]],H[barArr[4]]-diff*(per4/100),sdate[barArr[2]],stime[barArr[2]],H[barArr[4]]-diff*(per4/100)); TL_SetColor(value1,blue); TL_SetColor(value2,blue); TL_SetColor(value3,blue); TL_SetColor(value4,blue); TL_SetColor(value5,blue); TL_SetColor(value6,blue); } Else{ value1 = TL_New(sdate[barArr[3]],stime[barArr[3]],H[barArr[3]],sdate[barArr[2]],stime[barArr[2]],H[barArr[3]]); value2 = TL_New(sdate[barArr[3]],stime[barArr[3]],L[barArr[4]],sdate[barArr[2]],stime[barArr[2]],L[barArr[4]]); diff = abs(L[barArr[4]]-H[barArr[3]]); value3 = TL_New(sdate[barArr[3]],stime[barArr[3]],L[barArr[4]]+diff*(per1/100),sdate[barArr[2]],stime[barArr[2]],L[barArr[4]]+diff*(per1/100)); value4 = TL_New(sdate[barArr[3]],stime[barArr[3]],L[barArr[4]]+diff*(per2/100),sdate[barArr[2]],stime[barArr[2]],L[barArr[4]]+diff*(per2/100)); value5 = TL_New(sdate[barArr[3]],stime[barArr[3]],L[barArr[4]]+diff*(per3/100),sdate[barArr[2]],stime[barArr[2]],L[barArr[4]]+diff*(per3/100)); value6 = TL_New(sdate[barArr[3]],stime[barArr[3]],L[barArr[4]]+diff*(per4/100),sdate[barArr[2]],stime[barArr[2]],L[barArr[4]]+diff*(per4/100)); TL_SetColor(value1,RED); TL_SetColor(value2,red); TL_SetColor(value3,RED); TL_SetColor(value4,red); TL_SetColor(value5,RED); TL_SetColor(value6,red); } } TL_Delete(value11); TL_Delete(value12); TL_Delete(value13); TL_Delete(value14); TL_Delete(value15); TL_Delete(value16); TL_Delete(value21); TL_Delete(value22); TL_Delete(value23); TL_Delete(value24); TL_Delete(value25); TL_Delete(value26); if turnPntArr[1] == "Hi" then{ value11 = TL_New(sdate[barArr[2]],stime[barArr[2]],L[barArr[3]],sdate[barArr[1]],stime[barArr[1]],L[barArr[3]]); value12 = TL_New(sdate[barArr[2]],stime[barArr[2]],H[barArr[2]],sdate[barArr[1]],stime[barArr[1]],H[barArr[2]]); diff = abs(L[barArr[3]]-H[barArr[2]]); value13 = TL_New(sdate[barArr[2]],stime[barArr[2]],H[barArr[2]]-diff*(per1/100),sdate[barArr[1]],stime[barArr[1]],H[barArr[2]]-diff*(per1/100)); value14 = TL_New(sdate[barArr[2]],stime[barArr[2]],H[barArr[2]]-diff*(per2/100),sdate[barArr[1]],stime[barArr[1]],H[barArr[2]]-diff*(per2/100)); value15 = TL_New(sdate[barArr[2]],stime[barArr[2]],H[barArr[2]]-diff*(per3/100),sdate[barArr[1]],stime[barArr[1]],H[barArr[2]]-diff*(per3/100)); value16 = TL_New(sdate[barArr[2]],stime[barArr[2]],H[barArr[2]]-diff*(per4/100),sdate[barArr[1]],stime[barArr[1]],H[barArr[2]]-diff*(per4/100)); TL_SetColor(value11,blue); TL_SetColor(value12,blue); TL_SetColor(value13,blue); TL_SetColor(value14,blue); TL_SetColor(value15,blue); TL_SetColor(value16,blue); value21 = TL_New(sdate[barArr[1]],stime[barArr[1]],H[barArr[1]],sdate,stime,H[barArr[1]]); value22 = TL_New(sdate[barArr[1]],stime[barArr[1]],L[barArr[2]],sdate,stime,L[barArr[2]]); diff = abs(L[barArr[2]]-H[barArr[1]]); value23 = TL_New(sdate[barArr[1]],stime[barArr[1]],L[barArr[2]]+diff*(per1/100),sdate,stime,L[barArr[2]]+diff*(per1/100)); value24 = TL_New(sdate[barArr[1]],stime[barArr[1]],L[barArr[2]]+diff*(per2/100),sdate,stime,L[barArr[2]]+diff*(per2/100)); value25 = TL_New(sdate[barArr[1]],stime[barArr[1]],L[barArr[2]]+diff*(per3/100),sdate,stime,L[barArr[2]]+diff*(per3/100)); value26 = TL_New(sdate[barArr[1]],stime[barArr[1]],L[barArr[2]]+diff*(per4/100),sdate,stime,L[barArr[2]]+diff*(per4/100)); TL_SetColor(value21,RED); TL_SetColor(value22,red); TL_SetColor(value23,RED); TL_SetColor(value24,red); TL_SetColor(value25,RED); TL_SetColor(value26,red); } Else{ value11 = TL_New(sdate[barArr[2]],stime[barArr[2]],H[barArr[2]],sdate[barArr[1]],stime[barArr[1]],H[barArr[2]]); value12 = TL_New(sdate[barArr[2]],stime[barArr[2]],L[barArr[3]],sdate[barArr[1]],stime[barArr[1]],L[barArr[3]]); diff = abs(L[barArr[3]]-H[barArr[2]]); value13 = TL_New(sdate[barArr[2]],stime[barArr[2]],L[barArr[3]]+diff*(per1/100),sdate[barArr[1]],stime[barArr[1]],L[barArr[3]]+diff*(per1/100)); value14 = TL_New(sdate[barArr[2]],stime[barArr[2]],L[barArr[3]]+diff*(per2/100),sdate[barArr[1]],stime[barArr[1]],L[barArr[3]]+diff*(per2/100)); value15 = TL_New(sdate[barArr[2]],stime[barArr[2]],L[barArr[3]]+diff*(per3/100),sdate[barArr[1]],stime[barArr[1]],L[barArr[3]]+diff*(per3/100)); value16 = TL_New(sdate[barArr[2]],stime[barArr[2]],L[barArr[3]]+diff*(per4/100),sdate[barArr[1]],stime[barArr[1]],L[barArr[3]]+diff*(per4/100)); TL_SetColor(value11,RED); TL_SetColor(value12,red); TL_SetColor(value13,RED); TL_SetColor(value14,red); TL_SetColor(value15,RED); TL_SetColor(value16,red); value21 = TL_New(sdate[barArr[1]],stime[barArr[1]],L[barArr[1]],sdate,stime,L[barArr[1]]); value22 = TL_New(sdate[barArr[1]],stime[barArr[1]],H[barArr[2]],sdate,stime,H[barArr[2]]); diff = abs(L[barArr[1]]-H[barArr[2]]); value23 = TL_New(sdate[barArr[1]],stime[barArr[1]],H[barArr[2]]-diff*(per1/100),sdate,stime,H[barArr[2]]-diff*(per1/100)); value24 = TL_New(sdate[barArr[1]],stime[barArr[1]],H[barArr[2]]-diff*(per2/100),sdate,stime,H[barArr[2]]-diff*(per2/100)); value25 = TL_New(sdate[barArr[1]],stime[barArr[1]],H[barArr[2]]-diff*(per3/100),sdate,stime,H[barArr[2]]-diff*(per3/100)); value26 = TL_New(sdate[barArr[1]],stime[barArr[1]],H[barArr[2]]-diff*(per4/100),sdate,stime,H[barArr[2]]-diff*(per4/100)); TL_SetColor(value21,blue); TL_SetColor(value22,blue); TL_SetColor(value23,blue); TL_SetColor(value24,blue); TL_SetColor(value25,blue); TL_SetColor(value26,blue); } 감사합니다.
프로필 이미지
정후아빠
2015-05-29
238
글번호 86524
시스템

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

프로필 이미지
회원
2015-05-29
13
글번호 86523
사용자 함수
답변완료

답변 좀 부탁드립니다.

질문 42060 질문의 답변 좀 부탁드립니다.
프로필 이미지
회원
2015-05-28
144
글번호 86522
종목검색
답변완료

수식 관련 문의드립니다.

안녕하세요. 42055 글 관련 답변 감사합니다. 아래 말씀해주신 것 중에, ============================================================ 전일마지막봉 기준으로 DayLow(0)값을 리턴해 주게 됩니다. ============================================================ 이 부분이 잘 이해가 안됩니다. 그럼 전일 마지막봉 기준으로 DayLow(0) 값이면, 전날의 최저가가 나오는 것인지요? (차트에 전날 데이터들이 포함되었음을 가정함) 만약 그렇다면, DayLow(0)라는 문구가 당일 저가를 나타내는 말인데, 오전 9시30분전에는 전날의 저가라는 잘못된 데이터가 반환될 것 같습니다. 아니면 전일 마지막봉의 딱 그 봉에서의 저가가 나온다는 것인지요? > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 수식 관련 문의드립니다. > 안녕하세요 예스스탁입니다. DayLow(0)[1]은 1봉전 기준 당일최저가입니다. 9시 13분 기준으로 전봉은 전일 마지막봉입니다. 그러므로 첫봉에서는 위 식이 전일마지막봉 기준으로 DayLow(0)값을 리턴해 주게 됩니다. 즐거운 하루되세요 > ywesry 님이 쓴 글입니다. > 제목 : 수식 관련 문의드립니다. > 아래와 같은 상황을 가정하면, 어떤 값이 반환되는지요? 현재시각 오전 09:13분입니다. 30분봉 차트로 사용데이터는 10개입니다. 이 상황에서 DayLow(0)[1] 라고 사용하면, 1봉전 값중 가장 낮은 당일날 Low 값을 가져와야하는데, 아직 봉은 미완성입니다. 이런 경우 어떤 값이 나오는 것인지요? 아니면 아무 값도 없는것인지요? 09:30 분 이후면, DayLow(0)[1]는 값이 있을 것 같습니다. 30분봉 하나가 있으니, 그 값의 Low값이 될 것 같은데요..제가 이해한게 맞는지요?
프로필 이미지
ywesry
2015-05-28
153
글번호 86520
시스템
답변완료

이평변곡 색상변화, 이평크로스 수평선넣기 수식이 궁금합니다.

파일은 20, 60평을 표시한 것으로, 첫번째 궁금한 것은 20평이나 60평이 상승추세에서는 빨강으로 하락추세에서는 파랑으로 표시하고 싶습니다. 두번째 궁금한 것은 20평, 60평이 골든 크로스가 날 때는 그 부분부터 데드크로스 나기까지 빨강수평선을 긋고, 데드크로스가 날 때는 골든크로스까지 파랑 수평선을 긋고 싶습니다. 다른 두 이평을 적용할 수도 있도록 수식을 부탁합니다.^^
프로필 이미지
i물바람
2015-05-28
364
글번호 86519
지표
답변완료

수식변경 요청드립니당.

if sdate > sdate[1]+1000 Then{ var1 = H; var2 = L; var11 = var1[1]; var12 = var2[1]; var13 = (var11-var12)/4; } if H > var1 Then var1 = H; if L < var2 Then var2 = l; 위는 작년으로 설정한 것인데, 이것을 1. 저번 달 2. 저번 주 3. 어제 이렇게 3가지 경우로의 수식좀 알려주세요~~~초보올림.
프로필 이미지
철옹성
2015-05-28
142
글번호 86516
지표