커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

재문의 드립니다.

답변감사드립니다. 아래 답변내용에서, if crossup(ma21,ma22) Then buy("매수30"); 와 같이 이평선의 Cross를 이용하는 경우에는 문제가 없으나, if ma21 > ma22 Then buy("매수30")과 같이 정배열을 이용하는 전략의 경우 "매도3"번 진입직후 매수30이 진입하는 문제가 생기네요. "매도3"번으로 진입하면 손절익절종가청산후 재매수가 되어야 하는데 매수30이 같은봉에서 발생하였습니다. 이 문제를 해결하기 위해 수식을 수정 부탁드립니다. -------------------------------------------------------------------- 안녕하세요 예스스탁입니다. 기본종목은 3분봉, 참조데이터(ata2)로 30분봉 데이터를 추가하신후에 식을 적용하셔야 합니다. 당일 청산후에 바로 이전 30분봉 진입포지션으로 진입해야 하므로 당일 청산함수를 사용할수 없어 if문으로 15시봉 완성시에 청산후 진입하게 작성했습니다. #주종목 3분 #참조종목 data2 30분 var : ma11(0,data2),ma12(0,data2),ma21(0,data2),ma22(0,data2),cond(false); ma11 = data1(ma(c,5)); ma12 = data1(ma(c,20)); ma21 = data2(ma(c,5)); ma22 = data2(ma(c,20)); if data1(date != date[1]) Then cond = false; if MarketPosition != 0 and (IsEntryName("매수3") or IsEntryName("매도3")) Then Cond = true; if crossup(ma21,ma22) Then buy("매수30"); if CrossDown(ma21,ma22) Then sell("매도30"); #30분봉 전략이 진입되어 있을 경우 반대시호시 하루에 한번 발생 if MarketPosition == 1 and IsEntryName("매수30") == True Then{ if CrossDown(ma11,ma12) and cond == false Then sell("매도3"); } if MarketPosition == -1 and IsEntryName("매도30") == True Then{ if CrossUp(ma22,ma12) and cond == false Then Buy("매수3"); } #매수3 진입일때만 발생 #매수청산 후에 매도로 포지션 진입 if MarketPosition == 1 Then{ if isEntryName("매수3") == true Then{ Sell("BL-sell",AtStop,EntryPrice-1); Sell("BP-Sell",AtLimit,EntryPrice+1); if stime == 150000 Then sell("Bx-sell"); } } #청산후 기존 30분봉 포지션으로 진입 #매도3 진입일때만 발생 #매도청산 후에 매수로 포지션 진입 if MarketPosition == -1 Then{ if IsEntryName("매도3") == true Then{ buy("SL-buy",AtStop,EntryPrice+1); buy("SP-buy",AtLimit,EntryPrice-1); if stime == 150000 Then buy("Sx-buy"); } } 즐거운 하루되세요 > 착한이 님이 쓴 글입니다. > 제목 : 전략 문의드립니다. > 수고하십니다. 포지션전략과 데이전략을 합친 수식을 부탁드립니다. 포지션전략은 30분봉에서 이동평균 5, 20선 교차시 매수 매도의 Reverse전략입니다. 데이전략은 3분봉에서 이동평균 5, 20선 교차시 매수 매도 하되, 손절, 익절, 및 당일청산이 있습니다. 데이전략은 포지션전략의 포지션과 반대신호가 나올 경우만 실행되며(당일1회), 손익절 및 당일청산이 완료되면 곧바로 포지션전략의 원래 포지션으로 진입한 후, OverNight합니다. 감사합니다.
프로필 이미지
착한이
2013-07-31
163
글번호 65969
시스템
답변완료

피라미딩 관련해서 다시한번 문의드립니다.

답변 감사드립니다. 궁금한 점이 있어서 문의드립니다. 1번 항목에 대한 질문 임의로 작성 한 식은 청산을 2회로만 쓴겁니다. P(5)로 할경우에 a1 ~ a5 까지 진입명을 다 지정해주고, 청산식도 5개를 다 써놓지 않고, P(5)로 INPUT 값을 적용하면 진입명이 순서대로 지정대고, 청산식도 5개 이름에 대해서 각각 작동할수는 없나요? value값도 value2~value5 까지 진입대로 부여를 하고요. 2번째부터 value2가 가장 최근진입의 종가가 아니라, 각 진입의 종가를 입력하고 싶습니다. 포지션이 0이면 진입명 a1 입력, 종가 value1 입력 포지션이 1이면 진입명 a2 입력, 종가 value2 입력 포지션이 2이면 진입명 a3 입력, 종가 value3 입력 ...... 여기서, 포지션이 청산이 되어 포지션이 2에서 1로 되지만 a2진입이 미청산이 경우에는 이름을 다른이름으로 부여해서 간섭이 안 일어났으면 하고요. 3번 항목에 대한 질문 강제청산함수는 기본이 각 진입별로 동작을 합니다.라고 하셨는데,, 강제청산함수를 써서 각각 체결을 하게 하려고 해도 진입명을 다 부여를 해야 하나요? 진입명을 모든 피라미딩에서 같게 할경우(매매 설정창에서 피라미딩 설정)에만 위와 같이 첫매수체결가 > 2차매수체결가 일 경우, 2차매수체결가 + 10pt 에서 첫매수체결가 먼저 체결을 하는건가요? 수식에서 각 진입별로 진입가격을 기억해서 청산하게 작성하려면 피라미딩 수가 두번까지로 고정으로 되어야 하고 첫진입, 두번째진입, 세번째진입등 진입별로 나눠서 진입식을 작성해야 하고 변수도 다르게 설정해야 합니다. 1. 피라미딩을 최대 P회까지 하고자하시면 아래와 같이 작성하시면 됩니다. 다만 작성하신 식의 경우 청산이 2회로 고정이 되어 있습니다. value1은 첫진입의 값이지만 value2는 2회이상일경우 가장최근 진입의 가격입니다. input : P(2); If MarketPosition == 0 Then { If countif(C > O,3) == 3 Then { Buy("a1", OnClose, DEF, 1); value1 = C; } } If MarketPosition == 1 and CurrentEntries < P then{ #진입누적을 P회 까지만 If countif(C > O,3) == 3 Then { Buy("a2", OnClose, DEF, 1); value2 = C; } } if MarketPosition == 1 then{ Exitlong("a1S", Atstop, Value1 - 10, "a1"); Exitlong("a1L", AtLimit, Value1 + 10, "a1"); Exitlong("a2S", Atstop, Value2 - 10, "a2"); Exitlong("a2L", AtLimit, Value2 + 10, "a2"); } 3. 손절이나 목표수익을 각 진입별로 하고자 하시면 강제청산 함수를 사용하셔야만 합니다. => 강제청산 input : P(2); If MarketPosition == 0 Then { If countif(C > O,3) == 3 Then { Buy("a1", OnClose, DEF, 1); value1 = C; } } If MarketPosition == 1 and CurrentEntries < P then{ #진입누적을 P회 까지만 If countif(C > O,3) == 3 Then { Buy("a2", OnClose, DEF, 1); value2 = C; } } SetStopProfittarget(10,PointStop); SetStopLoss(10,PointStop); 수식에서 각 진입별로 진입가격을 기억해서 청산하게 작성하려면 피라미딩 수가 두번까지로 고정으로 되어야 하고 첫진입, 두번째진입, 세번째진입등 진입별로 나눠서 진입식을 작성해야 하고 변수도 다르게 설정해야 합니다. 강제청산함수는 기본이 각 진입별로 동작을 합니다. 4. 가장 마지막진입가격에서 +-10포인트 움직이면 전량 청산한다면 동일변수에 (value1)에 종가 저장하신후에 청산식에서 이용하셔야 합니다. input : P(2); If MarketPosition == 0 Then { If countif(C > O,3) == 3 Then { Buy("a1", OnClose, DEF, 1); value1 = C; } } If MarketPosition == 1 and CurrentEntries < P and #진입누적을 P회 까지만 countif(CurrentContracts < CurrentContracts,BarsSinceEntry) < 1 Then { #일부청산되면 추가진입없음 If countif(C > O,3) == 3 Then { Buy("a2", OnClose, DEF, 1); value1 = C; } } if MarketPosition == 1 then{ Exitlong("a1S", Atstop, Value1 - 10); Exitlong("a1L", AtLimit, Value1 + 10); } 즐거운 하루되세요 > 파쿠3 님이 쓴 글입니다. > 제목 : 피라미딩 관련 문의드립니다. > 매번 답변 해주셔서 감사합니다. 피라미딩 관련하여 문의드립니다. 현재 피라미딩을 허용하고 있습니다. 첫 진입이 매수일 경우, 매수만 허용하고 첫 진입이 매도일 경우, 매도만 허용하고 있습니다. 기본로직은 아래식을 하고 있습니다. If countif(C > O,4) == 4 Buy("a"); SetStopProfittarget(10,PointStop); SetStopLoss(10,PointStop); 문제는 첫매수체결가 > 2차매수체결가 일 경우, 2차매수체결가 + 10pt 에서 첫매수체결가 먼저 체결을 해버리고 있습니다. 수식에서는 진입가격등 포지션 함수가 첫번째 진입신호를 기준으로 하고 있어서 이런 문제가 나오는 거 같습니다. 현재는 다음과 같이 문제를 해결했습니다만, 임시해결 로직이 타당한지 검토 부탁드립니다. 현재 임시 해결. 피라미딩 2의 경우, 아래와 같이 임시로 해결을 하고 있습니다. 진입조건은 동일한 피라미딩 구성이고요. 또한, 피라미딩 숫자를 Input : P(2); 으로 놓고 숫자를 변경하여 사용가능한 함수화된 로직 구성을 부탁드리고 싶습니다. If MarketPosition == 0 Then { If countif(C > O,3) == 3 Then { Buy("a1", OnClose, DEF, 1); value1 = C; } } If MarketPosition == 1 Then { If countif(C > O,3) == 3 Then { Buy("a2", OnClose, DEF, 1); value2 = C; Exitlong("a1S", Atstop, Value1 - 10, "a1"); Exitlong("a1L", AtLimit, Value1 + 10, "a1"); Exitlong("a2S", Atstop, Value1 - 10, "a2"); Exitlong("a2L", AtLimit, Value1 + 10, "a2");
프로필 이미지
파쿠3
2013-07-31
160
글번호 65964
시스템
답변완료

시스템식 부탁입니다.

일목균형표에서 하락하던 기준선이 우상향하기 시작한 첫 캔들에 매수 상승하던 기준선이 우하향하기 시작한 첫 캔들에 매도 하는 시스템식 부탁드립니다. 횡보가 길어질 경우 var[1] 이런 식으로 직전캔들과의 비교로는 안 되는 군요.
프로필 이미지
무지개나날들
2013-07-31
159
글번호 65958
시스템
답변완료

지표식질문입니다

1 60분차트에서 전일 17시 부터 당일 16시 사이에서 최고값을 그 봉위치를 카운트를 하고싶습니다 2 60분차트에서 1시봉 부터 15시봉 까지 사이에서 최고값위치를 카운트 하고 싶습니다
프로필 이미지
파인애플
2013-07-31
120
글번호 65955
지표
답변완료

수식 부탁드려요

당일 시초가에 매수든 매도든 포지션을 가졌다는 가정하에 2분동안 매수잔량과 매도잔량의 차이값이 3000이 넘지 않는다면 가지고 있던 포지션을 청산
프로필 이미지
Kflower
2013-07-31
140
글번호 65954
시스템

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

프로필 이미지
aaace
2013-07-31
39
글번호 65952
시스템
답변완료

거래량누적

감사합니다~ 아래 거래량 지표수식을 선물 틱차트에 사용하려 합니다 누적 20봉으로 설정했을때 첫봉을 제외하고 두번째봉부터 누적되게 부탁드립니다 그리고 당일 두번째 봉부터 봉이20개 미만이어도~ 현재까지의 봉숫자로 누적되게 부탁드립니다 예 :당일 두번째 봉부터 봉이10개라면 10개누적값이 나타나게부탁드립니다 Input : Period(20); var1 = Upvol - DownVol; var2 = accumN(var1,Period); ///////////////////////////////////////////////////////////////////////// IF var2 > 0 THEN { Plot1(var2, "거래량",RED); } IF var2 < 0 THEN { Plot1(var2, "거래량",BLUE); } 아래 = 시스템 문의2 = 매수청산봉에서 매수주문 금지 매도청산봉애서 매도주문 금지 수식 부탁드립니다 감사합니다 좋은하루 되세요~ Input : VOL(1000); var : Left(1),Right(1); var : Sline(0,data1),v1(0,data1),v2(0,data1),v3(0,data1),v4(0,data1),v5(0,data1); var : v11(0,data1),val11(0,data1),val73(0,data1); Sline = C;#시가기준이면 O로 변경 v1 = Upvol - DownVol; v2 = data1(accumN(v1,2)); #2개누적 v3 = data1(accumN(v1,3)); #3개누적 v4 = data1(accumN(v1,4)); #4개누적 v5 = data1(accumN(v1,5)); #5개누적 //주차트매수조건----------------------------------------------------------------- if val11 >= 0 //and data1(SwingLow(1,Sline,Left,Right,Left+right+1)) != -1 && v1 > 0 && (v1 > VOL or v2 > VOL or v3 > VOL or v4 > VOL or v5 > VOL) Then { val11 = -1; v11 = Sline[Right]; } //주차트매도조건----------------------------------------------------------------- if val11 <= 0 //and data1(SwingHigh(1,Sline,Left,Right,Left+right+1)) != -1 && v1 < 0 && (v1 < -VOL or v2 < -VOL or v3 < -VOL or v4 < -VOL or v5 < -VOL) Then { val11 = 1; v11 = Sline[Right]; } //주문--------------------------------------------------------------------------- if !(val11[1] == -1) && val11 == -1 && data2(c) < data3(c) Then buy(); if !(val11[1] == 1) && val11 == 1 && data2(c) > data3(c) Then sell(); //청산--------------------------------------------------------------------------- if val73 == 1 Then ExitLong("매수청산"); if val73 == -1 Then ExitShort("매도청산");
프로필 이미지
감사1
2013-07-31
204
글번호 65951
지표
답변완료

간단한 질문입니다

30분봉기준 시가대비 아래꼬리가 0.7이하면 다음봉 시가에 시장가매수(양음봉 관계없음) 손절은 시가대비 -0.75이상에서 시장가손절 아님 종가청산 감사합니다
프로필 이미지
정발산
2013-07-31
160
글번호 65950
시스템
답변완료

수식 문의 드립니다,.

수식 문의 드립니다. 1. 주가 20일 이평위에 있고, 채결강도 100이상이고, macd(12,26,9) 의 signal선이 0 선위에 있을경우 아침 장 시작과 동시에매수 2. 아침 장 시작과 동시에 macd(12,26,9) 의 signal선이 0 위에 있으면 매수 3. 아침 장 시작과 동시에 macd(12,26,9) 의 signal선이 0 아래에 있으면 매도 4. 매수후 4호가 빠지면 매도 5. 매수후 4호가 상승시 매도
프로필 이미지
회원
2013-07-31
160
글번호 65949
시스템