커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

목마와숙녀 님에 의해서 삭제되었습니다.

프로필 이미지
목마와숙녀
2017-03-23
0
글번호 108117
시스템
답변완료

문의드립니다

문의드립니다 지표수식 좀 수정부탁드립니다 첨부화일에보면 REB와 BLUE의 수치를 RED선위에 BLUE선 밑에 수정좀부탁드립니다 수식 input : 텍스트소수점자리수(5); Var:jjjjj(0),lastHiVal(0),lastLoVal(0),turnPntBit(""),TL1(0),TL2(0),TL3(0),TL4(0),TL5(0),TL6(0),Tx(0),trnd(0),tx22(0); var : TL11(0),TL22(0); Array:valArr[10](0),barArr[10](0),turnPntArr[10](""); For jjjjj = 0 To 9 { barArr[jjjjj] = barArr[jjjjj] + 1; } Condition1 = Highest(H,26) == H and lastHiVal <> H; Condition2 = Lowest(L,26) == L and lastLoVal <> L; If Condition1 Then lastHiVal = H; If Condition2 Then lastLoVal = L; // 전환점구분 null값으로 초기화; turnPntBit = ""; If Condition1 and Condition2 Then { If Max(valArr[1],valArr[2]) < H and Min(valArr[1],valArr[2]) > L Then turnPntBit = "HiLo"; Else If Max(valArr[1],valArr[2]) < H Then turnPntBit = "Hi"; Else If Min(valArr[1],valArr[2]) > L Then turnPntBit = "Lo"; } Else If Condition1 Then turnPntBit = "Hi"; Else If Condition2 Then turnPntBit = "Lo"; If turnPntBit <> "" Then { If turnPntBit == "HiLo" Then { valArr[1] = IFF(turnPntArr[1] == "Hi",H,L); barArr[1] = 0; TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]); If turnPntArr[1] == "Hi" Then turnPntBit = "Lo"; Else turnPntBit = "Hi"; } If turnPntBit <> turnPntArr[1] Then { for jjjjj = 8 downto 1 { valArr[jjjjj+1] = valArr[jjjjj]; barArr[jjjjj+1] = barArr[jjjjj]; turnPntArr[jjjjj+1] = turnPntArr[jjjjj]; } } If turnPntBit <> turnPntArr[1] or (turnPntBit == turnPntArr[1] and ((turnPntBit == "Hi" and valArr[1] < H) or (turnPntBit == "Lo" and valArr[1] > L))) Then { valArr[1] = IFF(turnPntBit == "Hi",H,L); barArr[1] = 0; turnPntArr[1] = turnPntBit; If turnPntArr[1][1] <> turnPntArr[1][0] Then { Tx = Text_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],NumToStr(valArr[2],텍스트소수점자리수)); Text_SetStyle(tx,0,2); //TL1 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],sDate[barArr[1]],sTime[barArr[1]],valArr[1]); PlaySound("C:₩예스트레이더₩data₩Sound₩alert.wav"); var1 = valArr[1]; var2 = valArr[2]; var3 = valArr[3]; TL11 = TL_New(sDate[barArr[3]],sTime[barArr[3]],valArr[3],sDate[barArr[1]],sTime[barArr[1]],valArr[3]); TL_SetSize(TL11,1); if turnPntArr[1][0] == "Hi" Then TL_SetColor(TL11,RED); Else TL_SetColor(TL11,blue); } if turnPntArr[1][0] == "Lo" Then trnd = -1; if turnPntArr[1][0] == "hi" Then trnd = 1; } } TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]); TL_SetEnd(TL11,sDate[barArr[1]],sTime[barArr[1]],valArr[3]); Text_Delete(tx22); tx22 = Text_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1],NumToStr(valArr[1],텍스트소수점자리수)); TL_Delete(TL22); if turnPntArr[1][0] == "Lo" Then{ TL22 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],sDate,sTime,valArr[2]); TL_SetSize(TL22,1); TL_SetColor(TL22,RED); } if turnPntArr[1][0] == "hi" Then{ TL22 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],sDate,sTime,valArr[2]); TL_SetSize(TL22,1); TL_SetColor(TL22,blue); } TL_SetSize(TL1[1],1); TL_SetColor(TL1[1],BLACK);
프로필 이미지
럭키잭팟
2017-03-23
212
글번호 108116
지표
답변완료

국내 옵션 키움용 수식입니다

예스용으로 부탁드립니다! 옵션용이긴 한데 실제는 선물거래를 하기 위해 옵션 지표를 보면서 선물거래 목적입니다. 옵션챠트에 적용하는데 선물챠트에 바로 적용할 수 있다면 더 좋을것 같습니다. 옵션 상승과 하락 옵션 목표가수식 수식1 daylow()*1.3 수식2 daylow()*1.44 수식3 daylow()*1.61 수식4 daylow()*1.87 수식5 daylow()*2 수식6 daylow()*2.4 수식7 daylow()*3 하락 또는 상슬하다가...옵션지지및 반등자리 수식1 dayhigh()*07 수식2 dayhigh()*0.58 수식3 dayhigh()*0.45 감사합니다
프로필 이미지
qha71
2017-03-23
197
글번호 108115
지표
답변완료

키움 수식 에스용으로 변환 부탁드립니다

아래는 키움용 마디가인데 에스용으로 부탁드립니다 전일 종가기준 상승화 하락 마디가 2가지를 모두 합친 마디가로 부탁드려요! 1. 전일 종가기준 상승 마디가 수식1 수식이름 up n1 수식 a=ATM a+(마디간격*1) 수식2 수식이름 up n2 수식 a=ATM a+(마디간격*2) 수식3 수식이름 up n3 수식 a=ATM a+(마디간격*3) 수식4 수식이름 up n4 수식 a=ATM a+(마디간격*4) 수식5 수식이름 up n5 수식 a=ATM a+(마디간격*5) 2. 전일 종가기준 하락 마디가 수식1 수식이름 up n1 수식 a=ATM a-(마디간격*1) 수식2 수식이름 up n2 수식 a=ATM a-(마디간격*2) 수식3 수식이름 up n3 수식 a=ATM a-(마디간격*3) 수식4 수식이름 up n4 수식 a=ATM a-(마디간격*4) 수식5 수식이름 up n5 수식 a=ATM a-(마디간격*5) 그리고 지표조건설정은 상승마디수식이나 하락마디수식이나 동일하게 마디간격, 1.25 입니다.
프로필 이미지
qha71
2017-03-23
230
글번호 108114
지표
답변완료

수정부탁드립니다

수고 많으십니다. 수식을 적용해보니 per1(18)수식에 손절이 작동이 안돼서 SetStopLoss(PriceScale*15,PointStop);를 추가적용한결과 #,그림파일1 와같이 per2(9)의 매매시간 종료전에 per1(18)에(1)번이 매도진입할경우 손절이 작동하지 않습니다. #,또한 그림3과 같이 per2()의 매매시간종료전에 per1()에 매수진입(b12)할경우 (1)번청산과 (2)번 청산이 이 작동하지 &#50527;습니다. #,그런데 그림2와같이 per2(9)의 매매시간이 종료된후에 per1(18)이 매도진입(s12)할경우는 그림과 같이 손절이 정상 작동합니다,원인 확인 부탁합니다. #,또한 그림1에서보면 s22매도진입후 손절(s12)이정상 작동되고 장종료시간(12;50)에 정상으로 (ExitShortNo2)가 표기되는데(그림3도 정상표기) #,그림2에서 장종료시간에 (ExitShdrtNo2)는 왜 표기가 안되는지요, 수정부탁드립니다. #, 종합해보면 per2(9)의 매매시간 종료전에 per1(18)진입하면 손절,청산이 전혀작동을 하지않고 per2(9) 매매시간 종료후에 per1(18)이 진입하면 정상작동 하는데 원인 확인후 수정 부탁 드립니다.
프로필 이미지
회원
2017-03-23
137
글번호 108112
시스템
답변완료

수정좀 부탁합니다.

청산과 진입 신호가 같은 캔들에서 동시에 발생하는 경우가 있어 이럴 경우 청산 신호를 무시하는 수식을 부탁드렸고 아래와 같은 답변을 주셨는데 제가 어떤 변수를 넣어야 하는지 몰라서 그러는데요. 아래수식을 수정해주시면 고맙겠습니다.. ---------------------------- 답변 주신 내용 진입청산이 봉완성시를 기준으로 하는 타입이면 아래와 같이 제어해 보시기 바랍니다. 해당 부분은 사용자분이 수식내용에 맞춰 변수 추가하면서 변경해 보셔야 하는 내용입니다. var : S(0); S = 0; if 진입 Then{ S = 1; sell(); } if S == 0 and 청산 Then ExitShort(); 즐거운 하루되세요 -------------------------- input : P(40); var : T(0), moveLine(0), OrderValue(0); moveLine = ma(C,P); value2 = (highest(H,52)+lowest(L,52))/2; Condition1 = MarketPosition == 0 and MarketPosition(1) == 1 and IsExitName("StopLoss",1) == true ; Condition2 = MarketPosition == 0 and MarketPosition(1) == -1 and IsExitName("StopLoss",1) == true ; if (T <= 0 and (moveLine > moveLine[1])) Then { OrderValue = Close; T = 1; } if (T >= 0 and (moveLine < moveLine[1])) Then { OrderValue = Close; T = -1; } if Condition1 == false and C > (value2 + (PriceScale*3)) and (Close >= (OrderValue + (PriceScale *2))) Then buy("매수",OnClose); if Condition2 == false and C < (value2 - (PriceScale*3)) and (Close <= (OrderValue - (PriceScale *3))) Then sell("매도",OnClose); SetStopLoss(22,PointStop); if highest(H,BarsSinceEntry) >= EntryPrice+PriceScale*5 and (Close <= (OrderValue - (PriceScale *1))) Then ExitLong("매수청산"); if lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*5 and (Close >= (OrderValue + (PriceScale *1))) Then ExitShort("매도청산"); if MarketPosition == 1 Then{ var1 = Floor((highest(H,BarsSinceEntry)-EntryPrice)/(PriceScale*3)); if var1 > var1[1] Then Text_New(sdate,stime,H,NumToStr(var1*3,0)+"틱"); } if MarketPosition == -1 Then{ var1 = Floor((EntryPrice-Lowest(L,BarsSinceEntry))/(PriceScale*3)); if var1 > var1[1] Then Text_New(sdate,stime,H,NumToStr(var1*3,0)+"틱"); }
프로필 이미지
천왕봉
2017-03-22
121
글번호 108111
시스템
답변완료

52478 번 답변에 대해서요...

답변 감사합니다. 약간 제가 설명이 부족햇던것 같습니다. 답변해 주신대로라면 변수에 따른 함수값 하나만을 소환하는 것인데요, 제 의도는 Yes라는 지표를 사용해서 검색식에 사용할때, 20에 해당하는 값만을 소한하는 것이 아니라 예를 들면 yes(1)의 값이 10~20 사이의 값에 해당하는 종목을 검색하고자 할때 사용하고자 의도했던 것입니다. 불편하게해드려서 죄송합니다. > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 사용자함수 문의 > 안녕하세요 예스스탁입니다. 사용자함수명 yes 반환값형 논리형 함수식 내용 input : n(Numeric),per(Numeric); var : cnt(0); Array : MC[100](0); if Bdate > bdate[1]+30 Then{ for cnt = 1 to 99{ MC[cnt] = MC[cnt-1][1]; } } MC[0] = C; if MC[n] > 0 then yes = (MC[n]*1.1)/MC[n-1]*100 >= per; Else yes = false; 지표식이나 시스템등 수식에서는 yes(2,20)으로 지정하시면 true나 false가 리턴됩니다. 즐거운 하루되세요 > 왓썹 님이 쓴 글입니다. > 제목 : 사용자함수 문의 > 안녕하세요, NH트레이더 사용자입니다. 항상 도움받고 있습니다. YesLang을 사용해서 사용자 함수 "Yes"를 작성하고 싶습니다. Yes는 월봉의 n월 전의 종가 MC[n]를 포함하는 식이 아래와 같고 X[n] = MC[n] *1.1 Yes를 X[n]/MC[n-1]*100 >= 20로 정의하고 싶습니다. 이때, yes를 n 을 지정할 때 해당값을 소환하고 싶어요
프로필 이미지
왓썹
2017-03-22
116
글번호 108110
사용자 함수
답변완료

부탁 드립니다

/* 12시부터 새벽1시 사이에 신호가 나오게 하는수익 같은데 두 수식의 차이점(시간설정 하는 부분)이 뭔가요 어떤때는 신호가 안나오기도 하는것 같은데,,, 초보라서 죄송 합니다 ^^*/ input : sto1(10),sto2(5),sto3(2); var : loss(0),stok(0),stod(0); var : T1(0),entry(0),Tcond(false); stok = StochasticsK(sto1,sto2); stod = StochasticsD(sto1,sto2,sto3); if stime == 120000 or (stime > 120000 and stime[1] < 120000) Then{ Tcond = true; T1 = TotalTrades; } if stime == 010000 or (stime > 010000 and stime[1] < 010000) Then Tcond = false; if MarketPosition == 0 Then entry = TotalTrades-T1; Else entry = (TotalTrades-T1)+1; if Tcond = true and Entry<3 and crossdown(stok,50) Then sell(); /* ------------------------------------------------------------------------------ */ input : sto1(10),sto2(5),sto3(2); var : loss(0),stok(0),stod(0); var : T1(0),entry(0),Tcond(false); stok = StochasticsK(sto1,sto2); stod = StochasticsD(sto1,sto2,sto3); if stime == 120000 or (stime > 120000 and stime[1] < 120000) Then{ Tcond = true; T1 = TotalTrades; } if stime == 010000 or (stime > 010000 and stime[1] < 010000) Then Tcond = false; if MarketPosition == 0 Then entry = TotalTrades-T1; Else entry = (TotalTrades-T1)+1; if stime >= 120000 or stime < 030000 then{ if Entry<3 and crossup(stod,50) Then buy("매수1"); }
프로필 이미지
마도로스77
2017-03-22
101
글번호 108094
시스템
답변완료

거래량수식

늘 감사합니다. 1. 09시10분부터 15시10분까지 거래량 500개 이상만 표시 양봉은 빨간색, 음봉은 파란색 2. 500개 이상의 높이는 일정하게 500개와 1000개 높이 차이가 없음으로 해주세요 3. data1을 기준으로 data2에 표현하는 수식이면 최고 감사합니다.
프로필 이미지
상암동
2017-03-22
180
글번호 108087
지표