커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

깜피 님에 의해서 삭제되었습니다.

프로필 이미지
깜피
2017-11-18
17
글번호 114293
지표
답변완료

부탁 드립니다,

도움주심에 감사 드립니다. 55436번에서 답변해 주신것을 실행결과 x(100)으로 지정한봉수 이후에만 계산하길 원합니다. 그런데 점을찍는 위치가 그 이전에도 결과가 나타나고 있어 오직 x(100)으로 지정한 위치 이후에만 계산하고 점도 x(100)으로 지정한 위치 이후에만 찍히길 원합니다. 미리 감사 드립니다. input : Price(1.3), Per(10),N(3),X(100); var : cnt(0),cnt1(0),cnt2(0),idx(0); Array : VV[50](0); Array : OTL[50](0),HTL[50](0),LTL[50](0),CTL[50](0); Array : OTx[50](0),HTx[50](0),LTx[50](0),CTx[50](0),TX[50](0); idx = idx+1; for cnt = 1 to 49{ VV[cnt] = 0; } if index > X then{ //차트전체 X번째 봉부터 계산 #N개값 출력 for cnt1 = 1 to N{ #차트 과거봉 전체 스캔 for cnt2 = 1 to idx{ #Price대비 +- Per%안에 종가가 형성된 if C[cnt2] <= Price*(1+Per/100) and C[cnt2] >= Price*(1-Per/100) and V[cnt2] > VV[cnt1] and (cnt1 == 1 or (cnt1 >= 2 and V[cnt2] < VV[cnt1-1])) Then{ VV[cnt1] = V[cnt2]; #거래량순 상위 cnt1번째 값추세선 출력 #종가선 TL_Delete(CTL[cnt1]); CTL[cnt1] = TL_New(Sdate[cnt2],stime[cnt2],C[cnt2],sdate,stime,C[cnt2]); TL_SetExtLeft(CTL[cnt1],true); TL_SetExtRight(CTL[cnt1],true); #거래량순 상위 cnt1번째 값텍스트 출력 #종가선값 Text_Delete(CTx[cnt1]); // CTx[cnt1] = Text_New(sdate,stime,C[cnt2],"상위"+NumToStr(cnt1,0)+"번째봉 종가:"+NumToStr(C[cnt2],0)); Text_SetStyle(CTx[cnt1],0,0); #점출력 Text_Delete(Tx[cnt1]); Tx[cnt1] = Text_New(sdate[cnt2],stime[cnt2],C[cnt2],"●"+NumToStr(cnt1,0)); Text_SetStyle(Tx[cnt1],2,2); } } } }
프로필 이미지
yes
2017-11-18
162
글번호 114292
지표

퀀텀프로 님에 의해서 삭제되었습니다.

프로필 이미지
퀀텀프로
2017-11-18
0
글번호 114291
시스템
답변완료

또 문의드립니다.

이번것도 종목데이터가 없다는 에러가 나옵니다.. 저는 워낙 몰라 어떻게 해야할지 모르겠습니다. 암튼 문제없게 수정 부탁드립니다. Input:상승률(0.12),하락률(0.12); Var:j(0),상승(100,data1),하락(-100,data1),양방향(2,data1),색깔(0,data1),파랑(-1,data1),빨강(1,data1), 기준고(0,data1),기준저(0,data1),기준고Bar(0,data1),기준저Bar(0,data1),추세(0,data1),이중파동(0,data1); Array:고[20](0),저[20](0),고Bar[20](0),저Bar[20](0); Input:상승률D(0.12),하락률D(0.12); Var:jj(0),상승D(100,data2),하락D(-100,data2),양방향D(2,data2),색깔D(0,data2),파랑D(-1,data2),빨강D(1,data2), 기준고D(0,data2),기준저D(0,data2),기준고BarD(0,data2),기준저BarD(0,data2),추세D(0,data2),이중파동D(0,data2); Array:고D[20](0,data2),저D[20](0,data2),고BarD[20](0,data2),저BarD[20](0,data2); #################Data1 #==========================================# # 전고점,전저점 index 증가 #==========================================# For j = 1 To 19 { 저Bar[j] = 저Bar[j] + 1; 고Bar[j] = 고Bar[j] + 1; } #==========================================# # 이중파동 처리 #==========================================# If 이중파동 > 0 Then { 이중파동 = 0; } #==========================================# # 최근 고,저 갱신 #==========================================# If 기준고 <= data1(H) || 기준고 == 0 || IsNaN(기준고) == True Then { 기준고 = data1(H); 기준고Bar = 0; } Else 기준고Bar = 기준고Bar + 1; If 기준저 >= data1(L) || 기준저 == 0 || IsNaN(기준저) == True Then { 기준저 = data1(L); 기준저Bar = 0; } Else 기준저Bar = 기준저Bar + 1; #==========================================# # 추세방향 결정 #==========================================# If 기준고 * (1 - (하락률/100)) > data1(H) && 기준저 * (1 + (상승률/100)) < data1(L) Then { 추세 = Iff(기준고Bar==기준저Bar,양방향,Iff(기준고Bar>기준저Bar,상승,하락)); } Else If 기준고 * (1 - (하락률/100)) > data1(H) Then 추세 = 하락; Else If 기준저 * (1 + (상승률/100)) < data1(L) Then 추세 = 상승; #==========================================# # 추세변화에 따른 변곡점 처리 #==========================================# If 추세[1] == 상승 && 추세 == 하락 Then { For j = 18 DownTo 1 { 고[j+1] = 고[j]; 고Bar[j+1] = 고Bar[j]; } 고[1] = 기준고; 고Bar[1] = 기준고Bar; 기준고 = data1(H); 기준고Bar = 0; 기준저 = data1(L); 기준저Bar = 0; If 고[2] < 고[1] Then 색깔 = 빨강 ; If 이중파동[1] > 0 Then 이중파동 = 고[1]; } If 추세[1] == 하락 && 추세 == 하락 && 고[1] < 기준고 && 기준고 * (1 - (하락률/100)) > data1(H) Then { For j = 18 DownTo 1 { 고[j+1] = 고[j]; 고Bar[j+1] = 고Bar[j]; 저[j+1] = 저[j]; 저Bar[j+1] = 저Bar[j]; } 고[1] = 기준고; 고Bar[1] = 기준고Bar; 저[1] = 기준저; 저Bar[1] = 기준저Bar; 기준고 = data1(H); 기준고Bar = 0; 기준저 = data1(L); 기준저Bar = 0; If 저[2] > 저[1] Then 색깔 = 파랑; If 고[2] < 고[1] Then 색깔 = 빨강; 이중파동 = 고[1]; } If 추세[1] == 하락 && 추세 == 상승 Then { For j = 18 DownTo 1 { 저[j+1] = 저[j]; 저Bar[j+1] = 저Bar[j]; } 저[1] = 기준저; 저Bar[1] = 기준저Bar; 기준저 = data1(L); 기준저Bar = 0; 기준고 = data1(H); 기준고Bar = 0; If 저[2] > 저[1] Then 색깔 = 파랑; If 이중파동[1] > 0 Then 이중파동 = 저[1]; } If 추세[1] == 상승 && 추세 == 상승 && 저[1] > 기준저 && 기준저 * (1 + (상승률/100)) < data1(L) Then { For j = 18 DownTo 1 { 고[j+1] = 고[j]; 고Bar[j+1] = 고Bar[j]; 저[j+1] = 저[j]; 저Bar[j+1] = 저Bar[j]; } 고[1] = 기준고; 고Bar[1] = 기준고Bar; 저[1] = 기준저; 저Bar[1] = 기준저Bar; 기준저 = data1(L); 기준저Bar = 0; 기준고 = data1(H); 기준고Bar = 0; If 고[2] < 고[1] Then 색깔 = 빨강; If 저[2] > 저[1] Then 색깔 = 파랑; 이중파동 = 저[1]; } If 추세 == 양방향 Then { For j = 18 DownTo 1 { 고[j+1] = 고[j]; 고Bar[j+1] = 고Bar[j]; 저[j+1] = 저[j]; 저Bar[j+1] = 저Bar[j]; } 고[1] = 기준고; 고Bar[1] = 기준고Bar; 저[1] = 기준저; 저Bar[1] = 기준저Bar; 기준고 = data1(H); 기준고Bar = 0; 기준저 = data1(L); 기준저Bar = 0; 추세 = 추세[1]; If 추세[1] == 상승 Then { If 고[2] < 고[1] Then 색깔 = 빨강; If 저[2] > 저[1] Then 색깔 = 파랑; 이중파동 = 저[1]; } Else { If 저[2] > 저[1] Then 색깔 = 파랑; If 고[2] < 고[1] Then 색깔 = 빨강; 이중파동 = 고[1]; } } #############################Data2 #==========================================# # 전고점,전저점 index 증가 #==========================================# For jj = 1 To 19 { 저BarD[jj] = 저BarD[jj] + 1; 고BarD[jj] = 고BarD[jj] + 1; } #==========================================# # 이중파동 처리 #==========================================# If 이중파동D > 0 Then { 이중파동D = 0; } #==========================================# # 최근 고,저 갱신 #==========================================# If 기준고D <= data2(H) || 기준고D == 0 || IsNaN(기준고D) == True Then { 기준고D = data2(H); 기준고BarD = 0; } Else 기준고BarD = 기준고BarD + 1; If 기준저D >=data2(L) || 기준저D == 0 || IsNaN(기준저D) == True Then { 기준저D = data2(L); 기준저BarD = 0; } Else 기준저BarD = 기준저BarD + 1; #==========================================# # 추세방향 결정 #==========================================# If 기준고D * (1 - (하락률D/100)) > data2(H) && 기준저D * (1 + (상승률D/100)) < data2(L) Then { 추세D = Iff(기준고BarD==기준저BarD,양방향D,Iff(기준고BarD>기준저BarD,상승D,하락D)); } Else If 기준고D * (1 - (하락률D/100)) > data2(H) Then 추세D = 하락D; Else If 기준저D * (1 + (상승률D/100)) < data2(L) Then 추세D = 상승D; #==========================================# # 추세변화에 따른 변곡점 처리 #==========================================# If 추세D[1] == 상승D && 추세D == 하락D Then { For jj = 18 DownTo 1 { 고D[jj+1] = 고D[jj]; 고BarD[jj+1] = 고BarD[jj]; } 고D[1] = 기준고D; 고BarD[1] = 기준고BarD; 기준고D = data2(H); 기준고BarD = 0; 기준저D = data2(L); 기준저BarD = 0; If 고D[2] < 고D[1] Then 색깔D = 빨강D ; If 이중파동D[1] > 0 Then 이중파동D = 고D[1]; } If 추세D[1] == 하락D && 추세D == 하락D && 고D[1] < 기준고D && 기준고D * (1 - (하락률D/100)) > data2(H) Then { For jj = 18 DownTo 1 { 고D[jj+1] = 고D[jj]; 고BarD[jj+1] = 고BarD[jj]; 저D[jj+1] = 저D[jj]; 저BarD[jj+1] = 저BarD[jj]; } 고D[1] = 기준고D; 고BarD[1] = 기준고BarD; 저D[1] = 기준저D; 저BarD[1] = 기준저BarD; 기준고D = data2(H); 기준고BarD = 0; 기준저D = data2(L); 기준저BarD = 0; If 저D[2] > 저D[1] Then 색깔D = 파랑D; If 고D[2] < 고D[1] Then 색깔D = 빨강D; 이중파동D = 고D[1]; } If 추세D[1] == 하락D && 추세D == 상승D Then { For jj = 18 DownTo 1 { 저D[jj+1] = 저D[jj]; 저BarD[jj+1] = 저BarD[jj]; } 저D[1] = 기준저D; 저BarD[1] = 기준저BarD; 기준저D = data2(L); 기준저BarD = 0; 기준고D = data2(H); 기준고BarD = 0; If 저D[2] > 저D[1] Then 색깔D = 파랑D; If 이중파동D[1] > 0 Then 이중파동D = 저D[1]; } If 추세D[1] == 상승D && 추세D == 상승D && 저D[1] > 기준저D && 기준저D * (1 + (상승률D/100)) <data2(L) Then { For jj = 18 DownTo 1 { 고D[jj+1] = 고D[jj]; 고BarD[jj+1] = 고BarD[jj]; 저D[jj+1] = 저D[jj]; 저BarD[jj+1] = 저BarD[jj]; } 고D[1] = 기준고D; 고BarD[1] = 기준고BarD; 저D[1] = 기준저D; 저BarD[1] = 기준저BarD; 기준저D = data2(L); 기준저BarD = 0; 기준고D = data2(H); 기준고BarD = 0; If 고D[2] < 고D[1] Then 색깔D = 빨강D; If 저D[2] > 저D[1] Then 색깔D = 파랑D; 이중파동D = 저D[1]; } If 추세D == 양방향D Then { For jj = 18 DownTo 1 { 고D[jj+1] = 고D[jj]; 고BarD[jj+1] = 고BarD[jj]; 저D[jj+1] = 저D[jj]; 저BarD[jj+1] = 저BarD[jj]; } 고D[1] = 기준고D; 고BarD[1] = 기준고BarD; 저D[1] = 기준저D; 저BarD[1] = 기준저BarD; 기준고D = data2(H); 기준고BarD = 0; 기준저D = data2(L); 기준저BarD = 0; 추세D = 추세D[1]; If 추세D[1] == 상승D Then { If 고D[2] < 고D[1] Then 색깔D = 빨강D; If 저D[2] > 저D[1] Then 색깔D = 파랑D; 이중파동D = 저D[1]; } Else { If 저D[2] > 저D[1] Then 색깔D = 파랑D; If 고D[2] < 고D[1] Then 색깔D = 빨강D; 이중파동D = 고D[1]; } } #==========================================# # 역행출력 #==========================================# if data1(crossup(c,고[1])) and data2(H < 고D[1]) Then{ PlotPaintBar(C,O,"1", black); PlaySound("C:₩예스트레이더31₩Data₩역행.wav"); } if data1(Crossdown(c,저[1])) and data3(H < 고D[1]) Then{ PlotPaintBar(C,O,"1", black); PlaySound("C:₩예스트레이더31₩Data₩역행.wav"); }
프로필 이미지
트라반
2017-11-18
161
글번호 114290
강조
답변완료

문의드립니다

아래의 강조식을 적용하려니 에러가 납니다. 에러 안나도록 수정 부탁드립니다. A_FDC_MARK_S 이 없다는데.. 제가 식 작성자가 아니라서 어떻게 할 줄 모르겠습니다. 어떻게든 에러없게 부탁드립니다. 감사합니다. Input:추세기준(9), 존간격(0.15), 위치기간(13),상승과열(60),하락과열(-59), LENGTH(26); var : 위치(0),V_Total(0),V_Net(0),미결추이(0),강도추이(0),V_Color(0),V_존간격(0),V_위치추이(0),회색박스(0); V_Total = _A_FDC_MARK_S; 위치 = _A_FDC_MARK_P_S; V_Net = _A_Net; V_존간격 = _A_Zone(존간격); 회색박스 = _A_Fibonacci_UD(3,3,1); var1 = abs(dayoi()-dayoi(1)); #미결재 미결추이 = (3 * Ema(var1,5)) - (3 * Ema(Ema(var1,5),5)) + (Ema(Ema(Ema(var1,5),5),5)); 강도추이 = (3 * wma(V_TOTAL,6)) - (3 * wma(wma(V_TOTAL,6),6)) + (wma(wma(wma(V_TOTAL,6),6),6)); V_Color = (3 * Ema(V_TOTAL,LENGTH)) - (3 * Ema(Ema(V_TOTAL,LENGTH),LENGTH)) + (Ema(Ema(Ema(V_TOTAL,LENGTH),LENGTH),LENGTH)); V_위치추이 = (3 * Ema(위치,위치기간)) - (3 * Ema(Ema(위치,위치기간),위치기간)) + (Ema(Ema(Ema(위치,위치기간),위치기간),위치기간)); Var2 = abs(V_Net); If V_TOTAL > 20 and Var2 > 추세기준 and Var2 >= Var2[1] && V_존간격 >= 0 Then # ((Var2 > 추세기준 and Var2 >= Var2[1]) or (Var2 > 8 and Var2[1] >= Var2[2] and Var2 >= Var2[1])) Then PlotPaintBar( Open, Close,"강도", iff(V_TOTAL[1] >= 상승과열 && V_TOTAL<V_TOTAL[1] && var1 <7000 && var1<var1[1] && 미결추이<미결추이[1] ,RGB(255,255,0), # iff(V_TOTAL > 50 &&V_Color>=V_Color[1] && V_존간격 == 4 , RGB(200,50,50), iff(V_TOTAL > 35 &&V_Color>=V_Color[1] && V_존간격 > 0, RGB(255,50,50), iff(V_Color>=V_Color[1] && V_존간격 > 0, RGB(255,140,140),RGB(255,200,200)))))); Else { IF V_TOTAL < -20 and Var2 > 추세기준 and Var2 >= Var2[1] && V_존간격 <= 0 Then PlotPaintBar( Open, Close,"강도", iff(V_TOTAL[1] <= 하락과열 && V_TOTAL>V_TOTAL[1] && var1<var1[1] && 미결추이<미결추이[1] && var1 <7000 ,RGB(255,255,0), iff(V_TOTAL < -50 && V_Color<=V_Color[1] && V_존간격 == -4, RGB(0,0,200), iff(V_TOTAL < -35 && V_Color<=V_Color[1] && V_존간격 < 0, RGB(51,102,255), iff(V_Color<=V_Color[1] && V_존간격 < 0, RGB(130,165,255),RGB(153,204,255)))))); Else PlotPaintBar( Open, Close,"강도",GRAY); }
프로필 이미지
트라반
2017-11-18
153
글번호 114289
강조
답변완료

질문드립니다.

많은 도움을 주신덕에 참고해서 많이 만들어가고있습니다. 한가지 걸리는 것이있는데요. var : 시그널(false); 시그널 = false; if 매매조건1 then{ 시그널 = true; } if 매매조건2 then{ 시그널 = true; } if 매매조건3 then{ 시그널 = true; } if 매매조건4 then{ 시그널 = true; } if 시그널 then buy(); 이 구조에서 시그널에서 손절이 2번나면 더이상 거래하지 않는다. 라는 것이 도통 짜지질 않네요..
프로필 이미지
stockric
2017-11-18
134
글번호 114288
시스템
답변완료

문의드립니다

9시 30분 시점에서 그날의 누적 거래량을 과거 n일간 개장 후 30분 간의 거래량들의 평균과 비교하고 싶은데 어떻게 수식을 작성하여야 할까요?
프로필 이미지
버페티어
2017-11-17
130
글번호 114287
시스템
답변완료

문의드립니다.

55435번 질문에 관련하여 문의드립니다. 아래는 알려주신 주식인데요, 그 수식을 제 시스템에 적용하여 예스랭귀지에서 "검증"을 하면 entry = true; 와 entry = false; 줄에서 오류가 발생하며 "연산자 앞뒤 두 데이터의 형태가 같아야 합니다."라는 설명이 나옵니다. 검토해주시면 감사하겠습니다. ------------------------------------------------------------------------------------ var : dni(0),ep(0),entry(false); if MarketPosition <= 0 and 진입조건 then{ dni = index; EP = C; entry = true; } if MarketPosition == 1 Then entry = false; If MarketPosition <= 0 and index >= Dni and index < dni+3 then Buy("매수2", atlimit, EP - PriceScale*3); SetStoploss(0.40,Pointstop); SetStopProfittarget(0.60, Pointstop);
프로필 이미지
맘속의행복
2017-11-17
154
글번호 114286
시스템
답변완료

문의 드립니다.

Arrays : Relative[50](0); Relative[0] = RSI(9); Relative[1] = RSI(10); Relative[2] = RSI(11); Relative[3] = RSI(12); Relative[4] = RSI(13); Relative[5] = RSI(14); Relative[6] = RSI(15); Relative[7] = RSI(16); 우선 Relative 배열변수를 선언 한 후에 방을 총 50개를 만들었습니다. 그리고 0번방부터 기간값이 다른 RIS 함수를 넣고 있는데요. 일일히 하나하나 넣어줘야 해서 매우 불편한데요. 좀 더 간편한 방법은 없을까요? 헌데 For 문을 이용하고 싶어도 배열변수에 하나의 RSI 함수를 사용해서 메모리를 공유하게 되면 계산에 문제가 생겨서 별개의 메모리를 사용하기 위해서 어쩔수없이 저렇게 작성하고 있는데요. 좀 더 효율적인 방법은 없을까요?
프로필 이미지
무결점
2017-11-17
149
글번호 114285
시스템