커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

문의드립니다

문의 드립니다 아래 수식은 만들어주신 지표수식입니다 1 문의 지표식에서 // 고점조건 = 5-1-5에서 가운데 고가가 좌측 5봉과 우측 5봉 고가보다 높다 이분분에서 좌측5봉을 2개부터5개까지하고 우측5봉을 2개부터5개까지조율할수있어으면합니다 그리고 저점조건도 똑같이 부탁드립니다 2 종목검색 부탁합니다 아래 선이 blue 와 red 로 표현되고잇습니다 검색식에서 blue 선값에 5프로 근접하면 검색되도록 부탁드립니다 감사합니다 Input:barCnt(30); Var:j(0),turnPntBit(""),TL1(0),TL2(0),TL3(0),T(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]); if turnPntArr[1][0] == "Hi" and valArr[1] < valArr[3] Then{ var1 = valArr[2]-abs(valArr[1]-valArr[3])+PriceScale; var2 = blue; } // if turnPntArr[1][0] == "Lo" and valArr[1] > valArr[3] Then{ // var1 = valArr[2]+abs(valArr[1]-valArr[3])-PriceScale; // var2 = red; // } TL2 = TL_New(sDate[barArr[2]],sTime[barArr[2]],var1,sDate[barArr[1]],sTime[barArr[1]],var1); TL_SetColor(tl2,var2); } Else { TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]); } } } TL_SetSize(TL1,1); TL_SetColor(TL1,GREEN);
프로필 이미지
파파리리
2019-05-01
274
글번호 128290
종목검색
답변완료

지표 변경부탁드립니다

a=crossup(sar(af,maxAf),c) or crossdown(sar(af,maxAf),c); valuewhen(1,a,avg(c,5)) 키움수식입니다 변경부탁들비니다 af 0.02 MAXAF 0.2
프로필 이미지
장군777
2019-04-30
294
글번호 128289
지표
답변완료

수식문안드립니다.

고생이 많으십니다. 수식부탁드립니다. #수식1 A=avg(c,기간3); c/A*100 # 기간1:10// 기간2:20// 기간3:60 # 기준선:100 감사합니다.
프로필 이미지
무자대기
2019-05-02
256
글번호 128288
지표

바닥차기 님에 의해서 삭제되었습니다.

프로필 이미지
바닥차기
2019-04-30
1
글번호 128287
시스템
답변완료

수식문의

안녕하세요 1. 하기 수식에서 진입을 그냥 한개만 하게끔 부탁드립니다. 2. 최초 매수 진입시 볼린져 밴드 하단에서 진입 하게 될 경우, 완성봉이 볼린져 밴드 상단으로 진입했다가 다시 하단으로 내려오면 청산하게 부탁드립니다. 매도는 반대로 부탁드립니다. 3. 매수진입시 볼린져 밴드 상단밖에서 진입해야 할 경우는 진입하지 못하게 부탁드립니다. 매도진입시 볼린져 밴드 하단밖에서 진입해야 할 경우는 진입하지 못하게 부탁드립니다. 4. 최초 매수 진입시 볼린져 밴드 이평과 상단 사이에서 진입하게 될 경우, 볼린져 밴드 하단에 완성봉이 생기면 청산 부탁 드립니다. 매도는 반대로 부탁드립니다. - 옵션으로 청산과 동시에 반대매매 진입하게 참고식도 부탁드립니다. 번거롭게해서 죄송합니다. 감사합니다. Input : short(12), long(26), signal(9); Var : MACDv1(0,data1), MACDs1(0,data1),macdo1(0,data1); Var : MACDv2(0,data2), MACDs2(0,data2),macdo2(0,data2); var : Bcond(false,data1),Scond(false,data1); MACDv1 = data1(MACD(short, long)); MACDs1 = data1(ema(MACDv1,signal)); macdo1 = data1(MACDv1-MACDs1); MACDv2 = data2(MACD(short, long)); MACDs2 = data2(ema(MACDv2,signal)); macdo2 = data2(MACDv2-MACDs2); Bcond = macdo1 > 0 and macdo2 > 0; Scond = macdo1 < 0 and macdo2 < 0; if Bcond == true and Bcond[1] == false then buy("b",OnClose,def,2); if Scond == true and Scond[1] == false Then sell("s",OnClose,def,2); if MarketPosition == 1 Then ExitLong("bx1",atlimit,EntryPrice+PriceScale*20,"",1,1); if MarketPosition == -1 Then ExitShort("sx1",atlimit,EntryPrice-PriceScale*20,"",1,1); 감사합니다.
프로필 이미지
softtoug
2019-05-02
277
글번호 128286
시스템
답변완료

부탁드립니다

수고하십니다 아래수식이 맞나요? var : cnt(0); Array : O2[20](0,data2),H2[20](0,data2),L2[20](0,data2); Array : O3[20](0,data3),H3[20](0,data3),L3[20](0,data3); Array : O4[20](0,data4),H4[20](0,data4),L4[20](0,data4); Array : O5[20](0,data5),H5[20](0,data5),L5[20](0,data5); Array : O6[20](0,data6),H6[20](0,data6),L6[20](0,data6); Array : O7[20](0,data7),H7[20](0,data7),L7[20](0,data7); Array : O8[20](0,data8),H8[20](0,data8),L8[20](0,data8); Array : O9[11](0,data9),H9[20](0,data9),L9[20](0,data9); if data2(bdate != bdate[1]) Then { O2[0] = data2(O); H2[0] = data2(H); L2[0] = data2(L); for cnt = 1 to 19 { O2[cnt] = O2[cnt-1][1]; H2[cnt] = H2[cnt-1][1]; L2[cnt] = L2[cnt-1][1]; }} if H2[0] > 0 and data2(H) > H2[0] Then H2[0] = data2(H); if L2[0] > 0 and data2(L) < L2[0] Then L2[0] = data2(L); if data3(bdate != bdate[1]) Then { O3[0] = data3(O); H3[0] = data3(H); L3[0] = data3(L); for cnt = 1 to 19 { O3[cnt] = O3[cnt-1][1]; H3[cnt] = H3[cnt-1][1]; L3[cnt] = L3[cnt-1][1];}} if H3[0] > 0 and data3(H) > H3[0] Then H3[0] = data3(H); if L3[0] > 0 and data3(L) < L3[0] Then L3[0] = data3(L); if data4(bdate != bdate[1]) Then { O4[0] = data4(O); H4[0] = data4(H); L4[0] = data4(L); for cnt = 1 to 19 { O2[cnt] = O2[cnt-1][1]; H2[cnt] = H2[cnt-1][1]; L2[cnt] = L2[cnt-1][1]; }} if H4[0] > 0 and data4(H) > H4[0] Then H4[0] = data4(H); if L4[0] > 0 and data4(L) < L4[0] Then L4[0] = data4(L); if data5(bdate != bdate[1]) Then { O5[0] = data5(O); H5[0] = data5(H); L5[0] = data5(L); for cnt = 1 to 19 { O5[cnt] = O5[cnt-1][1]; H5[cnt] = H5[cnt-1][1]; L5[cnt] = L5[cnt-1][1]; }} if H5[0] > 0 and data5(H) > H5[0] Then H5[0] = data5(H); if L5[0] > 0 and data5(L) < L5[0] Then L5[0] = data5(L); if data6(bdate != bdate[1]) Then { O6[0] = data6(O); H6[0] = data6(H); L6[0] = data6(L); for cnt = 1 to 19 { O6[cnt] = O6[cnt-1][1]; H6[cnt] = H6[cnt-1][1]; L6[cnt] = L6[cnt-1][1]; }} if H6[0] > 0 and data6(H) > H6[0] Then H6[0] = data6(H); if L6[0] > 0 and data6(L) < L6[0] Then L6[0] = data6(L); if data7(bdate != bdate[1]) Then { O7[0] = data7(O); H7[0] = data7(H); L7[0] = data7(L); for cnt = 1 to 19 { O7[cnt] = O7[cnt-1][1]; H7[cnt] = H7[cnt-1][1]; L7[cnt] = L7[cnt-1][1]; }} if H7[0] > 0 and data7(H) > H7[0] Then H7[0] = data7(H); if L7[0] > 0 and data7(L) < L7[0] Then L7[0] = data7(L); if data8(bdate != bdate[1]) Then { O8[0] = data8(O); H8[0] = data8(H); L8[0] = data8(L); for cnt = 1 to 19 { O8[cnt] = O8[cnt-1][1]; H8[cnt] = H8[cnt-1][1]; L8[cnt] = L8[cnt-1][1]; }} if H8[0] > 0 and data8(H) > H8[0] Then H8[0] = data8(H); if L8[0] > 0 and data8(L) < L8[0] Then L8[0] = data8(L); if data9(bdate != bdate[1]) Then { O9[0] = data9(O); H9[0] = data9(H); L9[0] = data9(L); for cnt = 1 to 19 { O9[cnt] = O9[cnt-1][1]; H9[cnt] = H9[cnt-1][1]; L9[cnt] = L9[cnt-1][1]; }} if H9[0] > 0 and data9(H) > H9[0] Then H9[0] = data9(H); if L9[0] > 0 and data9(L) < L9[0] Then L9[0] = data9(L); plot1(O2[0],"data2시가");plot7(O4[0],"data4시가");plot13(O6[0],"data6시가"); plot2(H2[0],"data2고가");plot8(O4[0],"data4고가");plot14(O6[0],"data6고가"); plot3(L2[0],"data2저가");plot9(O4[0],"data4저가");plot15(O6[0],"data6시저가"); plot4(O3[0],"data3시가");plot10(O5[0],"data5시가");plot16(O7[0],"data7시가"); plot5(H3[0],"data3고가");plot11(O5[0],"data5고가");plot17(O7[0],"data7고가"); plot6(L3[0],"data3저가");plot12(O5[0],"data5저가");plot18(O7[0],"data7저가"); plot19(O8[0],"data8시가");plot20(O8[0],"data8고가");plot21(O8[0],"data8저가"); plot22(O9[0],"data9시가");plot23(O9[0],"data9고가");plot24(O9[0],"data9저가");
프로필 이미지
파생돌이
2019-04-30
264
글번호 128285
지표
답변완료

질문 드립니다.

안녕하세요 운영자님. 처음 질문 드립니다. 거래량 이평선으로 진입 청산을 하고 싶습니다. 로직 부탁 드립니다. 거래량 20과 60을 변수로 최적화 할 수 있도록 부탁 드립니다. 거래량이평선 20일선이 60선 위에 있을 때 매수 거래량이평선 20일선이 60선 밑에 있을 때 매도 감사합니다.
프로필 이미지
매플
2019-04-30
289
글번호 128277
시스템
답변완료

예스 글로발

안녕하세요? 한투 예스글로발에서 SGX A50 만기일 이면 1 아니면 0을 return 하는 함수 작성 부탁합니다 감사합니다
프로필 이미지
대가들의매매
2019-04-30
255
글번호 128274
사용자 함수
답변완료

수식 수정좀 부탁드립니다.

아래 수식은 일봉상 5, 10, 20, 60, 120선과 일목의 기준선 전환선을 긋는 수식인데 여기에 일봉상 ma120 일선 다음에 일봉상 wma120 일 선을 하나 더 긋고 싶습니다. input : P1(5),P2(10),P3(20),P4(60),P5(120),Period1(9),Period2(26); var : count(0); var : sumV1(0),sumV2(0),sumV3(0),sumV4(0),sumV5(0); var : mav1(0),mav2(0),mav3(0),mav4(0),mav5(0); var : H1(0),L1(0),H2(0),L2(0),Standard(0),Turn(0); sumV1 = 0; sumV2 = 0; sumV3 = 0; sumV4 = 0; sumV5 = 0; H1 = DayHigh(0); L1 = DayLow(0); H2 = DayHigh(0); L2 = DayLow(0); for count = 0 to P5{ if count < P1 Then sumV1 = sumV1+DayClose(count); if count < P2 Then sumV2 = sumV2+DayClose(count); if count < P3 Then sumV3 = sumV3+DayClose(count); if count < P4 Then sumV4 = sumV4+DayClose(count); if count < P5 Then sumV5 = sumV5+DayClose(count); if count < Period1 Then { if DayHigh(count) > H1 Then H1 = DayHigh(count); if DayLow(count) < L1 Then L1 = DayLow(count); } if count < Period2 Then { if DayHigh(count) > H2 Then H2 = DayHigh(count); if DayLow(count) < L2 Then L2 = DayLow(count); } } maV1 = sumV1 / P1; maV2 = sumV2 / P2; maV3 = sumV3 / P3; maV4 = sumV4 / P4; maV5 = sumV5 / P5; turn = (H1+L1)/2; Standard = (H2+L2)/2; if DayClose(P1-1) > 0 Then plot1(mav1,"일봉이평1"); if DayClose(P2-1) > 0 Then plot2(mav2,"일봉이평2"); if DayClose(P3-1) > 0 Then plot3(mav3,"일봉이평3"); if DayClose(P4-1) > 0 Then plot4(mav4,"일봉이평4"); if DayClose(P5-1) > 0 Then plot5(mav5,"일봉이평5"); if DayClose(Period1-1) > 0 Then plot6(turn,"일봉전환선"); if DayClose(Period2-1) > 0 Then plot7(Standard,"일봉기준선");
프로필 이미지
천왕봉
2019-04-30
279
글번호 128271
지표