커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

글번호 47992번 추가질문

안녕하세요? 글번호 47992번 답변 감사드립니다. 아래의 함수도 글번호 47992번 답변처럼 부탁드립니다. 아래의 함수 역시 20ma, 60ma 골든크로스 매수, 데드크로스 매도 전략입니다. 그런데 매수진입은 골든크로스 이후 골든크로스 상태가 유지된 상태(20ma>60ma)에서 현주가가 60ma를 하향이탈하면 익봉시가에 매수하고, 매도 진입은 데드크로스 이후 데드크로스 상태가 유지된 상태에서(20ma<60ma) 현주가가 60ma를 상향돌파하면 익봉 시가에 매도진입하고자합니다. 아울러 여기에 아래의 강제청산 조건을 넣고자 하는데 SetStopLoss(손절,PercentStop); SetStopProfittarget(익절,PercentStop); SetStopInactivity(익절,봉수,PercentStop); 손절과 익절 그리고 봉수의 계산은 실제로 진입한 상기의 눌림목 또는 기술적 반등을 이용한 가격을 기준으로 하는 것이 아니라 아래의 식에서 골든크로스의 매수가, 데드크로스의 매도가로 하고 싶습니다. input : xtime(60000); var : tcond(false),cond1(false),cond2(false); if stime == xtime or (stime > xtime and stime[1] < Xtime) Then{ Tcond = false; } if bdate != bdate[1] Then{ Tcond = true; Condition1 = false; Condition2 = false; } var1 = ma(c,20); var2 = ma(c,60); cond1 = C > var1 and var1 > var2; cond2 = C < var1 and var1 < var2; if cond1 == true and cond1[1] == false then Condition1 = true; if cond2 == true and cond2[1] == false then Condition2 = true; if Tcond == true And Condition1 == true and cond1 == true and var1 > var1[1] and var2 > var2[1] Then buy("B"); if Tcond == true And Condition2 == true and Cond2 == true and var1 < var1[1] and var2 < var2[1] Then sell("S");
프로필 이미지
통큰베팅
2016-06-01
114
글번호 98668
시스템
답변완료

고점과 저점 표시방법에 대해 문의드립니다.

항상 친절하고 빠른 답변에 감사드립니다. 아래와 같은 지그재그 변곡점 수식에서 고점과 저점의 표시 방법을 소숫점이하 1자리(50.1)에서 소숫점이하 2자리(50.06) 또는 4자리(50.0601)로 표시하는 방법을 알려 주시면 고맙겠습니다. 어느 부분에서 수정을 해야 하는지 주석을 달아 주시면 더욱 좋겠습니다. Input:length(12); Var:j(0),lastHiVal(0),lastLoVal(0),sBar(0),eBar(0),TT(0), TL1(0), Text1(0),처리구분(""); Array:고점[10,2](0),저점[10,2](0); //가격,위치 처리구분 = ""; If Highest(H,length) == H and lastHiVal <> H and Lowest(L,length) == L and lastLoVal <> L Then { If 저점[1,1] > L Then 처리구분 = "저점처리"; If 고점[1,1] < H Then 처리구분 = "고점처리"; } Else If Highest(H,length) == H and lastHiVal <> H Then 처리구분 = "고점처리"; Else If Lowest(L,length) == L and lastLoVal <> L Then 처리구분 = "저점처리"; If 처리구분 == "고점처리" Then { lastHiVal = H; If 고점[1,2] < 저점[1,2] Then { For j = 10 DownTo 2 { 고점[j,1] = 고점[j-1,1]; 고점[j,2] = 고점[j-1,2]; } } If 고점[1,2] < 저점[1,2] or 고점[1,1] < H Then { 고점[1,1] = H; 고점[1,2] = Index; sBar = Index - 저점[1,2]; eBar = 0; If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then { TL_Delete(TL1); Text_Delete(Text1); } TL1 = TL_New(sDate[sBar],sTime[sBar],저점[1,1], sDate[eBar],sTime[eBar],고점[1,1]); Text1 = Text_New(sDate[eBar],sTime[eBar],고점[1,1], NumToStr(고점[1,1],1)); Text_SetStyle(Text1, 2, 1); } } If 처리구분 == "저점처리" Then { lastLoVal = L; If 저점[1,2] < 고점[1,2] then { For j = 10 DownTo 2 { 저점[j,1] = 저점[j-1,1]; 저점[j,2] = 저점[j-1,2]; } } If 저점[1,2] < 고점[1,2] or 저점[1,1] > L then { 저점[1,1] = L; 저점[1,2] = Index; sBar = Index - 고점[1,2]; eBar = 0; If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then { TL_Delete(TL1); Text_Delete(Text1); } TL1 = TL_New(sDate[sBar],sTime[sBar],고점[1,1], sDate[eBar],sTime[eBar],저점[1,1]); Text1 = Text_New(sDate[eBar],sTime[eBar],저점[1,1], NumToStr(저점[1,1],1)); Text_SetStyle(Text1, 2, 0); } } TL_SetSize(TL1, 5); TL_SetColor(TL1, GRAY); If 처리구분 == "고점처리" Then TT = 1; plot1(1,"저점",GREEN, def, 2); If 처리구분 == "저점처리" Then TT = -1; plot2(2,"고점",YELLOW, def, 2);
프로필 이미지
민기삼촌
2016-06-01
257
글번호 98667
지표
답변완료

수정부탁드립니다^^

input : P(10); var : MM(0),T(0); MM = (highest(H,P)+lowest(L,P))/2; if T == 0 and C > MM Then T = 1; if T == 0 and C < MM Then T = -1; if T == 1 and CrossDown(C,lowest(L,P)[1]) Then T = 0; if T == -1 and CrossUp(C,highest(H,P)[1]) Then T = 0; if dayindex == 0 and T == 1 then buy(); if dayindex == 0 and T == -1 then sell(); if dayindex > 0 then{ if T == 1 and T[1] != 1 Then buy(); if T == 0 and T[1] == 1 Then sell(); } if T == -1 and T[1] != -1 Then sell(); if T == 0 and T[1] == -1 Then buy(); SetStopEndofday(150000); 위수식은 아침 9시부터 맞는 색깔에 신호가뜨는데 수정할 부분은 아침 10시 30분 부터 강조식에 색깔이 맞는 표시에 신호가 나왔으면좋겠습니다 10시 30분에 빨강색이면 매수 파랑색이면 매도 잘부탁드립니다 항상 감사합니다^^
프로필 이미지
곽민수
2016-05-31
119
글번호 98666
시스템
답변완료

고가와저가매매보다05p더해매매

input : HP(5),LP(5); var : cnt(0),HH(0),LL(0); HH = dayhigh(1); for cnt = 1 to HP{ if dayhigh(cnt) > HH Then HH = dayhigh(cnt); } LL = dayLow(1); for cnt = 1 to LP{ if daylow(cnt) < LL Then LL = dayLow(cnt); } if crossup(c,HH) then buy(); if CrossDown(c,LL) Then sell(); 위수식에서 5일간 고가보다0.5p 더오르면 매수 5일간 저가보다-0.5p 더내리면 매도 부탁합니다 매매시점을 0.5p늘려잡습니다 항상 감사힙니다.
프로필 이미지
큰바위얼굴
2016-05-31
102
글번호 98665
시스템
답변완료

답변 좀 부탁드립니다.

이전 질문의 상세한 답변 감사드립니다. 1. 참조데이터를 일봉에 적용해서 검색식을 만들어 잘 적용했습니다. 그런데..참조데이터 안에 프로그램매매에 관한 차익거래 순매수 금액과 비차익거래 순매수 금액이 안보이더라구요.. 이는 어떻게 적용할까요? (전 질문번호는 48001입니다.) 2. 조건만족시 조건만족봉에 점으로 표시가 되는데... 그날 일봉의 종가가 시가보다 높으면 위쪽 화살표가 봉의 아래쪽에 나타나고, 낮으면 아래쪽 화살표가 봉의 위쪽에 나타나게 표시가 가능할까요? 3. 그리고 실시간으로 검색시 소리가 나게 할 수도 있나요? 아니면 팝업창이라도...
프로필 이미지
gaara
2016-05-31
126
글번호 98664
시스템
답변완료

재문의 합니다.

47991번 재문의 합니다. Envelope 중심선140 추가해주세요 5일이동평균이 Envelope 중심선을 기준으로 상승이면 매수만 하락이면 매도만 나오게 해주시고요 . 진입 신호만 있고 청산 신호는 없는 식으로 부탁드립니다. 매수신호 : 5일평균선이 Envelope 중심선을 상승으로 통과하고 1번+0.13선을 &#46775;고 올라가면 첫번째 매수신호 2번+0.21선을 &#46775;고 올라가면 두번째 매수신호 3번+0.34 선을 &#46775;고 올라가면 3번째 매수신호 매도신호 : 5일평균선이 Envelope 중심선을 하락으로 통과하고 1번-0.13선을 &#46775;고 내려가면 첫번째 매도신호 2번0.21선을 &#46775;고 내려가면 두번째 매도신호 3번0.34 선을 &#46775;고 내려가면 3번째 매도신호 첨부파일 올림니다. 감사합니다. 시스템 적용시 시스템 트레이딩 설정창의 피라미딩탭에서 다른진입신호만 허용으로 설정하고 적용하시면 됩니다. input : P(5),per1(0.13),per2(0.21),per3(0.34); var : T(0); value1 = EnvelopeUp(p,per1); value2 = EnvelopeUp(p,per2); value3 = EnvelopeUp(p,per3); value4 = EnvelopeDown(p,per1); value5 = EnvelopeDown(p,per2); value6 = EnvelopeDown(p,per3); if crossup(C,value1) Then buy("b1"); if crossup(C,value2) Then buy("b2"); if crossup(C,value3) Then buy("b3"); if CrossDown(C,value4) Then Sell("s1"); if CrossDown(C,value5) Then Sell("s2"); if CrossDown(C,value6) Then sell("s3");
프로필 이미지
마르시아
2016-05-31
138
글번호 98663
시스템
답변완료

타주기식 부탁드립니다.

아래식은 38697 질의에 답변해주셨던 내용인데요 타주기 식을 만들어 보려하니 잘 안되어 부탁드립니다. 감사합니다. INPUTS: TICKCHG(10), #{Change (number of ticks) required to set up a new swing high/low.} PCTCHG(.2), #{Percent change in price to set up a new swing high/low} OCCUR(1), PLOTBARS(40), ETALINE(true), ZIGZAG(TRUE); ARRAY: PBAR[50](0), P[50](0); VARS: X(0), PP(1), JA_SLOPE1(0), JLA_CTR(0), JLA_LINE(0), JAIRHBAR(0), #{ LAST SWING HIGH BAR} JAIRLBAR(0), #{LAST SWING LOW BAR} LOWSEEK(FALSE), #{LOOKING FOR A LOW OR A HIGH?} W(0), #{COUNTER} JLA_IRH(0), #{LAST SWING HIGH VALUE} JLA_IRL(99999), #{LAST SWING LOW VALUE} JA_SLOPE2(0), JA_SLOPE3(0), JLA_PT1(0), WOLFE(0); #{==================MAIN #PROGRAM=========================} IF CURRENTBAR == 1 THEN P[50] = C; IF LOWSEEK == FALSE AND P[50] <= H THEN BEGIN P[50] = H; PBAR[50] = 0; END; IF LOWSEEK == TRUE AND P[50] >= L THEN BEGIN P[50] = L; PBAR[50] = 0; END; IF (LOWSEEK == FALSE AND PBAR[50] <> 0) THEN BEGIN IF (TICKCHG == 0 AND L < P[50] * ( 1 - PCTCHG / 100) ) OR (TICKCHG <> 0 AND L < ( P[50] - tickchg * PriceScale)) THEN BEGIN IF ZIGZAG == TRUE THEN PLOT4(P[50],"SWINGS"); LOWSEEK = TRUE; FOR W = 1 TO 49 BEGIN PBAR[W] = PBAR[W+1]; P[W] = P[W+1]; END; P[50] = L; PBAR[50] = 0; END; END; IF (LOWSEEK == TRUE AND PBAR[50] <> 0) THEN BEGIN IF (TICKCHG == 0 AND H> P[50] * ( 1 + PCTCHG / 100)) OR (TICKCHG <> 0 AND H > (P[50] + tickchg * PriceScale )) THEN BEGIN IF ZIGZAG == TRUE THEN PLOT4(P[50],"SWINGS"); LOWSEEK = FALSE; FOR W = 1 TO 49 BEGIN PBAR[W] = PBAR[W+1]; P[W] = P[W+1]; END; P[50] = H; PBAR[50] = 0; END; END; IF P[48 - PP] <> 0 THEN BEGIN PP = -1; WOLFE = 0; WHILE WOLFE < OCCUR AND PP < 46 BEGIN PP = PP + 1; VALUE1 = P[47-PP]; VALUE2 = P[48-PP]; VALUE3 = P[49-PP]; VALUE4 = P[50-PP]; CONDITION1 = VALUE2 > VALUE1 AND VALUE4 > VALUE3 AND VALUE4 < VALUE2 AND VALUE3 < VALUE1 AND VALUE4 > VALUE1; CONDITION2 = VALUE2 < VALUE1 AND VALUE4 < VALUE3 AND VALUE4 > VALUE2 AND VALUE3 > VALUE1 AND VALUE4 < VALUE1; IF CONDITION1 OR CONDITION2 THEN WOLFE = WOLFE + 1; END; JA_SLOPE1 = (P[49-PP] - P[47-PP]) / (PBAR[47-PP] - PBAR[49-PP]); JA_SLOPE2 = (P[50-PP] - P[47-PP]) / (PBAR[47-PP] - PBAR[50-PP]); #{LINE 1-3} if PBAR[47-PP] >=0 and PBAR[49-PP] >= 0 and PBAR[49-PP]-PLOTBARS >=0 then begin TL_Delete(value90); VALUE90 = TL_New(sDATE[PBAR[47-PP]],sTIME[PBAR[47-PP]],P[47-PP ], sDATE[PBAR[49-PP]], sTIME[PBAR[49-PP]],P[49-PP]); Value14=TL_SetColor(VALUE90, red); #{VALUE93 = TL_SetExtRight(VALUE90,TRUE);} VALUE94 = TL_SETEND(VALUE90,sDate[PBAR[49-PP]-PLOTBARS],sTime[PBAR[49-PP]-PLOTBARS], TL_GetVALUE(VALUE90,sDate[PBAR[49-PP]-PLOTBARS],sTime[PBAR[49-PP]-PLOTBARS])); // end ; #{LINE 1-4} if PBAR[47-PP] >= 0 and PBAR[50-PP] >= 0 and PBAR[49-PP]-PLOTBARS >= 0 then begin TL_Delete(value91); VALUE91 = TL_NEW(sDATE[PBAR[47-PP]],sTIME[PBAR[47-PP]],P[47-PP ], sDATE[PBAR[50-PP]], sTIME[PBAR[50-PP]],P[50-PP]); Value14=TL_SetColor(VALUE91, green); TL_SETEND(VALUE91,sDate[PBAR[49-PP]-PLOTBARS],sTime[PBAR[49-PP]-PLOTBARS], TL_GETVALUE(VALUE91,sDate[PBAR[49-PP]-PLOTBARS],sTime[PBAR[49-PP]-PLOTBARS])); end ; if PBAR[48-PP] >=0 and PBAR[50-PP]-PLOTBARS >= 0 then begin #{ETA LINE} IF ETALINE THEN BEGIN TL_Delete(value92); VALUE92 = TL_NEW(sDate[PBAR[48-PP]],sTime[PBAR[48-PP]],P[48-PP ], sDate[PBAR[50-PP]],sTime[PBAR[50-PP]],P[50-PP]); Value14=TL_SetColor(VALUE92, blue); TL_SETEND(VALUE92,sDate[PBAR[50-PP]-PLOTBARS],sTime[PBAR[50-PP]-PLOTBARS], TL_GETVALUE(VALUE92,sDate[PBAR[50-PP]-PLOTBARS],sTime[PBAR[50-PP] -PLOTBARS])); END; end; END; IF LastBarOnChart == 1 AND ZIGZAG == TRUE THEN BEGIN JA_SLOPE3 = (P[50] - P[49]) / (PBAR[49] - PBAR[50]); FOR JLA_CTR = PBAR[49] DOWNTO PBAR[50] BEGIN PLOT4(P[49] + (PBAR[49] - JLA_CTR) * JA_SLOPE3,"Swings"); END; END; FOR W = 1 TO 50 BEGIN PBAR[W] = PBAR[W]+1; END;
프로필 이미지
예시스
2016-05-31
225
글번호 98662
지표
답변완료

수식 부탁드립니다

(1) 주봉 바닥 가격 붕괴후 돌파시 매수 주봉 천정을 돌파하여 주봉 바닥~천정 진폭 대칭 상승시 매도 (2) 주봉 바닥 10틱 위에서 매수 주봉 천정을 돌파하여 주봉 바닥~천정 진폭 대칭 상승 10틱 아래에서 매도 (3) 주봉 바닥 10틱 위에서 매수 주봉 천정을 돌파하여 주봉 바닥~천정 진폭 대칭 상승 10틱 위에서 매도 감사합니다
프로필 이미지
회원
2016-05-31
132
글번호 98661
시스템
답변완료

고가와저가그리고중간값의매매

3일간의고가를 상향돌파하면 매수하고 중간값 을하향돌파하면 정리함(포지숀무) 다시고가를 상향돌파면매수 중간값을 하향돌파하면 정리함(포지숀무) 반복함 (중간값은고가와저가의1/2 입니다) 매도는반대입니다 감사합니다
프로필 이미지
큰바위얼굴
2016-05-31
133
글번호 98658
시스템