커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

해선 당일매매 시스템식 부탁드립니다

안녕하세요. 해외선물 시스템식 부탁드립니다. (일자기준) 한국시간 08시 ~ 차일 07시 (대상봉) 5분봉 (진입기준) 당일 시가 + (일봉기준-ATR(4)) * 2 돌파시 매수 당일 시가 - (일봉기준-ATR(4)) * 2 돌파시 매도 (청산기준) 매수 => 진입 후 고점 - 일봉기준 ATR(10) * 5 매도 => 진입 후 저점 + 일봉기준 ATR(10) * 5 (강제익절) 매수 => 시가와 매수가의 폭(매수가 -시가)의 4배수 상승시 청산 // 매도는 반대 (타임컷) 다음날 첫 봉 (08시)에 청산 (기타) 하루 1번만 매매 미리 감사드립니다.
프로필 이미지
고요하다
2022-02-10
1047
글번호 156195
시스템
답변완료

지표 수식(지표1, 지표2, 지표3) 작성 부탁드립니다.

담당자님, 안녕하세요. 작성해주신 지표 수식을 너무나 잘 활용하고 있습니다. 거듭 감사드립니다. (KOSPI200 주가지수 선물) 분봉 차트에서, 예를 들면 3분봉 차트에서 적용하는 지표라고 가정하고 다음과 같은 지표1, 지표2, 지표3 수식의 작성을 부탁드립니다. =========================================================== =========================================================== <지표 1> (3분봉 차트에서 적용) 1) 매일의 30분봉(장시작~09:30, 09:30~10:00.....15:30~장마감의 30분 단위 구간)의 (고가-저가) 중에서 각 해당일의 30분 구간 (고가-저가)가 최대인 30분봉(30분 구간)을 각 일자별로 1개씩 선택 (즉, 각 일자별로 그날의 30분봉 중에서 고점과 저점 사이의 봉길이가 최대인 30분봉을 1개씩 선택함) cf. 어떤 날에 (고가-저가)의 최대값이 같은 봉이 2개 이상이면(즉, 같은 수치의 최대봉이 2개 이상이면) 그 날 가장 먼저 발생한 봉을 선택 또는 담당자님이 정하는 원칙으로 각 일자에서는 1개씩만 선정함. 2) 위에서 계산된 각 일자별 (고가-저가)가 최대인 30분봉 중 (D-1)일 부터 소급하여 과거 n일(n=10) 기간 중 (고가-저가) 값이 큰 상위 3개의 30분봉(30분 구간)을 총 3개 선택 * 당일(D)의 수치(가격)는 계산에 반영(포함)되지 않으며 (D-1)일 부터 (D-10)일 까지의 10일간의 수치(가격)를 반영하여 산출함. 3) 위에서 선택된 상위 3개의 30분봉('고가-저가'의 값)으로 각각의 '(고가+저가)/2'를 계산하여 그 값을 각각 3개의 수평선 라인으로 표시 [=> 최종 결과값은 총 3개의 수평라인 산출] * [중요] 위의 조건 충족한 당일(D)의 3개 수평라인은 '당일(D)의 장시작 ~ 장마감'의 기간에만 표시함. (cf. 실시간 차트에서는 당일(D) 장시작 하면서(첫봉 만들어지면서) 바로 라인이 표시되며 그 이후 장중 분봉이 형성되면서 순차적으로 동일한 라인이 장마감까지 표시될 것으로 예상) 또한, 당일 보다 과거 기간에는 당일 조건에 의한 라인은 표시되지 않고 각 해당일의 조건에 의해 선정된 수평라인만 표시되므로 과거 각 일자에 해당하는 차트 구간에도 최대 3개 라인이 표시됨. (추가 요건1) [중요] 최종 결과물인 수평라인 3개를 plot1, plot2, plot3로 산출할 때, (최종 수치인 '(고가+저가)/2'를 sort, 정렬하여) plot1, 2, 3가 최종수치인 '(고가+저가)/2'의 크기대로 올림차순 또는 내림차순이 되도록 배열 (cf. plot1, 2, 3가 [고가-저가]의 크기 순대로의 배열이 아님) (추가 요건2) n일(n=10) 기간의 수치는 외부입력 변수로 하여 지표속성창에서 변경 입력이 가능 하도록 구현 =============================================================================== (예시) D-10일 고가 저가 고가-저가 (고가+저가)/2 장시작~09:30 360.00 359.00 1.00 09:30 ~10:00 361.00 358.10 2.90 (=> 선택2) 359.55(-> 당일(D) 구간에 라인 표시) ..... 15:00~ 장마감 360.00 359.60 0.40 ---------------------------------------------------------------------------------------- ................. D-7일 고가 저가 고가-저가 (고가+저가)/2 장시작~09:30 358.50 357.00 1.50 (=> 선택3) 357.75(-> 당일(D) 구간에 라인 표시) 09:30 ~10:00 359.20 358.00 1.20 ..... 15:00~ 장마감 359.40 359.00 0.40 ---------------------------------------------------------------------------------------- ................. D-5일 고가 저가 고가-저가 (고가+저가)/2 장시작~09:30 380.50 376.40 3.60 (=> 선택1) 378.45(-> 당일(D) 구간에 라인 표시) 09:30 ~10:00 378.00 375.00 3.00 ..... 15:00~ 장마감 377.00 356.40 0.60 ---------------------------------------------------------------------------------------- ................. D-2일 고가 저가 고가-저가 (고가+저가)/2 장시작~09:30 358.40 357.00 1.40 (=> 미선택) 357.70 (D-2일의 최대 30분봉 '고가-저가'값이 상위 3개에 미포함 되므로 1.40은 미선택됨) 09:30 ~10:00 359.10 358.00 1.10 ..... 15:00~ 장마감 359.50 359.00 0.50 ---------------------------------------------------------------------------------------- ................. D일(당일) 시가 : 361.00 ------------------------------------------------------------ <최종 구현되는 결과(plot 1,2,3의 값을 올림차순 또는 내림차순 정렬)> plot1 : 357.75 plot1 : 378.45 plot2 : 359.55 또는 plot2 : 359.55 plot3 : 378.45 plot3 : 357.75 (올림차순) (내림차순) ============================================================ 위와 같이 지표1의 수식 작성을 부탁드립니다. =========================================================== =========================================================== <지표 2> (3분봉 차트에서 적용) 1) <지표1>과 동일 2) <지표1>과 동일 3) 위에서 선택된 '고가-저가'의 값이 큰 상위 3개의 30분봉에서 그 봉에 해당하는 각각의 '(종가+시가)/2'를 계산하여 그 값을 각각 수평선 라인으로 표시 [=> 총 3개의 수평라인 산출] cf. <지표1>과의 차이는 '(고가+저가)/2'가 아니고 선택된 30분봉의 '(종가+시가)/2'를 적용하는 것임. (추가 요건1) <지표1>과 동일 (추가 요건2) <지표1>과 동일 ============================================================= ============================================================= 위와 같이 지표2의 수식 작성을 부탁드립니다. =========================================================== =========================================================== <지표 3> (3분봉 차트에서 적용) 1) (고가-저가)를 절대값(종가-시가)로 적용하는 것 이외에는 <지표1>과 동일 2) (고가-저가)를 절대값(종가-시가)로 적용하는 것 이외에는 <지표1>과 동일 3) (고가-저가)를 절대값(종가-시가)로, '(고가+저가)/2'를 '(종가+시가)/2'로 적용 이외에는 <지표1>과 동일 (추가 요건1) plot1, 2, 3가 최종수치인 '(종가+시가)/2'의 크기대로 올림차순 또는 내림차순이 되도록 배열 (추가 요건2) <지표1>과 동일 ============================================================= ============================================================= 위와 같이 지표3의 수식 작성을 부탁드립니다. 담당자님 노고와 답변에 미리 감사드립니다. 코로나 시국에 건강도 잘 챙기시기 바랍니다.
프로필 이미지
원칙투자자
2022-02-13
1258
글번호 156193
지표
답변완료

수식부탁드려요

예전에 문의(75564번)하고 통화도 한 것인데 제대로 구현되지않아 제가 키움수식으로 만든것인데 이것을 예스수식으로 각각 변환시켜주시면 감사하겠읍니다. 1. 양봉이후에 발생된 음봉중에서 음봉의 고가라인 지표 양봉=C>O; 음봉=C<O; 음고가=if(음봉, H, 0); highestsince(1,양봉(1)&&음봉,음고가) 2. 1번에서 설정된 고가라인 지표를 돌파하는 양봉의 종가완성시에 표시하는 돌파지표 양봉=C>O; 음봉=C<O; 음고가=if(음봉, H, 0); 음봉고가=highestsince(1, 양봉(1) && 음봉, 음고가); highestsince(1, CrossUp(C, 음봉고가(1)) && 양봉, C) 1번에서 설정된 1봉전의 고가라인을 0봉전 양봉의 종가가 돌파시(높은경우)의 지표라인. 여기에서 추가 고려할 사항은 0봉전 양봉의 종가가 음봉종가를 돌파하는 경우에는 라인설정이 되는게 맞는데 이 이후에 계속적으로 양봉이 출현하는 경우 종가가 높기때문에 연속적으로 종가라인이 그려지는데, 제가 원하는 것은 처음 돌파봉의 종가라인만 표시되다가 다시 음봉출현후 높은 음봉의 고가를 돌파하는 양봉종가시에 표시되게 수정요망합니다. 3. 2번 지표수식을 종목검색식으로도 만들어 주세요 감사합니다.
프로필 이미지
해피오
2022-02-10
1437
글번호 156189
지표
답변완료

부탁 드립니다~~

1. 1봉전 기준 15분봉에서 5봉 이내 시가 대비 고가 4% 이상 나온 종목. 2. 15분봉에서 5봉전 20선과 이격도는 97%~103% 내에 있어야 될 것. 3. 일 거래량은 200.000 이상 일것. 4. 일 거래대금은 50억 이상 일것. 5. 전일거래대금 80억 이상 일것. (4번 or 5번) 6.위에 조건이 만족 되는 종목에서 바로 앞에 음봉 시가를 돌파한 양봉의 종목을 찾고 싶습니다. 부탁 드릴께요~~
프로필 이미지
hg950265
2022-02-10
1098
글번호 156187
종목검색
답변완료

함수요청

안녕하세요? 아래 전략에 대해 스크립트 작성 요청드립니다. 국내선물 1분봉으로 일중거래를 하고자 합니다. 9시에 장개장 후 MACD 오실레이터가 양의 값에서 음의 값으로 반전시 익봉 시가에 매도진입 9시에 장개장 후 MACD 오실레이터가 음의 값에서 양의 값으로 반전시 익봉 시에가 매수진입 MACD 오실레이터가 직전 값보다 상승하면 익봉 시가에 매도청산 MACD 오실레이터가 직전 값보다 하락하면 익봉 시가에 매수청산 하루 1번의 진입과 청산만 발생되며 15시 15분에 강제청산입니다. 첫봉에는 진입하지 않고 신호는 그래도 하고 주문생성만 스킵하고자 합니다. 감사합니다.
프로필 이미지
흰둥이아빠
2022-02-10
1207
글번호 156186
시스템
답변완료

문의 드립니다.~~~~

수고하십니다~~ 다음 수식 부탁드림니다. 1, 매수진입: 저점에서 30틱(변수)이상 상승 후 다시 저점을 깨고 그 저점애서 40틱(변수) 하락시 매수 2, 매도진입: 고점에서 30틱(변수)이상 하락 후 다시 고점을 깨고 그 고점에서 40틱(변수) 상승시 매도 3, 청산: 익절 20틱, 손절 20틱 건강 조심하세요~~
프로필 이미지
예스요
2022-02-10
1379
글번호 156185
시스템
답변완료

수식문의드립니다

안녕하세요 이전에 도움주신 수식에 아래와 같은 조건을 추가하고 싶어 질문드립니다! 수식에 진입 이후 고가로 HB가 경신되도록 되어있는 부분에서 추후 피라미딩을 추가할 예정이라, 진입 이후엔 HB가 변하지 않고, 청산 이후에 진입때 고가로 HB가 업데이트 되도록 만들고 싶습니다 ex) HB, HB+10로 피라미딩 될 때, 진입 이후 고가로 HB가 계속 업데이트 되면, 피라미딩 진입 가격(HB+10)도 변하기 때문 HB 돌파시 1차진입 1차진입때의 HB는 변동 없고, 1차진입때의 고가를 저장 1차진입 청산 이후 HB를 저장한 고가로 업데이트 업데이트된 HB 기준으로 2차진입 & 청산까지 HB는 동일 2차진입 청산 이후, 고가 기준으로 HB 업데이트 ... 그래서 이전에 도움주신 수식에서 새로 rHB(); 변수를 선언한 뒤 marketposition이 진입한 상태일때 rHB = highest(H,barssinceentry); 로 업데이트하고 if B>0 && B == Hcount then HB = rHB; 로 HB를 업데이트 하도록 만들었습니다 1차 진입시엔 B가 0이므로, HB 초기치로 돌파진입 1차 청산 이후엔 B = Hcount = 1이므로, 이때 HB=rHB로 업데이트 업데이트된 rHB로 2차진입 2차진입이 되면 B = 1, Hcount = 2 이므로 HB는 업데이트되지 않고, rHB는 고가 경신시 업데이트 2차 청산 이후 B = Hcount = 2가 되며, 2차 진입에서 고가가 경신되었다면 HB 값도 업데이트 ... 이렇게 될거라 생각하고 아래와 같이 구성했는데 제가 생각한대로 작동하는 방식인지 확인 부탁드리겠습니다 감사합니다! input : TT(55700), TD(20220205), N(5) ; var : HB(14710), LB(14680), e60(0), Hcount(0), Lcount(0),B(0),S(0),cnt(0),T1(0), rHB(0), rLB(0) ; e60 = Ema(C,60); if Condition1 == False and sDate >= TD and sTime >= TT Then { Condition1 = true; Hcount = 0; Lcount = 0; T1 = TotalTrades; } if Condition1 == true Then { B = 0; S = 0; if TotalTrades-T1 > 0 Then { For cnt = 1 to TotalTrades-T1 { if MarketPosition(cnt) == 1 Then { B = B+1; } if MarketPosition(cnt) == -1 Then { S = S+1; } } } Hcount = B + IFf(MarketPosition == 1,1,0); Lcount = S + IFf(MarketPosition == -1,1,0); if Hcount < 3 then Buy("b",AtStop,HB,2) ; if Lcount < 3 then Sell("s",AtStop,LB,2) ; if B>0 && B == Hcount then HB = rHB; if S>0 && S == Lcount then LB = rLB; if marketposition > 0 Then { if e60 < HB Then ExitLong("exitL1",AtStop,HB-N); if e60 >= HB && CrossDown(close, e60) Then ExitLong("exitL2") ; rHB = Highest(H, BarsSinceEntry) ; } if marketposition < 0 Then { if e60 > LB Then ExitShort("exitS1",AtStop,LB+N); if e60 <= LB && CrossUp(close, e60) Then ExitShort("exitS2"); rLB = Lowest(L, BarsSinceEntry); } }
프로필 이미지
jshwang2
2022-02-10
1172
글번호 156181
시스템

목마와숙녀 님에 의해서 삭제되었습니다.

프로필 이미지
목마와숙녀
2022-02-10
0
글번호 156173
시스템
답변완료

75857 답변해주신 수식 질문드립니다

안녕하세요 어제 답변주신 수식이 잘 작동하는 것은 확인했습니다 감사합니다! 하지만 어떻게 그런 결과가 나오는지 잘 이해가 되지 않아 관련해 추가적으로 질문드립니다 질문 내용은 시스템 사이사이 해당하는 코드 밑에 적어놨습니다 input : TT(55700), TD(20220205), N(5) ; var : HB(14710), LB(14680), e60(0), Hcount(0), Lcount(0),B(0),S(0),cnt(0),T1(0) ; e60 = Ema(C,60); if Condition1 == False and sDate >= TD and sTime >= TT Then { Condition1 = true; Hcount = 0; Lcount = 0; T1 = TotalTrades; } Q1. 1-1 ) if문에 condition1을 선언 안했는데 condition1 == false가 조건으로 들어간게 무슨 의미이고 어떤 기능을 하나요? 1-2) Hcount, Lcount는 이미 변수 선언시 0으로 선언했는데 여기서 다시 0으로 만드는 이유가 무엇인가요? 1-3) TotalTrades는 처음에 0이고, 시스템을 돌려봐도 T1 = 0으로 변함이 없는데 이게 들어간 이유가 궁금합니다 if Condition1 == true Then { B = 0; S = 0; Q2. B, S 또한 처음 선언시 0으로 선언되었는데 다시 여기서 0으로 설정하는 이유가 뭔가요? if TotalTrades-T1 > 0 Then { For cnt = 1 to TotalTrades-T1 { if MarketPosition(cnt) == 1 Then { B = B+1; } if MarketPosition(cnt) == -1 Then { S = S+1; } } } Hcount = B + IFf(MarketPosition == 1,1,0); Lcount = S + IFf(MarketPosition == -1,1,0); if Hcount < 3 then Buy("b",AtStop,HB,2) ; if Lcount < 3 then Sell("s",AtStop,LB,2) ; Q3. Hcount, Lcount가 사용되는 이유가 뭔가요? 수식을 봤을 때 한번의 진입과 청산에서 Hcount는 진입 시점에 +1, B는 청산시점에 +1이 되는 것으로 보이는데 4번째 진입을 막아야 하는 상황인 3번째 진입-청산이 끝난 상황에선 B도 3이기 때문에 Hcount 대신 B를 써도 되지 않나요? if marketposition > 0 Then { if e60 < HB Then ExitLong("exitL1",AtStop,HB-N); if e60 >= HB && CrossDown(close, e60) Then ExitLong("exitL2") ; HB = Highest(H, BarsSinceEntry) ; } if marketposition < 0 Then { if e60 > LB Then ExitShort("exitS1",AtStop,LB+N); if e60 <= LB && CrossUp(close, e60) Then ExitShort("exitS2"); LB = Lowest(L, BarsSinceEntry); } } 의도한대로 잘 작동하게 짜주셔서 다시한번 감사합니다! 그래도 제가 정확히 이해를 하고있어야 나중에 사용하다 필요에 따라 수정 할 수 있을것 같아 부득이하게 디테일한 부분들에 대해 질문을 드렸습니다ㅠ 가능한만큼 답변해주시면 감사하겠습니다! 감사합니다
프로필 이미지
jshwang2
2022-02-10
1205
글번호 156171
시스템