커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

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

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
263
글번호 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
224
글번호 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
218
글번호 116100
시스템
답변완료

부탁드립니다.

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

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

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

재문의 드립니다.

Input : 당일수익틱수(30); var : Tcond(false),T1(0),entry(0),Xcond(false),N1(0),daypl(0),당일수익(0); var1 = ma(C,5); var2 = ma(C,10); 당일수익 = PriceScale*당일수익틱수; if stime == 080000 or (stime > 080000 and stime[1] < 080000) Then { Tcond = true; T1 = TotalTrades; Xcond = false; N1 = NetProfit; } if stime == 055000 or (stime > 054500 and stime[1] < 055000) Then{ Tcond = false; if MarketPosition == 1 Then exitlong(); if MarketPosition == -1 Then ExitShort(); } if MarketPosition == 0 Then entry = TotalTrades-T1; Else entry = TotalTrades-T1+1; daypl = NetProfit-N1; if TotalTrades > TotalTrades[1] and (IsExitName("dbp",1) == true or IsExitName("dsp",1) == true) then Xcond = true; if Tcond == true and Xcond == false then { if crossup(var1,var2) Then buy("b",OnClose,def,entry+1); if CrossDown(var1,var2) Then sell("s",OnClose,def,entry+1); } if MarketPosition == 1 then{ ExitLong("dbp",atlimit,EntryPrice+((당일수익-daypl)/CurrentContracts)); } if MarketPosition == -1 then{ ExitShort("dsp",atlimit,EntryPrice-((당일수익-daypl)/CurrentContracts)); } 즐거운 하루되세요 > 아침한때비51 님이 쓴 글입니다. > 제목 : 문의 드립니다. > 이평5일선이 10일선 상향돌파 매수. 이평5일선이 10일선 하향돌파 매도 돌파시마다 한계약씩 늘어나기. 예를 들어 처음 매매가 1개 그다음은 2개 그 다음은 3개 이런식으로 계약수 늘어나서 매매 당일 마이너스 플러스 다 포함 수수료포함 뺄거 빼고 매매수익 60핍이면 매매청산및완전종료. 시간은 오전8시 부터 새벽 5시 50분 까지 매매 청산및완전종료. 시간 시작과 끝은 잘 작동하고요.매수매도 거래도 잘 이루어집니다. 그런데 손익 합 60틱이면 청산및 자동거래 완전종료는 되질 않습니다. 맨처음 거래에서 목표수익 도달하면 그때에만 자동거래 종료하고 수익나다가 마이너스 나다가 새벽 맞추어놓은 시간까지 거래합니다. (이 부분 제가 직접 체크 해보니까 마이너스 나다 수익나다 뺄거 빼고 수익60틱이 되었는데도 계속 진행을 하는것을 확인하고 글 올리는 겁니다. 혹시 오해가 있을까해서요) 원래는 마이너스가 나면 수수료및 마이너스 난 부분을 수익난 부분과 빼고 해서 수익60틱이면 그 시점에서 청산 및 자동거래 완전종료가 되어야 하는데요. 이 부분을 다시 잘 부탁드리겠습니다.
프로필 이미지
아침한때비51
2018-01-28
252
글번호 116096
시스템
답변완료

수식 요청 드립니다.

안녕하세요. 수식 수정요청 드립니다. 1. 연결선물 당일청산 아래 시스템에서 당일진입 목표정산 당일손실을 기준으로 -> 당일 1차 진입이 당일손실일경우 매매 종료. -> 당일 1차 진입이 목표청산 수익이고, 2차진입이 당일손실일경우 매매 종료. -> 당일 1차 진입 -> 목표청산 수익 -> 2차 진입 -> 목표청산 수익 -> 3차진입 -> 목표청산 수익 -> 3차진입, 즉 직전진입이 목표청산 수익일경우 계속 진입하고, 손실일 경우에 당일 매매 종료. -> 당일 계속해서 목표청산 수익일경우 당일청산 시간까지 목표청산 진입합니다. 감사합니다. #진입수식(예제) Input : Period(12), sigPeriod(9),당일손실(1.0); value1 = TRIX(Period); value2 = ema(value1, sigPeriod); # 매수/매도청산 If CrossUP(value1, value2) and dayPL > -당일손실 Then{ Buy(); } # 매도/매수청산 If CrossDown(value1, value2) and dayPL > -당일손실 Then{ Sell(); } #목표수익청산 Input : SSPT1(0.5); SetStopPosition; SetStopProfittarget(SSPT1,PointStop); #당일청산 SetStopEndofday(150000);
프로필 이미지
dandy
2018-01-29
226
글번호 116095
시스템
답변완료

문의 드립니다

분봉을 5분봉 기준으로 1일 78개 봉이 나오잖아요 거기서 78개봉 78일선거래량 아래의 봉은 제외 한 나머지 봉들로 주식가격 평균가를 구하고 싶습니다 그평균가를 중심으로 볼린저 밴드 형식으로 부탁드려요 일봉에 적용할 예정입니다
프로필 이미지
양봉길만걷자
2018-01-27
244
글번호 116094
지표