커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

수식 도움 요청

ㄱ. data2의 macd OSC 가 양수인 상태 ㄴ. data1의 rsi > rsi signal 인 상태 ㄷ. data1의 rsi < 50 인 상태 에서 ㄹ. ma가 적용된 하캔아쉬가 양수 전환 하면 매수 하되. ㅁ. 단, 위의 모든 조건은 data1의 (rsi 가 rsi signal 골드크로스 발생) 이후 (n봉 기간 內에서만 유효)함. 부탁드리겠습니다. ㅁ.을 추가하려니 멘붕 오네요 ^^; ========= ma가 적용된 하캔아쉬 ============ input : period1(1); var : haClose(0),haOpen(0),haHigh(0),haLow(0); if CurrentBar > 1 then { haClose = (Open+High+Low+Close)/4; haOpen = (haOpen[1] + haClose[1])/2 ; haHigh = Max(High, haOpen, haClose); haLow = Min(Low, haOpen, haClose) ; } var11 = ma(haClose,period1); Var12 = ma(haOpen,period1);
프로필 이미지
부똘이
2022-11-23
1049
글번호 164062
시스템
답변완료

문의 드립니다

해외선물 매매입니다. 1. 매매시간 08:00~ 익일06:00 익절 200틱 손절 50틱 진입청산 1회 1캔들이 150분봉인 경우의수에서 완성된 캔들 저점이 내려가는 (저점이 동일한건 포함 안됨) 6캔들후 매수 캔들 고점이 올라가는 (고점이 동일한건 포함안됨) 6캔들에 청산 2. 매매시간 08:00~ 익일06:00 익절 200틱 손절 50틱 진입청산 1회 1캔들이 150분봉인 경우의수에서 완성된 캔들 고점이 올라가는 (고점이 동일한건 포함 안됨) 6캔들후 매도 ----------------------- var1 = c-o; Var2 = AccumN(var1,21); input : starttime(180000),endtime(63000),n(0); IF Endtime > starttime Then SetStopEndofday(Endtime); Else { if sDate != sDate[1] Then SetStopEndofday(Endtime); } if (sdate != sdate[1] and stime >= endtime) or (sdate == sdate[1] and stime >= endtime and stime[1] < endtime) then { IF Endtime <= starttime Then { SetStopEndofday(0); } } if Var2 < 0 Then Buy(); if var2 > 0 Then Sell(); 위 수식어는 1캔들이 150분봉 인데요. 2캔들 손실에 자동청산후 매매정지및 익절 200틱 손절 100틱를 포함 하고자 합니다.
프로필 이미지
푸른
2022-11-24
1034
글번호 164060
시스템
답변완료

전략실행차트 data2 정보

안녕하세요 개발자님 스크린샷 화면은 선물 5분봉 차트와 Data2에 일봉선물차트를 띄운 화면입니다. 본래 시뮬레이션 차트에서는 Data2(C)를 불러오면 전날 일봉 종가를 불러오게 됩니다. 근데 전략실행차트에서 messangelog를 통해 실시간으로 Data2(C)의 정보를 불러와보니 현재 종가가 그림과 같이 불러와집니다. 또 Data2(C[1]) 를 불러와보니 어제와 그제 종가가 번갈아가면서 디버깅창에 뜨던데.. 좀 일관되고 안전하게 data2 정보를 쓸 수 있게 하여 실제 자동매매에 data2를 안전하게 쓸 수 있는 방법이 없을까요?
프로필 이미지
히익
2022-11-23
1095
글번호 164047
지표
답변완료

추세선 위로 이동

input : Period(10),선두께(1); Var:상승색(red), 하락색(blue); input : 바닥상1(2),바닥하1(0),바닥상2(2),바닥하2(0),봉상1(0),봉하1(1),틱1(0),틱2(1); Var:j(0),T(0),txx(0); Var: date11(0),date12(0),time11(0),time12(0),TL1(0),TL(0), date21(0),date22(0),time21(0),time22(0), date31(0),date32(0),time31(0),time32(0),tx(0),tx1(0),tl4(0),TL9(0),idx(0); Array:HiVal[20](0),LoVal[20](0),HiBar[20](0),LoBar[20](0); Array:r[7](0),fr[7](0),TL2[7](0),TL3[7](0),TX2[7](0),TX3[7](0); Plot1(0); r[0] = 0; r[1] = 2; r[2] = 3.; r[3] = -1; r[4] = -2.; r[5] = 1; r[6] = 0.5; For j = 0 To 19 { HiBar[j] = HiBar[j] + 1; LoBar[j] = LoBar[j] + 1; } if crossup(c,highest(H,Period)[1]) Then T = 1; if CrossDown(c,Lowest(L,Period)[1]) Then T = -1; If T == -1 Then { If T[1] != -1 Then { For j = 18 DownTo 0 { LoVal[j+1] = LoVal[j]; LoBar[j+1] = LoBar[j]; } LoVal[0] = L; LoBar[0] = 0; date11 = date[HiBar[0]]; time11 = stime[HiBar[0]]; Value11 = HiVal[0]; date12 = date[LoBar[0]]; time12 = stime[LoBar[0]]; Value12 = LoVal[0]; TL_Delete(tl); TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen); TL1 = TL_New(date11,time11,Value11,date12,time12,Value12); TL_SetColor(TL1,하락색); date21 = date[HiBar[0]]; time21 = stime[HiBar[0]]; date22 = date[0]; time22 = stime[0]; for j = 0 to 6 { fr[j] = LoVal[1] + ((HiVal[0] - LoVal[1]) * r[j]); } if hival[0] <= hival[1]+PriceScale* 봉상1 and hival[0] >= hival[1]-PriceScale*봉하1 Then { Txx = Text_New(sDate,sTime,value11+PriceScale*2,"●"); Condition99 = true; Text_SetColor(Txx,Blue); Text_SetStyle(Txx,2,2); Text_SetSize(txx,10); } Txx = Text_New(date11,time11,Value11+PriceScale*1,"●"); Condition99 = true; Text_SetColor(Txx,Cyan); Text_SetStyle(Txx,2,2); Text_SetSize(txx,35); if Condition99 == true and Loval[0] <= loval[1]-PriceScale*틱2 Then { Condition99 = False; Text_Delete(txx); } } If LoVal[0] > L Then { LoVal[0] = L; LoBar[0] = 0; date12 = date[LoBar[0]]; time12 = stime[LoBar[0]]; Value12 = LoVal[0]; TL_SetEnd(TL1, date12,time12,Value12); date22 = date[0]; time22 = stime[0]; TL_Delete(tl); TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen); if Condition99 == true and Loval[0] <= loval[1]-PriceScale*틱2 Then { Condition99 = False; Text_Delete(txx); } } } If T == 1 Then { If T[1] != 1 Then { For j = 18 DownTo 0 { HiVal[j+1] = HiVal[j]; HiBar[j+1] = HiBar[j]; } HiVal[0] = H; HiBar[0] = 0; date11 = date[LoBar[0]]; time11 = stime[LoBar[0]]; Value11 = LoVal[0]; date12 = date[HiBar[0]]; time12 = stime[HiBar[0]]; Value12 = HiVal[0]; TL_Delete(tl); TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen); TL1 = TL_New(date11,time11,Value11,date12,time12,Value12); TL_SetColor(TL1,상승색); date31 = date[LoBar[0]]; time31 = stime[LoBar[0]]; date32 = date[0]; time32 = stime[0]; for j = 0 to 5 { fr[j] = LoVal[0] + ((HiVal[1] - LoVal[0]) * r[j]); } Condition1 = False; if Condition1 == False and LoVal[0] <= Loval[1]+PriceScale*바닥상1 and LoVal[0] >= Loval[1]-PriceScale*바닥하1 and LoVal[1] <= Loval[2]+PriceScale*바닥상2 and LoVal[1] >= Loval[2]-PriceScale*바닥하2 Then { Condition1 = true; TL9 = TL_New(sDate,sTime,0,sDate,sTime,99999999); TL_SetColor(TL9,Magenta); TL_SetSize(TL9,0.5); Tx =Text_New(sDate,sTime,value11-PriceScale*3,"●"); Condition99 = true; Text_SetColor(Tx,Magenta); Text_SetStyle(Tx,2,2); Text_SetSize(tx,25); } if Condition1 == False and LoVal[0] <= Loval[1]+PriceScale*바닥상1 and LoVal[0] >= Loval[1]-PriceScale*바닥하1 Then { Condition1 = true; TL9 = TL_New(sDate,sTime,0,sDate,sTime,99999999); TL_SetColor(TL9,Red); TL_SetSize(TL9,0.5); Tx = Text_New(sDate,sTime,value11-PriceScale*3,"●"); Condition99 = true; Text_SetColor(Tx,Red); Text_SetStyle(Tx,2,2); Text_SetSize(tx,25); } if Condition99 == true and Loval[0] >= Loval[1]-PriceScale*틱1 Then { Condition99 = False; Text_Delete(txx); } } If HiVal[0] < H Then { HiVal[0] = H; HiBar[0] = 0; date12 = date[HiBar[0]]; time12 = stime[HiBar[0]]; Value12 = HiVal[0]; TL_SetEnd(TL1, date12,time12,Value12); date32 = date[0]; time32 = stime[0]; } } TL_SetSize(TL1,선두께); 차트와 안 겹치게, 추세선을 위로 5틱 올려주세요. 감사합니다.
프로필 이미지
고성
2022-11-23
1241
글번호 164046
지표
답변완료

수식부탁합니다

가급적이면 외부변수를 써 주시면 감사하겠습니다 1.20일 이평에 걸치는 20일 이평보다 큰 양봉에 매수 20일 이평붕괴시 청산 단,20일 이평에 걸리는 첫봉을 기준으로 5분동안 2번만 반복하라 2.시장가 진입,청산 함수가 있나요? 3.특정상황에서 매수진입금지 시킬수 있는 함수가 있나요? 4."60일선과120일선이 역배열된후 30캔들 이내"라는 수식을 알려주세요 5."5일,20일정배열이 2번째라면"라는 수식 부탁합니다 6."5일,20일정배열 이후 역배열이라면" 수식 부탁합니다 감사합니다.^^ 꾸벅
프로필 이미지
하늘거지
2022-11-23
909
글번호 164045
시스템
답변완료

지표문의에요.

혹시 26일 이후의 날짜에 수직선을 차트에 표시해주는 지표수식이 있을까요? 예를들어 오늘이 11월 1일이면 11월 26일의 날짜에 차트에 수직선을 표시해 주는 거에요. 일목균형표의 선행지표를 쓰기때문에 앞으로 26일 이후가 언제쯤인지 알고싶은데 차트에서 바로바로 확인할수가 없어서 혹시 가능한지 여쭤보고 싶어요. 도구의 수직선은 제가 앞으로 26일 이후가 언제인지 계산해서 수직선을 그어야 하는데 그게 너무 불편해요..ㅜ 이게 안된다면 앞으로 26일 이후를 쉽게 확인가능한 아무지표라도 만들어 주실수 있나요?
프로필 이미지
vhvh
2022-11-23
726
글번호 164044
지표

회원 님에 의해서 삭제되었습니다.

프로필 이미지
회원
2022-11-23
37
글번호 164043
시스템
답변완료

틱봉갯수

감사합니다. 아래 수식은 전일 5분주기 봉발생갯수 중의 최고갯수를 넘어서는 당일 현재봉갯수에서 종가선을 표시한 것입니다. 이것을 다음과 같이 변환하여 주시기 바랍니다. 1. 전일 동시간대비 봉발생갯수의 최고갯수를 넘어서는 당일 동시간대 현재봉갯수에 종가선 표시 2. 전전일 동시간대비 봉발생갯수의 최고갯수를 넘어서는 당일 동시간대 현재봉갯수에 종가선 표시 input : ntime(5); var : S1(0),D1(0),TM(0),TF(0),B(0); var : idx(0),idx1(0),idx2(0); if Bdate != Bdate[1] Then { S1 = TimeToMinutes(stime); D1 = sdate; var1 = 0; value1 = 0; value11 = value1[1]; } if D1 > 0 then { if sdate == D1 Then TM = TimeToMinutes(stime)-S1; Else TM = TimeToMinutes(stime)+1440-S1; TF = TM%ntime; if Bdate != Bdate[1] or (Bdate == Bdate[1] and ntime > 1 and TF < TF[1]) or (Bdate == Bdate[1] and ntime > 1 and TM >= TM[1]+ntime) or (Bdate == Bdate[1] and ntime == 1 and TM > TM[1]) Then { B = B+1; idx = 0; idx1 = idx[1]; idx2 = idx1[1]; } idx = idx+1; if idx > value1 Then value1 = idx; if value11 > 0 and CrossUp(idx,value11) Then var1 = C; if var1 > 0 Then Plot1(var1); Else NoPlot(1); }
프로필 이미지
jdavid
2022-11-23
506
글번호 164042
지표

회원 님에 의해서 삭제되었습니다.

프로필 이미지
회원
2022-11-23
50
글번호 164041
시스템