커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

질문드립니다.

다른 5이평을 뒤집어서 상향크로스될때는 빨간색 하향크로스될때는 파란색으로 표시하고싶습니다... Input : Period1(5); var : Sma1(0), sma2(0); Sma1 = ma(C,Period1); sma2 = sma1-(sma1-5); Plot1(Sma1, "이동평균1"); plot2(sma2,"반대"); 이렇게하면 올바르게 나오지를 않네요
프로필 이미지
stockric
2017-08-31
129
글번호 112375
지표
답변완료

행복; 시스템식 작성 바랍니다

한국의 금융산업 발전을 위해 불철주야 애쓰시는 귀하의 노고를 높이 평가합니다 시스템식 관련입니다 Q&A 54578번에 대한 답변 << 아래 >> 와 같이 잘 받았습니다 ======<< 아래 시작 >>=============================== if MarketPosition == 0 and sdate == 20151020 and C > 46800 then{ Condition1 = true; buy("b1",OnClose,def,722); } if Condition1 == true and MaxEntries < 5 Then{ buy("b2",AtStop,47947,308); buy("b3",AtStop,49061,308); buy("b4",AtStop,50169,308); buy("b5",AtStop,51275,308); } if MarketPosition == 1 Then{ if MaxEntries == 1 then exitlong("bx1",AtStop,highest(H,BarsSinceEntry)*0.790); if MaxEntries == 2 then exitlong("bx2",AtStop,highest(H,BarsSinceEntry)*0.688); if MaxEntries == 3 then exitlong("bx3",AtStop,highest(H,BarsSinceEntry)*0.586); if MaxEntries == 4 then exitlong("bx4",AtStop,highest(H,BarsSinceEntry)*0.484); if MaxEntries == 5 and C > 100000 Then exitlong("bx5"); ======<< 아래 끝 >>=============================== << 아래 >>를 < 다음 >과 같이 약간 변형하여 LG전자에 적용하였습니다 - 주기; 일봉 - 종목; LG전자 ======<< 다음 시작 >>=============================== if MarketPosition == 0 and sdate == 20151020 and C > 46800 then buy("b1",OnClose,def,722); if MarketPosition == 1 Then{ if sdate >= 20151020 and MaxEntries < 5 Then{ buy("b2",AtStop,47947,308); buy("b3",AtStop,49061,308); buy("b4",AtStop,54490,308); buy("b5",AtStop,55994,308); } if MaxEntries == 1 then exitlong("bx1",AtStop,highest(H,BarsSinceEntry)*0.790); if MaxEntries == 2 then exitlong("bx2",AtStop,highest(H,BarsSinceEntry)*0.688); if MaxEntries == 3 then exitlong("bx3",AtStop,highest(H,BarsSinceEntry)*0.586); if MaxEntries == 4 then exitlong("bx4",AtStop,highest(H,BarsSinceEntry)*0.484); if MaxEntries == 5 and C > 100000 Then exitlong("bx5"); } ======<< 다음 끝 >>=============================== 그랬더니, 2015년 10월 20일에 1차 매수 후 2차, 3차 매수는 2015년 10월 21일에 정상적으로 매수되었는데 2016년 10월 22일에는 4차 매수가 3번 반복되고 5차 매수가 1번 실행되어 합이 7차례 매수가 됩니다 원래는 5번 매수가 되어야 하는데 추가로 2번 더 매수가 이루어집니다~ 어떻게 수정 해야 하나요?
프로필 이미지
행복한가방
2017-08-30
166
글번호 112374
시스템
답변완료

이전질문에 대한 추가질문입니다.

If 지평선>value10 Then { if CrossUp(value13,value14) then Sell("매도"); } If 지평선<Value10 Then { if CrossUp(value13,value14) then Buy("매수"); } If MarketPosition==1 Then{ #정방향 매도 If CrossDown(지평선,value10) Then ExitLong("매수청산1"); If 지평선<Value10 Then { If CrossUp(value13,value14) Then ExitLong("매수청산2"); #손절 } } If MarketPosition==-1 Then{ #정방향 매수 If CrossUp(지평선,value10) Then ExitShort("매도청산1"); If 지평선>value10 Then { If CrossUp(value13,value14) Then ExitShort("매도청산2"); #손절 } } 위와같은 수식이 있다고 할때 전에 질문드린 내용으로 수식 수정을 좀 부탁드려도 될까요 답변해주신 내용으로 수식작성을 해보니 아예 진입이 나오지 않아서요.. 매번 감사드립니다.
프로필 이미지
kimsh
2017-08-30
123
글번호 112373
시스템
답변완료

수식부탁합니다

아래에서 파라미딩을 설정하면 지표에서는 매수신호가 봉마다 1개 예를들면 총 5개 매수체결이 되는데 지표에서 청산신호가 한봉에 5개 나오면 체결이 5개 되어야 하나 실제 체결은 1개만 됩니다. 옵션의 문제인가요? var Begin; var CallCode,PutCode; function C1_OnRiseSignal(Signal) { if (Signal.signalKind == 1 ) { Main.MessageList("매수신호발생"); Begin = 1; CallCode = Option.GetATMCallRecent(1); var CallPrice = Option.GetBidByCode(CallCode,2); A1.OrderBuy(CallCode, 1, CallPrice, 1); } if (Begin == 1 && Signal.signalKind == 2 ) { Begin = 0; Main.MessageList("매수청산발생"); var BxCallPrice = Option.GetAskByCode(CallCode, 2); A1.OrderSell(CallCode, 1, BxCallPrice, 1);
프로필 이미지
팡팡
2017-08-30
154
글번호 112372
시스템
답변완료

수식 검토 부탁드립니다

선물 분봉에 사용 목적으로 아래를 작성해보았는데 수식 검토 부탁드립니다 회신은 e-mail. mintaizhi@gmail.com으로 가능할까요? ======================================================================================== Inputs: ShortPeriod(2), Period1(13), qty(2); var1 = ema(C,Period1); "13지수이평" Variables: Fval(0),FvalFast(0); Fval = ((Close - Close[1]) * Volume) ; "2 Force Index" FvalFast = Ema(Fval, ShortPeriod); if ema(C,13)<C[1]) and ema(Fval, ShortPeriod)<0 Then Buy("매수", ? ,qty); "만일 직전종가가 13지수이평보다 크고 2Force Index가 0보다 작으면, 다음봉 현재가가 13지수이평과 만날때 매수" if ema(C,13)>C[1]) and ema(Fval, ShortPeriod)>0 Then Sell("매도", ? ,qty); "만일 직전종가가 13지수이평보다 작고 2Force Index가 0보다 크면, 다음봉 현재가가 13지수이평과 만날때 매도" ======================================================================================== 시스템에 복사해서 사용할 예정입니다 감사합니다
프로필 이미지
퍼담아유
2017-08-30
182
글번호 112371
사용자 함수
답변완료

답변주신 내용에 대해 질문

프로필 이미지
youyou
2017-08-30
122
글번호 112370
시스템
답변완료

문의 드립니다.

안녕하세요. 크루드오일 시스템수식 작성중입니다. 진입시간은 18시부터 새벽 2시까지로 했는데... 청산신호가 안나와도 2시 30분이 되면 시장가로 청산하는 수식을 어떻게 작성해야 하는지요??
프로필 이미지
하루만
2017-08-30
129
글번호 112369
시스템
답변완료

1수치전환 수직선 자동, 2, 화살표로부터 수익 손실 표시

매일 수작업에 힘이겨워 편집기로 조건을 대입하면 자동으로 해결 할 수 있는것을 알게되어 부탁드리게 됬습니다. 먼저 노고에 감사드립니다. 다른것들도 잘 쓰고 있습니다 감사합니다. 1 수치전환 수직선이 12시, 13시, 20시, 00시에 매일 자동으로 체크 될 수 있었으면 좋겠습니다. 2 어떤 조건에서 화살표가 나오게 신호를 해야 할 지 몰라서 수동으로 상승 화살표를 체크 하면, 그로부터 시간이 흘러 15틱(노란박스), 20(주홍박스), 30틱(보라박스) 상승하였으면 상승 마감 그 체크로부터 하락 15틱 하였으면 하락마감파란박스 이렇게 자동 체크될 수 있었으면 좋겠습니다. (화살표로부터 진입후 청산 마감= 보라색 또는 파란색 박스가 표시될 때 까지) * 박스체크가 어렵다면 옆에 체크한것 처럼 숫자로 표시할 수 있어도 좋겠습니다.
프로필 이미지
우리순수
2017-08-30
252
글번호 112368
지표
답변완료

수식 수정 좀 부탁드립니다.

안녕하세요? 아래 수식은 다른 곳에서 구한 수식인데 추세선이 종가에 나타나기 때문에 다른 추세선들과 같이 보려니 헷갈려서 볼수가 없습니다. 일반적인 추세선처럼 고가나 저가에 나타나도록 수정 좀 부탁드립니다. 파동선은 가능하시면 종가에 나타나도록 그냥 두어주시면 좋겠습니다. 안되면 고가나 저가에 나타나도록 바꾸셔도 괸찮구요. 감사합니다. ======================================================== Input:length(10),추세선연장(5),추세판단범위(10),진입횟수제한(1), #ssssssssssssssssssssssssssssssssss 파동선두께(2),추세선두께(0),고점파동선색(RGB(204,0,0)),저점파동선색(GRAY),수치표시(1); //수치표시값을 1로하면 고점 저점의 값을 표시 0으로하면 값을 없앰 #eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee Var:j(0),jj(0),최종고가(0),최종저가(0),최종변곡점(""),처리구분(""),진입횟수(0), TL1(0),TL2(0),TL3(0),Text1(0), 고추세최종(0),저추세최종(0),고ID(0),저ID(0); Array:고[100,4](0),저[100,4](0); // 1:가격,2:Index,3:sDate,4:sTime #==========================================# #ssssssssssssssssssssssssssssssssss If Index == 0 Then // ------------------------------ ① { 고[1,1] = C; 저[1,1] = C; } #eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee Condition1 = Highest(C,length) == C and 최종고가 <> C; Condition2 = Lowest (C,length) == C and 최종저가 <> C; 처리구분 = ""; If Condition1 and Condition2 Then // 기간고점과 기간저점 동시 발생 { If 최종변곡점 == "저점" Then 처리구분 = "고점처리"; // 저 - 고 순으로 처리 Else 처리구분 = "저점처리"; // 고 - 저 순으로 처리 } Else If Condition1 Then 처리구분 = "고점처리"; Else If Condition2 Then 처리구분 = "저점처리"; #==========================================# If 처리구분 == "고점처리" Then { 최종고가 = C; // 신규고점을 체크하기 위해 저장 If 최종변곡점 == "저점" Then { 진입횟수 = 0; For j = 100 DownTo 2 { For jj = 1 To 4 { 고[j,jj] = 고[j-1,jj]; } } 고[1,1] = C; 고[1,2] = Index; 고[1,3] = sDate; 고[1,4] = sTime; TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]); #ssssssssssssssssssssssssssssssssss If 수치표시 == 1 Then // ------------------------------ ② { Text1 = Text_New(sDate,sTime,고[1,1],NumToStr(고[1,1],2)); Text_SetStyle(Text1, 2, 1); } TL_SetSize(TL1,파동선두께); TL_SetColor(TL1,고점파동선색); #eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee } Else If 고[1,1] < C Then // 1번 고점보다 높은 고가 출현 { 고[1,1] = C; 고[1,2] = Index; 고[1,3] = sDate; 고[1,4] = sTime; TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]); // 시작점은 변동없고 끝점의 위치가 현재 봉으로 연장된 것임 #ssssssssssssssssssssssssssssssssss If 수치표시 == 1 Then { Text_SetLocation(Text1,sDate,sTime,고[1,1]); Text_SetString(Text1,NumToStr(고[1,1],2)); } #eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee } If 고[2,2][1] <> 고[2,2] Then // 고2의 Index값이 변동 없음 즉, 새로운 고점이 생기지 않았음 { 고추세최종 = 0; For j = 3 To 추세판단범위 { If 고[2,1] < 고[j,1] Then { 고ID = j; 고추세최종 = (고[2,1] - 고[고ID,1])/(고[2,2] - 고[고ID,2]) * (Index - 고[고ID,2]) + 고[고ID,1]; TL2 = TL_New(고[고ID,3],고[고ID,4],고[고ID,1],sDate,sTime,고추세최종); #ssssssssssssssssssssssssssssssssss TL_SetSize(TL2,추세선두께); #eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee TL_SetColor(TL2,MAGENTA); j = 100; } } } Else If 고추세최종[1] > 0 Then { 고추세최종 = (고[2,1] - 고[고ID,1])/(고[2,2] - 고[고ID,2]) * (Index - 고[고ID,2]) + 고[고ID,1]; TL_SetEnd(TL2,sDate,sTime,고추세최종); } If 저추세최종[1] > 0 Then { 저추세최종 = (저[2,1] - 저[저ID,1])/(저[2,2] - 저[저ID,2]) * (Index - 저[저ID,2]) + 저[저ID,1]; TL_SetEnd(TL3,sDate,sTime,저추세최종); } 최종변곡점 = "고점"; } #==========================================# If 처리구분 == "저점처리" Then { 최종저가 = C; If 최종변곡점 == "고점" then { 진입횟수 = 0; For j = 100 DownTo 2 { For jj = 1 To 4 { 저[j,jj] = 저[j-1,jj]; } } 저[1,1] = C; 저[1,2] = Index; 저[1,3] = sDate; 저[1,4] = sTime; TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]); #ssssssssssssssssssssssssssssssssss If 수치표시 == 1 Then { Text1 = Text_New(sDate,sTime,저[1,1],NumToStr(저[1,1],2)); Text_SetStyle(Text1, 2, 0); } TL_SetSize(TL1,파동선두께); TL_SetColor(TL1,저점파동선색); #eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee } Else If 저[1,1] > C then { 저[1,1] = C; 저[1,3] = sDate; 저[1,4] = sTime; 저[1,2] = Index; TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]); #ssssssssssssssssssssssssssssssssss If 수치표시 == 1 Then { Text_SetLocation(Text1,sDate,sTime,저[1,1]); Text_SetString(Text1,NumToStr(저[1,1],2)); } #eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee } If 저[2,2][1] <> 저[2,2] Then { 저추세최종 = 0; For j = 3 To 추세판단범위 { If 저[2,1] > 저[j,1] and 저[j,1] > 0 Then { 저ID = j; 저추세최종 = (저[2,1] - 저[저ID,1])/(저[2,2] - 저[저ID,2]) * (Index - 저[저ID,2]) + 저[저ID,1]; TL3 = TL_New(저[저ID,3],저[저ID,4],저[저ID,1],sDate,sTime,저추세최종); #ssssssssssssssssssssssssssssssssss TL_SetSize(TL3,추세선두께); #eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee TL_SetColor(TL3,CYAN); j = 100; } } } Else If 저추세최종[1] > 0 Then { 저추세최종 = (저[2,1] - 저[저ID,1])/(저[2,2] - 저[저ID,2]) * (Index - 저[저ID,2]) + 저[저ID,1]; TL_SetEnd(TL3,sDate,sTime,저추세최종); } If 고추세최종[1] > 0 Then { 고추세최종 = (고[2,1] - 고[고ID,1])/(고[2,2] - 고[고ID,2]) * (Index - 고[고ID,2]) + 고[고ID,1]; TL_SetEnd(TL2,sDate,sTime,고추세최종); } 최종변곡점 = "저점"; } #==========================================# If 처리구분 == "" Then { If Index - 고[1,2] <= 추세선연장 Then //-------------------------- ③ { If 고추세최종[1] > 0 Then { 고추세최종 = (고[2,1] - 고[고ID,1])/(고[2,2] - 고[고ID,2]) * (Index - 고[고ID,2]) + 고[고ID,1]; TL_SetEnd(TL2,sDate,sTime,고추세최종); } } Else { 고추세최종 = 0; } If Index - 저[1,2] <= 추세선연장 Then //-------------------------- ④ { If 저추세최종[1] > 0 Then { 저추세최종 = (저[2,1] - 저[저ID,1])/(저[2,2] - 저[저ID,2]) * (Index - 저[저ID,2]) + 저[저ID,1]; TL_SetEnd(TL3,sDate,sTime,저추세최종); } } Else { 저추세최종 = 0; } }
프로필 이미지
매버릭
2017-08-30
183
글번호 112362
지표