커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

2wnwn 님에 의해서 삭제되었습니다.

프로필 이미지
2wnwn
2017-05-19
2
글번호 109671
지표
답변완료

수식 부탁드립니다

1. 09시부터 12시까지 고가를 그린다 09시부터 12시까지 저가를 그린다 12시부터 16시까지 고가를 그린다 12시부터 16시까지 저가를 그린다 09시부터 16시까지 고가를 그린다 09시부터 16시까지 저가를 그린다 18시부터 익일 05시까지 고가를 그린다 18시부터 익일 05시까지 저가를 그린다 감사합니다
프로필 이미지
회원
2017-05-19
162
글번호 109667
지표
답변완료

수식 부탁드립니다.

안녕하세요 고생많으십니다. 시스템 수식하나 부탁 드리겠습니다. 10시00분에 20이평이 상승반전후 상승중이면은 매수, 하락반전후 하락중이면 매도 12시00분에 20이평이 상승반전후 상승중이면은 매수, 하락반전후 하락중이면 매도 감사드립니다.
프로필 이미지
뭐이런걸다
2017-05-19
149
글번호 109666
시스템
답변완료

종목검색

일봉차트에서 약 3시경에 검색하기위한 겁니다 1)장대양봉 7%이상 상승한 봉의 거래량과 인덱스 기억 거래량은 30일간 최고거래량일것 2)장대발생이후 7일이내의 봉들이 장대의 1/2이상에서 횡보할것 (장대발생후 3일~10일로 변경가능할것) 3)당일거래량이 장대발생이후 최소이고 장대거래량의 15% 이하일것 현재 C값이 장대발생 이후 봉의 평균값보다 낮을것
프로필 이미지
티끌
2017-05-19
202
글번호 109665
종목검색
답변완료

수식 변환 부탁드립니다.

시그널 메이커신호입니다. Params : AccelFator(0.018), pLimit(0.09) ; V0 = ParabolicSAR(AccelFator, pLimit, V1, V2, V3, V4); If CrossUp(c, v1) Then buy(); If CrossDown(c, v1) Then Sell(); 변환 부탁드립니다. 수고하세요
프로필 이미지
우와우와
2017-05-18
162
글번호 109664
시스템
답변완료

수식 변환 좀 부탁드려요

멀티 챠트 수식인데 예스에 적용해보니 첨부한 화면대로 안나타나고 챠트가 나타나긴 하는데 그냥 단순하게 막대바만 나오네요! 무지한 제 짧은 지식으론 멀티챠트와 호환되는 줄 알았는데 그게 아닌것 같습니다! 첨부 그림처럼 수정 좀 부탁드려요!! 감사합니다! elder impulse(weekly) Inputs:Period0(13),Period1(12),Period2(26),Period3(9); var:macdValW(0),color(0),cnt(0),sum0(0),sum1(0),sum2(0); var:ep0(2/(period0+1)),ep1(2/(period1+1)),ep2(2/(period2+1)),ep3(2/(period3+1)); array:emaValW[2](0),emaFastW[2](0),emaSlowW[2](0),macdSigW[2](0),macdOscW[2](0); if Date[1] < Date and DayOfWeek(Date[1]) >= DayOfWeek(Date) then begin cnt = cnt + 1; if cnt <= period0 then sum0 = sum0 + C[1]; if cnt = period0 then emaValW[0] = sum0/period0; if cnt <= period1 then sum1 = sum1 + C[1]; if cnt = period1 then emaFastW[0] = sum1/period1; if cnt <= period2 then sum2 = sum2 + C[1]; if cnt = period2 then emaSlowW[0] = sum2/period2; emaValW[1] = emaValW[0]; emaFastW[1] = emaFastW[0]; emaSlowW[1] = emaSlowW[0]; macdSigW[1] = macdSigW[0]; macdOscW[1] = macdOscW[0]; end; if cnt > period0 then emaValW[0] = emaValW[1] + ep0 * ( C - emaValW[1]); if cnt > period1 then emaFastW[0] = emaFastW[1] + ep1 * ( C - emaFastW[1]); if cnt > period2 then emaSlowW[0] = emaSlowW[1] + ep2 * ( C - emaSlowW[1]); macdValW = emaFastW[0] - emaSlowW[0]; if cnt > period3 then macdSigW[0] = macdSigW[1] + ep3 * ( macdValW - macdSigW[1]); macdOscW[0] = macdValW - macdSigW[0]; if emaValW[0] > emaValW[1] and macdOscW[0] > macdOscW[1] then begin color = green; end else if emaValW[0] < emaValW[1] and macdOscW[0] < macdOscW[1] then begin color = red; end else begin color = blue; end; plot1(1,"Impulse",color); ------------------------------------------------------------------------------ elder impulse(daily) Inputs:Period0(13),Period1(12),Period2(26),Period3(9); var:macdValD(0),color(0),cnt(0),sum0(0),sum1(0),sum2(0); var:ep0(2/(period0+1)),ep1(2/(period1+1)),ep2(2/(period2+1)),ep3(2/(period3+1)); array:emaValD[2](0),emaFastD[2](0),emaSlowD[2](0),macdSigD[2](0),macdOscD[2](0); if Date[1] < Date then begin cnt = cnt + 1; if cnt <= period0 then sum0 = sum0 + C[1]; if cnt = period0 then emaValD[0] = sum0/period0; if cnt <= period1 then sum1 = sum1 + C[1]; if cnt = period1 then emaFastD[0] = sum1/period1; if cnt <= period2 then sum2 = sum2 + C[1]; if cnt = period2 then emaSlowd[0] = sum2/period2; emaValD[1] = emaValD[0]; emaFastD[1] = emaFastD[0]; emaSlowD[1] = emaSlowD[0]; macdSigD[1] = macdSigD[0]; macdOscD[1] = macdOscD[0]; end; if cnt > period0 then emaValD[0] = emaValD[1] + ep0 * ( C - emaValD[1]); if cnt > period1 then emaFastD[0] = emaFastD[1] + ep1 * ( C - emaFastD[1]); if cnt > period2 then emaSlowD[0] = emaSlowD[1] + ep2 * ( C - emaSlowD[1]); macdValD= emaFastD[0] - emaSlowD[0]; if cnt > period3 then macdSigD[0] = macdSigD[1] + ep3 * ( macdValD- macdSigD[1]); macdOscD[0] = macdValD- macdSigD[0]; if emaValD[0] > emaValD[1] and macdOscD[0] > macdOscD[1] then begin color = green; end else if emaValD[0] < emaValD[1] and macdOscD[0] < macdOscD[1] then begin color = red; end else begin color = blue; end; plot1(1,"Impulse",color); ---------------------------------------------------------------------------------------- elder impulse Inputs:Period0(13),Period1(12),Period2(26),Period3(9); var:emaVal(0),macdVal(0),macdSig(0),macdOsc(0),color(0); emaVal = XAverage(C,Period0); macdVal = MACD(C,Period1,Period2); macdSig = XAverage(macdVal ,period3); macdOsc = macdVal - macdSig; if emaVal > emaVal[1] and macdOsc > macdOsc[1] then begin color = green; end else if emaVal < emaVal[1] and macdOsc < macdOsc[1] then begin color = red; end else begin color = blue; end; plot1(1,"Impulse",color);
프로필 이미지
qha71
2017-05-18
344
글번호 109663
지표

고물상 님에 의해서 삭제되었습니다.

프로필 이미지
고물상
2017-05-18
6
글번호 109662
강조
답변완료

N차수조절

아래 수식 유용하게 쓰고 있습니다. 각각 하락 2회, 상승 2회로서 하루에 2번씩 거래하고 끝인데 계속 거래할 수 있는 수식으로 변경하고 싶고 거래횟수를 input 할 수 있게 부탁드립니다. *** 안녕하세요 예스스탁입니다. 2차진입은 진입이후 최저가가 아닌 진입가 기준입니다. 첨부하신 그림에서는 진입이후 최저가 기준으로 1차 진입과 동일 요건이므로 1차 2차 모두 동일요건으로 청산되게 수정해 드립니다. 이전의 매수식도 같은 개념으로 청산 변경해서 올려드립니다. 1 input : b1(11),b2(13),X1(13),X2(13),진입눌림(4),진입돌파(4),청산눌림(4),청산돌파(4); var : T1(0),entry(0),HH(0),LL(0),EH(0),EL(0),E1(0),H1(0),i1(0),S1(0),L1(0); if Bdate != Bdate[1] Then{ T1 = TotalTrades; E1 = 0; } if MarketPosition == 0 Then entry = TotalTrades-T1; Else entry = (TotalTrades-T1)+1; if MarketPosition == 0 and entry == 0 Then{ if E1 == 0 and C <= DayHigh-PriceScale*B1 and C[1] < DayHigh-PriceScale*B1 Then{ E1 = 1; L1 = L; i1 = index; } if E1 == 1 and index > i1 then{ if L < L1 Then L1 = L; if H >= L1+PriceScale*진입눌림 Then{ E1 = 2; i1 = index; S1 = L1; } } if E1 == 2 and index > i1 and C <= S1-PriceScale*진입돌파 Then{ sell("s1"); } } if TotalTrades > TotalTrades[1] Then HH = H; if H > HH Then HH = H; if MarketPosition == 0 and entry == 1 Then{ if E1 == 0 and C <= HH-PriceScale*B2 and C[1] < HH-PriceScale*B2 Then{ E1 = 1; L1 = L; i1 = index; } if E1 == 1 and index > i1 then{ if L < L1 Then L1 = L; if H >= L1+PriceScale*진입눌림 Then{ E1 = 2; i1 = index; S1 = L1; } } if E1 == 2 and index > i1 and C <= S1-PriceScale*진입돌파 Then{ sell("s2"); E1 = 0; } } if MarketPosition == -1 Then{ if entry >= 1 then{ if CurrentContracts > CurrentContracts[1] Then{ EL = L; E1 = 0; } if L < EL Then{ EL = L; E1 = 0; } if E1 == 0 and C >= EL+PriceScale*X1 Then{ E1 = 1; H1 = H; i1 = index; } if E1 == 1 and index > i1 Then{ if H > H1 Then H1 = H; if L <= H1-PriceScale*청산눌림 Then{ E1 = 2; I1 = index; S1 = H1; } } if E1 == 2 and index > i1 and C >= S1+PriceScale*청산돌파 Then{ ExitShort("sx1"); E1 = 0; } } } 2 input : b1(11),b2(13),X1(13),X2(13),진입눌림(4),진입돌파(4),청산눌림(4),청산돌파(4); var : T1(0),entry(0),LL(0),EH(0),E1(0),H1(0),i1(0),S1(0),L1(0); if Bdate != Bdate[1] Then{ T1 = TotalTrades; E1 = 0; } if MarketPosition == 0 Then entry = TotalTrades-T1; Else entry = (TotalTrades-T1)+1; if MarketPosition == 0 and entry == 0 Then{ if E1 == 0 and C >= daylow+PriceScale*B1 and C[1] < daylow+PriceScale*B1 Then{ E1 = 1; H1 = H; i1 = index; } if E1 == 1 and index > i1 then{ if H > H1 Then H1 = H; if L <= H1-PriceScale*진입눌림 Then{ E1 = 2; i1 = index; S1 = H1; } } if E1 == 2 and index > i1 and C >= S1+PriceScale*진입돌파 Then{ buy("b1"); } } if TotalTrades > TotalTrades[1] Then LL = L; if L < LL Then LL = L; if MarketPosition == 0 and entry == 1 Then{ if E1 == 0 and C >= LL+PriceScale*B2 and C[1] < LL+PriceScale*B2 Then{ E1 = 1; H1 = H; i1 = index; } if E1 == 1 and index > i1 then{ if H > H1 Then H1 = H; if L <= H1-PriceScale*진입눌림 Then{ E1 = 2; i1 = index; S1 = H1; } } if E1 == 2 and index > i1 and C >= S1+PriceScale*진입돌파 Then{ buy("b2"); } } if MarketPosition == 1 Then{ if entry >= 1 then{ if CurrentContracts > CurrentContracts[1] Then{ EH = H; E1 = 0; } if H > EH Then{ EH = H; E1 = 0; } if E1 == 0 and C <= EH-PriceScale*X1 Then{ E1 = 1; L1 = L; i1 = index; } if E1 == 1 and index > i1 Then{ if L < L1 Then L1 = L; if H >= L1+PriceScale*청산눌림 Then{ E1 = 2; I1 = index; S1 = L1; } } if E1 == 2 and index > i1 and C <= S1-PriceScale*청산돌파 Then{ exitlong("bx1"); E1 = 0; } } }
프로필 이미지
좌오비우오비
2024-09-02
153
글번호 109661
시스템
답변완료

수식추가부탁드림니다=================

저점고점에 수치 표시될때 소리도 나게 해주시면 감사하겠습니다 수고하세요 Input:length(10),종가사용여부(0),파동선두께(2),수치표시(1); Var:j(0),jj(0),HH(0),LL(0),최종고가(0),최종저가(0),최종꼭지점(""),처리구분(""), TL1(0),Text1(0); Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime #==========================================# HH = IFF(종가사용여부==1,C,H); LL = IFF(종가사용여부==1,C,L); If Index == 0 Then { 고[1,1] = HH; 저[1,1] = LL; } Condition1 = Highest(HH,length) == HH and 최종고가 <> HH; Condition2 = Lowest (LL,length) == LL and 최종저가 <> LL; 처리구분 = ""; If Condition1 and Condition2 Then // 기간고점과 기간저점 동시 발생 { If 최종꼭지점 == "저점" Then { If 저[1,1] > LL Then 처리구분 = "저점처리"; Else 처리구분 = "고점처리"; } Else If 최종꼭지점 == "고점" Then { If 고[1,1] < HH Then 처리구분 = "고점처리"; Else 처리구분 = "저점처리"; } } Else If Condition1 Then 처리구분 = "고점처리"; Else If Condition2 Then 처리구분 = "저점처리"; #==========================================# If 처리구분 == "고점처리" Then { 최종고가 = HH; // 신규고점을 체크하기 위해 저장 If 최종꼭지점 == "저점" Then { For j = 10 DownTo 2 { For jj = 1 To 4 { 고[j,jj] = 고[j-1,jj]; } } 고[1,1] = HH; 고[1,2] = Index; 고[1,3] = sDate; 고[1,4] = sTime; TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]); If 수치표시 == 1 Then { Text1 = Text_New(고[1,3],고[1,4],고[1,1],NumToStr(고[1,1],2)); Text_SetStyle(Text1, 2, 1); } TL_SetSize(TL1,파동선두께); TL_SetColor(TL1,RED); } Else If 고[1,1] < HH Then // 1번 고점보다 높은 고가 출현 { 고[1,1] = HH; 고[1,2] = Index; 고[1,3] = sDate; 고[1,4] = sTime; TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]); // 시작점은 변동없고 끝점의 위치가 현재 봉으로 연장된 것임 If 수치표시 == 1 Then { Text_SetLocation(Text1,고[1,3],고[1,4],고[1,1]); Text_SetString(Text1,NumToStr(고[1,1],2)); } } 최종꼭지점 = "고점"; } #==========================================# If 처리구분 == "저점처리" Then { 최종저가 = LL; If 최종꼭지점 == "고점" then { For j = 10 DownTo 2 { For jj = 1 To 4 { 저[j,jj] = 저[j-1,jj]; } } 저[1,1] = LL; 저[1,2] = Index; 저[1,3] = sDate; 저[1,4] = sTime; TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]); If 수치표시 == 1 Then { Text1 = Text_New(저[1,3],저[1,4],저[1,1],NumToStr(저[1,1],2)); Text_SetStyle(Text1, 2, 0); } TL_SetSize(TL1,파동선두께); TL_SetColor(TL1,BLUE); } Else If 저[1,1] > LL then { 저[1,1] = LL; 저[1,2] = Index; 저[1,3] = sDate; 저[1,4] = sTime; TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]); If 수치표시 == 1 Then { Text_SetLocation(Text1,저[1,3],저[1,4],저[1,1]); Text_SetString(Text1,NumToStr(저[1,1],2)); } } 최종꼭지점 = "저점"; }
프로필 이미지
leekss1
2017-05-19
167
글번호 109660
지표