커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

수식 검토좀 부탁합니다.

var : Bcnt(0),BPrice(0),Scnt(0),SPrice(0); var1 = ma(c,1000); var2 = ma(c,2000); if MarketPosition <= 0 and crossup(var1,var2) Then buy("b1"); if MarketPosition == 0 and var1 > var2 and !(crossup(var1,var2)) Then buy("b2"); if MarketPosition == 1 Then{ if CurrentContracts > CurrentContracts[1] Then{ if countif(CurrentContracts > CurrentContracts[1],BarsSinceEntry) == 1 Then{ Bcnt = 1; BPrice = EntryPrice; } if countif(CurrentContracts > CurrentContracts[1],BarsSinceEntry) >= 2 and C[1] < BPrice Then{ Bcnt = countif(CurrentContracts > CurrentContracts[1],BarsSinceEntry); BPrice = C[1]; } } } if MarketPosition == 1 Then buy("bb",atlimit,BPrice-(PriceScale*20)); if MarketPosition >= 0 and CrossDown(var1,var2) Then Sell("s1"); if MarketPosition == 0 and var1 < var2 and !(CrossDown(var1,var2)) Then Sell("s2"); if MarketPosition == -1 Then{ if CurrentContracts > CurrentContracts[1] Then{ if countif(CurrentContracts > CurrentContracts[1],BarsSinceEntry) == 1 Then{ Scnt = 1; SPrice = EntryPrice; } if countif(CurrentContracts > CurrentContracts[1],BarsSinceEntry) >= 2 and C[1] > SPrice Then{ Scnt = countif(CurrentContracts > CurrentContracts[1],BarsSinceEntry); SPrice = C[1]; } } } if MarketPosition == -1 Then Sell("ss",atlimit,SPrice+(PriceScale*20)); #20틱 목표수익 청산(개별 진입별로 발동) SetStopProfittarget(PriceScale*20,PointStop); MessageLog("수치 %.f",CurrentContracts); 제가 이 수식을 1분봉으로 시뮬레이션 해본 결과, 처음 포지션 진입후에 피라미딩을 잘 잡아가는데, 아시다시피 CurrentContracts > CurrentContracts[1] 이 수식때문에 항상 전 계약수보다 현재 계약수가 많아야 한다는 조건때문에 피라미딩이 예를들어 3개였는데 2개로 줄었을때 2개에서 다시 3개로 포지션을 늘리지 못하는 문제가 발생이 되더군요. 3개에서 2개로 줄은 상태에서 항상 최근 진입한 포지션이 -20틱 손실일때 진입이 원칙인데 말입니다. if MarketPosition == 1 Then buy("bb",atlimit,BPrice-(PriceScale*20)); 이 수식대로 항상 제가 원하는 것은 최근 포지션이 -20틱 손실일때 해당 포지션 진입입니다. 그런데 포지션이 3개였다가 고정수익으로 포지션이 2개가 된 상태에서 시세가 다시 밀리면 또 진입하는건데 CurrentContracts > CurrentContracts[1] 이 수식때문에 시세가 -20틱 밀려도 진입을 못하는 상황이 연출이 됩니다. 어떻게 하면 될까요..?
프로필 이미지
무결점
2013-08-22
190
글번호 66700
시스템
답변완료

시스템식 문의입니다

양봉을 보이고 다음봉이 전 양봉보인자리를 돌파할때 매수 .. 그리고 음봉을 보이고 다음봉이 전 음봉보인자리를 깰때 매도... 이렇게 만들려면 수식이 어떻게 되나요..
프로필 이미지
회원
2013-08-22
139
글번호 66699
시스템
답변완료

알려주세요

안녕하세요 공부를 하는 학생이라 질문이 참 많네요 죄송합니다 어제 질문에서 #매수진입 봉 기준 2개봉의 최저가보다 작아지면 손절 후 매도진입 if MarketPosition == 1 Then sell("bs",AtStop,Lowest(L,2)[BarsSinceEntry]); 답변 손절하고 매도진입을 하지 않고자 하시면 sell을 exitlong으로 변경하시면 됩니다 감사합니다 그런데 if MarketPosition == -1 Then buy("sb",AtStop,highest(H,2)[BarsSinceEntry]); 이 식은 반대 경우입니다 이 경우도 exitlong 이렇게 변경을 하니 문제가 있는듯 합니다 그래서 생각한것이 매수 매도 시에 손절 언어가 다른가 생각이 드네요 알려주시기 바랍니다 질문2 위에 식에서 매수 매도 들어가면서 손절라인에 가로로 점선으로 선이 생겼으면 합니다 또 익절하면 그리고 다음신호들어가면 앞에 그린 손절선이 없어지면서 현재 진입의 손절라이이 생겨야 합니다 부탁좀 드립니다 질문 하나더 드리겠습니다 예) 매수이유 ---- 연속양봉이면서 주가가 5일 이평선 위에 있으면 매수 (현재) 이것은 ---- 연속양봉이면서 주가가 5일 이평선 위에 있어야 하며 5일 이평선의 각고 역시 상승일 경우만 매수로 변경을 하고자 합니다
프로필 이미지
정소장
2013-08-22
194
글번호 66698
시스템
답변완료

수식 질문입니다.

선물 일봉기준 5연속 음봉이면 6일째 시가에 매수하여 종가에 매도하는 식 부탁드립니다.
프로필 이미지
뽕빵이
2013-08-22
131
글번호 66697
시스템

미래테크 님에 의해서 삭제되었습니다.

프로필 이미지
미래테크
2013-08-22
0
글번호 66696
종목검색
답변완료

질문입니다

안녕하세요. 아래 수식에서 수익손절비율을 조절하려면 어느부분을 어떻게 수정해야 하나요? 설명 부탁드립니다. if MarketPosition == 1 Then{ if stime < 100000 Then{ ExitLong("BP1",atlimit,EntryPrice*1.02); ExitLong("BL1",AtStop,EntryPrice*0.98); } if stime >= 100000 and stime < 120000 Then{ ExitLong("BP2",atlimit,EntryPrice*1.01); ExitLong("BL2",AtStop,EntryPrice*0.99); } } if MarketPosition == -1 Then{ if stime < 100000 Then{ ExitShort("SP1",atlimit,EntryPrice*0.98); ExitShort("SL1",AtStop,EntryPrice*1.02); } if stime >= 100000 and stime < 120000 Then{ ExitShort("SP2",atlimit,EntryPrice*0.99); ExitShort("SL2",AtStop,EntryPrice*1.01); } } 위와 같이 작성하시면 10시 이전에는 수익손절을 2%로 하고 10시~12시 사이에는 1%로 합니다. 10시 이전에 진입한 부분도 10시 넘어가면 1% 조정됩니다.
프로필 이미지
율이파파
2013-08-22
132
글번호 66695
시스템
답변완료

옵션기준가 지표식수정

항상 감사드립니다 아래식을 적용해보니 1분봉 / 갭보정/10분봉 콜247 기준가 var1(빨간색)의 월 첫날 (8/9_금) 최저가가 1.15인데 2.77에 표기되고 있습니다 다른지표(var2,var3,var4)도 마찬가지입니다... 수정부탁드립니다 var : va2(0),va3(0),cond(false),ndate(0); va2 = date - int(date/100)*100; va3 = DayOfWeek(date); if va2 >= 8 and va2 <= 14 and va3 == 4 then cond = true; Else cond = false; if (cond == false and cond[1] == true) or (index ==0) Then{ ndate = sdate; } if sdate == ndate Then var1 = daylow; #옵션 기준가 (var1) ==> 옵션만기다음날 ,,당월물 첫날(금요일) 저가 # var2 = 1.2; var3 = 2.5; var4 = 3.5; plot1(var1,"기준가",RED,def,2); plot2(var2,"1.2",BLACK,def,2); plot3(var3,"2.5",YELLOW,def,2); plot4(var4,"3.5",YELLOW,def,2); 감사합니다
프로필 이미지
조민철
2013-08-22
223
글번호 66694
지표
답변완료

질문입니다.

1.분봉에서 당일의 시가보다 1%이상 상승한 분봉 종가가 발생하면 1 아니면 0를 나타내는 수식부탁드립니다. 2.분봉에서 당일의 시가보다 큰 양봉의 갯수를 나타내는 수식 부탁드립니다. 3.피라미딩으로 진입청산을 구현하였는데... 진입이 2회가 발생한 상황에서 전체잔고의 30%청산 수식을 작성하였더니 30%청산이 2회가 되어 총 60%의 잔고가 청산됩니다. 진입이 3회면 90%청산이 이루어집니다....진입횟수를 곱해서 청산하게 되는데 이를 30%로만 청산하려면 어떻게 해야하나요?
프로필 이미지
회원
2013-08-22
125
글번호 66693
시스템
답변완료

예비신호와 지표계산 문의

수고하십니다. 전략작성중 궁금한점이 있어 이렇게 올림니다. 예스랭귀지 설명중에 예비신호에 관하여 다음과 같은 설명이 시스템 트레이딩시 차트창에 나타나는 예비신호는 매매함수에서 진입과 청산함수에 대해서만 차트창의 마지막봉에서 봉이 완성되기 전에 신호가 일시적으로 만족하면 속이 비어있는 신호로 표시하고 차트상단에 회색으로 예비신호의 종류를 보여줍니다. 이렇게 설명되어 있습니다. 가령 선물5분챠트의 5이동평균과 20이동평균의 골근크로스, 데드크로스가 발생하면 매수/매도주문을 낸다. 이런 시스템을 만들때 , (1) 해당 지표의 조건이 만족한 시점에(봉이 완성된 시점이 아닌) 주문을 낼 수 있는 방법이 있는지 궁금합니다.
프로필 이미지
히말라야
2013-08-21
149
글번호 66692
시스템