커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

재문의 드립니다.

1. 일단 시그널도 나오지 않았고, 주문도 발생하지 않았으며, 체결 또한 되지 않았습니다. 2. 갭보정의 문제로 이런 현상이 발생되었다면 갭보정이 안 되도록 설정하는 방법은 무엇인가요? 참고로 일봉챠트에서 거래합니다. 혹시 추가로 수식이 필요한가요? 3. 만약 수식으로 설정되는거면 아래의 수식에 포함하여 작성 좀 부탁드립니다. 4. 만약 분봉챠트에서만 적용이 된다면....360분 이하의 봉에서는 어느 봉이든 적용이 되는지요? ================================================================================= 그림 1 안녕하세요 예스스탁입니다. 해당식 첨부한 그림과 같이 오늘 신호가 발생합니다. 첨부된 그림은 5분봉 차트에 적용한 식이니다. 1분봉도 모두 신호가 발생했습니다. 1. 매수신호 표시가 발생하지 않았다면 이미 이전일에 매수가 되고 매도가 되지 않아 매수포지션이 유지중인 경우입니다. 강제청산탭에서 당일청산을 설정하고 적용하셔야 합니다. 2. 신호는 발생했는데 매수가 안된내용은 주문은 집행이 되었는데 체결이 안된것인지 혹은 주문이 거부가 된것인지 모르겠습니다. 시스템은 차트에 신호를 발생하고 설정창에 지정한 내용으로 주문을 내게 됩니다. 즉 주문까지만 담당합니다. 주문이후에 주문거부나 미체결등은 거래소 시장에서 되는 부분으로 저희쪽에서 확인이 어렵습니다. 주문메세지 창등을 확인해 보셔야 합니다. 3. 주문이 아예발생하지 않았다면 차트가 갭보정이 되어 있지 않은지 확인하시기 바랍니다. 갭보정은 당일시가가 수신되면 차트의 과거봉을 재조정해서 다시 그리므로 보정이 끝난시점은 시가가 이미 흘러간 시점이라 신호만 표시되고 주문이 집행되지 않습니다. 해당식은 갭보정하지 않은 차트에서 이용하셔야 합니다. 4 시스템을 피라미딩을 설정하지 않으면 매수 후에 또 매수는 되지 않습니다. 매수후에 매도로 청산이 되어야 다시 매수가 발생합니다. 6. 시스템은 진입과 청산이 같이 있어야 신호가 반복적으로 발생합니다. 진입식만 있는 경우 차트상 처음만족봉에만 신호가 나오고 청산이 되지 않아 이후 진입이 나오지 않습니다. 청산식만 있는 경우에는 진입식이 없으므로 청산도 발생하지 않아 차트에 적용이 되지를 않습니다. 즐거운 하루되세요 > 승부사1 님이 쓴 글입니다. > 제목 : 문의드립니다. > 오늘 아래의 로직으로 자동매매 설정을 하였습니다. 종목: KJ프리텍, 테라젠이텍스 장을 시작하는 시초가에 매수가 안되었습니다. 혹시 어떤 오류가 있는건지?? 아님 설정의 잘못인지?? 두 종목다 전일종가보다 높게 시작하였구요. 설정창에서는 현재가 +- 2호가로 하였습니다. 분석 좀 부탁드릴께요. 하나더 질의드릴께 있습니다. 이 로직으로 만약 오늘 매수가 되었다면 다음날 시초가에서 또매수가 되는지 여부가 궁금합니다. 즉, 매일 시초가에 매수를 한다면 매수따로 매도따로 운영해야 할것 같아서요. 그리고 이미 매수가된 종목에 매도만을 하는 로직을 걸었 을때도 작동을 하는지요?? 질문이 좀 많습니다만 좋은 답변바랍니다. 수고하세요 ================================================ if stime == 150000 Then { if NextBarOpen > C Then{ buy("b1",AtMarket); ExitLong("bx1",AtStop,C); } if NextBarOpen == C Then{ buy("b2",AtMarket); ExitLong("bx2",AtStop,C*0.96); } } if MarketPosition == 1 Then{ ExitLong("bx11",AtStop,DayClose(1),"B1"); ExitLong("bx22",AtStop,DayClose(1)*0.96,"B1"); } var1 = StochasticsK(5,3); var2 = StochasticsD(5,3,3); var3 = StochasticsK(10,6); var4 = StochasticsD(10,6,6); Condition1 = var1 < var2 and var3 < var4; if Condition1 == true and Condition1[1] == false Then sell();
프로필 이미지
회원
2014-11-03
164
글번호 80059
시스템
답변완료

부탁드립니다~

안녕하세요 다시문의좀드릴께요 ^^ 1.아래식으로 답변주셨는데 예스랭귀지 편집기에서 "지표"로 만들어서 적용하는건가요? input : P1(5),P2(20),P3(60),N(5); if data2(abs(ma(C,P1)- ma(C,P2)) <= PriceScale*N) Then PlaySound("C:₩예스트레이더₩data₩Sound₩alert.wav"); if data2(abs(ma(C,P1)- ma(C,P3)) <= PriceScale*N) Then PlaySound("C:₩예스트레이더₩data₩Sound₩stop.wav"); 2. 다음을 지표로 삼각형으로 표시할수있을까요? 참조데이타2의 이평선에서. 5선이 20선과60선 밑에서 올라와서 20선과만날때는 연한파랑 역삼각형, 60선과만날때는 파란색 역삼각형 5선이 20선과60선 위에서 내려와서 20선과만날때는 연한분홍색 삼각형 60선과만날때는 빨간색 삼각형으로 될까요? 꼭 이평들과 닿지않아도 일정한 간격(이격도? 수치를 바꿀수있도록해서)이 되면 지표신호가 나올 수 있도록하고 싶습니다. 3. 수식나오는시간 제한알려주셨는데 stime < 103000 식을 어디에 끼워넣어야하죠? 예를들어 if var1 > 0 then buy(); 이런수식이라면요? 그리고 매일 장시작하면서 새로 신호나오는건 맞져? 초보라 번거롭게하네요 수고하세요^^
프로필 이미지
국산3
2014-11-04
127
글번호 80058
지표
답변완료

부탁드립니다.

안녕하세요? 수고가 많습니다. 제가 요즘 RSI지표로 Divergence를 찾고 있는데 정확하지가 않습니다. 그래서 추가로 MACD로도 Divergence를 찾고 싶은데 딴곳에서 구한 아래의 RSI Divergence식(1개는챠트에 표시하는 식이고 또1개는 보조지표식입니다)을 MACD에 적용해서 변경해 주시면 많은 도움이 될것 같습니다. ShortPeriod, LongPeriod,Perod는 변경이 가능토록 부탁드립니다. 감사합니다. ============================================= #==========================================# # 지표명 : RSI다이버전스 주가파동선 # 작성자 : 수식지왕 # 블로그 : http://yahoosir.blog.me #==========================================# Input:Period(14),Rsi변동폭(5); Var:j(0),상승(100),하락(-100),양방향(2),추세(0), 파동선(0),Rsi파동선(0),방향(0),RsiV(0),추세선(0); Array:고[20](0),저[20](0),고Bar[20](0),저Bar[20](0), Rsi고[20](0),Rsi저[20](0),Rsi고Bar[20](0),Rsi저Bar[20](0); RsiV = RSI(Period); #==========================================# # 전고점,전저점 index 증가 #==========================================# For j = 1 To 19 { Rsi고Bar[j] = Rsi고Bar[j] + 1; Rsi저Bar[j] = Rsi저Bar[j] + 1; 저Bar[j] = 저Bar[j] + 1; 고Bar[j] = 고Bar[j] + 1; } #==========================================# # 최근 고,저 갱신 #==========================================# If Rsi고[0] <= RsiV || Rsi고[0] == 0 || IsNaN(Rsi고[0]) == True Then { Rsi고[0] = RsiV; Rsi고Bar[0] = 0; } Else Rsi고Bar[0] = Rsi고Bar[0] + 1; If Rsi저[0] >= RsiV || Rsi저[0] == 0 || IsNaN(Rsi저[0]) == True Then { Rsi저[0] = RsiV; Rsi저Bar[0] = 0; } Else Rsi저Bar[0] = Rsi저Bar[0] + 1; If 고[0] <= H || 고[0] == 0 || IsNaN(고[0]) == True Then { 고[0] = H; 고Bar[0] = 0; } Else 고Bar[0] = 고Bar[0] + 1; If 저[0] >= L || 저[0] == 0 || IsNaN(저[0]) == True Then { 저[0] = L; 저Bar[0] = 0; } Else 저Bar[0] = 저Bar[0] + 1; #==========================================# # 추세방향 결정 #==========================================# If Rsi저[0][1] + Rsi변동폭 > RsiV[1] && Rsi저[0][1] + Rsi변동폭 <= RsiV Then 방향 = 상승; If Rsi고[0][1] - Rsi변동폭 < RsiV[1] && Rsi고[0][1] - Rsi변동폭 >= RsiV Then 방향 = 하락; #==========================================# # 추세변화에 따른 변곡점 처리 #==========================================# If 방향[1] == 하락 && 방향 == 상승 Then { For j = 18 DownTo 1 { Rsi저[j+1] = Rsi저[j]; Rsi저Bar[j+1] = Rsi저Bar[j]; 저[j+1] = 저[j]; 저Bar[j+1] = 저Bar[j]; } Rsi저[1] = Rsi저[0]; Rsi저Bar[1] = Rsi저Bar[0]; Rsi파동선 = Rsi저[0]; Rsi저[0] = RsiV; Rsi저Bar[0] = 0; Rsi고[0] = RsiV; Rsi고Bar[0] = 0; 저[1] = 저[0]; 저Bar[1] = 저Bar[0]; 파동선 = 저[0]; 저[0] = L; 저Bar[0] = 0; 고[0] = H; 고Bar[0] = 0; } Else If 방향[1] == 상승 && 방향 == 하락 Then { For j = 18 DownTo 1 { Rsi고[j+1] = Rsi고[j]; Rsi고Bar[j+1] = Rsi고Bar[j]; 고[j+1] = 고[j]; 고Bar[j+1] = 고Bar[j]; } Rsi고[1] = Rsi고[0]; Rsi고Bar[1] = Rsi고Bar[0]; Rsi파동선 = Rsi고[0]; Rsi고[0] = RsiV; Rsi고Bar[0] = 0; Rsi저[0] = RsiV; Rsi저Bar[0] = 0; 고[1] = 고[0]; 고Bar[1] = 고Bar[0]; 파동선 = 고[0]; 고[0] = H; 고Bar[0] = 0; 저[0] = L; 저Bar[0] = 0; } Else If 방향[1] == 하락 && 방향 == 하락 Then { If Rsi고[1] < Rsi고[0] && Rsi고[0][1] - Rsi변동폭 <= RsiV[1] && Rsi고[0][1] - Rsi변동폭 > RsiV Then { Rsi고[1] = Rsi고[0]; Rsi고Bar[1] = Rsi고Bar[0]; Rsi파동선 = Rsi고[0]; Rsi고[0] = RsiV; Rsi고Bar[0] = 0; } If 고[1] < 고[0] && 고[0] > H Then { 고[1] = 고[0]; 고Bar[1] = 고Bar[0]; 파동선 = 고[0]; 고[0] = H; 고Bar[0] = 0; } } Else If 방향[1] == 상승 && 방향 == 상승 Then { If Rsi저[1] > Rsi저[0] && Rsi저[0][1] + Rsi변동폭 >= RsiV[1] && Rsi저[0][1] + Rsi변동폭 < RsiV Then { Rsi저[1] = Rsi저[0]; Rsi저Bar[1] = Rsi저Bar[0]; Rsi파동선 = Rsi저[0]; Rsi저[0] = RsiV; Rsi저Bar[0] = 0; } If 저[1] > 저[0] && 저[0] < L Then { 저[1] = 저[0]; 저Bar[1] = 저Bar[0]; 파동선 = 저[0]; 저[0] = L; 저Bar[0] = 0; } } #==========================================# # 지표식 출력 #==========================================# If Rsi파동선[1] != Rsi파동선 Then Plot1(파동선); //적당껏 수평이동 Else If LastBarOnChart == 1 Then plot1(Iff(방향 == 상승,고[0],저[0])); #상승 다이버전스 : 주가의 저점 하락 + 지표의 저점 상승 If 저[2] > 저[1] && Rsi저[2] < Rsi저[1] Then { 추세선 = (저[1]-저[2])/(저Bar[2]-저Bar[1])*저Bar[2] + 저[2]; Plot2(추세선); } #하락 다이버전스 : 주가의 고점 상승 + 지표의 고점 하락 if 고[2] < 고[1] && Rsi고[2] > Rsi고[1] Then { 추세선 = (고[1]-고[2])/(고Bar[2]-고Bar[1])*고Bar[2] + 고[2]; Plot3(추세선); } #==========================================# # 지표명 : RSI다이버전스 RSI파동선 # 작성자 : 수식지왕 # 블로그 : http://yahoosir.blog.me #==========================================# Input:Period(14),Rsi변동폭(5); Var:j(0),상승(100),하락(-100),양방향(2),추세(0), 파동선(0),Rsi파동선(0),방향(0),RsiV(0),Rsi추세선(0); Array:고[20](0),저[20](0),고Bar[20](0),저Bar[20](0), Rsi고[20](0),Rsi저[20](0),Rsi고Bar[20](0),Rsi저Bar[20](0); RsiV = RSI(Period); #==========================================# # 전고점,전저점 index 증가 #==========================================# For j = 1 To 19 { Rsi고Bar[j] = Rsi고Bar[j] + 1; Rsi저Bar[j] = Rsi저Bar[j] + 1; 저Bar[j] = 저Bar[j] + 1; 고Bar[j] = 고Bar[j] + 1; } #==========================================# # 최근 고,저 갱신 #==========================================# If Rsi고[0] <= RsiV || Rsi고[0] == 0 || IsNaN(Rsi고[0]) == True Then { Rsi고[0] = RsiV; Rsi고Bar[0] = 0; } Else Rsi고Bar[0] = Rsi고Bar[0] + 1; If Rsi저[0] >= RsiV || Rsi저[0] == 0 || IsNaN(Rsi저[0]) == True Then { Rsi저[0] = RsiV; Rsi저Bar[0] = 0; } Else Rsi저Bar[0] = Rsi저Bar[0] + 1; If 고[0] <= H || 고[0] == 0 || IsNaN(고[0]) == True Then { 고[0] = H; 고Bar[0] = 0; } Else 고Bar[0] = 고Bar[0] + 1; If 저[0] >= L || 저[0] == 0 || IsNaN(저[0]) == True Then { 저[0] = L; 저Bar[0] = 0; } Else 저Bar[0] = 저Bar[0] + 1; #==========================================# # 추세방향 결정 #==========================================# If Rsi저[0][1] + Rsi변동폭 > RsiV[1] && Rsi저[0][1] + Rsi변동폭 <= RsiV Then 방향 = 상승; If Rsi고[0][1] - Rsi변동폭 < RsiV[1] && Rsi고[0][1] - Rsi변동폭 >= RsiV Then 방향 = 하락; #==========================================# # 추세변화에 따른 변곡점 처리 #==========================================# If 방향[1] == 하락 && 방향 == 상승 Then { For j = 18 DownTo 1 { Rsi저[j+1] = Rsi저[j]; Rsi저Bar[j+1] = Rsi저Bar[j]; 저[j+1] = 저[j]; 저Bar[j+1] = 저Bar[j]; } Rsi저[1] = Rsi저[0]; Rsi저Bar[1] = Rsi저Bar[0]; Rsi파동선 = Rsi저[0]; Rsi저[0] = RsiV; Rsi저Bar[0] = 0; Rsi고[0] = RsiV; Rsi고Bar[0] = 0; 저[1] = 저[0]; 저Bar[1] = 저Bar[0]; 파동선 = 저[0]; 저[0] = L; 저Bar[0] = 0; 고[0] = H; 고Bar[0] = 0; } Else If 방향[1] == 상승 && 방향 == 하락 Then { For j = 18 DownTo 1 { Rsi고[j+1] = Rsi고[j]; Rsi고Bar[j+1] = Rsi고Bar[j]; 고[j+1] = 고[j]; 고Bar[j+1] = 고Bar[j]; } Rsi고[1] = Rsi고[0]; Rsi고Bar[1] = Rsi고Bar[0]; Rsi파동선 = Rsi고[0]; Rsi고[0] = RsiV; Rsi고Bar[0] = 0; Rsi저[0] = RsiV; Rsi저Bar[0] = 0; 고[1] = 고[0]; 고Bar[1] = 고Bar[0]; 파동선 = 고[0]; 고[0] = H; 고Bar[0] = 0; 저[0] = L; 저Bar[0] = 0; } Else If 방향[1] == 하락 && 방향 == 하락 Then { If Rsi고[1] < Rsi고[0] && Rsi고[0][1] - Rsi변동폭 <= RsiV[1] && Rsi고[0][1] - Rsi변동폭 > RsiV Then { Rsi고[1] = Rsi고[0]; Rsi고Bar[1] = Rsi고Bar[0]; Rsi파동선 = Rsi고[0]; Rsi고[0] = RsiV; Rsi고Bar[0] = 0; } If 고[1] < 고[0] && 고[0] > H Then { 고[1] = 고[0]; 고Bar[1] = 고Bar[0]; 파동선 = 고[0]; 고[0] = H; 고Bar[0] = 0; } } Else If 방향[1] == 상승 && 방향 == 상승 Then { If Rsi저[1] > Rsi저[0] && Rsi저[0][1] + Rsi변동폭 >= RsiV[1] && Rsi저[0][1] + Rsi변동폭 < RsiV Then { Rsi저[1] = Rsi저[0]; Rsi저Bar[1] = Rsi저Bar[0]; Rsi파동선 = Rsi저[0]; Rsi저[0] = RsiV; Rsi저Bar[0] = 0; } If 저[1] > 저[0] && 저[0] < L Then { 저[1] = 저[0]; 저Bar[1] = 저Bar[0]; 파동선 = 저[0]; 저[0] = L; 저Bar[0] = 0; } } #==========================================# # 지표식 출력 #==========================================# If Rsi파동선[1] != Rsi파동선 Then Plot1(Rsi파동선,"Rsi파동선",GREEN); //적당껏 수평이동 Else If LastBarOnChart == 1 Then plot1(Iff(방향 == 상승,Rsi고[0],Rsi저[0]),"Rsi파동선",GREEN); #상승 다이버전스 : 주가의 저점 하락 + 지표의 저점 상승 If 저[2] > 저[1] && Rsi저[2] < Rsi저[1] Then { Rsi추세선 = (Rsi저[1]-Rsi저[2])/(Rsi저Bar[2]-Rsi저Bar[1]) * Rsi저Bar[2] + Rsi저[2]; Plot2(Rsi추세선,"저점추세선",MAGENTA); } #하락 다이버전스 : 주가의 고점 상승 + 지표의 고점 하락 if 고[2] < 고[1] && Rsi고[2] > Rsi고[1] Then { Rsi추세선 = (Rsi고[1]-Rsi고[2])/(Rsi고Bar[2]-Rsi고Bar[1]) * Rsi고Bar[2] + Rsi고[2]; Plot3(Rsi추세선,"고점추세선",BLUE); }
프로필 이미지
회원
2014-11-04
181
글번호 80057
지표

외환달러 님에 의해서 삭제되었습니다.

프로필 이미지
외환달러
2014-11-03
0
글번호 80056
지표

외환달러 님에 의해서 삭제되었습니다.

프로필 이미지
외환달러
2014-11-03
5
글번호 80055
지표
답변완료

38801 재 질문 입니다.

답변 너무 고맙습니다. 제가 한가지 빼고 질문해서 죄송하지만 한가지만 더 추가해 주세요 같은 가격이 만났을때 같은 시간이어야 합니다. 같은 시간을 추가로 넣어 주시면 고맙겠습니다. 감사합니다.
프로필 이미지
회원
2014-11-03
123
글번호 80054
시스템
답변완료

문의 드립니다

거래시간은 09시 5분부터 오후2시 30분까지로 하고 value1 = ema(c,13); value2 = ema(c,26); value3 = ema(c,52); 에서 value2 > value3 인 상태에서 , value1이 value2 크로스 업시 매수 크로스다운시 청산하며, value2 < value3 인 상태에서 , value1이 value2 크로스 다운시 매도 크로스업시 청산하고자 합니다 수식 부탁 드립니다 감사 합니다
프로필 이미지
회원
2014-11-03
139
글번호 80053
시스템
답변완료

선언되지 않은 엔트리라고 오류가 생기네요

답해주신 내용입니다. var : ST(0); if stime == 090000 or (stime > 090000 and stime[1] < 090000) Then{ entry = 0; ST = TimeToMinutes(stime); } if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then entry = entry+1; if entry < 1 and TimeToMinutes(stime) < ST+126 and 매수조건 Then buy(); 위와 같이 작성하시면 당일 장 시작시간에서 126분 안에만 신호가 발생하게 됩니다. 랭귀지에 수능일등은 제공되지 않아 날짜로는 지정할수 없습니다 9시에 장이 시작하면 11시 6분 이전까지 10시에 장이 시작하면 12시 6분 이전까지만 매수진입을 합니다. --------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------- 선언부에 오류가 있거나 제가 붙여 넣기를 잘못했는지 검증에 실패합니다. 제가 현재 사용하는 선언부와 매수식입니다. 현재 무리없이 잘 적용되고 있습니다. 그런데 답변해주신 시간제한 규정과 횟수제한 규정을 붙여넣기 했더니 검증이 안된다고 나옵니다. 아래 식에 추가해주세요. Input : Period(12), LPercent(32), SPercent(70); Var : value(0); var : EntryCnt(0); value = RSI(Period); # 첫봉 종가 급등 관련 조치 if dayindex+1 == 1 Then var1 = C; # 매수 If (dayindex+1 <= 5 and A 매수조건) or (dayindex+1 >= 6 and B 매수조건) Then { if (var1 < DayClose(1)*1.9 and dayindex+1 >= 1) Or (var1 >= DayClose(1)*1.9 and dayindex+1 >= 3) Then buy(); }
프로필 이미지
미카엘
2014-11-03
160
글번호 80045
시스템

hjkang철인 님에 의해서 삭제되었습니다.

프로필 이미지
hjkang철인
2014-11-03
0
글번호 80044
시스템