커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

고저점신호

안녕하세요 아래의 수식에서 Highest(고점의 첫음봉 에서 매도 신호)와 Lowest 저점의 첫 양봉에서 매수 신호가 나오게 부탁드립니다. 그리고 매도 매수 신호발생 후 20틱에 청산신호 나오도록 부탁드립니다. input : 기간(30),k(0.0002); var1 = Highest(H,기간)*(1+k); var2 = Highest(H,기간); var3 = Lowest(L,기간)*(1+k); var4 = Lowest(L,기간); plot1(var1); plot2(var2); plot3(var3); plot4(var4);
프로필 이미지
알리섬
2019-01-05
211
글번호 124996
시스템

무한상인 님에 의해서 삭제되었습니다.

프로필 이미지
무한상인
2019-01-05
15
글번호 124995
시스템
답변완료

안녕하세요

안녕 하세요. 아래 지표식에서 중간 추세선은(( // )) 으로 인식 못하게 했는데요. 아레지표식에서 고점과 고점을 연결한 선 저점과저점을 쭈욱그은 선에 색상을 넣을수 있는지 궁금 합니다. 가능 하다면 고점과 고점선을 이은선은 파랑색으로 굵기 1 저점과 저점을 이은 선은 노랑색 굵기 1 로 나오도록 부탁을 드립니다. 그리고 차트에 수치를 나오게 하는 수식부분에 주석을 좀 부탁드립니다.^^ 매번 도움 주셔서 감사드립니다. input:barCnt(5); Var:j(0),turnPntBit(""),TL1(0),TL33(0),TL44(0),HD(0),HT(0),LD(0),LT(0),HH(0),LL(0); var : TL121(0),TL122(0),tx121(0),tx122(0); Array:valArr[10](0),barArr[10](0),turnPntArr[10](""); // 봉이 새로 생겼으므로 봉개수 관리하는 변수들의 봉개수 값 1씩 증가 For j = 0 To 9 { barArr[j] = barArr[j] + 1; } // 고점조건 = 5-1-5에서 가운데 고가가 좌측 5봉과 우측 5봉 고가보다 높다 // 저점조건 = 5-1-5에서 가운데 저가가 좌측 5봉과 우측 5봉 저가보다 낮다 Condition1 = Highest(H,barCnt)[barCnt+1] <= H[barCnt] and H[barCnt] > Highest(H,barCnt); Condition2 = Lowest(L,barCnt)[barCnt+1] >= L[barCnt] and L[barCnt] < Lowest(L,barCnt); // 전환점구분 null값으로 초기화; // if 고점조건, 저점조건 동시 만족시 then // if 이전 고점,저점 범위를 모두 벗어났을 때 // 전환점구분 = 고저점; // else if 이전 고점을 갱신했다면 전환점구분 = 고점; // else if 이전 저점을 갱신했다면 전환점구분 = 저점; // else if 전환점배열의 현재(배열상 1번째)값이 고점이면 전환점구분 = 저점; // else if 전환점배열의 현재 값이 저점이면 전환점구분 = 고점; // else if 고점조건 만족하면 전환점구분 = 고점; // else if 저점조건 만족하면 전환전구분 = 저점; turnPntBit = ""; If Condition1 and Condition2 Then { If Max(valArr[1],valArr[2]) < H[barCnt] and Min(valArr[1],valArr[2]) > L[barCnt] Then turnPntBit = "HiLo"; Else If Max(valArr[1],valArr[2]) < H[barCnt] Then turnPntBit = "Hi"; Else If Min(valArr[1],valArr[2]) > L[barCnt] Then turnPntBit = "Lo"; Else 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 전환점구분에 값이 있을 때만 아래 실행, 없으면 통과 If turnPntBit <> "" Then { // if 전환점구분이 고저점이면 then // 이전 파동은 연장시키고 아래에서 새로이 파동선을 추가토록 한다. If turnPntBit == "HiLo" Then { valArr[1] = IFF(turnPntArr[1] == "Hi",H[barCnt],L[barCnt]); barArr[1] = barCnt; TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]); If turnPntArr[1] == "Hi" Then turnPntBit = "Lo"; Else turnPntBit = "Hi"; } // if 신규 전환점구분이 현재(전환점배열 1번째)와 다르면 then // 배열값들을 이전값으로 Move; If turnPntBit <> turnPntArr[1] Then { for j = 8 downto 1 { valArr[j+1] = valArr[j]; barArr[j+1] = barArr[j]; turnPntArr[j+1] = turnPntArr[j]; } } // if 전환점구분이 바뀌었거나 또는 // (전환점구분은 안바뀌었는데 // (이전 고점보다 높은 고점이 발생했거나 또는 // 이전 저점보다 낮은 저점이 발생했으면)) then If turnPntBit <> turnPntArr[1] or (turnPntBit == turnPntArr[1] and ((turnPntBit == "Hi" and valArr[1] < H[barCnt]) or (turnPntBit == "Lo" and valArr[1] > L[barCnt]))) Then { // 값 배열에는 고점 또는 저점을 대입; // 봉개수 배열에는 입력변수의 봉개수 대입; // 전환점 배열에 전환점구분값을 대입; valArr[1] = IFF(turnPntBit == "Hi",H[barCnt],L[barCnt]); barArr[1] = barCnt; turnPntArr[1] = turnPntBit; // if 이전봉대비 전환점구분이 바뀌었다면 추세선 새로 그리고; // else 전환점구분이 안바뀌었으면 값만 바뀐거므로 추세선 연장; // 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,0); // TL_SetColor(TL1,GREEN); var : TL11(0),TL12(0); if turnPntArr[1][0] == "Hi" Then { TL_delete(TL12); TL_Delete(TL11); TL11 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[1],sDate[barArr[1]],sTime[barArr[1]],valArr[1]); TL_SetExtRight(TL11,true); TL_SetColor(TL11,BLUE); TL_SetSize(TL11,3); TL_Delete(TL121); var1 = valArr[1]-abs(valArr[1]-valArr[2])*0.382; var2 = valArr[1]-abs(valArr[1]-valArr[2])*0.618; TL_SetExtRight(TL121,true); TL_SetColor(TL121,GREEN); TL_SetSize(TL121,1); TL_Delete(TL122); TL_SetExtRight(TL122,true); TL_SetColor(TL122,GREEN); TL_SetSize(TL122,1); Text_Delete(tx121); Text_Delete(tx122); tx121 = Text_New(sdate,stime,var1,NumToStr(var1,2)); tx122 = Text_New(sdate,stime,var2,NumToStr(var2,2)); } if turnPntArr[1][0] == "Lo" Then { TL_delete(TL11); TL_Delete(TL12); TL12 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[1],sDate[barArr[1]],sTime[barArr[1]],valArr[1]); TL_SetExtRight(TL12,true); TL_SetColor(TL12,RED); TL_SetSize(TL12,3); TL_Delete(TL121); var1 = valArr[1]+abs(valArr[1]-valArr[2])*0.382; var2 = valArr[1]+abs(valArr[1]-valArr[2])*0.618; TL_SetExtRight(TL121,true); TL_SetColor(TL121,GREEN); TL_SetSize(TL121,1); TL_Delete(TL122); TL_SetExtRight(TL122,true); TL_SetColor(TL122,GREEN); TL_SetSize(TL122,1); Text_Delete(tx121); Text_Delete(tx122); tx121 = Text_New(sdate,stime,var1,NumToStr(var1,2)); tx122 = Text_New(sdate,stime,var2,NumToStr(var2,2)); } if bdate != BDate[1] Then{ HD = sdate; HT = stime; LD = sdate; LT = stime; HH = H; LL = L; } if H > HH Then{ HH = H; HD = sdate; HT = stime; } TL_Delete(TL33); if turnPntArr[1][0] == "Hi" Then{ TL33 = TL_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1],HD,HT,dayhigh); } if turnPntArr[1][0] == "Lo" Then{ TL33 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],HD,HT,dayhigh); } TL_SetExtRight(TL33,true); if L < LL Then{ LL = L; LD = sdate; LT = stime; } TL_Delete(TL44); if turnPntArr[1][0] == "Hi" Then{ TL44 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],LD,LT,daylow); } if turnPntArr[1][0] == "Lo" Then{ TL44 = TL_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1],LD,LT,daylow); } TL_SetExtRight(TL44,true); Text_SetLocation(Tx121,sdate,stime,Text_GetValue(Tx121)); Text_SetLocation(Tx122,sdate,stime,Text_GetValue(Tx122)); Text_SetStyle(tx121,0,1); Text_SetStyle(tx122,0,1);
프로필 이미지
천년의사랑
2019-01-06
261
글번호 124994
지표
답변완료

지표식 문의 드립니다

현재가와 5일평균 가격의 가격 차이를 백분율로 그래프로 만들고 싶습니다. 부탁 드립니다
프로필 이미지
하나일
2019-01-05
224
글번호 124993
지표
답변완료

문의드립니다.

늘 감사합니다. 일봉에서 몸통의길이(시가과 종가의 범위)가 3%이상이이고, 아래꼬리가 몸통보다 2배 이상 큰 봉발생시 매수진입 손절 : 매수진입봉의 저가를 이탈하하는 봉완성시 손절 익절1 : 5% 이상 상승후 4% 하락시 익절2 : 5% 수익보존
프로필 이미지
하늘북
2019-01-05
218
글번호 124992
시스템
답변완료

부탁 드립니다.

도움주심에 감사 드립니다. 첨부 그림과 같이 부탁 드립니다. input:수평기준_상(0.002),수평기준_하(-0.002),sig(5); var1=ma(trix(10),sig); var2=ma(trix(15),sig); var3=ma(trix(20),sig); var4=ma(trix(25),sig); var5=ma(trix(30),sig); var51=수평기준_상; var52=수평기준_하; var53=0; if var1>var1[1] then plot1(var1,"p1_histo",red,def,2); else plot1(var1,"p1_histo",black,def,2); if var2>var2[1] then plot2(var2,"p2_histo",red,def,0); else plot2(var2,"p2_histo",black,def,0); if var3>var3[1] then plot3(var3,"p3_histo",red,def,0); else plot3(var3,"p3_histo",black,def,0); if var4>var4[1] then plot4(var4,"p4_histo",red,def,0); else plot4(var4,"p4_histo",black,def,0); if var5>var5[1] then plot5(var5,"p5_histo",red,def,0); else plot5(var5,"p5_histo",black,def,0); PlotBaseLine1(var51); PlotBaseLine2(var52); PlotBaseLine3(var53);
프로필 이미지
yes
2019-01-06
233
글번호 124991
시스템
답변완료

수식 문의드립니다

안녕하세요! 새해복 많이 받으시고, 건강하세요!!!
프로필 이미지
금보
2019-01-06
201
글번호 124990
시스템
답변완료

수식

늘 감사합니다. 텍스트식입니다. 해외선물 기준입니다. 1. data1과 data2의 각각 당일 고가 - 저가 틱수로 환산, 당일 고가 - 시가 틱수로 환산, 당일 저가 - 시가 틱수로 환산, 위치는 상단. 2. data1과 data2의 5일전 기준 각각 당일시가 - 5일전 고가 틱수로 환산, 당일시가 - 5일전 저가 틱수로 환산, 위치는 상단. 감사합니다.
프로필 이미지
상암동
2019-01-05
242
글번호 124989
지표
답변완료

수정 의뢰드립니다!

안녕하세요! 예스 수식을 수정하고 싶습니다! --------------------------------------------------------------------------------- 피보나치에 녹색 파동선을 빼주시고 피보나치선에 피보나치 비율과 가격이 나타나도록 수정해 주세요! Input:length(10),기준일(20110101),파동선두께(2); Var:j(0),jj(0),jjj(0),최종고가(0),최종저가(0),최종변곡점(""),처리구분(""), TL1(0); Array:고[5,4](0),저[5,4](0), // 1:가격, 2:Index, 3:sDate, 4:sTime 역사적고점[5](0),역사적저점[5](0); // 1:가격, 2:Index, 3:sDate, 4:sTime #==========================================# If Index == 0 Then { 고[1,1] = H; 저[1,1] = L; } Condition1 = Highest(H,length) == H and 최종고가 <> H; Condition2 = Lowest (L,length) == L and 최종저가 <> L; 처리구분 = ""; If Condition1 and Condition2 Then // 기간고점과 기간저점 동시 발생 { If 최종변곡점 == "저점" Then 처리구분 = "고점처리"; // 저 - 고 순으로 처리 Else 처리구분 = "저점처리"; // 고 - 저 순으로 처리 } Else If Condition1 Then 처리구분 = "고점처리"; Else If Condition2 Then 처리구분 = "저점처리"; #==========================================# If 처리구분 == "고점처리" Then { 최종고가 = H; // 신규고점을 체크하기 위해 저장 If 최종변곡점 == "저점" Then { For j = 5 DownTo 2 { For jj = 1 To 4 { 고[j,jj] = 고[j-1,jj]; } } 고[1,1] = H; 고[1,2] = Index; 고[1,3] = sDate; 고[1,4] = sTime; TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]); TL_SetSize(TL1,파동선두께); TL_SetColor(TL1,GREEN); } Else If 고[1,1] < H Then // 1번 고점보다 높은 고가 출현 { 고[1,1] = H; 고[1,2] = Index; 고[1,3] = sDate; 고[1,4] = sTime; TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]); } If 기준일 <= Date and 역사적고점[1] < 고[1,1] Then { For jjj = 1 To 4 // 1:가격, 2:Index, 3:sDate, 4:sTime { 역사적고점[jjj] = 고[1,jjj]; } } 최종변곡점 = "고점"; } #==========================================# If 처리구분 == "저점처리" Then { 최종저가 = L; If 최종변곡점 == "고점" then { For j = 5 DownTo 2 { For jj = 1 To 4 { 저[j,jj] = 저[j-1,jj]; } } 저[1,1] = L; 저[1,2] = Index; 저[1,3] = sDate; 저[1,4] = sTime; TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]); TL_SetSize(TL1,파동선두께); TL_SetColor(TL1,GREEN); } Else If 저[1,1] > L then { 저[1,1] = L; 저[1,3] = sDate; 저[1,4] = sTime; 저[1,2] = Index; TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]); } If 기준일 <= Date and ( 역사적저점[1] > 저[1,1] or 역사적저점[1] == 0 ) Then { For jjj = 1 To 4 { 역사적저점[jjj] = 저[1,jjj]; 역사적고점[jjj] = 0; // 역사적 고점 초기화 } } 최종변곡점 = "저점"; } #==========================================# Var:기울기(0); Array:fr[7,4](0); // 1:비율, 2:값, 3:라인번호, 4:텍스트번호 If Index == 0 Then { fr[1,1] = 0; fr[2,1] = 0.236; fr[3,1] = 0.382; fr[4,1] = 0.50; fr[5,1] = 0.618; fr[6,1] = 0.764; fr[7,1] = 1; } If 역사적고점[1] > 0 and 역사적저점[1] > 0 Then { If 역사적고점[1][1] != 역사적고점[1] or 역사적저점[1][1] != 역사적저점[1] Then { 기울기 = (역사적고점[1] - 역사적저점[1]) / (역사적고점[2] - 역사적저점[2]); for j = 1 to 7 { If fr[j,3] > 0 Then TL_Delete(fr[j,3]); // 기존의 라인은 지우고 fr[j,2] = 기울기 * fr[j,1] * (index - 역사적저점[2]) + 역사적저점[1]; // 피보나치 비율을 곱해서 계산 fr[j,3] = TL_New(역사적저점[3],역사적저점[4],역사적저점[1],sDate,sTime,fr[j,2]); // 라인을 생성 } } Else { for j = 1 to 7 { fr[j,2] = 기울기 * fr[j,1] * (index - 역사적저점[2]) + 역사적저점[1]; TL_SetEnd(fr[j,3],sDate,sTime,fr[j,2]); } } } ---------------------------------------------------------------------------- <수정요청> 아래 수식은 항생에 적용하던 양방향 대칭 피보나치 입니다! 몇가지 내용을 수정보강하고 싶습니다. 1. 국선 장시작시 시가기준 반대편 고점이나 저점에 맞게 반대편도 대칭피보나치 비율숫자와 가격이 선에 표시되게 만들어 주세요! (즉, 시가 기준 장이 위로 상승하면 시가0% ~ 최고가100% 까지 피보나치 비율선이 반대편 시가 아래에도 동일하게 나타나게 해주세요! ) 2. 볼린저밴드 표시는 필요하지 않습니다. 3. 해외선물도 적용할 수 있도록 수정해 주세요! 감사합니다! Input : Period(20), Dv(2); var : BBup(0),BBdn(0); BBup = BollBandUp(Period,Dv); BBdn = BollBandDown(Period,Dv); if (sdate != sdate[1] and stime >= 101500) or (sdate == sdate[1] and stime >= 101500 and stime[1] < 101500) Then { var1 = O; var2 = BBup[1]-BBdn[1]; value1 = var1+var2; value2 = var1-var2; } plot1(value1); plot2(value1-var2*0.236); plot3(value1-var2*0.382); plot4(value1-var2*0.500); plot5(value1-var2*0.618); plot6(var1); plot7(value2+var2*0.618); plot8(value2+var2*0.500); plot9(value2+var2*0.382); plot10(value2+var2*0.236); plot11(value2); -------------------------------------------------------------------------------- 아래 피보나치 수식에 가격과 비율이 나타나게 수정하고 싶습니다. var1 = dayhigh(1); var2 = daylow(1); var3 = var1-var2; Var4 = Var2-Var1; Plot1(var1,"전일고점"); Plot2(var2,"전일저점"); Plot3(var1-var3*0.236); Plot4(var1-var3*0.382); plot5(var1-var3*0.5); Plot6(var1-var3*0.618); Plot7(var1-var3*0.736); plot8(var1-var3*1.236); Plot9(var1-var3*1.382); plot10(var1-var3*1.5); Plot11(var1-var3*1.618); Plot12(var1-var3*1.736); Plot13(var1-var3*2.0); plot14(var1-var3*2.236); Plot15(var1-var3*2.382); plot16(var1-var3*2.5); Plot17(var1-var3*2.618); Plot18(var1-var3*2.736); Plot19(var1-var3*3.0); plot20(var1-var3*3.236); Plot21(var1-var3*3.382); plot22(var1-var3*3.5); Plot23(var1-var3*3.618); Plot24(var1-var3*3.736); Plot25(var1-var3*4.0); Plot26(Var1+var3*0.236); Plot27(Var1+var3*0.382); plot28(Var1+var3*0.5); Plot29(Var1+var3*0.618); Plot30(Var1+var3*0.736); Plot31(var1+var3*1.0); plot32(Var1+var3*1.236); Plot33(Var1+var3*1.382); plot34(Var1+var3*1.5); Plot35(Var1+var3*1.618); Plot36(Var1+var3*1.736); Plot37(Var1+var3*2.0); plot38(Var1+var3*2.236); Plot39(Var1+var3*2.382); plot40(Var1+var3*2.5); Plot41(Var1+var3*2.618); Plot42(Var1+var3*2.736); Plot43(Var1+var3*3.0); plot44(Var1+var3*3.236); Plot45(Var1+var3*3.382); plot46(Var1+var3*3.5); Plot47(Var1+var3*3.618); Plot48(Var1+var3*3.736); Plot49(Var1+var3*3.0);
프로필 이미지
qha71
2019-01-05
317
글번호 124987
지표