커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

지표수식 부탁드립니다.

안녕하세요? 아래 조건에 맞는 지표수식 부탁드립니다. 차트 : 삼성전자 주식 지표식1 : RS(상보강도) = 삼성전자 주식 시가총액의 1개월(1주일)간의 상승률 / 코스피(또는 코스닥) 시가총액의 1개월(1주일)간의 상승률 지표식2 : RS(상보강도) = 삼성전자 주식 주가의 1개월(1주일)간의 상승률 / 코스피(또는 코스닥) 지수의 1개월(1주일)간의 상승률 도움 부탁드립니다. 감사합니다.
프로필 이미지
양치기
2021-06-27
2582
글번호 150305
지표
답변완료

지수누적

2019년 4월부터 그저께까지 다우종합 지수를 매일 누적(%)하여 어제의 다우종합 지수와 비교하여 얼마만큼 등락 했는지 수치로 알고 싶습니다. 분단위 보조챠트로 삽입하니 기간이 너무 길어 모두 표시되지 않아 텍스트 파일로 Print하여 매일 다우종합 지수를 날짜별로 고,저,시,종가를 파일로 만들어 두었습니다. 이 파일을 읽어 누적된 지수와 어제 지수를 비교하려고 Data Manager를 사용해서 읽어 보려 했는데, 가능한 방법인지 아니면 다른 방법이 있는지 조언 부탁드립니다. 가능하다면 자세한 방법 좀 알려주십시오.
프로필 이미지
와글이
2021-06-27
1653
글번호 150304
지표
답변완료

수정부탁드립니다

$,안녕하세요 아래식에서 첫파동 시작을 아래조건으로 수정하고 싶습니다, 1,장종료후 완성되지 않은 이전파동은 무시하고 초기화상태에서 익일 장시작후 첫파동의 고점과 저점라인을 Y축까지 그리기한다,(기존식은 전일장과 파동이 연결되어있음) 2,첫파동 고점의 대칭선을 위로2개 Y축까지 그리기한다 3,첫파동 저점의 대칭선을 아래로2개 Y축까지 그리기한다. 4,다른식은 그대로 유지한다. Input : af(0.02), maxAF(0.2); var : T(0),HH(0),LL(0),HD(0),HT(0),LD(0),LT(0),TL1(0),TL2(0),cnt(0),count(0); Array : TL11[50](0),TL22[50](0); var1 = CSar(af,maxAF); if bdate != bdate[1] then { value1 = 0; value2 = 0; for cnt = 1 to 49 { TL_Delete(TL11[cnt]); TL_Delete(TL22[cnt]); } } if crossup(c,var1) Then { T = 1; HH = H; HD = sdate; HT = stime; if LL > 0 Then if LD == sdate then { if value1 == 0 then { value1 = value1+1; value11 = LL[1]; TL11[value1] = TL_New(LD[1],LT[1],LL[1],sdate,stime,LL); TL_SetExtRight(TL11[value1],true); TL_SetSize(TL11[value1],2); TL_SetColor(tl11[value1],BLACK); TL_SetColor(tl1,GRAY); } if value1 > 0 and LL[1] < value11 then { value1 = value1+1; value11 = LL[1]; TL11[value1] = TL_New(LD[1],LT[1],LL[1],sdate,stime,LL); TL_SetExtRight(TL11[value1],true); TL_SetColor(tl1,GRAY); TL_SetStyle(TL11[value1],5); } } } if CrossDown(c,var1) Then { T = -1; LL = L; LD = sdate; LT = stime; if HH > 0 Then if HD[1] == sdate then { if value2 == 0 then { value2 = value2+1; value22 = HH[1]; TL22[value2] = TL_New(HD[1],HT[1],HH[1],sdate,stime,HH); TL_SetExtRight(TL22[value2],true); TL_SetSize(TL22[value2],2); TL_SetColor(tl22[value2],BLACK); TL_SetColor(tl1,GRAY); } if value2 > 0 and HH[1] > value22 then { value2 = value2+1; value22 = HH[1]; TL22[value2] = TL_New(HD[1],HT[1],HH[1],sdate,stime,HH); TL_SetExtRight(TL22[value2],true); TL_SetColor(tl2,GRAY); TL_SetStyle(TL22[value2],5); } } } if T == 1 then { if H > HH Then { HH = H; HD = sdate; HT = stime; } } if T == -1 then { if L < LL Then { LL = L; LD = sdate; LT = stime; } } 도움부탁드립니다.
프로필 이미지
크라켄
2021-06-27
1510
글번호 150303
지표
답변완료

수식전환 부탁드립니다.

아래 수식을 예스수식으로 전환부탁드립니다. CH = C+H+L; A_value = ma(CH, 9); MD=( abs(CH - A_value)+ abs(CH(1) -A_value)+ abs(CH(2) -A_value)+ abs(CH(3) -A_value)+ abs(CH(4) -A_value)+ abs(CH(5) -A_value)+ abs(CH(6) -A_value)+ abs(CH(7) -A_value)+ abs(CH(8) -A_value))/9; (CH - A_value) / (0.5*MD)
프로필 이미지
임진사댁원장
2021-06-27
1549
글번호 150302
지표
답변완료

부탁드립니다.

진입수식은 이걸로 기준으로 삼고 싶습니다. Input : Period1(20); value1 = c; value2 = ma(C, Period1); value3 = (DayHigh+DayLow)/2; # 매수/매도청산 If value1 > value2 and value1 > value3 Then { Buy(); } # 매도/매수청산 If value1 < value2 and value1 < value3 Then { Sell(); } 수식질문1) 진입시점 봉의 최저점을 기준으로 3번째 저점을 돌파 했을 때의 봉에 청산신호가 뜨게 하고 싶습니다. 반대로 매수도 진입봉의 최고점을 기준으로 3번째 고점 돌파 했을 때의 봉에 청산신호가 뜨게 하고 싶습니다. 사진에 자세히 표시해 뒀습니다.
프로필 이미지
Argo
2021-06-28
1625
글번호 150301
시스템
답변완료

지표카운트 부탁드립니다.

다른분이 만든 지표를 응용해서 지표를 만들려고합니다... Input:macd_short(12),macd_long(26),macd_period(9), sto_len(12),sto_len1(5),sto_len2(5), cci_period1(9),cci_period2(10),ma_period(10); Var : macd_val(0),macd_osc_v(0),sto_k(0),sto_d(0),cci_val(0),cci_sig(0); macd_val = MACD(macd_short, macd_long); macd_osc_v = ema(macd_val, macd_period); sto_k = StochasticsK(sto_len, sto_len1); sto_d = StochasticsD(sto_len, sto_len1, sto_len2); cci_val = CCI(cci_period1); cci_sig = ema(cci_val, cci_period2); 예를들어 분봉은 직접 속성에서 선택하고 지금은 3분봉을 기준으로 하겠습니다. 위 6가지 변수에서 1번조건 : macd_val > macd_osc_v , sto_k > sto_d ,cci_val > cci_sig 각각 조건을 충족할경우 카운팅해서 3분봉 위에 1.2.3등올 텍스트로 출력하고 싶습니다.. 2번 조건 : 반대일경우 macd_val > macd_osc_v , sto_k > sto_d ,cci_val > cci_sig 도 조 건을 충족할경우 카운팅해서 3분봉아래에 1.2.3 등으로 표시하고 싶습니다. 봉마다 조건을 충족하는 숫자가 위아래로 표시되는 형태입니다. 1번 조건이 2개 2번 조건이 1개 일경우 3분봉위 2, 아래1이 표시되는 형태입니다. 표시되는 텍스트의 크기를 선택할수있게 만들어 주시면 더 고맙겠습니다. 감사합니다.
프로필 이미지
미우
2021-06-26
1645
글번호 150300
지표
답변완료

전략합치는거 가능한가요?

참조 DATA가 많아지니 LAG 걱정때문에 전략을 10개 이상 굴리기가 쉽지 않네요... 전략합치는거 가능한가요? 예를들어 value1 = data1(MA(C,20)); value2 = data1(MA(C,60)); value3 = data2(MA(C2,20)); value4 = data2(MA(C2,60)); value5 = data3(MA(C3,20)); value6 = data3(MA(C3,60)); if crossup (value1,value2) then buy(); if crossup (value3,value4) then buy(); if crossup (value5,value6) then buy();
프로필 이미지
캣피쉬
2021-06-26
1361
글번호 150299
시스템
답변완료

수식도움 부탁드립니다.

아래의 수식에서 직전고점을 돌파한 상승파동(빨간색 파동선)의 신규고점을 카운팅하여 숫자를 빨간색으로 직전저점을 돌파한 하락파동(파란색 파동선)의 신규저점을 카운팅하여 숫자를 파란색으로 파란색파동의 고점에는 카운팅이 필요없습니다. 파란색파동에서는 직전저점을 돌파한 저점만 카운팅 1,3,5,7,9... 빨간색 파동의 저점에는 카운팅이 필요없습니다. 빨간색 파동에서는 직전고점을 돌파한 고점만 카운팅 1,3,5,7,9,.. 텍스트 출력하는 수식보완 도움부탁드립니다. 그림참조부탁드립니다. 아래수식... //===================================// Input:ChgRate(0.25),굵기(1),수치표시(1),추세선(1),크기(11); Var:TL1(0),TL2(0),TL3(0),TL4(0),TL2_exist(0),color(0), 종가사용여부(0), // 종가로 계산하려면 1로 설정한다. TL_NewBit(0), // 1:NewLine 2:SetEndLine slope(0),mid_idx(0),mid_val(0), j(0),k(0),q(0); Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime #==========================================# Value1 = ChgRateZigZag(ChgRate,종가사용여부,고,저,TL_NewBit); If Value1 == 1 Then { // 고점 If TL_NewBit == 1 Then { // 신규 If 고[2,1] < 고[1,1] Then { slope = (고[1,1] - 저[1,1]) / (고[1,2] - 저[1,2]); mid_idx = Floor((고[2,1] - 저[1,1]) / slope); mid_val = slope * mid_idx + 저[1,1]; Var1 = Index - (저[1,2] + mid_idx); TL1 = TL_New(저[1,3],저[1,4],저[1,1],sDate[Var1],sTime[Var1],mid_val); TL2 = TL_New(sDate[Var1],sTime[Var1],mid_val,고[1,3],고[1,4],고[1,1]); Var2 = Index - 저[1,2]; TL_SetColor(TL1,color[Var2]); color = RED; TL_SetColor(TL2,color); TL2_exist = 1; } Else { TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]); TL_SetColor(TL1,color); TL2_exist = 0; } } If TL_NewBit == 2 Then { // 연장 TL_Delete(TL1); If TL2_exist == 1 Then TL_Delete(TL2); If 고[2,1] < 고[1,1] Then { slope = (고[1,1] - 저[1,1]) / (고[1,2] - 저[1,2]); mid_idx = Floor((고[2,1] - 저[1,1]) / slope); mid_val = slope * mid_idx + 저[1,1]; Var1 = Index - (저[1,2] + mid_idx); TL1 = TL_New(저[1,3],저[1,4],저[1,1],sDate[Var1],sTime[Var1],mid_val); TL2 = TL_New(sDate[Var1],sTime[Var1],mid_val,고[1,3],고[1,4],고[1,1]); Var2 = Index - 저[1,2]; TL_SetColor(TL1,color[Var2]); color = RED; TL_SetColor(TL2,color); TL2_exist = 1; } Else { TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]); TL_SetColor(TL1,color); TL2_exist = 0; } } } Else If Value1 == -1 Then { // 저점 If TL_NewBit == 1 Then { // 신규 If 저[2,1] > 저[1,1] Then { slope = (저[1,1] - 고[1,1]) / (저[1,2] - 고[1,2]); mid_idx = Floor((저[2,1] - 고[1,1]) / slope); mid_val = slope * mid_idx + 고[1,1]; Var1 = Index - (고[1,2] + mid_idx); TL1 = TL_New(고[1,3],고[1,4],고[1,1],sDate[Var1],sTime[Var1],mid_val); TL2 = TL_New(sDate[Var1],sTime[Var1],mid_val,저[1,3],저[1,4],저[1,1]); Var2 = Index - 고[1,2]; TL_SetColor(TL1,color[Var2]); color = BLUE; TL_SetColor(TL2,color); TL2_exist = 1; } Else { TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]); TL_SetColor(TL1,color); TL2_exist = 0; } } If TL_NewBit == 2 Then { // 연장 TL_Delete(TL1); If TL2_exist == 1 Then TL_Delete(TL2); If 저[2,1] > 저[1,1] Then { slope = (저[1,1] - 고[1,1]) / (저[1,2] - 고[1,2]); mid_idx = Floor((저[2,1] - 고[1,1]) / slope); mid_val = slope * mid_idx + 고[1,1]; Var1 = Index - (고[1,2] + mid_idx); TL1 = TL_New(고[1,3],고[1,4],고[1,1],sDate[Var1],sTime[Var1],mid_val); TL2 = TL_New(sDate[Var1],sTime[Var1],mid_val,저[1,3],저[1,4],저[1,1]); Var2 = Index - 고[1,2]; TL_SetColor(TL1,color[Var2]); color = BLUE; TL_SetColor(TL2,color); TL2_exist = 1; } Else { TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]); TL_SetColor(TL1,color); TL2_exist = 0; } } } TL_SetSize(TL1,굵기); TL_SetSize(TL2,굵기); // if 추세선 == 1 Then { If Value1 == 1 Then { // 고점 If TL_NewBit == 1 Then { // 신규 고점 k = 0; For j = 2 To 10 { If 저[1,1] > 저[j,1] and 저[j,1] > 0 Then { // 전저점보다 낮은 이전 전저점 찾는다 k = j; j = 10; // exit loop } } If k > 1 Then { // 낮은 전저점이 찾아졌다면 TL3 = TL_New(저[k,3],저[k,4],저[k,1],sDate,sTime,(저[1,1]-저[k,1])/(저[1,2]-저[k,2])*(Index-저[k,2])+저[k,1]); TL_SetColor(TL3,rgb(255,187,0)); } q = q + 1; // 고점이 새로 추가되었으므로 1 증가 If q > 2 and q <= 10 Then { // 1 증가했으니 2보다 커야 하고 배열 크기가 10이므로 10 이내 TL_SetEnd(TL4,sDate,sTime,(고[2,1]-고[q,1])/(고[2,2]-고[q,2])*(Index-고[q,2])+고[q,1]); } } Else { // 신규 고점이 아니면 기존 추세선만 연장 If k > 1 Then { TL_SetEnd(TL3,sDate,sTime,(저[1,1]-저[k,1])/(저[1,2]-저[k,2])*(Index-저[k,2])+저[k,1]); } If q > 2 and q <= 10 Then { TL_SetEnd(TL4,sDate,sTime,(고[2,1]-고[q,1])/(고[2,2]-고[q,2])*(Index-고[q,2])+고[q,1]); } } } Else If Value1 == -1 Then { // 저점 If TL_NewBit == 1 Then { // 신규 저점 k = k + 1; // 저점이 새로 추가되었으므로 1 증가 If k > 2 and k <= 10 Then { // 1 증가했으니 2보다 커야 하고 배열의 크기가 10이므로 10 이내 TL_SetEnd(TL3,sDate,sTime,(저[2,1]-저[k,1])/(저[2,2]-저[k,2])*(Index-저[k,2])+저[k,1]); } q = 0; For j = 2 To 10 { If 고[1,1] < 고[j,1] Then { // 전고점보다 높은 이전 전고점을 찾는다 q = j; j = 10; // exit loop } } If q > 1 Then { // 높은 전고점이 찾아졌다면 TL4 = TL_New(고[q,3],고[q,4],고[q,1],sDate,sTime,(고[1,1]-고[q,1])/(고[1,2]-고[q,2])*(Index-고[q,2])+고[q,1]); TL_SetColor(TL4,cyan); } } Else { // 신규 저점이 아니면 기존 추세선만 연장 If k > 2 and k <= 10 Then { TL_SetEnd(TL3,sDate,sTime,(저[2,1]-저[k,1])/(저[2,2]-저[k,2])*(Index-저[k,2])+저[k,1]); } If q > 1 Then { TL_SetEnd(TL4,sDate,sTime,(고[1,1]-고[q,1])/(고[1,2]-고[q,2])*(Index-고[q,2])+고[q,1]); } } } } //======================================================================// var : Tx(0); if 수치표시 == 1 Then { if value1 == 1 Then { if value1[1] == -1 Then { Tx = Text_New(고[1,3],고[1,4],고[1,1],NumToStr(고[1,1],2)+"("+NumToStr(고[1,1]-저[1,1],2)+", " +NumToStr((고[1,1]-저[1,1])/(고[2,1]-저[1,1])*100,0)+"%"+")"); Text_SetStyle(tx,2,1); } Else { Text_SetString(tx,NumToStr(고[1,1],2)+"("+NumToStr(고[1,1]-저[1,1],2)+", " +NumToStr((고[1,1]-저[1,1])/(고[2,1]-저[1,1])*100,0)+"%"+")"); Text_SetLocation(tx,고[1,3],고[1,4],고[1,1]); } } if value1 == -1 Then { if value1[1] == 1 Then { Tx = Text_New(저[1,3],저[1,4],저[1,1],NumToStr(저[1,1],2)+"("+NumToStr(고[1,1]-저[1,1],2)+", " +NumToStr((고[1,1]-저[1,1])/(고[1,1]-저[2,1])*100,0)+"%"+")"); Text_SetStyle(tx,2,0); } Else { Text_SetString(tx,NumToStr(저[1,1],2)+"("+NumToStr(고[1,1]-저[1,1],2)+", " +NumToStr((고[1,1]-저[1,1])/(고[1,1]-저[2,1])*100,0)+"%"+")"); Text_SetLocation(tx,저[1,3],저[1,4],저[1,1]); } } Text_SetSize(Tx,크기); Text_SetColor(tx,white); }
프로필 이미지
당일선물
2021-06-26
1769
글번호 150298
지표
답변완료

수식 부탁 드립니다.

관리자님, 수식 부탁 드립니다. 1) if c>ma(c,60) then buy(); 2) if crossdown(c,ma(c,60)) then exitlong(); 3) 추가로 이전 1봉과 현재의 2봉을중에서 주가가 최고점대비 10% 하락시 그시점에 매도 4) 추가가 현재의 1봉에서 주가가 최고점대비 10% 하락시 그시점에 매도 에서 시그날이 들어 오면 지체없이 바로 매수/매도 하도록 수식 부탁 드립니다.
프로필 이미지
회원
2021-06-25
1350
글번호 150297
시스템