커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

성공시대1 님에 의해서 삭제되었습니다.

프로필 이미지
성공시대1
2013-11-21
0
글번호 69698
시스템
답변완료

수정부탁합니다

즐거운 하루되세요 > HI_jh***** 님이 쓴 글입니다. 안녕하세요 2번째추가매수 할때는 평균단가 -5프로 이상 빠졌을때 매수하게만들어주세요 첫번째 매수하여 평균-4프로에 있을&#46468;는 2번째 매수는 못하게 하구요 -5프로 이상일때 매수들어가게 해주세요 그다음 매수할때 매번-5프로 빠지면 매수하는 식으로 만들어주세요 예를들어 첫매수하였는데 -6프로 빠졌다 그럼 매수 그다음날 또 -5프로이상 빠지면 매수 그런데 다음날은 -2프로빠졌으면 매수 금지 이런식으로 바꾸어 주세요 input : 투자금액(200000),P(60); Var : Body(0),HighBody(0),LowBody(0),Height(0),UpTail(0),DnTail(0),Long(False); var : Vol(0),entrycond(false),mav(0); mav = ma(C,P); if date != date[1] Then entrycond = false; if CodeCategoryEx == 11 and BasePrice < 50000 Then vol = int(int((투자금액)/C)/10)*10; Else vol = int((투자금액)/C); Body = Abs(C-O); HighBody = Max(C,O); LowBody = Min(C,O); Height = H-L; UpTail = H-Max(C,O); DnTail = Min(C,O)-L; DnTail = Min(O,C) - L; Uptail = H - Max(O,C); Height = H - L; body= Abs(O-C); highbody = Max(O,C); LowBody = Min(O,C); If Abs(Open-Close) > ma(Abs(Open-Close),10)*2 Then Long = True; Else Long = False; If UpTail == 0 and DnTail == 0 Then Condition1 = True; Else Condition1 = False; If C > mav and entrycond == false and C < Ma(C,10) and DnTail < Height*0.1 and C == O and Height > Ma(Height,10) And (MarketPosition == 0 or (MarketPosition == 1 and C <= AvgEntryPrice*0.95)) then{ buy("a1",OnClose,def,vol); entrycond = true; } If C > mav and entrycond == false and C < Ma(C,10) and (Uptail < Height * 0.1) and C == O and (Height > Ma(Height,10)) And (MarketPosition == 0 or (MarketPosition == 1 and C <= AvgEntryPrice*0.95)) then{ buy("a2",OnClose,def,vol); entrycond = true; } If C > mav and entrycond == false and C[1] < Ma(C,10)[1] and C[1] < O[1] and Long[1] == True and C > O and Long and O < L[1] and C >= (O[1]+C[1])/2 and C < O[1] And (MarketPosition == 0 or (MarketPosition == 1 and C <= AvgEntryPrice*0.95)) then{ buy("a3",OnClose,def,vol); entrycond = true; } If C > mav and entrycond == false and (C[2] >= Ma(C,10)[2] and C[2] < O[2] and C[1] < O[1] and C < O) and (O[1] > Min(O,C)[2] and O[1] < Max(O,C)[2]) and (O > Min(O,C)[1] and O < Max(O,C)[1]) and (C[2] > C[1] and C[1] > C[0]) and (L[2] < L[1] and L[1]< L[0]) And (MarketPosition == 0 or (MarketPosition == 1 and C <= AvgEntryPrice*0.95)) then{ buy("a4",OnClose,def,vol); entrycond = true; } If C > mav and entrycond == false and C[2] < Ma(C,10)[2] and C[2] < O[2] and C[1] > O[1] and C < O and O[1] > C[2] and O[1] == L[1] and O > Max(H[1],H[2]) and C[2] == C[0] And (MarketPosition == 0 or (MarketPosition == 1 and C <= AvgEntryPrice*0.95)) then{ buy("a6",OnClose,def,vol); entrycond = true; } If C > mav and entrycond == false and (C[4] < Ma(C,10)[4] and C[4] < O[4] and C[3] < O[3] and C[2] < O[2]) and (O[4] > O[3] and O[3] > O[2]) and (C[4] > C[3] and C[3] > C[2]) and (C[1] < O[1] and H[1] - MaxList(O,C)[1] > 0) and (H[1] < O[3] and C[2] > C[1]) and Close > Open and (O > O[1] and C > MaxList(H[1],H[2])) And (MarketPosition == 0 or (MarketPosition == 1 and C <= AvgEntryPrice*0.95)) then{ buy("a7",OnClose,def,vol); entrycond = true; } If C > mav and entrycond == false and (C[2] < Ma(C,10)[2] and Long[2] == True and C[2] < O[2]) and (C[1] == O[1] and Max(O,C)[1] < Min(O,C)[2])and (C > O and Min(O,C) > Max(O,C)[1])and (C > C[2]) And (MarketPosition == 0 or (MarketPosition == 1 and C <= AvgEntryPrice*0.95)) then{ buy("a8",OnClose,def,vol); entrycond = true; } If C > mav and entrycond == false and (C[1] < O[1] and Long[1] == True and Condition1[1] == True ) and (Long == True and C > O and Condition1 == True ) and (L > H[1]) And (MarketPosition == 0 or (MarketPosition == 1 and C <= AvgEntryPrice*0.95)) then{ buy("a9",OnClose,def,vol); entrycond = true; } If C > mav and entrycond == false and C[1] < Ma(C,10)[1] and C[1] < O[1] and body[1] > Ma(body[1],10)*2 and C > O and Abs(C-C[1]) < Ma(Height,10)*0.1 And (MarketPosition == 0 or (MarketPosition == 1 and C <= AvgEntryPrice*0.95)) then{ buy("a10",OnClose,def,vol); entrycond = true; } If C > mav and entrycond == false and C < Ma(C,10) and body > Ma(body,10)*2 and C > O and O == L and Uptail > 0 and Uptail < Height*0.1 And (MarketPosition == 0 or (MarketPosition == 1 and C <= AvgEntryPrice*0.95)) then{ buy("a11",OnClose,def,vol); entrycond = true; } If C > mav and entrycond == false and C[2] < Ma(C,10)[2] and C[2] == O[2] and C[1] == O[1] and C == O and HighBody[1]< LowBody[2] and HighBody[1] < LowBody[0] And (MarketPosition == 0 or (MarketPosition == 1 and C <= AvgEntryPrice*0.95)) then{ buy("a12",OnClose,def,vol); entrycond = true; } If C > mav and entrycond == false and C[1] < Ma(C,10)[1] and C[1] < O[1] and body[1] > Ma(body[1],10)*2 and C == O and Highbody < Highbody[1] and Lowbody > Lowbody[1] And (MarketPosition == 0 or (MarketPosition == 1 and C <= AvgEntryPrice*0.95)) then{ buy("a13",OnClose,def,vol); entrycond = true; } If C > mav and entrycond == false and C[1] < Ma(C,10)[1] and C[1] < O[1] and body[1] > Ma(body[1],10)*2 and C > O and Highbody < Highbody[1] and Lowbody > Lowbody[1] And (MarketPosition == 0 or (MarketPosition == 1 and C <= AvgEntryPrice*0.95)) then{ buy("a14",OnClose,def,vol); entrycond = true; } If C > mav and entrycond == false and C[2] < Ma(C,10)[2] and C[2] < O[2] and body[2] > Ma(body[2],10)*2 and C[1] > O[1] and Highbody[1] < Highbody[2] and Lowbody[1] > Lowbody[2] and C > O and C > C[1] And (MarketPosition == 0 or (MarketPosition == 1 and C <= AvgEntryPrice*0.95)) then{ buy("a15",OnClose,def,vol); entrycond = true; } If C > mav and entrycond == false and C[1] < Ma(c,10)[1] and C[1] < O[1] and C > O and Body > Ma(Body,10)*2 and Highbody > Highbody[1] and Lowbody < Lowbody[1] And (MarketPosition == 0 or (MarketPosition == 1 and C <= AvgEntryPrice*0.95)) then{ buy("a16",OnClose,def,vol); entrycond = true; } If C > mav and entrycond == false and C[2] < Ma(C,10)[2] and C[2] < O[2] and C[1] > O[1] and Body[1] > Ma(Body[1],10)*2 and Highbody[1] > Highbody[2] and Lowbody[1] < Lowbody[2] and C > O and C > C[1] And (MarketPosition == 0 or (MarketPosition == 1 and C <= AvgEntryPrice*0.95)) then{ buy("a17",OnClose,def,vol); entrycond = true; } If C > mav and entrycond == false and (C[4] < Ma(c,10)[4] and Body[4] > Ma(Body,10)[4]*2 and C[4] < O[4]) and (C[3] < O[3] and C[1] < O[1]) and (Body > Ma(Body,10)*2 and C > O) and (O[3] > HighBody[2] and HighBody[2] > O[1]) and (C[3] > LowBody[2] and LowBody[2] > C[1]) and (C >= O[1] and C > O[3] and C < C[4]) And (MarketPosition == 0 or (MarketPosition == 1 and C <= AvgEntryPrice*0.95)) then{ buy("a18",OnClose,def,vol); entrycond = true; } If C > mav and entrycond == false and C[2] < Ma(C,10)[2] and Body[2] > Ma(Body,10)[2]*2 and C[2] < O[2] and C[1] == O[1] and HighBody[1]<LowBody[2] and C > O and C > C[2] And (MarketPosition == 0 or (MarketPosition == 1 and C <= AvgEntryPrice*0.95)) then{ buy("a19",OnClose,def,vol); entrycond = true; } If C > mav and entrycond == false and C[2] < Ma(C,10)[2] and Body[2] > Ma(Body,10)[2]*2 and C[2] < O[2] and Body[1] < Ma(Body,10)[1]*0.5 and HighBody[1] < LowBody[2] and C > O and C > C[2] And (MarketPosition == 0 or (MarketPosition == 1 and C <= AvgEntryPrice*0.95)) then{ buy("a20",OnClose,def,vol); entrycond = true; } If C > mav and entrycond == false and C[3] < Ma(C,10)[3] and Body[3] > Ma(Body,10)[3]*2 and C[3] < O[3] and Body[2] > Ma(Body,10)[2]*2 and C[2] < O[2] and O[3] == H[3] and C[3] == L[3] and O[2] == H[2] and C[2] == L[2] and O[1] < Min(O,C)[2] and H[1] > C[2] and UpTail[1] > Height*0.5 and O > H[1] and C < L[1] And (MarketPosition == 0 or (MarketPosition == 1 and C <= AvgEntryPrice*0.95)) then{ buy("a21",OnClose,def,vol); entrycond = true; } If C > mav and entrycond == false and C < Ma(C,10) and DnTail < Height*0.1 and UpTail > Body*2 and Height > Ma(Height,10) and C != O And (MarketPosition == 0 or (MarketPosition == 1 and C <= AvgEntryPrice*0.95)) then{ buy("a22",OnClose,def,vol); entrycond = true; } If C > mav and entrycond == false and C[2] < Ma(C,10)[2] and C[2] > O[2] and C[1] > O[1] and C > O and O[1] >= LowBody[2] and O[1]<= HighBody[2] and O <= HighBody[1] and C[2] <= C[1] and C[1] <= C And (MarketPosition == 0 or (MarketPosition == 1 and C <= AvgEntryPrice*0.95)) then{ buy("a23",OnClose,def,vol); entrycond = true; } If C > mav and entrycond == false and C[1] < Ma(C,10)[1] and C[1] < O[1] and Body[1] > Ma(Body,10)[1]*2 and C < O and Highbody < Highbody[1] and Lowbody > Lowbody[1] And (MarketPosition == 0 or (MarketPosition == 1 and C <= AvgEntryPrice*0.95)) then{ buy("a24",OnClose,def,vol); entrycond = true; } If C > mav and entrycond == false and C < Ma(C,10) and UpTail < Height*0.1 and DnTail > Body*2 and Height > Ma(Height,10) and C != O And (MarketPosition == 0 or (MarketPosition == 1 and C <= AvgEntryPrice*0.95)) then{ buy("a26",OnClose,def,vol); entrycond = true; } If C > mav and entrycond == false and (C[2] < Ma(C,10)[2] and Body[2] > Ma(Body,10)[2]*2 and C[2] < O[2]) and (C[1] < O[1] and C > O and Highbody[1] < Highbody[2] and Lowbody[1] > Lowbody[2]) and (L[1] < L[2] or L[1] < Min(L[2],L[3],L[4])) and (L[1] < O and C[1] > C) And (MarketPosition == 0 or (MarketPosition == 1 and C <= AvgEntryPrice*0.95)) then{ buy("a27",OnClose,def,vol); entrycond = true; } if MarketPosition == 1 Then{ if CurrentEntries >= 2 Then exitlong("매도2",atlimit,AvgEntryPrice*1.02); Else exitlong("매도1",atlimit,EntryPrice*1.05); }
프로필 이미지
회원
2013-11-21
218
글번호 69695
시스템
답변완료

시스템식 차이 설명

항상감사드립니다 아래시스템을 돌려보니 각각 다른 결과가 나옵니다 시스템 A는 정상적인 시스템이고 시스템 B는 식자체의 논리가 잘못되어 있는 시스템입니다 근데 시스템 B 가 성과가 좋게 나와서 시스템식 설명부탁드립니다 1.시스템 A Input : Period(12), sigPeriod(9); var : TRIXv(0),TRIXsig(0); TRIXv = TRIX(Period); TRIXsig = ema(TRIX(Period),sigPeriod); if crossup(TRIXv,0) Then var1=1; if CrossDown(TRIXv,0) Then var1=-1; if var1==1 and c>var23 Then buy("매수1"); if var1==-1 and c<var21 Then Sell("매도1"); 2.시스템 B input : Period1(23); var1 =(AccumN(iff(C-C[1]>0,C-C[1],0),Period1)/AccumN(iff(C-C[1]>0,C-C[1],C[1]- C),Period1)*100); Input : Period(12), sigPeriod(9); var : TRIXv(0),TRIXsig(0); TRIXv = TRIX(Period); TRIXsig = ema(TRIX(Period),sigPeriod); if crossup(TRIXv,0) Then var1=1; if CrossDown(TRIXv,0) Then var1=-1; Condition1 = ExitDate(1) == sdate and (IsExitName("bx",1) == true and IsExitName ("sx",1) == true); if Condition1 == false and var1==1 and c>var23 Then buy("B1"); if Condition1 == false and var1==-1 and c<var21 Then sell("S1"); 시스템A 와 시스템B 의 차이는 RSI 추가인데 시스템 B에서 var1이 var1 =(AccumN(iff(C-C[1]>0,C-C[1],0),Period1)/AccumN(iff(C-C[1]>0,C-C[1],C[1]- C),Period1)*100); if crossup(TRIXv,0) Then var1=1; if CrossDown(TRIXv,0) Then var1=-1; 로 이중으로 되어있습니다 시스템을 돌리면 신호는 에러가 나질않고 나오고 있습니다 설명부탁드립니다(시스템B) 감사드립니다..
프로필 이미지
조민철
2013-11-21
217
글번호 69687
시스템
답변완료

지표수식 부탁드립니다.

볼린져밴드의 하단밴드와 상단밴드를 일목균형표의 기준선처럼 변경하려고 합니다. 알맞은 지표를 부탁드립니다. 볼린져밴드이 중심선이 단순이평으로 기준선처럼 변경한후에 상단,하단밴드 나오는 모양이 별로 마음이 안들어서 , 중심선은 그래도 단순이평인데 상단과 하단밴드가 기준선처럼 변경해서 보려고 합니다. 수고하세요.
프로필 이미지
회원
2013-11-21
230
글번호 69686
지표
답변완료

문의드립니다

선물차트에서 초봉차트는 어떻게 볼수 있나요?
프로필 이미지
wipoo
2013-11-21
210
글번호 69685
시스템
답변완료

문의합니다

안녕하세요 늘 감사합니다 챠트에서 타주기 이평선을 표현하는 방법이 궁금합니다 90틱봉에서 2분챠트의 이평선을 나타내는 수식을 부탁드립니다 감사합니다
프로필 이미지
파티아
2013-11-21
209
글번호 69684
지표
답변완료

주문 변경 관련문의

안녕하세요 33511 번 식 있잖아요 제것시스템 식에 추가해서 5분차트에 적용 해보니 안되는데요 ??? 검증은 되고 가격변화는없구 그럽니다 제가 20봉 되어있는 숫자를 1,2,3,4,5,6,7,8,9, 등등 변경해봐도 변화업네요 답변주신식은 아래와같음 (TotalTrades == 0 or (TotalTrades >= 1 and MarketPosition == 0 and BarsSinceExit(1) >= 20))
프로필 이미지
회원
2013-11-21
207
글번호 69683
시스템
답변완료

수식 질문입니다.

옵션 가격기준이 되는 2.5 단위의 선물 지수값. 예를 들면 265, 262.5, 260 등등이 있지 않습니까. 이들을 기준지수값이라 칭한다면 선물 현재값을 기준으로 상위 기준지수값과 하위 기준지수값을 특정 변수에 할당하고 싶습니다. 예) 상위기준지수 A 하위기준지수 B 현재지수 263이면 A=265 B=262.5 만일 지수가 하락하여 261로 되면 A=262.5 B=260 이렇게 현재 지수값에 따라 A,B 가 자동으로 기준지수값으로 할당되도록 하고 싶습니다.
프로필 이미지
뽕빵이
2013-11-21
221
글번호 69682
시스템
답변완료

문의 (DATA1)

1. 맨 아래내용은 어제 답변주신 내용입니다. 모든 부분을 이해한 것이 아니기에 확인차원에서 재질문 드립니다. 제가 이해한 부분입니다. * DATA1을 기입하지 않으면 디폴트로 DATA1을 가리키는 것은 아니라는 점... * DATA1에서의 데이타(이평선, 봉 등)만을 이용할 경우에는 DATA1을 모두 기입해주는 것이 명확하고 처리하는 속도?에서 이점을 얻을 수 있다는 점 * DATA1에서 DATA2의 참조데이타를 이용할 경우에는 반드시 참조할 데이타를 명시해야함 VARS: A(0); A = DATA2(AA) + DATA3(M1 / M2 * 100); 위와 같이 해줘야함. 여기서 VARS: A(0); 인지 VARS: A(0, DATA1); 인지는 헷갈립니다. 제가 이해한 부분이 정확한지 다시한번 봐주시고 조언주시면 감사드리겠습니다. 2. 3분봉에서 일봉을 표시하기 위해 사용했던것인데 DATA1인 1분봉에서 표시하게끔해주고 싶습니다. 변환부탁드립니다. VARS: M5DP(5), M13DP(13), M20DP(20); VARS: M5D(0, DATA2), M13D(0, DATA2), M20D(0, DATA2); VARS: M5D.SUM(0, DATA2), M13D.SUM(0, DATA2), M20D.SUM(0, DATA2), CNT(0); ARRAY: CC[100](0, DATA2); //---------------------------------------------------------------------------------------------------------------------------------------------------------- if ( DATA2(Date <> Date[1]) ) Then { for CNT = 0 to 99 { CC[CNT] = CC[CNT - 1][1]; } } CC[0] = DATA2(C); M5D.SUM = 0; M13D.SUM = 0; M20D.SUM = 0; for CNT = 0 to M20DP - 1 { if ( (CNT < M5DP) AND (CC[M5DP - 1] > 0) ) Then M5D.SUM = M5D.SUM + CC[CNT]; if ( (CNT < M13DP) AND (CC[M13DP - 1] > 0) ) Then M13D.SUM = M13D.SUM + CC[CNT]; if ( (CNT < M20DP) AND (CC[M20DP - 1] > 0) ) Then M20D.SUM = M20D.SUM + CC[CNT]; } M5D = (M5D.SUM / M5DP); M13D = (M13D.SUM / M13DP); M20D = (M20D.SUM / M20DP); Plot21(M5D, "M5D", RGB(0,255,0), DEF, 1); Plot22(M13D, "M13D", RGB(0,255,255), DEF, 1); Plot23(M20D, "M20D", RGB(255,102,204), DEF, 1); 3. 10분후에만 작동하게 끔 해주려고 합니다. 아래식 맞는건지요?? 장시작후 10분후에도 M1과 M2가 역배열되었는데도 Buy 진입이 되는 것을 확인할 수 있었습니다. VARS: PreD.TM(0, DATA1); VARS: PreD.Q1(FALSE, DATA1); if DATA1(Date <> Date[1]) then { PreD.TM = DATA1(TimeToMinutes(stime)); PreD.Q1 = FALSE; } if ( (TimeToMinutes(stime) >= PreD.TM + 10) AND (M1 > M2) ) then { PreD.Q1 = TRUE; } ............ if (PreD.Q1 == TRUE) then buy(); 아래 문장에서 DATA1을 삭제시 어떻게 달라지나요? PreD.TM = DATA1(TimeToMinutes(stime)); 금일도 질문이 다소 많은데 부탁드리겠습니다. 늘 감사드립니다. ------------------------------------------------------------------------- 답변주신 내용 ------------------------------------------------------------------------- 수식에서 참조데이터를 사용하는 경우 if DATA1(Date <> Date[1]) then { 실행문 } 은 data1로 지정을 했으므로 if문이 data1봉만 기준으로 계산이 되는데 if Date <> Date[1] then 위와 같이 작성하시면 차트의 있는 봉이 완성이 될때마다 if문이 구동이 되어 조건만족여부를 따져 만족하면 하위의 실행문들이 수행되므로 중복으로 계산이 됩니다. 마찬가지로 DATA1(TMA(gCLOSE, MP1)); 와 같이 작성하시면 해당 함수를 계산하는 봉을 data1의봉수로만 따지게 되는데 TMA(gCLOSE, MP1); 와 같이 있으면 참조데이터를 포함해서 봉수를 산정하게 됩니다. 참조데이터를 이용하는 식을 만드실때는 해당 조건문 혹은 함수가 따라가야 하는 데이터가 어떤데이터인지 명시해 주셔야 합니다.
프로필 이미지
TRF
2013-11-21
248
글번호 69681
시스템