커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

수정 부탁드립니다.

안녕하세요. Playsound() 함수를 이용 해서 다이버젼스가(매수,매도)나올때 음성으로 나오게 하고 싶습니다. 함수를 넣어보니 계속해서 음성이 나옵니다. 1회만 나오게 수정 부탁합니다. Input:Rate(3), kind(1); // 1:일반다이버전스,2:히든다이버전스,3:과장된다이버전스,4:3중다이버전스 Var:j(0),jj(0),iValue(0), 고저구분(0), // 1: 고점, 2: 저점 신규여부(0); // 1: 신규, 2: 연장 Array:HH[10,4](0),LL[10,4](0), // 1:가격, 2:Index, 3:sDate, 4:sTime IH[10,4](0),IL[10,4](0), // 지표의 고,저점을 관리 TL[10](0), BeginIndex[4](0); var : tx1(0),tx2(0); #==========================================# iValue = RSI(9); // 지표값은 아래와 같이 다양하게 변경 가능 // iValue = StochasticsK(10,5); // iValue = StochasticsD(5,3,3); // iValue = MACD(12,26); // iValue = MACD_OSC(12,26,9); // iValue = CCI(9); // iValue = LRS(C,14); // iValue = Volume; Plot1(iValue); #==========================================# // 주가 차트에 대한 파동선 고저구분 = ChgRateZigZag(Rate,0,HH,LL,신규여부); // 최소변동률지그재그 If 고저구분 == 1 Then { // 고점 If 신규여부 == 1 Then { TL[0] = TL_New(LL[1,3],LL[1,4],LL[1,1],HH[1,3],HH[1,4],HH[1,1]); } If 신규여부 == 2 Then // 고점 연장 { TL_SetEnd(TL[0],HH[1,3],HH[1,4],HH[1,1]); } } Else If 고저구분 == -1 Then { // 저점 If 신규여부 == 1 Then { TL[0] = TL_New(HH[1,3],HH[1,4],HH[1,1],LL[1,3],LL[1,4],LL[1,1]); } If 신규여부 == 2 Then // 저점 연장 { TL_SetEnd(TL[0],LL[1,3],LL[1,4],LL[1,1]); } } TL_SetSize(TL[0],1); TL_SetColor(TL[0],PINK); if 고저구분 == 1 Then { if 고저구분[1] != 1 Then { tx1 = Text_New(HH[1,3],HH[1,4],HH[1,1],NumToStr(HH[1,1],2)); Text_SetStyle(tx1,2,1); } Else { Text_SetString(tx1,NumToStr(HH[1,1],2)); Text_SetLocation(tx1,HH[1,3],HH[1,4],HH[1,1]); } } if 고저구분 == -1 Then { if 고저구분[1] != -1 Then { tx1 = Text_New(LL[1,3],LL[1,4],LL[1,1],NumToStr(LL[1,1],2)); Text_SetStyle(tx1,2,0); } Else { Text_SetString(tx1,NumToStr(LL[1,1],2)); Text_SetLocation(tx1,LL[1,3],LL[1,4],LL[1,1]); } } #==========================================# // 보조지표에 대한 파동선 Value1 = IndiDivergence(고저구분,신규여부,iValue,IH,IL); // 주가의 지그재그파동 결과를 입력 // 결과값이 1이면 정상, 0이면 오류 If Value1 == 1 Then { If 고저구분 == 1 Then { // 고점 If 신규여부 == 1 Then // 주가 파동에 신규 고점 발생 { TL[1] = TL_New_Self(IL[1,3],IL[1,4],IL[1,1],IH[1,3],IH[1,4],IH[1,1]); tx2 = Text_New_Self(IH[1,3],IH[1,4],IH[1,1],NumToStr(IH[1,1],2)); Text_SetStyle(tx2,2,1); } Else // 주가의 꼭지점이 그대로라도 지표는 변하므로 매봉마다 연장처리 { TL_SetEnd(TL[1],IH[1,3],IH[1,4],IH[1,1]); Text_SetString(tx2,NumToStr(IH[1,1],2)); Text_SetLocation(tx2,IH[1,3],IH[1,4],IH[1,1]); } } Else If 고저구분 == -1 Then { // 저점 If 신규여부 == 1 Then // 주가 파동에 신규 저점 발생 { TL[1] = TL_New_Self(IH[1,3],IH[1,4],IH[1,1],IL[1,3],IL[1,4],IL[1,1]); tx2 = Text_New_Self(IL[1,3],IL[1,4],IL[1,1],NumToStr(IL[1,1],2)); Text_SetStyle(tx2,2,0); } Else { TL_SetEnd(TL[1],IL[1,3],IL[1,4],IL[1,1]); Text_SetString(tx2,NumToStr(IL[1,1],2)); Text_SetLocation(tx2,IL[1,3],IL[1,4],IL[1,1]); } } TL_SetSize(TL[1],1); TL_SetColor(TL[1],BLUE); } #==========================================# // 다이버전스 표시 If (kind == 1 and HH[2,1] < HH[1,1] and IH[2,1] > IH[1,1]) or // 일반 약세 다이버전스 : 주가 고점 상승, 보조지표 고점 하락 (kind == 2 and HH[2,1] > HH[1,1] and IH[2,1] < IH[1,1]) or // 히든 약세 다이버전스 : 주가 고점 하락, 보조지표 고점 상승 (kind == 3 and abs(HH[2,1] - HH[1,1]) <= 2 * PriceScale and IH[2,1] > IH[1,1]) Then { // 과장된 약세 다이버전스 : 주가 고점의 차이가 2틱 이내이고 보조지표 고점 하락 Value2 = (HH[1,1]-HH[2,1])/(HH[1,2]-HH[2,2])*(Index-HH[2,2])+HH[2,1]; Value3 = (IH[1,1]-IH[2,1])/(IH[1,2]-IH[2,2])*(Index-IH[2,2])+IH[2,1]; If BeginIndex[0] == HH[2,2] Then { // 다이버전스를 나타내는 추세선의 시작점이 변함이 없으면 추세선 끝점만 연장 TL_SetEnd(TL[2],sDate,sTime,Value2); TL_SetEnd(TL[3],sDate,sTime,Value3); } Else { TL[2] = TL_New(HH[2,3],HH[2,4],HH[2,1],sDate,sTime,Value2); TL[3] = TL_New_Self(IH[2,3],IH[2,4],IH[2,1],sDate,sTime,Value3); BeginIndex[0] = HH[2,2]; // 추세선 시작점인 2번 고점의 index 값을 저장 } TL_SetSize(TL[2],3); TL_SetSize(TL[3],3); TL_SetColor(TL[2],LGREEN); TL_SetColor(TL[3],LGREEN); PlaySound("C:₩EugeneYesTrader₩Bin10₩data₩Sound₩오일매도.wav"); } If (kind == 1 and LL[2,1] > LL[1,1] and IL[2,1] < IL[1,1]) or // 일반 강세 다이버전스 : 주가 저점 하락, 보조지표 저점 상승 (kind == 2 and LL[2,1] < LL[1,1] and IL[2,1] > IL[1,1]) or // 히든 강세 다이버전스 : 주가 저점 상승, 보조지표 저점 하락 (kind == 3 and abs(LL[2,1] - LL[1,1]) <= 2 * PriceScale and IL[2,1] < IL[1,1]) Then { // 과장된 강세 다이버전스 : 주가 저점의 차이가 2틱 이내, 보조지표 저점 상승 Value4 = (LL[1,1]-LL[2,1])/(LL[1,2]-LL[2,2])*(Index-LL[2,2])+LL[2,1]; Value5 = (IL[1,1]-IL[2,1])/(IL[1,2]-IL[2,2])*(Index-IL[2,2])+IL[2,1]; If BeginIndex[1] == LL[2,2] Then { TL_SetEnd(TL[4],sDate,sTime,Value4); TL_SetEnd(TL[5],sDate,sTime,Value5); } Else { TL[4] = TL_New(LL[2,3],LL[2,4],LL[2,1],sDate,sTime,Value4); TL[5] = TL_New_Self(IL[2,3],IL[2,4],IL[2,1],sDate,sTime,Value5); BeginIndex[1] = LL[2,2]; } TL_SetSize(TL[4],3); TL_SetSize(TL[5],3); TL_SetColor(TL[4],MAGENTA); TL_SetColor(TL[5],MAGENTA); PlaySound("C:₩EugeneYesTrader₩Bin10₩data₩Sound₩오일매수.wav"); } If kind == 4 and HH[3,1] < HH[1,1] and // 주가 고점 상승 (HH[1,1]-HH[3,1])/(HH[1,2]-HH[3,2])*(HH[2,2]-HH[3,2])+HH[3,1] > HH[2,1] and // 2번 고점은 1번과 3번 고점을 잇는 선보다 밑에 위치 IH[3,1] > IH[1,1] and // 보조지표 고점 하락 (IH[1,1]-IH[3,1])/(IH[1,2]-IH[3,2])*(IH[2,2]-IH[3,2])+IH[3,1] > IH[2,1] Then { // 2번 고점은 1번과 3번 고점을 잇는 선보다 밑에 위치 Value2 = (HH[1,1]-HH[3,1])/(HH[1,2]-HH[3,2])*(Index-HH[3,2])+HH[3,1]; Value3 = (IH[1,1]-IH[3,1])/(IH[1,2]-IH[3,2])*(Index-IH[3,2])+IH[3,1]; If BeginIndex[0] == HH[3,2] Then { TL_SetEnd(TL[2],sDate,sTime,Value2); TL_SetEnd(TL[3],sDate,sTime,Value3); } Else { TL[2] = TL_New(HH[3,3],HH[3,4],HH[3,1],sDate,sTime,Value2); TL[3] = TL_New_Self(IH[3,3],IH[3,4],IH[3,1],sDate,sTime,Value3); BeginIndex[0] = HH[3,2]; } TL_SetSize(TL[2],3); TL_SetSize(TL[3],3); TL_SetColor(TL[2],LGREEN); TL_SetColor(TL[3],LGREEN); } If kind == 4 and LL[3,1] > LL[1,1] and // 주가 저점 하락 (LL[1,1]-LL[3,1])/(LL[1,2]-LL[3,2])*(LL[2,2]-LL[3,2])+LL[3,1] < LL[2,1] and // 2번 저점이 1번,3번 저점을 잇는 선보다 위에 위치 IL[3,1] < IL[1,1] and // 보조지표 저점 상승 (IL[1,1]-IL[3,1])/(IL[1,2]-IL[3,2])*(IL[2,2]-IL[3,2])+IL[3,1] < IL[2,1] Then { Value4 = (LL[1,1]-LL[3,1])/(LL[1,2]-LL[3,2])*(Index-LL[3,2])+LL[3,1]; Value5 = (IL[1,1]-IL[3,1])/(IL[1,2]-IL[3,2])*(Index-IL[3,2])+IL[3,1]; If BeginIndex[1] == LL[3,2] Then { TL_SetEnd(TL[4],sDate,sTime,Value4); TL_SetEnd(TL[5],sDate,sTime,Value5); } Else { TL[4] = TL_New(LL[3,3],LL[3,4],LL[3,1],sDate,sTime,Value4); TL[5] = TL_New_Self(IL[3,3],IL[3,4],IL[3,1],sDate,sTime,Value5); BeginIndex[1] = LL[3,2]; } TL_SetSize(TL[4],3); TL_SetSize(TL[5],3); TL_SetColor(TL[4],MAGENTA); TL_SetColor(TL[5],MAGENTA); }
프로필 이미지
묵연히
2019-07-02
401
글번호 129931
지표
답변완료

수식

1. 당일 천정 -2.0 하락 매수하여 당일 천정 -2.0 하락 매수분은 1.0 수익 매도 당일 천정 -3.0 하락 매수하여 당일 천정 -3.0 하락 매수분은 2.0 수익 매도
프로필 이미지
회원
2019-07-02
246
글번호 129930
시스템

중박주식 님에 의해서 삭제되었습니다.

프로필 이미지
중박주식
2019-07-02
13
글번호 129929
시스템
답변완료

문의드립니다

아래 두 전략을 합쳐서 한 전략으로 부탁드립니다 1. Input : P1(10),p2(5),P3(12),p4(5); input : Period1(20),Period2(10); input : 익절틱수(20),손절틱수(40); input : starttime(101600),endtime(173000); var : Tcond(false); if (sdate != sdate[1] and stime >= starttime) or (sdate == sdate[1] and stime >= starttime and stime[1] < starttime) then { Tcond = true; } if (sdate != sdate[1] and stime >= endtime) or (sdate == sdate[1] and stime >= endtime and stime[1] < endtime) then { Tcond = false; if MarketPosition == 1 Then ExitLong("bx"); if MarketPosition == -1 Then ExitShort("sx"); } var1 = StochasticsK(P1,P2); var2 = StochasticsK(P3,P4); var3 = StochasticsK(Period1,Period2); if Tcond == true then { if crossup(var1,var3) and var1 < 20 and var3 < 20 Then buy("매수"); if CrossDown(var1,var3) and var1 > 80 and var3 > 80 Then sell("매도"); if crossup(var2,var3) and var2 < 20 and var3 < 20 Then buy("매수진입"); if CrossDown(var2,var3) and var2 > 80 and var3 > 80 Then sell("매도진입"); } SetStopProfittarget(PriceScale*익절틱수,PointStop); SetStopLoss(PriceScale*손절틱수,PointStop); 2. input : P14(14),P3(3); input : 익절틱수(20),손절틱수(40); var1 = (DIPLUS(P14)-DIMINUS(P14)) / (DIPLUS(P14)+DIMINUS(P14)); var2 = ema(var1,P3); if var1 <= -0.5 and crossup(var1,var2) Then buy(); if var1 >= 0.5 and CrossDown(var1,var2) Then sell(); SetStopProfittarget(PriceScale*익절틱수,PointStop); SetStopLoss(PriceScale*손절틱수,PointStop);
프로필 이미지
해피슈
2019-07-01
136
글번호 129928
시스템
답변완료

수식 부탁드림니다.

A: 전일 일봉 종가가 3% 미만일때 B:당일 분봉의 RSI(14) < 80 일때 A와 B의 교집합일때 수식이 아래와 같나요? if dayclose(1) < dayclose(2)*3% and RSI(14) < 80 Then
프로필 이미지
영태통닭
2019-07-01
137
글번호 129927
시스템
답변완료

수식부탁합니다.

DMI수식입니다. 아래의 수식을 LOG로 변형 부탁드립니다. Input : Period(14); var : DP(0),DM(0),adxv(0); DP = ema(iff(H-H[1]>0 && H-H[1]>L[1]-L,H-H[1],0),Period)/ ema(max(max(H-L,abs(C[1]-H)),abs(C[1]-L)),Period)*100; DM = ema(iff(L[1]-L>0 && H-H[1]<L[1]-L,L[1]-L,0),Period)/ ema(max(max(H-L,abs(C[1]-H)),abs(C[1]-L)),Period)*100; adxv = Ema(abs(DP-DM)/(DP+DM),period)*100; plot1(DP); plot2(DM); plot3(ADXv);
프로필 이미지
무자대기
2019-07-01
146
글번호 129926
시스템
답변완료

수식부탁드립니다

#.안녕하세요 작성해주신 수식 잘 사용중입니다,#63086 답변수식과 반대의경우 즉 현재주가가 상방진행시(매수라인)중심선을 표시하는 수식 추가로 부탁드립니다. 미리감사드립니다, 즐거운 하루되세요
프로필 이미지
회원
2019-07-01
155
글번호 129925
지표
답변완료

검색 부탁 드립니다.

일목균형표 선행1의 구름대 위에 있는 종목을 찾는 수식이 있는지요.
프로필 이미지
회원
2019-07-01
143
글번호 129924
검색
답변완료

수식 관련 질문입니다

input : P1(1),P2(2); var1 = ema(C,P1); var2 = ema(C,P2); if crossup(var1,var2) Then buy("b",OnClose,def,6); if CrossDown(var1,var2) Then sell("s",OnClose,def,6); if MarketPosition == 1 then { ExitLong("bx1",atlimit,EntryPrice+PriceScale*25,"",1,1); ExitLong("bx2",atlimit,EntryPrice+PriceScale*35,"",1,1); ExitLong("bx3",atlimit,EntryPrice+PriceScale*45,"",1,1); ExitLong("bx4",atlimit,EntryPrice+PriceScale*55,"",1,1); ExitLong("bx5",atlimit,EntryPrice+PriceScale*65,"",1,1); ExitLong("bx6",atlimit,EntryPrice+PriceScale*75,"",1,1); } if MarketPosition == -1 then { ExitShort("sx1",atlimit,EntryPrice-PriceScale*25,"",1,1); ExitShort("sx2",atlimit,EntryPrice-PriceScale*35,"",1,1); ExitShort("sx3",atlimit,EntryPrice-PriceScale*45,"",1,1); ExitShort("sx4",atlimit,EntryPrice-PriceScale*55,"",1,1); ExitShort("sx5",atlimit,EntryPrice-PriceScale*65,"",1,1); ExitShort("sx6",atlimit,EntryPrice-PriceScale*75,"",1,1); }
프로필 이미지
이태리
2019-07-02
142
글번호 129923
시스템