커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

52837 재질의드립니다.

다시한번 질의드립니다. 1.분봉차트에서 종가가 분봉의 20일 이평선과 같거나 위에 형성될때 전 고가와 새로 생성된 고가를 선으로 연결 이때 저가는 수평선으로 표시 2.분봉차트에서 종가가 분봉의 20일 이평선과 같거나 아래에 형성될때 전 저가와 새로 생성된 저가를 선으로 연결 이때 고가는 수평선으로 표시 #전 고,저점이라함은 갱신되는 고,저점에서 가장 가까운 위치의 고,저가 부탁드립니다.말로 표현키가 많이 어렵네요^^
프로필 이미지
카카
2017-04-13
134
글번호 108748
지표
답변완료

수식 부탁드립니다

1. 20 캔들 천정에서 10번째 음봉 매수 20 캔들 바닥에서 10번째 양봉 매도 2. 20 캔들 천정에서 1.0 하락 매수 20 캔들 바닥에서 1.0 상승 매도
프로필 이미지
회원
2017-04-13
138
글번호 108742
시스템
답변완료

ETF 6 _williamsR

아래 수식을 보조차트로 이용하여 1.KODEX200 ETF 거래할 수 있는 수식(선물 BUY)을 부탁드립니다. 2.KODEX인버스 ETF 거래할 수 있는 수식(선물 SELL)도 부탁드립니다. 둘 다 data2 참조차트 이용한 수식입니다 늘 고맙습니다. -아래- input : stoPeriod(12), stoP1(5), WillP(14); var : 스토캐스틱(0), Williams(0); 스토캐스틱 = stochasticsK(stoPeriod, stoP1); Williams = WILLR(WillP); //WilliamsR이 -80선을 상향돌파할 때 매수 if CrossUp(Williams, -80) then buy(); // 스토캐스틱이 80선을 하향이탈하거나 20선을 하향이탈할 때 매수청산 if CrossDown(스토캐스틱, 80) or CrossDown(스토캐스틱, 20) then ExitShort(); //스토캐스틱이 80선을 하향이탈할 때 매도 if CrossDown(스토캐스틱, 80) then sell(); //WilliamsR이 -20선을 상향돌파 혹은 스토캐스틱이 20선을 상향돌파할 때 매도청산 if CrossUp(Williams, -20) or CrossUp(스토캐스틱, 20) then exitshort();
프로필 이미지
좌오비우오비
2017-04-13
159
글번호 108741
시스템
답변완료

ETF 5 _ ture strength

아래 수식을 보조차트로 이용하여 1.KODEX200 ETF 거래할 수 있는 수식(선물 BUY)을 부탁드립니다. 2.KODEX인버스 ETF 거래할 수 있는 수식(선물 SELL)도 부탁드립니다. 둘 다 data2 참조차트 이용한 수식입니다 부탁 드립니다. -아래- INPUTS: R(4), S(8), U(6), ZEROLINE(0), SMTHLEN(3); VALUE1 = TSI(C, R, S, U); VALUE2 = Ema(TSI(C, R, S, U), SMTHLEN); if crossup(value1,value2) Then{ var1 = value1; var2 = var1[1]; var3 = c; var4 = var3[1]; if var4 > 0 and var1 > var2 and var3 < var4 Then buy(); } if CrossDown(value1,value2) Then{ var11 = value1; var12 = var11[1]; var13 = c; var14 = var13[1]; if var14 > 0 and var1 < var2 and var3 > var4 Then sell(); }
프로필 이미지
좌오비우오비
2017-04-13
131
글번호 108740
시스템
답변완료

초록색 라인을 지우고 싶어요.

가운데 초록색 라인을 안보이게 지우고 싶어요. 안보이게 또는 된다면 키고 끄고 가능하다면 해주세요. 안된다면 안보이게 지워 주셔도 됩니다 ^^ 항상 감사합니다 ^^ -------------------------------------------------------------------------------- Input:length(12),per1(23.7),per2(38.2),per3(50.0),Per4(61.8),per5(74.6); 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)); value7 = TL_New(sdate[barArr[3]],stime[barArr[3]],H[barArr[4]]-diff*(per5/100),sdate[barArr[2]],stime[barArr[2]],H[barArr[4]]-diff*(per5/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); TL_SetColor(value7,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)); value7 = TL_New(sdate[barArr[3]],stime[barArr[3]],L[barArr[4]]+diff*(per5/100),sdate[barArr[2]],stime[barArr[2]],L[barArr[4]]+diff*(per5/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_SetColor(value7,red); } } TL_Delete(value11); TL_Delete(value12); TL_Delete(value13); TL_Delete(value14); TL_Delete(value15); TL_Delete(value16); TL_Delete(value17); TL_Delete(value21); TL_Delete(value22); TL_Delete(value23); TL_Delete(value24); TL_Delete(value25); TL_Delete(value26); TL_Delete(value27); 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)); value17 = TL_New(sdate[barArr[2]],stime[barArr[2]],H[barArr[2]]-diff*(per5/100),sdate[barArr[1]],stime[barArr[1]],H[barArr[2]]-diff*(per5/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); TL_SetColor(value17,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)); value27 = TL_New(sdate[barArr[1]],stime[barArr[1]],L[barArr[2]]+diff*(per5/100),sdate,stime,L[barArr[2]]+diff*(per5/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); TL_SetColor(value27,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)); value17 = TL_New(sdate[barArr[2]],stime[barArr[2]],L[barArr[3]]+diff*(per5/100),sdate[barArr[1]],stime[barArr[1]],L[barArr[3]]+diff*(per5/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); TL_SetColor(value17,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)); value27 = TL_New(sdate[barArr[1]],stime[barArr[1]],H[barArr[2]]-diff*(per5/100),sdate,stime,H[barArr[2]]-diff*(per5/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); TL_SetColor(value27,blue); }
프로필 이미지
pcasso
2017-04-13
148
글번호 108739
지표
답변완료

조금 어려울 수도 있는 시스템, 지표 하나 부탁드리겠습니다.

data1과 data2의 스프레드를 이용해보려고 합니다. 지표) 데이터 1과 데이터 2의 차이의 절대값으로 된 별도의 지표를 하나 그려보고 싶습니다. 시스템) 이렇게 완성된 지표에 이평선과 같은 개념을 접목해, 이 지표와 지표에 접목된 이평선이 골든크로스를 그리면 매도, 데드크로스를 그리면 매수를 해보고 싶습니다.
프로필 이미지
가치투자꾼
2017-04-13
139
글번호 108738
시스템
답변완료

문의드립니다.

안녕 하세요. 1.단순이동평균 60일선이 상승중이고 트릭스보조지표(10.9) 0선 밑에서 골드크로스 발생 하고 5일선이 20일선을 골드크로스시 매수진입 하고 10틱 이상 수익후 50% 하락시 청산 후 다음매수신호 발생시 매수진입 2.단순이동평균 60일선이 하락중이고 트릭스보조지표 (10.9) 0선 위에서 데드크로스 발생하고 5일선이 20일선을 데드크로스시 매도만 진입하고 10틱 이상 수익후 50% 하락시 청산 후 다음 매도신호발생시 매도진입 공통사항= 진입후 50% 하락하지않을경우 다음 신호( 매수진입시 데드크로스발생,매도진입시 골드크로스 발생햇을때 청산 ) 감사합니다.
프로필 이미지
천년의사랑
2017-04-13
126
글번호 108737
시스템
답변완료

안녕하세요. 볼린져밴드가 진입 후 바로 청산이 되어서 문의드려봅니다.

문의드릴 부분이 두가지가 있습니다. 1. 진입 직후 청산 문제 해결 5분봉으로 보고 있습니다. 공부도 하는 입장이라 이래저래 굴려보려고 하는데 이해가 부족해서 잘 안 되네요. 제 생각에는 close를 따로 쓰거나 혹은 모든 진입 상황마다 t=1 이런 식으로 따로 저장해줘야 할거 같기도 하고... 여튼 진입 직후 바로 청산 신호가 떠서 골치입니다. Inputs: Length(9), StdDev(2), Bars(2); var : V1(0,data2),V2(0,data2); V1 = data2(BollBandup(Length, StdDev)); V2 = data2(BollBanddown(Length, StdDev)); If data2(CountIF(Close < V2, Bars)) == Bars Then Buy("BBtop", Atmarket); If data2(CountIF(Close > V1, Bars)) == Bars Then sell("BBbot", AtMarket); if MarketPosition == 1 Then{ if data2(CountIF(Close > V2, bars)) Then ExitLong("bx");} if MarketPosition == -1 then{ if data2(CountIF(Close < V1, bars)) Then ExitShort("sx");} 2. 볼린져 밴드의 상단선과 하단선 중간에 평균선을 하나 그어보고 싶습니다. 그래서 1) 볼린져밴드를 data 2에 걸고 2) data2의 봉이 2개 연속 밴드 밖으로 나가면 진입(매수/매도) 3) data2의 봉이 중간의 평균선에 닿으면 청산 부탁드립니다.
프로필 이미지
가치투자꾼
2017-04-12
155
글번호 108736
시스템
답변완료

전고저 수식

늘 감사합니다. 1. 당일 현재가가 전전일 고가에 도달할 때, 조건은, 당일 시가 보다 전전일 고가가 15틱 이상일 때 매수, 당일 시가 보다 전전일 고가가 15틱 이하일 때 매도. 익절 25틱, 손절 15틱, 장종료30분전 강제청산 2. 당일 현재가가 전전일 저가에 도달할 때, 조건은, 당일 시가 보다 전전일 저가가 15틱 이상일 때 매도, 당일 시가 보다 전전일 저가가 15틱 이하일 때 매수. 익절 25틱, 손절 15틱, 장종료30분전 강제청산 3. 신호는 당일 진입, 당일 청산 감사합니다.
프로필 이미지
상암동
2017-04-13
152
글번호 108735
시스템