커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

수익플러스 님에 의해서 삭제되었습니다.

프로필 이미지
수익플러스
2014-06-20
0
글번호 76006
시스템
답변완료

고맙습니다. 잠시 재문의 드립니다.

절말 친절한 답변 정말 감사합니다. 꼭 답변부탁드려요.. 열심히 공부하고 있습니다. 재문의 드리겠습니다. 진입조건에 대해 잘못설명한 것 같아서요 1. 처음 30분동안의 최고가와 최저가를 구합니다... 그 이후에 움직이는 것을 봐서 최고가(최저가)를 돌파한 이후에 처음 설정한 최고가와 최저가값의 중간값을 하회 (상회)하며 조정받을 때 그 중간값으로 매수(매도)진입하는 조건입니다.(주신 예제처럼 갱신한 최고가값과 처음 30분동안의 최저가, 갱신한 최저가값과 최초30분 동안의 최고가와의 1/2값 진입도 괜찮겠네요) 답변증에 " 현재봉 고가/저가값을 기준으로 현재봉이 일정값 이상 상승/하락시 신호는 작성될수 없습니다."라고 하셨는데 현재봉의 고가 저가값이 아니라 최초 30분동안의 고가 저가값을 기준으로 상향돌파하는 것을 제1조건으로 하고 그다음에 최고가와 최저가 차이의 반절이 하락하는 것을 at limit에서의 진입조건으로 목표가 달성되면 바로 진입하는 것입니다. 한봉이 아니라도 11시 이전에는 계속 봉이진행되어 도달해도 반값에 조정받을 때 진입되는 것이 아닌가요... if Condition1 == true Then{ if H > value1 Then value1 = H; buy("b",atlimit,(value1+var2)/2); } 위처럼 수정하면 var1을 var2로 바꾸면 갱신한 최고값과 최초 30분사이의 최저값의 반값이 되지 않나요. 제가 원하는 것은 이것인데 혹시 var2를 쓸것을 잘못하여 var1으로 잘못쓰신 것인가요...고가와 상단값과의 합의 1/2값은 상단값과 거의 진배없지 않나요. 그래서 제게는 별로 의미가 없거든요..보수적으로 확 더 조정 받을 때 들어가겠다는 것인데요. if Condition1 == true Then{ if H > value1 Then value1 = H; buy("b",atlimit,(var1+var2)/2); 이렇게 하면 최초 30분 동안의 최고가와 최저가의 중간값으로 사용할 수 있나요.. 이럴경우에는 if H > value1 Then value1 = H; 는 필요없게 되나요(매봉의 고가가 상단 돌파후의 고가보다 클 때는 새로운 고가로 갱신한다는 뜻이지요) 2.시스템트레이딩 설정창에서 진입에서 우선1호가 지정하면 청산조건에서도 동일하게 적용되나요..설정창에서 설정하는 곳이 한군데이잖나요, 스팟식에서는 진입과 청산별로 주문가격도 설정할 수 있나요,,, 3. 진입은 하루 1번만 진입하게 되는 것인가요.. 각 5분봉마다 판단하기 때문에 각 봉마다 진입신호가 되지 않을까요. 한번 진입하게 하는 식도 같이 적어 주시고 정말 감사하겠습니다. 4. 고가를 상향돌파하고 다음봉에서만 1/2값이 되는 것을 판단하나요. 아니면 그 다음 다음 다음봉 어떤 봉이든 가능한가요.. 상향돌파하고 다음봉에서만 1/2가격으로 떨어질 확률은 거의 없잖아요,,상향 돌파한 이후에 봉수에 관계없이 고가와 저가 합한 가격의 1/2로 떨어지면 되거든요. 5. 반드시 at limt식이 아니어도 괜찮으니 다른 방식이 있다면 알려주세요. 그런데 배울 때 일정가격에 도달하고 일정한 가격으로 빠질때 진입하는 것이 at limit 아닌가요.. 5. 만일 않된다면 스팟으로는 작성이 되나요.. ※ 아직 초보라서 기본적인것 하나 하나부터 질문드리니 이해바랍니다. 공부 많이 되네요.. 만들어서 연습하고 한번 써보겠습니다. 11시는 어타 난 것 맞지요 "110000" -------------------------------------------------------------------- 안녕하세요 예스스탁입니다. if stime < 93000 Then{ var1 = dayhigh; var2 = daylow; Condition1 = false; Condition2 = false; } if stime >= 93000 and stime < 115000 Then{ if crossup(H,var1) Then{ value1 = H; Condition1 = true; } if Condition1 == true Then{ if H > value1 Then value1 = H; buy("b",atlimit,(value1+var1)/2); } if crossdown(L,var2) Then{ value2 = L; Condition2 = true; } if Condition2 == true Then{ if L < value2 Then value2 = H; sell("s",atlimit,(value2+var2)/2); } } SetStopProfittarget(3,PointStop); SetStopLoss(3,PointStop); SetStopEndofday(145000); 수식안에 주문가격을 지정하는 부분은 없습니다. 시스템은 신호발생까지만 담당하고 신호가 발생하면 시스템 트레이딩 설정창의 매매가격으로 지정한 가격으로 주문이 집행됩니다. 우선1호가는 설정창에서 지정하셔야 합니다. atlimit이나 atstop은 현재봉에서 값을 셋팅해 다음봉에 신호가 발생합니다. 그러므로 현재봉 고가/저가값을 기준으로 현재봉이 일정값 이상 상승/하락시 신호는 작성될수 없습니다. 위 식은 상단이나 하단을 상향돌파하고 그 이후 최고가와/최저가를 계산해서 최고가와 상단값의 중간값을 하회하는 첫틱에서 신호가 발생하고 최저가와 하단값의 중간값을 상회하는 첫틱에서 신호가 발생합니다. 즐거운 하루되세요 > 수익플러스 님이 쓴 글입니다. > 제목 : 수식작성문의 > 이번에 하이투자증권 교육수료생입니다. 수식 작성부탁드립니다. 초보이니 하나도 상세하게 빠트리지 말고 작성해 주시면 그대로 테스트하고 사용해 보겠습니다. 그대로 복사해서 붙여넣어서 테스트 해보겠습니다.초보니 주문함수도 같이 해주세요.. 고맙습니다. 예스랭귀지 수식만으로도 가능한가요, 예스스팟까지 해야 하나요,, 문제는 징입조건에서 조정시 진입하는 것이라서 우선1호가 매매를 하니 혹 만의 하나 계약체결이 않될시에 청산주문이 그대로 나갈 수도 있겠네요. 기본챠트 :연결선물 5분봉 차트 사용 1. 진입조건 초기 30분동안(봉6개)동안 최고가와 최저가를 구하고 그 다음부터 최고가나 최저가를 돌파하는 방향으로 진입하되 진입하는 가격은 기다렸다가 최고가나 최저가 돌파후 최고가 또는 최저가가격의 절반의 가격으로 조정받을 때 우선1호가로 진입한다, 단 11시 이전에만 진입한다. (이것이 at limit 주문인가요,1게약기준으로 주문식도 넣어주시면 감사하겠습니다.조정시 진입하니 우선1호가 진입이나 역슬리피지진입도 가능하지 않을까요 ) ,하루에 단 한번만 진입합니다. 2. 청산조건 +-3포인트 손절익절 청산 또는 오후 2시50분 디엔드오브더데이(시스템트레이디이 설정창이 아니라 수식으로도 가능하면 해주세요)
프로필 이미지
수익플러스
2014-06-21
265
글번호 76005
시스템

대발이 님에 의해서 삭제되었습니다.

프로필 이미지
대발이
2014-06-20
1
글번호 76004
지표
답변완료

문의 드립니다

안녕하세요 지표설정 price roc 지표에서 기간이 3 이고 signal 3 일때 price roc (기간이)가 상승곡선이고 sigmal 이 하락곡선 이면서 서로 크로스 일때 매수식 위의 반대일일때 매도식 부탁 합니다
프로필 이미지
회원
2014-06-20
176
글번호 75997
시스템
답변완료

문의드립니다

이평선 수식에 사용되는 함수, ma 와 ema 함수수식을 풀어주시기바랍니다
프로필 이미지
해피데이m
2014-06-20
146
글번호 75996
사용자 함수
답변완료

30분봉

30분봉에서최고가 라인으로챠트에 표시할수있는거 가능한지요? 감사합니다 수고하세요.
프로필 이미지
vision20
2014-06-20
143
글번호 75993
지표
답변완료

질문입니다

var : C_B(0); var : C_S(0); If C > ma(C,10) Then C_B = C_B + 1 ; if C < ma(C,10) Then C_S = C_S + 1 ; Var1 = C_B - C_S; 틱차트에서 위와 같은 지표를 1분 마다 0(제로) 으로 리셋 시켜서 사용하고싶습니다
프로필 이미지
파인애플
2014-06-20
140
글번호 75989
지표
답변완료

if..else if 와 if..if..if

시스템 작성시 기본조건1이 충족 되어진 후 매수조건에 해당되면 매수신호 와 중간처리...매수가 아니고 매도 조건에 해당되면 매도신호 발생하고 중간처리.. 이렇게 수식을 작성하려고 할때.. 수식 전개형식이 아래 2개 중 어떤것이 맞는건가요? 2개의 차이점이 뭔가요? (기본조건1이 충족되면 무조건 매수 또는 매도를 해야만 합니다..) if 기본 조건1 then { if 매수 조건 then { 매수; 중간처리; } else if 매도 조건 then { 매도; 중간처리; } } if 기본조건1 then { if 매수조건 then { 매수; 중간처리; } if 매도 조건 then { 매도; 중간처리; } }
프로필 이미지
hjkang철인
2014-06-20
204
글번호 75986
시스템
답변완료

Entryname 반환값에 대해서 다시 올립니다.

처음 올린 글에 대한 답변이 너무 무성의하고 해결책이 아니기에 다시 질문 드립니다. 먼저 관리자님께 심한 용어좀 사용하겠습니다. 이해해 주시기 바랍니다. 아니 이걸 답변이라고 한 겁니까? Entry명을 모르면, 진입가격도 알 수 없지요. 또한 청산조건은 진입가격대비 트레일링스탑을 하는 것인데, 어떻게 청산을 한단 말입니까? 관리자님이 상상하시는 청산조건은 어떤 것인지 심히 궁금하네요. 예를 들어 스토캐스틱이나, 이평이 변하면 무조건 청산하는 방식인가요? 어이가 없습니다. 또한 EntryPrice도 (N)을 사용할 수 없게 뒤죽박죽으로 리턴됩니다. Entryname이 첫번째 것만 나온다고요? 그렇게라도 규칙성이 있다면 정말 좋겠는데, 아무런 규칙성이 없습니다. 이런 Bug를 가진 툴로서는 절대 피라미딩을 해서는 안 되는 거지요. 피라미딩을 하지 말라고 해야지, 어떻게 피라미딩을 허용하고서 이런 Bug를 방치한단 말입니까? Bug가 있다고 질문을 했더니, 원래 그런게 정상인 것처럼 답변을 한대서야 말이 됩니까? Bug를 언제까지 고칠 것인지, 아니면 피라미딩을 하지 말라고 해야 하는 것 아닌가요? Bug라고 하는 이유는 사용자 설명서("예스 트레이더 구문) 148페이지에 나와 있는 아래 내용입니다. ========================================================================= EntryName 설명: 진입명 리턴 함수 ※ N은 진입 위치. 진입위치는 현재를 기준으로 역순으로 지정. ※ 최근 진입은 0, 직전 진입 1,…… ※ (0)은 생략가능 ※ 피라미딩 상황에서는 포지션이 시작되는 첫 진입의 이름 함수: EntryName(N) == “진입명” or EntryName(N) != “진입명” 예제: 일반적으로 진입별로 청산을 달리하고자 할 때와 같이 진입명칭을 확인해야 할 때 사용된다. ================================================================================== 제가 작성한 프로그램은 아래와 같습니다. =================================================================================== If MarketPosition==1 Then For JJ=0 to CurrentContracts-1 Begin If EntryName(JJ)=="L-Pv1" Then KK=1; Else If EntryName(JJ)=="L-Pv2" Then KK=2; Else KK==99; Max_Profit= Highest(H, BarsSinceEntry(JJ)) - EntryPrice(JJ); Max_Loss = EntryPrice(JJ) - Lowest(L, BarsSinceEntry(JJ)); If CrossDown(StoK,StoD) Then Begin TS_Point= A_Long_TrStPoint_M(DATR, JJ, L1_T1[KK], L1_R1[KK]); If TS_Point >0 Then If KK==1 Then ExitLong("수톱11", atstop, TS_Point, "L-Pv1", 1); Else If KK==2 Then ExitLong("수톱12", atstop, TS_Point, "L-PV2", 1); End If (DIM-DIP)>(DIM[BarsSinceEntry(JJ)]-DIP[BarsSinceEntry(JJ)]) + DIGAP Then Begin TS_Point= A_Long_TrStPoint_M(DATR, JJ, L2_T1[KK], L2_R1[KK]); If TS_Point >0 Then If KK==1 Then ExitLong("수톱21", atstop, TS_Point, "L-Pv1", 1); Else If KK==2 Then ExitLong("수톱22", atstop, TS_Point, "L-PV2", 1); End If CrossDown(MACDv, MACDsig) Then Begin TS_Point= A_Long_TrStPoint_M(DATR, JJ, L3_T1[KK], L3_R1[KK]); If TS_Point >0 Then If KK==1 Then ExitLong("수톱31", atstop, TS_Point, "L-Pv1", 1); Else If KK==2 Then ExitLong("수톱32", atstop, TS_Point, "L-PV2", 1); End If Max_Profit < LSMinPft[KK]*DATR and CrossDown(StoK, StoD) Then If KK==1 Then ExitLong("수절11", Atstop, EntryPrice(JJ)-LSLCPnt[KK]*DATR, "L-Pv1", 1); Else If KK==2 Then ExitLong("수절12", Atstop, EntryPrice(JJ)-LSLCPnt[KK]*DATR, "L-PV2", 1); If Max_Profit < LDMinPft[KK]*DATR and (DIM-DIP)>(DIM[BarsSinceEntry(JJ)]-DIP[BarsSinceEntry(JJ)]) + LLC_DIGAP[KK] Then If KK==1 Then ExitLong("수절21", Atstop, EntryPrice(JJ)-LDLCPnt[KK]*DATR, "L-Pv1", 1); Else If KK==2 Then ExitLong("수절22", Atstop, EntryPrice(JJ)-LDLCPnt[KK]*DATR, "L-PV2", 1); End 이 로직을 엔트리명에 무관하게 처리할 수 있는 방법을 구체적으로 알려 주세요. 부탁드립니다. ============================================================================== > 예스스탁 님이 쓴 글입니다. > 제목 : Re : Entryname > 안녕하세요 예스스탁입니다. entryname은 해당 포지션의 첫번째 진입명만 리턴합니다. 그러므로 피라미딩 상태에서 진입명별로 청산을 하고자 하시면 청산함수에 매개변수 중 진입명을 지정하는 부분이 있습니다. 이름을 지정하시면 해당 이름으로 진입이 있을때만 발생하고 해당 이름으로 들어간 수량만큼만 청산을 합니다. if 매수청산조건1 then exitlong("bx1",onclose,def,"매수1"); if 매수청산조건2 then exitlong("bx1",onclose,def,"매수2"); 즐거운 하루되세요 > 좋은선물 님이 쓴 글입니다. > 제목 : Entryname > 피라미딩으로 들어가서 진입명으로 구분하여 청산하고자 하는데, 진입명이 이상하게 나오네요. 간단한 프로그램 예제를 쓰자면, If Close>Dayopen+0.5 Then Buy("매수1"); If Close>Ma(C,5) Then Buy("매수2"); If sdate==20140602 Then messagelog("%s %s", entryname(0), Entryname(1)); 이렇게 해서 보면 위의 그림과 같이 나옵니다. 해결 방법 부탁드립니다.
프로필 이미지
좋은선물
2014-06-20
217
글번호 75985
시스템