커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

문의드립니다.

시작시간 오전 10시 마감시간 새벽 4시30분 거래완전종료. 이평 5 일선이 이평 10일선 아래에 있고 이평 1일선이 이평 10일선 상향돌파 매수. 이평 5 일선이 이평 10일선 위에 있고 이평 1 일선이 이평 10일선 하향돌파 매도. 매입하고 손절이 되면 다음 매입에서 매입1개씩 늘려서 매입.예를 들어 처음매입1개 그다음은2개 또 그다음은3개 이런식으로 늘어나는겁니다. 단,손절시에만 매입갯수가 늘어나게 해주세요. 손절 당일 저가 고가.. 익절20틱
프로필 이미지
아침한때비51
2017-12-11
158
글번호 114872
시스템
답변완료

수식 부탁 드립니다.

안녕하세요, 도움 많이 받고 있습니다. 당일 봉만 사용해서 이평을 계산하려고 합니다. 저번에 수식을 작성해 주셨는데 제가 조금 변형시켰는데 어떻게 응용을 해서 작성을 해야할지 잘 모르겠습니다. Input : P(15); Var : V1(0), V11(0), V2(0), V22(0); V1 = Data3(C) - Data4(C) - Data2(C) + Data6(C); V11 = MA(V1,P); V2 = Data6(C) + Data7(C) - Data5(C) - Data6(C); V22 = MA(V2,P); 위 수식에서 V11, V22 이평선을 당일 봉만 사용해서 계산하는 수식을 작성 부탁 드립니다. 감사합니다.
프로필 이미지
두부맛솜사탕
2017-12-11
139
글번호 114871
지표
답변완료

가격 수식변경

늘 감사합니다. 1. 아래의 수식을 수정해 주세요. 2. 현재의 시작 가격은 당일의 싯가 가격을 기준으로 하고 있습니다 이것을 변경 가능한 시간의 싯가 가격으로 변경 적용 하고 싶습니다. 예를들면 data1과 data2의 싯가 가격을 10시30분 또는 11시35분 등의 싯가의 가격으로 적용해 주세요 3. 시스템식도 위의 변경된 조건으로 수식변경후 아래 내용 추가 첫진입후 익절후 진입금지. 첫손절후 한번만 더 진입, 당일 장종료 1시간30분전 강제청산 4. 감사합니다. 1. var : diff(0,data1),TL(0,data1); var : V1(0,data1),V2(0,data1),V3(0,data1),V4(0,data1),V5(0,data1); var : O2(0,data2); if data1(Bdate != Bdate[1]) Then{ v1 = data1(sdate[1]); v2 = data1(stime[1]); v3 = data1(h); v4 = data1(L); v5 = data1(C); } if data2(Bdate != Bdate[1]) Then O2 = data2(O); diff = data1((C-dayopen)/PriceScale)-data2((C-O2)/PriceScale); TL_Delete(TL); if diff >= 80 then{ TL = TL_New(v1,v2,v3,sdate,stime,v3); TL_SetColor(TL,RED); } Else if diff <= -80 then{ TL = TL_New(v1,v2,v4,sdate,stime,v4); TL_SetColor(TL,blue); } else{ TL = TL_New(v1,v2,v5,sdate,stime,v5); TL_SetColor(TL,BLACK); } 2 var : diff(0,data1),T1(0,data1),entry(0,data1); var : O2(0,data2); if data1(Bdate != Bdate[1]) Then T1 = TotalTrades; if MarketPosition == 0 Then entry = TotalTrades-T1; Else entry = TotalTrades-T1+1; if data2(Bdate != Bdate[1]) Then O2 = data2(O); diff = data1((C-dayopen)/PriceScale)-data2((C-O2)/PriceScale); if diff >= 80 and diff[1] < 80 then{ if entry == 0 or (entry >= 1 and MarketPosition == -1 and TimeToMinutes(stime) >= TimeToMinutes(EntryTime)+30) or (entry >= 1 and MarketPosition == 0 and TimeToMinutes(stime) >= TimeToMinutes(ExitTime(1))+30) then buy(); } if diff <= -80 and diff[1] > -80 then{ if entry == 0 or (entry >= 1 and MarketPosition == 1 and TimeToMinutes(stime) >= TimeToMinutes(EntryTime)+30) or (entry >= 1 and MarketPosition == 0 and TimeToMinutes(stime) >= TimeToMinutes(ExitTime(1))+30) then sell(); } SetStopProfittarget(PriceScale*30,PointStop); SetStopLoss(PriceScale*20,PointStop);
프로필 이미지
상암동
2017-12-10
163
글번호 114870
시스템
답변완료

시스템수식 문의합니다

항상 감사합니다 매수의 경우 20이평선이 60이평선을 crossup한 봉의 종가에 바로 진입 이 아니라 휩소를 피하기 위하여 crossup한 봉의 고가를 이후에 처음으로 종가로 돌파 했을때 매수신호가 나오게 하고 십습니다. 매도는 20이평선이 60이평을 crossdown한 봉의 저가를 이후에 처음으로 종가로 하향돌파 되었을때 입니다 도움 부탁 합니다
프로필 이미지
dk3113
2017-12-10
166
글번호 114869
시스템
답변완료

수식 문의드립니다.

macd를 이용한 매도 수식을 작성하고 있습니다. 그림은 macd(300,600), tem120, sto(12,26,9)를 해외선물(골드)에 적용한 내용이고, 분홍색 점은 macd osc가 양수인 경우, 검은수평선은 macd osc가 음수인경우를 표시했습니다. 매도진입 조건은 다음과 같습니다. 1. 아랫꼬리 없은 음봉 2. 봉 전체가 tema선 아래 있음 3. stoK<stood 4. macd osc가 음수 5-1. 매도 진입 직전 macd osc 양수인 기간이 10봉 이상이거나 -2. 매도 진입 직전 macd osc 양수인 기간 및 전전 macd osc 양수인 기간의 합이 20봉 이상 and 직전 macd osc 음봉인 기간이 10봉 이내 and 그 기간 동안 봉전체가 tema선보다 아래 존재 -3. 매도 진입 직전 macd osc 양수인 기간이 10봉 이내이고, MACD매도전봉과 MACD매수정봉 사이 기간이 50봉 이상인 경우 // 5-3은 수식 작성을 못했습니다. 아래식처럼 작성을 했고 생각대로라면 5-2번으로 해서 매도진입봉에서 신호가 나와야할 것 같은데 진입이 안되네요.. 수정 부탁드립니다. 감사합니다. var: macd매수봉(0),macd매수전봉(0),macd매도봉(0),macd매도전봉(0),Entry(0); MACDv = MACD(300, 600); MACDsig = ema(MACDv,9); If crossup(macdv,macdsig) then { macd매수전봉 = macd매수봉; macd매수봉 = index; } If CrossDown(macdv,macdsig) then { macd매도전봉 = macd매도봉; macd매도봉 = index; } if ((macd매도봉 - macd매수봉 >10) or // ((macd매도봉 - macd매수봉 ) +(macd매도전봉 - macd매수전봉 )>10 and (macd매수봉 - macd매도전봉 ) < 10 and AccumN(iff(H<=tema,1,0),index-macd매수전봉 ) )) and 아랫꼬리없는 음봉 and tema선 아래 음봉 and stoK<stoD then { sell("매도"): }
프로필 이미지
깜피
2017-12-10
191
글번호 114868
시스템
답변완료

2차파동

아래는 bestkim님의 문의에서 따온 코드입니다. 프로그램이 일목요연해서 사용하고 있습니다. 다만 한 가지 덧 붙이고 싶은 것이 있습니다. 이 코드에서 나오는 파동의 고저를 이용하여 2차로 다시 고저를 찾아서 추세선을 긋는 2차파동선을 그리는 코드를 부탁드립니다. 그림을 첨부합니다. 그림에서 붉은 추세선이 2차 파동이고 제가 수작업으로 그려넣은 것인데 이것을 자동으로 그리는 코드를 부탁합니다. (참고로 검은 파동선은 아래 코드로 만들어진 것입니다.) 2차 파동을 자세히 보시면 붉은 선이 안보이는 부분, 즉 검은선과 일치하는 부분이 있습니다. 이 경우는 1차 파동이 바로 2차 파동이 되는 경우로 정의해야 할 것 같습니다. 그리고 한 가지 표현 방식의 문제인데... 1차 파동과 2차 파동을 각각 표시하거나 표시하지 않는 옵션을 넣어 주시면 감사하겠습니다. 1차와 2차를 같이 보거나 1차만 보거나 2차만 보거나 할 수 있는 기능 말입니다. #bestkim Input:length(5),종가사용여부(0),파동선두께(1),수치표시(0); 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)); PlaySound("F:₩예스트레이더소리₩띠웅.wav"); Text_SetStyle(Text1, 2, 1); Text_SetColor(Text1,black); } TL_SetSize(TL1,파동선두께); TL_SetColor(TL1,black); } 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)); PlaySound("F:₩예스트레이더소리₩띠웅.wav"); Text_SetStyle(Text1, 2, 0); Text_SetColor(Text1,black); } TL_SetSize(TL1,파동선두께); TL_SetColor(TL1,black); } 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)); } } 최종꼭지점 = "저점"; }
프로필 이미지
회원
2017-12-10
293
글번호 114867
지표
답변완료

수식 요청 드립니다.

안녕하세요. 수식 요청 드립니다. 1. 연결선물 당일청산 시스템에서 당일 시가 위 매수, 당일시가 아래 매도 진입 후 기준으로 -> 당일시가위 매수 진입 후 -> 1차 시가 위로 0.3P이상 상승 후 -> 2차 시가 아래로 0.4P이상 하락한 후 3차 시가위 상승 돌파봉 발생하는 경우 청산 -> 당일시가아래 매도 진입 후 -> 1차 시가 아래로 0.3P이상 하락 후 -> 2차 시가 위로 0.4P이상 상승한 후 3차 시가아래 하락 돌파봉 발생하는 경우 청산 2. 연결선물 당일청산 시스템에서 매수, 매도 진입 후 기준으로 -> 매수 진입 후 -> 1차 시가 위로 0.3P이상 상승 후 -> 2차 시가 아래로 0.4P이상 하락한 후 3차 시가위 상승 돌파봉 발생하는 경우 청산 -> 매도 진입 후 -> 1차 시가 아래로 0.3P이상 하락 후 -> 2차 시가 위로 0.4P이상 상승한 후 3차 시가아래 하락 돌파봉 발생하는 경우 청산 시스템 요청 드립니다. 감사합니다.
프로필 이미지
dandy
2017-12-10
155
글번호 114866
시스템
답변완료

시스템 부탁 드려요

5 이평선이 20 이평 이하일때, 현재봉의 거래량과 바로앞 봉의 거래량의 합이 3번째이전 10개합계 거래량보다 10배이상이고 현재봉과 이전5개 봉의 합이 5봉이전(-6번째)거래량부터 20개봉(현재봉기준 -25번째)의 합계보다 5배클때 -> 매수 . 5 이평선이 20 이평 이상일때, 현재봉의 거래량과 바로앞 봉의 거래량의 합이 3번째이전10개합계 거래량보다 10배이상이고, 현재봉과 이전5개 봉의 합이 5봉이전(-6번째)거래량부터 20개봉(현재봉기준 -25번째)의 합계보다 5배 클때 -> 매도 . 공식 부탁 드려요
프로필 이미지
쫄리면캇
2017-12-10
166
글번호 114865
시스템
답변완료

ma 값이 계산안됩니다

//Input : DayPeriod1(5), DayPeriod2(10), DayPeriod3(20), DayPeriod4(31), DayPeriod5(60); var : Sma1(0),Sma2(0),Sma3(0),Sma4(0),Sma5(0); var : Sma6(0),Sma7(0),Sma8(0),Sma9(0),Sma10(0); var : Sma11(0); var : i650(650),i1000(1000),i1300(1300),i2000(2000),i2600(2600),i3000(3000); var : i4000(4000),i5000(5000),i6000(6000),i7000(7000),i7800(7800); if Index==0 Then{ ClearDebug; if(BarInterval==3)Then{ i650 = 650; i1000 = 1000; i1300 = 1300; i2000 = 2000; i2600 = 2600; i3000 = 3000; i4000 = 4000; i5000 = 5000; i6000 = 6000; i7000 = 7000; i7800 = 7800; } if(BarInterval==5)Then{ i650 = 390; i1000 = 600; i1300 = 780; i2000 = 1200; i2600 = 1560; i3000 = 1800; i4000 = 2400; i5000 = 3000; i6000 = 3600; i7000 = 4200; i7800 = 4680; } if(BarInterval==15)Then{ i650 = 130; i1000 = 200; i1300 = 260; i2000 = 400; i2600 = 520; i3000 = 600; i4000 = 800; i5000 = 1000; i6000 = 1200; i7000 = 1400; i7800 = 1560; } //MessageLog("barin %.f",BarInterval); } /* Sma1 = ma(C,Period1); Sma2 = ma(C,Period2); Sma3 = ma(C,Period3); Sma4 = ma(C,Period4); Sma5 = ma(C,Period5); Sma6 = ma(C,Period6); Sma7 = ma(C,Period7); Sma8 = ma(C,Period8); Sma9 = ma(C,Period9); Sma10 = ma(C,Period10); Sma11 = ma(C,Period11); */ Sma1 = ma(C,i650); Sma2 = ma(C,i1000); Sma3 = ma(C,i1300); Sma4 = ma(C,i2000); Sma5 = ma(C,i2600); Sma6 = ma(C,i3000); Sma7 = ma(C,i4000); Sma8 = ma(C,i5000); Sma9 = ma(C,i6000); Sma10 = ma(C,i7000); Sma11 = ma(C,i7800); MessageLog("i1300 %.f %.f %.f",i7000,sma10,ma(C,i7000)); Plot1(Sma1); Plot2(Sma2); Plot3(Sma3); Plot4(Sma4); Plot5(Sma5); Plot6(Sma6); Plot7(Sma7); Plot8(Sma8); Plot9(Sma9); Plot10(Sma10); Plot11(Sma11); 분봉에 따라 ma 값을 변하게 하고싶습니다 즉 5분봉일때 10분봉일 때 5분봉일때 100ma를 10분봉일때 50ma 로 지표를 나타내고싶어서 위와 같이만들었는데 제대로 작동하지 않는군요 그래서 프린트해봤더니 이상합니다 ma(c,1300) 은 정확히 값을 출력하는데 ma(c,i1300) 은 값이 안나옵니다 이게 왜 이런지 궁금합니다. i1300의 값이 정확히 바뀌는걸 분봉마다 debug 통해확인하는뎅도 ma(c,1300)으로 값을 직접 넣은것과 ma(c,i1300) 처럼 변수로 하는것의 값이 너무 다릅니다 왜그런가요?
프로필 이미지
여유로운투자
2017-12-10
157
글번호 114864
지표