커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

보조 지표 그리기..

yesLanguage에서 yesGlobal의 보조 지표를 그리게 할 수 있나요? 예를 들어 "수치전환 수직선" yesLanguage에서 함수를 사용하여 매일 10시에 표시되게 할려고 합니다. 그래게 할 수 있다면 사용법이 나와있는 자료를 받고 싶습니다.
프로필 이미지
yes랭귀지
2017-07-23
120
글번호 111512
지표
답변완료

부탁드림니다

**고가-다음파동의고가,저가-다음파동의저가,종가고-다음파동의종가고,종가저-다음파동의종가저 의수평라인을 추가해서 그리고 싶슴니다 1 장기파동(length(60))의 최고점(빨강색두깨3)-다음최고점까지연결,최저점(검정색 두께3)-다음파동의최저점연결 2 단기파동(length1(10))의 최고점(분홍색 두께1),최저점(청색 두께1)의 수평라인을 추가하고 3 장기파동(length(60))의 최고점종가선(빨강색두깨1),최저점종가선(검정색 두께1) 4 단기파동(length1(10))의 최고점종가선(분홍색 두께1),최저점종가선(청색 두께1)의 수평라인을 추가해서 그리고 싶슴니다. 5 그림참고는 52250번 그림과 동일 함니다 수식; Input:length(60); Var:j(0),lastHiVal(0),lastLoVal(0),turnPntBit(""),TL1(0); var : UpTL_chk(false),DnTL_chk(false); Array:valArr[20](0),barArr[20](0),turnPntArr[20](""); Input:length1(10); var:lastHiVal1(0),lastLoVal1(0),turnPntBit1(""),TL11(0),T(0),T1(0); var : H1(0),H2(0),L1(0),L2(0),H11(0),L11(0),H22(0),L22(0); Array:valArr1[20](0),barArr1[20](0),turnPntArr1[20](""); For j = 0 To 19 { barArr[j] = barArr[j] + 1; } Condition1 = Highest(H,length) == H and lastHiVal <> H; Condition2 = Lowest(L,length) == L and lastLoVal <> L; If Condition1 Then lastHiVal = H; If Condition2 Then lastLoVal = L; turnPntBit = ""; If Condition1 and Condition2 Then { If turnPntArr[1] == "Hi" Then turnPntBit = "Lo"; Else If turnPntArr[1] == "Lo" Then turnPntBit = "Hi"; } Else If Condition1 Then turnPntBit = "Hi"; Else If Condition2 Then turnPntBit = "Lo"; If turnPntBit == "Hi" or turnPntBit == "Lo" Then { If turnPntBit <> turnPntArr[1] Then { for j = 18 downto 1 { valArr[j+1] = valArr[j]; barArr[j+1] = barArr[j]; turnPntArr[j+1] = turnPntArr[j]; } } If turnPntBit <> turnPntArr[1] or (turnPntBit == turnPntArr[1] and ((turnPntBit == "Hi" and valArr[1] < H) or (turnPntBit == "Lo" and valArr[1] > L))) Then { valArr[1] = IFF(turnPntBit == "Hi",H,L); barArr[1] = 0; turnPntArr[1] = turnPntBit; If turnPntArr[1][1] <> turnPntArr[1][0] Then TL1 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],sDate[barArr[1]],sTime[barArr[1]],valArr[1]); Else TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]); } } TL_SetSize(TL1,2); TL_SetColor(TL1,GREEN); # 진입 체크 TL_SetSize(TL1,2); TL_SetColor(TL1,GREEN); For j = 0 To 19 { barArr1[j] = barArr1[j] + 1; } Condition11 = Highest(H,length1) == H and lastHiVal1 <> H; Condition12 = Lowest(L,length1) == L and lastLoVal1 <> L; If Condition11 Then lastHiVal1 = H; If Condition12 Then lastLoVal1 = L; turnPntBit1 = ""; If Condition11 and Condition12 Then { If turnPntArr1[1] == "Hi" Then turnPntBit1 = "Lo"; Else If turnPntArr1[1] == "Lo" Then turnPntBit1 = "Hi"; } Else If Condition11 Then turnPntBit1 = "Hi"; Else If Condition12 Then turnPntBit1 = "Lo"; If turnPntBit1 == "Hi" or turnPntBit1 == "Lo" Then { If turnPntBit1 <> turnPntArr1[1] Then { for j = 18 downto 1 { valArr1[j+1] = valArr1[j]; barArr1[j+1] = barArr1[j]; turnPntArr1[j+1] = turnPntArr1[j]; } } If turnPntBit1 <> turnPntArr1[1] or (turnPntBit1 == turnPntArr1[1] and ((turnPntBit1 == "Hi" and valArr1[1] < H) or (turnPntBit1 == "Lo" and valArr1[1] > L))) Then { valArr1[1] = IFF(turnPntBit1 == "Hi",H,L); barArr1[1] = 0; turnPntArr1[1] = turnPntBit1; If turnPntArr1[1][1] <> turnPntArr1[1][0] Then TL11 = TL_New(sDate[barArr1[2]],sTime[barArr1[2]],valArr1[2],sDate[barArr1[1]],sTime[barArr1[1]],valArr1[1]); Else TL_SetEnd(TL11,sDate[barArr1[1]],sTime[barArr1[1]],valArr1[1]); } } TL_SetSize(TL11,4); TL_SetColor(TL11,GREEN);
프로필 이미지
수루지
2017-07-23
147
글번호 111511
지표
답변완료

수정

아래수식을 사용하는데 값이 키움과 다르게 나옵니다. 키움기준으로 아래수식 비교해서 수정할 부분 수정 부탁드립니다. input : Period(20170703),BarRio(0.01),Percent1(50); var : B(0),sumB(0),HH(0),LL(0),H2(0); B = IFF((C-O)/O>=BarRio or (C[1]*1.02<=H and C>=O) or (C[2]>O[2]*1.01 and C[1]>O[1]*1.01 and C>=O) , V, IFF((C-O)/O<=-BarRio or (C < O and C[1]*1.03 <= H) or (C[1]*0.99>=C and C < O) or (C[1]*0.97>=L and C < O) or (H[1]*0.97 > C and O>C),-V,0)); if sdate >= Period then{ sumB = sumB+B; if (sdate != sdate[1]) and (sdate == Period or (sdate > Period and sdate[1] < Period)) Then{ LL = sumB; HH = sumB; H2 = sumb-LL; } if sumB < LL Then LL = sumB; if sumB > HH Then HH = sumB; var1 = sumB-LL; var2 = HH-SumB; if var1 > H2 Then H2 = var1; var3 = H2*(Percent1/100); plot1(var1,"매수",RED); plot2(var3,"50%",YELLOW); } 키움에서 사용하는 수식 B = sum(if(C >= O*(1+A/100) or (C(1)*1.02<=H and C>=O) or (C(2)>O(2)*1.01 and C(1)>O(1)*1.01 and C>=O) , V, if(C <= O*(1-A/100) or (C < O and C(1)*1.03 <= H) or (C(1)*0.99>=C and C < O) or (C(1)*0.97>=L and C < O) or (H(1)*0.97 > C and O>C) , -V, 0))); D = valuewhen(1, date == 날짜 and date(1) != 날짜, B(1)); B - D E = B -D; F = highestsince(1, date == 날짜 and date(1) != 날짜, E); F/2
프로필 이미지
usaarmy
2017-07-23
109
글번호 111510
시스템
답변완료

안녕하세요?

안녕하세요? 분할청산 수식 문의 드립니다. 3계약을 진입한 상태에서 질문 드립니다. 잔고가 3계약일때 익절 +5틱(1계약) , +10틱(1계약) , +20틱(1계약) , 손절 -10틱(1계약), 손절 -15틱(1계약), 손절 -20틱(1계약) 잔고가 2계약일때 익절 +10틱(1계약) , +20틱(1계약) , 손절 -5틱(1계약) ,진입가(1계약) 잔고가 1계약일때 익절 +20틱(1계약) , 진입가(1계약) 매수,매도 청산식 부탁드립니다. 감사합니다.
프로필 이미지
상중하
2017-07-23
108
글번호 111509
시스템
답변완료

부탁 드립니다.

도움 주심에 경배로 감사 인사 드립니다. 질문1) 일시를 지정한 A,B,C, 세점을 연결한 선 등 첨부한 그림과 같이 부탁 드립니다. 질문2) 해선에서 p100으로 지정된 기간에 생성된 선이 길게 나타 날 경우 (당일을 초과하여 다음날로 연장될 경우) 06:00에는 정지하여 그선이 다음날(07:00 이후) 에는 나타나지 않게 가능 하겠는지요? (var13 != Hv3, var33 != hv3->를 사용하지 않는 수식으로) input : p100(30); var : HV1(0),HV2(0),HV3(0); var : HH1(0),HH2(0),HH3(0); var : LL1(0),LL2(0),LL3(0); HV1=NthHighest(1,v,p100); HV2=nthhighest(2,v,p100); HV3=nthhighest(3,v,p100); HH1=NthHighest(1,h,p100); HH2=nthhighest(2,h,p100); HH3=nthhighest(3,h,p100); LL1=NthLowest(1,L,P100); LL2=NTHLOWEST(2,L,P100); LL3=NTHLOWEST(3,L,P100); if Hv3 > 0 and v == Hv3 and ((Hh1 > 0 and h == Hh1) or (Hh2 > 0 and h == Hh2) or (Hh3 > 0 and h == Hh3)) Then{ Condition3 = true; var13 = H; } //if Condition3 == true and var13 != Hv3 Then // Condition3 = false; ######################################################### if Hv3 > 0 and v == Hv3 and ((LL1 > 0 and L == LL1) or (LL2 > 0 and L == LL2) or (LL3 > 0 and L == LL3)) Then{ Condition33 = true; var33 = L; } //if Condition33 == true and var33 != hv3 Then // Condition33 = false; ############################################ if Condition3 == true then{ plot3(var13,"H3",blue,def,0); } if Condition33 == true then{ plot33(var33,"L3",blue,def,0); }
프로필 이미지
yes
2017-07-23
166
글번호 111508
지표
답변완료

지표부탁드릴게요.

크루드오일 180분봉의 이평선 매매 --------------------------------------------------- 5,20,60일 이평선을 그린다. 60일이평선은 기울기를 색으로 표시한다. 1.추세선은 60이평의 기울기 색깔로 정한다. 빨강이면 매수기회포착 / 파랑이면 매도기회포착 대기중 2.추세선 기울기가 빨강선일때(매수기회포착) - 매수기회는 가격이 20일선 아래로 내려갔다가 20일선을 넘는 시점에 매수 돌파하는 시점에 점을 찍어주세요. (빨강) 소리 딸랑딸랑 넣어주세요. 3.추세선 기울기가 파랑선일때(매도기회포착) - 매도기회는 가격이 20일선 위로 갔다가 아래로 내려가는 바로 그지점에 매도 돌파하는 시점에 점을 찍어주세요. (파랑) 소리 딸랑딸랑 넣어주세요. 4.거래시간은 저녁9시~ 새벽2시까지 매매가능하게 해주세요. 5.저점으로 부터 봉의 꼭지가 6,7개 이면 위의 신호를 잡히지 않게해주세요. 6.손절은 50틱입니다. 익절200틱
프로필 이미지
알면다쳐
2017-07-22
173
글번호 111507
검색

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

프로필 이미지
렉쳐
2017-07-21
31
글번호 111506
지표
답변완료

문의 드립니다.

질문1) 아래 식처럼 강조색깔이 나타나는 녹색봉 밑에 data2(C)의 수치를 표현하려면 수식을 어떻게 작성해야 하는지 부탁드립니다. 아래처럼 하니까 Value1 자리에 문자열이나 문자열표현식이 와야 한다고 에러 메시지가 뜨네요. 수치를 문자로 바꿔서 해야 할 것같은데...... if data6(Bdate == Bdate[1] and H > HighD(0)[1]) Then { PlotPaintBar(H,l,"강조",BLUE); Value1 =data2(C) ; var1 = sdate; var2 = stime; var3 = H+0.1; Text1 = Text_New(var1,var2, var3, Value1 ); } 질문2) 개인주식 data2, 외인주식 data3 일 때 기관주식의 이전 5봉중 최고치를 H4의 수식으로 나타내려면 어떻게 해야 하는지 ........ 변수선언부터 잘 안되고 방법 좀 부탁드립니다. 추가로 기관주식의 현재봉 주식순매수 수량 - 3봉전 주식순매수 수량도 H5의 수식으로 부탁드립니다. var : H2(0,data2), H3(0,data3) , SUM(0,data? ; SUM = -( data2(c)+data3(c) ) ; H2 = data2(highest(C,5)[1]); H3 = data3(highest(C,5)[1]); H4 = H5 =
프로필 이미지
이심전심
2017-07-24
119
글번호 111504
강조
답변완료

수식문의

여러번 진입을 해서 한개가 아닌 여러개의 진입물량을 한거번에 청산하려고 합니다. if 조건문 then begin ExitLong("매수청산",atmarket); end ; 처럼 ExitLong("매수청산",atmarket); 을 쓰면 여러개의 매수진입물량을 한꺼 번에 청산할 수 있습니까? 또 아침에 7시 이후에 기존의 진입수량이 있는 상태에서 작동이 꺼진 시스템을 재가동하면 시스템 모니터의 진입수량과 실제 진입수량이 차이(미결제 잔고 수량)가 있습니다. 그래서 실제 진입수량만큼 청산되는 것이 아니고 시스템 모니터의 진입수량만큼만 청산되고 있습니다. 어떻게 해결해야 할 지 알려 주시기를 부탁드립니다. 위에서처럼 if 조건문 then begin ExitLong("매수청산",atmarket); end ; 하면 되는지요?
프로필 이미지
종호
2017-07-21
116
글번호 111502
시스템