커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

문의드립니다.

도움주시는 덕분에 도전하고 있습니다. 매번 감사합니다. 장 시작 시간과 관련해서 헷갈리는 게 많아 질문드립니다. 검색을 여럿 해봤지만 이해가 잘 안되네요. 항셍지수를 예로 들면 홍콩시간으로 9:15-12:00 & 13:00-16:30 & 17:15-23:45 이 거래시간입니다. 홍콩과 서울은 시차가 1시간이라고 하는데요. 1. 장개장시간문제 그럼 장 개장시간은 시장시간 9시15분인가요? 답변글들을 보면 설정에서 차트 시간을 변경할 수 있는 것으로 나옵니다. 그럼 시장 시간으로 9시15분으로 설정하거나 홍콩시간으로 9시 15분으로 설정하는 거나 한국시간으로 10시 15분으로 설정하는 것은 같다고 보면 되는 건가요? 수식으로 작성 할 때 stime == 91500(시장시간) , stime == 101500(한국시간)은 각각 같나요? 2. 선물에서 현물 개장시작봉 셋업 문제 개장시간이 같은 국내주간선물은 그냥 bdate != bdate[1] then 이렇게 하면 첫 개장봉 셋업이 되는데요. 그럼 현물지수가 있는 해선은 어떤식으로 해야 현물개장 첫봉시간을 선물에서 지정할 수 있나요? 특히 헷갈리는 게 S&P인데요. 여기는 현물이 서머타임도 적용되는데 첫봉을 셋업으로 지정 하려면 날짜를 지정해서 나누어 줘야 하는 건가요? 첫봉 종가가 시가+10틱 선 위에 있을 때 종가를 셋업봉으로 저장하는 예로 설명 부탁드립니다. 3. setstopendofday문제. 전에 만들어주신 수식인데요. 그럼 stime == 이건 시장시간(차트에서 시장시간으로 설정해놨을 때의 시간)으로 장종료시간인가요? if stime == 053000 or (stime > 053000 and stime[1] < 053000) Then{ exitlong("bx"); ExitShort("sx"); }
프로필 이미지
잡다백수
2018-02-12
177
글번호 116519
시스템
답변완료

수정부탁드립니다=================

// 첨부파일의 아래 그림 과 같이 당일 처음 교차라인만 추가로 수평으로 표시하고 싶슴니다 수정부탁드립니다 항상 감사합니다 //======================================================================= Input:델타조정(0),downn(0.98),LENGTH1(50),LENGTH2(10),비교봉(5),비교봉1(5),양합상승(1.008),양합하락(0.985),표시2(0); Input:소리2(0),소리22(0),표시위치(0.7),최고저기준(30),교차간격(0); var : sum2(0,data1),sum4(0,data1),sum6(0,data1),TEMA1atm2(0),TEMA1atm4(0),TEMA1atm6(0),ss(0); var : HH(0,data2),LL(0,data2),hl(0,data2),ii(0,data2);; var : crup(0),crdn(0),sum22(0),ccurnt(0),cgap(0),callgap(0),putgap(0),plemeumgap(0),chanline(0); var :linegi(0),data2yc(0),data3yc(0),hapyc(0),hapycrt(0),TEMA1hapycrt(0),crup96(0); sum2 = (data2(c)+data3(c)); sum22 =(data2(c)+data3(c))/2*250000; if data2(bdate != bdate[1]) Then{ ii = 0; HH = sum22; LL = sum22; } else { ii = ii+1; if ii < 최고저기준 Then { if sum22 > HH Then HH = sum22; if sum22 < LL Then LL = sum22; } else{ HH = data2(highest(sum22,최고저기준)); LL = data2(lowest(sum22,최고저기준)); hl = (hh + ll)/2; } } //plot1(sum2,"양합"); PLOT3(sum22,"수정양합"); plot21(HH,"Data2 H" ); plot22(LL,"Data2 L"); plot23(hL,"hl",iff((hL )>(hL[1])+00,RED,iff((hL )<(hL[1] )-00,BLUE,BLACK))); if hl > hl[1] then { PLOT24(hl,"상승"); PlaySound("C:₩Users₩Administrator₩Desktop₩sound₩up01.wav"); } if hl < hl[1] then { PLOT25(hl,"하락"); PlaySound("C:₩Users₩Administrator₩Desktop₩sound₩dow.wav"); } TEMA1atm2 = (3 * Ema(sum22,LENGTH1)) - (3 * Ema(Ema(sum22,LENGTH1),LENGTH1)) + (Ema(Ema(Ema(sum22,LENGTH1),LENGTH1),LENGTH1)); plot5(TEMA1atm2,"태마2",iff((TEMA1atm2 )>(TEMA1atm2[1])+00,RED,iff((TEMA1atm2 )<(TEMA1atm2[1] )-00,BLUE,BLACK))); /* if 표시2 == 1 then { if sum22[비교봉]*양합상승< sum22 Then { PLOT11((sum22 ),"매수2"); if 소리2 == 1 then { PlaySound("C:₩Users₩Administrator₩Desktop₩sound₩alert.wav"); } } if sum22[비교봉1]*양합하락> sum22 Then { PLOT12((sum22 ),"매도2"); if 소리22 == 1 then { PlaySound("C:₩Users₩Administrator₩Desktop₩sound₩reject.wav"); } } if sum22[비교봉1]*양합하락 == sum22 Then { PLOT13((sum22 ),"매3"); } } */ //plot6(Data2(c),"콜"); //plot7(Data3(c),"풋"); if ( Data2(c) > Data3(c)) and ( Data2(c) - Data3(c)) < 교차간격 Then{ // if CrossUp ( Data2(c),Data3(c)) Then{ // PLOT8(Data2(c),"상승교차"); crup = (Data2(c)+Data3(c))/2*250000; ccurnt = c; // PlaySound("C:₩Users₩Administrator₩Desktop₩효과₩Bandi.wav"); } if ( Data3(c) > Data2(c)) and ( Data3(c) - Data2(c)) < 교차간격 Then{ // if CrossDown ( Data2(c) ,Data3(c)) Then{ // PLOT9(Data2(c),"하락교차"); crup = (Data2(c)+Data3(c))/2*250000; ccurnt = c; // PlaySound("C:₩Users₩Administrator₩Desktop₩효과₩click08.wav"); } PLOT31(crup,"교차라인"); /* cgap = (c - ccurnt)*250000 ; plot41(cgap,"선물손익",iff((cgap )>00,RED,iff((cgap )<00,BLUE,BLACK))); callgap = (Data2(c) - crup) * 250000; plot42(callgap,"콜손익",iff((callgap )>00,RED,iff((callgap )<00,BLUE,BLACK))); putgap = (Data3(c) - crup) * 250000; plot43(putgap,"풋손익",iff((putgap )>00,RED,iff((putgap )<00,BLUE,BLACK))); plemeumgap = (sum22 - crup)/sum22*100; plot44(plemeumgap,"합손익",iff((plemeumgap )>00,RED,iff((plemeumgap )<00,BLUE,BLACK))); */ /* plotbaseline1(0); plot45(linegi,"라인지정"); if sum22 < linegi * (100-downn)/100 then{ PLOT46(sum22 ,"양수찬스"); // PlaySound("C:₩Users₩Administrator₩Desktop₩sound₩reject.wav"); } chanline = linegi * (100-downn)/100; PLOT47(chanline ,"찬스라인"); data2yc = data2(closeD(1)); data3yc = data3(closeD(1)); PLOT48(data2yc ,"전데이타2"); PLOT49(data3yc ,"전데이타3"); hapyc = ( data2yc + data3yc ) / 2; linegi = hapyc; PLOT50(hapyc ,"전일양합평균"); hapycrt = (sum22 - crup) * 500000; PLOT51(hapycrt ,"전일양합대비",iff((hapycrt )>00,BLACK,iff((hapycrt )<00,BLACK,BLACK))); */ if ( Data2(c) > Data3(c)) and ( Data2(c) - Data3(c)) < 교차간격 Then{ PLOT52(crup,"상승교차"); // PLOT54(hapycrt,"상승교차가격"); PlaySound("C:₩Users₩Administrator₩Desktop₩sound₩up01.wav"); } if ( Data3(c) > Data2(c)) and ( Data3(c) - Data2(c)) < 교차간격 Then{ PLOT53(crup,"하락교차"); // PLOT55(hapycrt,"하락교차가격"); PlaySound("C:₩Users₩Administrator₩Desktop₩sound₩dn2.wav"); } /* TEMA1hapycrt = (3 * Ema(hapycrt,LENGTH2)) - (3 * Ema(Ema(hapycrt,LENGTH2),LENGTH2)) + (Ema(Ema(Ema(hapycrt,LENGTH2),LENGTH2),LENGTH2)); PLOT56(TEMA1hapycrt,"양합대비테마"); if TEMA1hapycrt > TEMA1hapycrt[1] then { PLOT57(TEMA1hapycrt,"상승"); PlaySound("C:₩Users₩Administrator₩Desktop₩sound₩up01.wav"); } if TEMA1hapycrt < TEMA1hapycrt[1] then { PLOT58(TEMA1hapycrt,"하락"); PlaySound("C:₩Users₩Administrator₩Desktop₩sound₩dow.wav"); } */ if sTime == 090000 Then { plot99( crup,"장시작" ); } crup96 = crup * 델타조정; plot98( crup96,"델타조정" );
프로필 이미지
leekss1
2018-02-11
357
글번호 116518
지표
답변완료

지표식

선물장중 매수매도 차이를 누적으로 순매수인지 순매도인지 수치를 틱이나분으로 차트로 구현 부탁드립니다
프로필 이미지
자미산
2018-02-10
171
글번호 116517
지표

이공주7 님에 의해서 삭제되었습니다.

프로필 이미지
이공주7
2018-02-10
1
글번호 116516
시스템
답변완료

매수매도수식부탁드립니다

안녕하세요 아래 고저점파동식으로 매수매도수식부탁드립니다 1. 매수신호 그림1에서 1번 출발 후 2번저점 형성 후 1번의 전 고점보다 높은 3번고점 형성 후 다음 저점에서 매수신호 발생 2.매도신호 그림2에서 1번 출발 후 2번고점 형성 후 1번의 전 저점보다 낮은 3번저점 형성 후 다음 고점에서 매도신호 발생 3. 그리고 그림3에서처럼 종가가 전고점(A점)돌파할때 수식이 if crossup(C,최종고가[2]) 가 맞는지 조언부탁드립니다 Input:length(4),종가사용여부(0),파동선두께(5),수치표시(1); Var:j(0),jj(0),HH(0),LL(0),최종고가(0),최종저가(0),최종꼭지점(""),처리구분(""), TL1(0),Text1(0),tl2(0); Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime #==========================================# HH = IFF(종가사용여부==1,C,H); LL = IFF(종가사용여부==1,C,L); If Index == 0 Then { 고[1,1] = HH; 저[1,1] = LL; } Condition1 = Highest(HH,length) == HH and 최종고가 <> HH; Condition2 = Lowest (LL,length) == LL and 최종저가 <> LL; 처리구분 = ""; If Condition1 and Condition2 Then // 기간고점과 기간저점 동시 발생 { If 최종꼭지점 == "저점" Then { If 저[1,1] > LL Then 처리구분 = "저점처리"; Else 처리구분 = "고점처리"; } Else If 최종꼭지점 == "고점" Then { If 고[1,1] < HH Then 처리구분 = "고점처리"; Else 처리구분 = "저점처리"; } } Else If Condition1 Then 처리구분 = "고점처리"; Else If Condition2 Then 처리구분 = "저점처리"; #==========================================# If 처리구분 == "고점처리" Then { 최종고가 = HH; // 신규고점을 체크하기 위해 저장 If 최종꼭지점 == "저점" Then { For j = 10 DownTo 2 { For jj = 1 To 4 { 고[j,jj] = 고[j-1,jj]; } } 고[1,1] = HH; 고[1,2] = Index; 고[1,3] = sDate; 고[1,4] = sTime; TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]); TL2 = TL_New(고[2,3],고[2,4],고[2,1],고[1,3],고[1,4],고[1,1]); If 수치표시 == 1 Then { Text1 = Text_New(고[1,3],고[1,4],고[1,1],NumToStr(고[1,1],2)); Text_SetStyle(Text1, 2, 1); Text_SetColor(Text1,BLACK); } TL_SetSize(TL1,파동선두께); TL_SetColor(TL1,red); TL_SetSize(TL2,파동선두께); TL_SetColor(TL2,red); } Else If 고[1,1] < HH Then // 1번 고점보다 높은 고가 출현 { 고[1,1] = HH; 고[1,2] = Index; 고[1,3] = sDate; 고[1,4] = sTime; TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]); TL_SetEnd(TL2,고[1,3],고[1,4],고[1,1]); // 시작점은 변동없고 끝점의 위치가 현재 봉으로 연장된 것임 If 수치표시 == 1 Then { Text_SetLocation(Text1,고[1,3],고[1,4],고[1,1]); Text_SetString(Text1,NumToStr(고[1,1],2)); } } 최종꼭지점 = "고점"; } #==========================================# If 처리구분 == "저점처리" Then { 최종저가 = LL; If 최종꼭지점 == "고점" then { For j = 10 DownTo 2 { For jj = 1 To 4 { 저[j,jj] = 저[j-1,jj]; } } 저[1,1] = LL; 저[1,2] = Index; 저[1,3] = sDate; 저[1,4] = sTime; TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]); TL2 = TL_New(저[2,3],저[2,4],저[2,1],저[1,3],저[1,4],저[1,1]); If 수치표시 == 1 Then { Text1 = Text_New(저[1,3],저[1,4],저[1,1],NumToStr(저[1,1],2)); Text_SetStyle(Text1, 2, 0); Text_SetColor(Text1,BLACK); } TL_SetSize(TL1,파동선두께); TL_SetColor(TL1,blue); TL_SetSize(TL2,파동선두께); TL_SetColor(TL2,blue); } Else If 저[1,1] > LL then { 저[1,1] = LL; 저[1,2] = Index; 저[1,3] = sDate; 저[1,4] = sTime; TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]); TL_SetEnd(TL2,저[1,3],저[1,4],저[1,1]); If 수치표시 == 1 Then { Text_SetLocation(Text1,저[1,3],저[1,4],저[1,1]); Text_SetString(Text1,NumToStr(저[1,1],2)); } } 최종꼭지점 = "저점"; } 감사합니다
프로필 이미지
bestkim
2018-02-12
279
글번호 116515
시스템

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

프로필 이미지
렉쳐
2018-02-10
0
글번호 116514
지표
답변완료

문의드립니다..(RSI)

매수진입 : RSI 지수가 70을 크로스업 통과할때 매수 진입 진입청산 : 청산1조건. RSI의 값이 70통과 후에 최고점을 만든후 하락하다가 재상승하고나서(이때 바로 앞 이전봉을 저점으로 인식) 직전 최고점을 돌파하면 다음으로 넘어가는데, 만약 직전 최고점을 돌파하지 못하고 하락해서 직전 저점을 하향 돌파하는 때에 청산. 또는 청산 2건. RSI지수가 70을 크로스다운 통과할 때 청산 매도 진입 : RSI 지수가 30을 크로스다운 통과할때 매도 진입 진입청산 : 청산1조건. RSI의 값이 30하향 통과후에 최저점을 만든후 상승하다가 재하락해서(이때 바로 앞 이전봉을 고점으로 기억) 직전 최저점을 돌파하면 다음으로 넘어가는데, 만약 직전 최저점을 돌파하지 못하고 상승해서 직전 고점을 상향 돌파하는 때에 청산. 또는 청산2조건. RSI지수가 30을 크로스업 통과할때 청산
프로필 이미지
머니사이언스
2018-02-11
172
글번호 116513
시스템
답변완료

질문있습니다.

문법이 궁금해서 질문드립니다. data2 나 data1 을 묶어줄때요 수식에서 예를들어 c , h, l ,o dayhigh 등의 문자가 포함되어있을때만 data1( 이나 data2 이런식으로 묶어주고 var : i(0,data2) ; 와같이 사용자가 지정하는 변수만 으로 수식이 이루어진경우는 data1 을 포함안해도되는지 궁금합니다 아니면 무조건 모든 수식마다 다 포함 해줘야하는지궁금합니다. 실제 저는 바이 명령어가 Buy("b_41",atlimit,p[3],ms7((msPrice+priceM)*mt_buyfactor,buycnt,p[3])); 와 같이 이루어져있는데요 여기서 p[ ] 은 data2 값으로 계산된 값이 저정되고(하지만 data2 의 c h l o 로 계산된 값 ) mt_buyfactor 은 data2 값으로 계산된 값 (data2의 c h l o 를 이용하여 계산해서 저장되는 값) buycnt 은 data1 의 값이지만 (data1 의 c h l o 로 계산된 값이 아닌 매수 횟수에 의한 값) 입니다 이럴때는 Buy("b_41",atlimit,p[3],ms7((msPrice+priceM)*mt_buyfactor,buycnt,p[3])); 식을 어떻게 표현해줘야하나요 ? data1 , data2 로 어떻게 묶어줘야하나요 아님 안묶어도되나요? 궁금합니다 감사합니다
프로필 이미지
여유로운투자
2018-02-10
138
글번호 116512
사용자 함수
답변완료

이평

맨끝에 있는 이평을 상승시 빨강 하락시 파랑으로 표현 부탁드립니다. Input:n(60); Var:j(0),고가기울기(0),고가절편(0),고가예상치(0),고가표준오차(0), 저가기울기(0),저가절편(0),저가예상치(0),저가표준오차(0),trend(0), sumOH(0),sumOL(0),sumO(0),sumH(0),sumL(0),sumO²(0),sumH²(0),sumL²(0); if bDate[1] < bDate then { sumOH = 0; sumOL = 0; sumO = 0; sumH = 0; sumL = 0; sumO² = 0; sumH² = 0; sumL² = 0; for j = 1 to n { sumOH = sumOH + DayOpen(j)*DayHigh(j); sumOL = sumOL + DayOpen(j)*DayLow(j); sumO = sumO + DayOpen(j); sumH = sumH + DayHigh(j); sumL = sumL + DayLow(j); sumO² = sumO² + DayOpen(j)^2; sumH² = sumH² + DayHigh(j)^2; sumL² = sumL² + DayLow(j)^2; } #==========================================================================# # 선형회귀방정식 # #==========================================================================# # nΣxy - (Σx)(Σy) # # 기울기 a = --------------------- # # nΣx²- (Σx)² # # # # = (n*sum(xy) - sum(x)*sum(y)) / (n*sum(x^2) - sum(x)^2) # # # # (Σy)(Σx²)-(Σx)(Σxy) # # 절편 b = --------------------------- # # nΣx²- (Σx)² # # # # = (sum(y)*sum(x^2) - sum(x)*sum(xy)) / (n*sum(x^2) - sum(x)^2) # #==========================================================================# 고가기울기 = (n*sumOH - sumO*sumH) / (n*sumO²- sumO^2); 고가절편 = (sumH*sumO² - sumO*sumOH) / (n*sumO² - sumO^2); 저가기울기 = (n*sumOL - sumO*sumL) / (n*sumO² - sumO^2); 저가절편 = (sumL*sumO² - sumO*sumOL) / (n*sumO² - sumO^2); 고가예상치 = 고가기울기 * DayOpen() + 고가절편; 저가예상치 = 저가기울기 * DayOpen() + 저가절편; #==========================================================================# # 표준오차 공식 # #==========================================================================# # _______________________________________________________ # # / 1 [nΣxy - (Σx)(Σy)]² # # Sxy = / [ ------- ][nΣy²- (Σy)²- ----------------------- ] # # √ n(n-2) nΣx²- (Σx)² # # # # = sqrt((1/(n*(n-2))) * (n*sum(y^2) - sum(y)^2 - # # ((n*sum(x*y) - sum(x)*sum(y))^2 / (n*sum(x^2) - sum(x)^2)))) # #==========================================================================# 고가표준오차 = sqrt((1/(n*(n-2))) * (n*sumH² - sumH^2 - ((n*sumOH - sumO*sumH)^2 / (n*sumO² - sumO^2)))); 저가표준오차 = sqrt((1/(n*(n-2))) * (n*sumL² - sumL^2 - ((n*sumOL - sumO*sumL)^2 / (n*sumO² - sumO^2)))); } var1 = ema(h,20); var2= ema(l,20); var7=var1+(var1-ema(var1,20)); var8=var2+(var2-ema(var2,20)); if var7[2] > var7[1] and var7[1] < var7 then trend=1; if var7[2] < var7[1] and var7[1] > var7 then trend=0; plot2(round(고가예상치 + 0.5 * 고가표준오차,1),"2차 저항선"); plot3(round(고가예상치 - 0.5 * 고가표준오차,1),"1차 저항선"); plot6(round(저가예상치 + 0.5 * 저가표준오차,1),"1차 지지선"); plot7(round(저가예상치 - 0.5 * 저가표준오차,1),"2차 지지선"); plot8(dayopen,"시가"); Plot13(var7,"이평",iff(trend == 1,RED, rgb(0,84,225))); Plot14(var8,"이평",iff(trend == 1,RED, rgb(0,84,225)));
프로필 이미지
야크
2018-02-10
176
글번호 116511
지표