커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

최대수익대비 하락

연결선물로 시물레이션 하면 최대수익대비 하락 체크시 수치가 너무 낮아 시물레이션 결과가 달라지는데요 수치를 몇 포인트하면 실제와 시물레이션 결과가 같게 되는지 궁금합니다. 처음 제가 입력했는 수치는 90분 차트에서 0.2,0.1 포인트 인데 결과같이 실제랑 달라요 90분, 300분 차트에서 최소한 얼마정도 이상의 수치를 입력해야 결과 같이 같아 지는지 궁금합니다.
프로필 이미지
고진감래
2018-01-28
203
글번호 116105
시스템
답변완료

시스템 합성 관리자 질문드립니다.

시스템 합성으로 2~3개를 운용하게 될 경우 If MarketPosition == 1 Then{ if 매수조건 then buy();} 과같이 현재 포지션을 가지고 있다는것을 다른시스템도 인식하나요? 혹은 인식하지 못하나요? 인식하지 못하게되면 피라미딩이 일어날 것 같은데.. 시도해보지 않아서 궁금합니다. 2. 한 시스템에 피라미딩 로직을 넣어보았습니다. If MarketPosition == 1 Then{ If highest(H,BarsSinceEntry) >= EntryPrice+PriceScale*15 and CrossUp(Close,dayopen) Then{ Buy("추가매수",AtMarket);} If IsEntryName("추가매수") and CrossDown(Close,dayopen) Then exitlong("피라미딩7청산"); } setstoploss(12틱); 이렇게 설정을 해놓으면 exitlong보다 스탑로스가 먼저 발동 됩니다. 이유가 무엇인가요?
프로필 이미지
stockric
2018-01-28
218
글번호 116104
시스템
답변완료

행복; 지표식 작성 바랍니다

한국의 금융산업 발전을 위해 불철주야 애쓰시는 귀하의 노고를 높이 평가합니다 지표식 관련입니다 주기; 100틱 - 현재시각을 10시 00분 01초 ~ 10시 01분 00초 사이 라고 할 때 - 2 ~ 5 분전은 9시 55분 01초 ~ 9시 59분 00초 이고 - 1 ~ 0 분전은 9시 59분 01초 ~ 10시 01분 00초 입니다 << 질문1 >> - 2 ~ 5 분전 사이의 최저가에 비하여 - 1분전부터 현재시각 사이의 최고가가 1,000 보다 크면 - 지표 1을 그리고 아니면 지표 0을 그린다 << 질문2 >> - 2 ~ 5 분전 사이의 4분간 거래대금 합계에 비하여 - 1분전부터 현재시각 사이의 거래대금 합계가 50% 이상이면 - 지표 2을 그리고 아니면 지표 0을 그린다 << 질문3 >> - 첨부파일에 있는 그림은 2018년 1월 26일 하루의 종합주가지수 틱봉 차트이고 수평으로 그려진 것은 하루 거래량의 매물부담 차트 입니다 - 종합주가지수 하루의 변동폭을 10등분으로 나누어서, 10등분으로 나누어진 각각의 가격대에서 체결된 거래량 합계를 비율대로 표시한 것입니다 - 하루하루의 매물부담 차트를 표시할 수 있나요? - 오늘은 2018년 1월 26일 하루만의 매물부담 차트를, 하루 전인 2018년 1월 25일에는 그날만의 매물부담 차트를~ 지표식 작성 바랍니다 수고하십시요^^
프로필 이미지
행복한가방
2018-01-28
282
글번호 116103
지표
답변완료

시스템 작성 부탁드립니다.

buy는 ketner 전략으로, sell은 MACD돌파로하고 청산전략은 샹델리에와 YOYO 청산전략을 사용하고자 합니다. 아래는 검색해서 찾은 트레이드스테이션 코드인것 같습니다. BUY --- INTRADAY - 10분봉 Inputs: Price(Close), Length(6), Const(1.2), ChanPcnt(.6),KTCNUM(5); Vars: KCU(0), KCL(0), ChanRng(0), AvgVal(0), AvgRange(0), SetBar(0), CountL(0), CountS(0); var : MP(0),BuySetup(0),SellSetUp(0); if DATE <> DATE[1] then begin BuySetup = 0; SellSetuP= 0; end; MP= MARKETPOSITION; IF MP = 1 THEN BuySetup = 1; IF MP = -1 THEN SellSetup = 1; {Assignments of Keltner calculations} AvgVal = Average(Price, Length); AvgRange = Average(TrueRange, Length); KCU = AvgVal + AvgRange * Const; KCL = AvgVal - AvgRange * Const; ChanRng = (KCU - KCL) / 2; {Accumulates to count the bars after the SetUps below} CountL = CountL + 1; CountS = CountS + 1; {Buy Criteria Evaluation} IF Price Crosses Above KCU Then Begin SetBar = High; CountL = 1; End; {Sell Criteria Evaluation} IF Price Crosses Below KCL Then Begin SetBar = Low; CountS = 1; End; If EntriesToday(DATE) < 2 AND TIME < 1450 then BEGIN IF MP<> 1 AND bUYsETUP=0 AND Price > KCU AND CountL <= KTCNUM Then Buy Next Bar at SetBar + (ChanRng * ChanPcnt) Stop; end; {Trailing Stops} input : ATRLength(20),Chand(2.7),YOYO(2.3); VAR : highPoint(0),LowPoint(0); If MP = 1 Then BEGIN HighPoint = Highest(High,barsSinceEntry +1); exitlong("buyTStop") at HighPoint - Chand * AvgTrueRange(ATRLength) stop; exitlong("BuyYoYStop") at Close - YoYo * AvgTrueRange(ATRLength) stop; End; If MP = 1 And Time > 1458 Then begin exitlong ("BuyTimeOut") ; end;
프로필 이미지
모루
2018-01-28
221
글번호 116102
시스템
답변완료

수식 문의

안녕하세요 하기 수식이 가능하신지 검토 부탁드립니다. 1. 현재 매도 상태 data 1의 볼린져 밴드의 중앙이평이 전봉대비 pricescale 5 틱 이상으로 증가할 때 a) data 2 의 볼린져 밴드 하단 접촉시 바로 매수로 변경 진입. 또는 b) data 1 의 볼린져 밴드 중앙 이평 접촉시 바로 매수로 변경 진입. data 1의 볼린져 밴드의 중앙이평이 전봉대비 pricescalr 5틱 미만으로 증가할 때 a) data 2의 볼린져 밴드 하단 접촉시 바로 현재 매도 청산 함. 또는 b) data 1의 볼린져 밴드 중앙 이평 접촉시 바로 매도 청산 함 2. 현재 매수 상태 data 1의 볼린져 밴드의 중앙이평이 전봉대비 pricescale 5 틱 이상으로 감소할 때 a) data 2 의 볼린져 밴드 상단 접촉시 바로 매도로 변경 진입. 또는 b) data 1 의 볼린져 밴드 중앙 이평 접촉시 바로 매도로 변경 진입. data 1 의 볼린져 밴드의 중앙이평이 전봉대비 pricescalr 5틱 미만으로 감소할 때 a) data 2의 볼린져 밴드 상단 접촉시 바로 현재 매수 청산 함. 또는 b) data 1의 볼린져 밴드 중앙 이평 접촉시 바로 매수 청산 함
프로필 이미지
softtoug
2018-01-28
203
글번호 116101
시스템
답변완료

문의 사항

안녕하세요 하기 수식에서 한가지 추가하고 싶은 사항이 있어서 문의 드립니다. 검토 부탁드립니다. Input : Period(20) ; var : BBdown(0),BandB(0); BBDown = BollBandDown(Period,Dv); BBUp = BollBandUp(Period,Dv); BandB = ((C-BBDown)/(BBUp-BBDown))*100; if CrossDown(BandB,90) and c >= bbmd-PriceScale*10 and C >= O Then sell("s4"); if crossup(BandB,10) and C <= bbmd+PriceScale*10 and C <= O Then buy("b4"); 상기 수식에서, 매도 : 가격이 90 이상으로 진입 후 100을 넘어서고 다시 내려와서 90을 이하로 내려갈 때 매도진입 부탁드&#47543;니다. 90을 넘었는데, 100을 넘지 못하면 신호가 작동되지 않게 부탁드립니다. 매수 : 가격이 10 이하로 진입 후 0을 넘어서고 다시 올라와서 10을 이상으로 올라갈 때 매수진입 부탁드립니다. 10을 넘었는네, 0 을 넘지 못하면 신호가 작동되지 않게 부탁드립니다. 감사합니다.
프로필 이미지
softtoug
2018-01-28
196
글번호 116100
시스템
답변완료

부탁드립니다.

안녕하세요? 캔들이 20선 돌파 매수, 반대는 매도 수식 부탁드립니다.
프로필 이미지
시그너스
2018-01-28
226
글번호 116099
시스템
답변완료

현재 종목코드를 로그로 출력하려면 어떻게 하죠?

아래 처럼 종목코드와 시,고,저,종가를 출력하고자 합니다. 어떻게 해야 하는지요? MessageLog("종목=%s,시=%f,고=%f,저=%f,종가=%f", CodeCategoryEX ,O,H,L,C ); 그리고, 로그를 특정 파일에 남길 방법은 없나요?
프로필 이미지
javaguid
2018-01-28
226
글번호 116098
지표
답변완료

문의합니다

아래 수식은 피라미딩 모든진입 신호허용을 첵크하면 정산적으로 동작합니다 그러나 피라미딩 허용안함으로 첵크하면 추가진입(수1, 도1)이 가끔 발생합니다 아래 수식에서 피라미딩 허용안함을 첵크하면 추가진입이 나오지 않게 수정하여 주시면 고맙겠습니다 감사합니다 input : 시작시간(090000),종료시간(152000); input : Period30(9),Period20(19),Period100(100),Period180(180),Period(12),sigPeriod(9),Period1(1),Period120(120),익절틱수(10),손절틱수(10); var : mav30(0),mav20(0),mav100(0),mav180(0),mav1(0),mav120(0),Bxcond(false),Sxcond(false); var : Tcond(false); var : T(0); value1 = TRIX(Period); value2 = ema(value1, sigPeriod); mav30 = ma(c, Period30); mav20 = ma(c, Period20); mav100 = ma(c, Period100); mav180 = ma(c, Period180); mav1 = ma(c, Period1); mav120 = ma(c, Period120); if (sdate != sdate[1] and stime >= 시작시간) or (sdate == sdate[1] and (Stime == 시작시간 or (stime > 시작시간 and stime[1] < 시작시간))) Then { Tcond = True; BXcond = false; SXcond = false; } if stime == 종료시간 or (stime > 종료시간 and stime[1] < 종료시간) Then{ Tcond = false; if MarketPosition == 1 Then ExitLong(); if MarketPosition == -1 Then ExitShort(); } if TotalTrades > TotalTrades[1] then{ BXcond = false; SXcond = false; if (IsExitName("bl1",1) == true or IsExitName("bp1",1) == true or IsExitName("bx",1) == true or IsExitName("bx",1) == true) Then BXcond = true; if (IsExitName("sl1",1) == true or IsExitName("sp1",1) == true or IsExitName("sx",1) == true or IsExitName("sx",1) == true) Then SXcond = true; } if Tcond == true then{ if MarketPosition <= 0 and Bxcond == false and crossup(mav30, mav20) and mav180 <= mav100 and value1 > value2 Then{ buy("매수",OnClose,def,1); } if MarketPosition <= 0 and Bxcond == false and mav30[2] < mav30[1] and mav30[1] < mav30 and mav100[3] <= mav100[2] and mav100[2] <= mav100[1] and mav100[1] < mav100 and mav120[3] <= mav120[2] and mav120[2] <= mav120[1] and mav120[1] < mav120 and value1 > value2 Then{ buy("매수2",OnClose,def,1); } if MarketPosition <= 0 and Bxcond == false and mav100[3] >= mav100[2] and mav100[2] >= mav100[1] and mav100[1] > mav100 and mav120[3] <= mav120[2] and mav120[2] <= mav120[1] and mav120[1] < mav120 and mav30 > mav20 and value1 > value2 Then{ buy("매수3",OnClose,def,1); } if MarketPosition == 1 Then{ if mav1[2] > mav1[1] and mav1[1] < mav1 and value1 > value2 and CurrentContracts < 2 Then buy("수1",OnClose,def,1); if IsEntryName("매수") == true and CrossDown(mav30, mav20) Then ExitLong("수청산"); if IsEntryName("매수2") == true and CrossDown(mav30, mav20) or CrossDown(value1, value2) Then ExitLong("수청산2"); if IsEntryName("매수3") == true and CrossDown(mav30, mav20) or CrossDown(value1, value2) Then ExitLong("수청산3"); ExitLong("bp",atlimit,AvgEntryPrice+PriceScale*익절틱수); ExitLong("bl",AtStop,AvgEntryPrice-PriceScale*손절틱수); } if MarketPosition >= 0 and Sxcond == false and CrossDown(mav30, mav20) and mav180 >= mav100 and value1 < value2 Then{ sell("매도",OnClose,def,1); } if MarketPosition >= 0 and Sxcond == false and mav30[2] > mav30[1] and mav30[1] > mav30 and mav100[3] >= mav100[2] and mav100[2] >= mav100[1] and mav100[1] > mav100 and mav120[3] >= mav120[2] and mav120[2] >= mav120[1] and mav120[1] > mav120 and value1 < value2 Then{ sell("매도2",OnClose,def,1); } if MarketPosition >= 0 and Sxcond == false and mav100[3] <= mav100[2] and mav100[2] <= mav100[1] and mav100[1] < mav100 and mav120[3] >= mav120[2] and mav120[2] >= mav120[1] and mav120[1] > mav120 and mav30 < mav20 and value1 < value2 Then{ sell("매도3",OnClose,def,1); } if MarketPosition == -1 then{ if mav1[2] < mav1[1] and mav1[1] > mav1 and value1 < value2 and CurrentContracts < 2 Then sell("도1",OnClose,def,1); if IsEntryName("매도") == true and crossup(mav30, mav20) Then ExitShort("도청산"); if IsEntryName("매도2") == true and crossup(mav30, mav20) or crossup(value1, value2) Then ExitShort("도청산2"); if IsEntryName("매도3") == true and crossup(mav30, mav20) or crossup(value1, value2) Then ExitShort("도청산3"); ExitShort("sp",atlimit,AvgEntryPrice-PriceScale*익절틱수); ExitShort("sl",AtStop,AvgEntryPrice+PriceScale*손절틱수); } }
프로필 이미지
남산
2018-01-28
205
글번호 116097
시스템