커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

marketposition 함수 질의

"marketposition은 신호상 포지션 방향만 알려주는 함수입니다." 질문1. marketposition 이 신호상 포지션 방향을 알려준다고 하면 "매수 신호가 발생하였으나 실제 매수가 이루어 지지 않은 경우에도 시스템은 매수가 된 것으로 인지하게 되며, 매수 청산 신호 시 매도 주문이 발생되어 "매도"포지션을 갖 게 될수 있다" 다시 말하면 "실제 매수가 이루어 지지 않은 경우에도 exitlong 주문이 sell 처럼 주문 실행이 될 수 있다"는 뜻으로 이해되는데 맞는지요? 제가 이해하는 것이 맞다면 "신호가 발생되어도 실제 주문이 체결되지 않은 경우"에 대응할 수 있는 어떤 방법이 별도로 있는지 문의드립니다. 질문2. 차트상의 신호에 따라 주문이 이루어지는 것과 별개로 각각 다른 전략, 다른 차트를 적용하여 각각의 종목에 대한 동시 매매가 가능 지 문의드립니다. (선물 차트를 통해 선물을 매수 보유한 상태에서, 옵션 차트에서 매도 신호가 발생한 경우 선물을 매수 청산하는 것이 아니라 옵션을 매도해서 결국 선물 1개 매수, 옵션 1개 매도 이렇게 두 포지션 동시 보유가 가능한지요) 예를 들면, 차트 1에는 전략1을 적용하여 국내선물을 매수, 매도 하고 차트2에서는 전략2를 적용하여 콜옵션을 매수, 매도 하고 차트3에서는 전략3을 적용하여 풋옵션을 매수, 매도를 하고 싶습니다. (선물의 경우에는 장기 보유하는 전략으로 포지션을 계속 보유한 채 상황에 따라 콜옵션, 풋옵션을 매도하는 전략을 동시에 실행하고자 하려는 것입니다.) 질문3. 질문1, 2와 관련하여 홈페이지를 보다보니 "예스스팟"이란 것이 있던데 "예스스팟"의 경우 실제 계좌와 연동할 수도 있고, 다수 종목 주문도 가능한 것으로 보이는데,맞는지요 또한 하이투자증권의 예스트레이더를 통해 "예스스팟"으로 전략 실행 가능한지도 문의드립니다.
프로필 이미지
hanbija
2021-09-25
1127
글번호 152456
시스템
답변완료

문의드립니다.

안녕하세요 빠른 F/B 감사드립니다. 아래 내용에 대한 수식을 문의드리고 싶습니다. 60분봉기준 이번봉의 종가가 전 봉의 고가 보다 높고 전봉의 저가가 시가보다 낮을때, 매수 표기 최대한 간단하게 표기될수 있으면 좋겠습니다. 감사합니다.
프로필 이미지
회원
2021-09-25
1559
글번호 152455
지표
답변완료

시스템식 문의 드립니다.

안녕하세요 항상 감사드립니다. 지난주에 요청드렸던 부분에서 필요한 조건들을 추가하고자 하는데 수식작성에 어려움이 있어 요청을 드립니다. 아래에 해당되는 식은 타점1~5을 적어놓으면 조건에 해당되는 타점에서 매수하고 상승시 1프로, 2프로 분할익절 하락시 2차매수 후 분할익절, 손절청산 되는 수식인데, 여기서 추가하고자 하는 조건은 전부다 동일한 조건으로 진행되는데, 1차매수 2프로 익절 했을 경우에만, 다음타점으로 매수진행되도록 조건을 추가하고 싶습니다. 예를들어 5000원에 매수해서 2프로 익절까지 했을경우, 다음 4500원이 매수타점으로 되어 진행되도록 조건을 추가하고자 합니다. 아래는 기존식이고, 기존식 밑에 제가 수식을 이리저리 수정한 식인데, 아무리 해도 제가 생각하는 타점과 거리가 멀게 진행됩니다. 그래도 이리저리 생각해서 만든식이니 혹시나 작성하시는데 조그만한 도움이 될까 기존식 밑에다가 첨부하여 같이 올려봅니다. 그럼 잘 부탁드리겠습니다. 기존식. ---------------------------------------- input : 타점1(5000),타점2(4500),타점3(4000),타점4(3500),타점5(3000); input : 투자금액1(1000000),투자금액2(2000000); var : entry(False),HH(0); if Bdate != Bdate[1] Then { entry = True; #5개의 타점중 시가보다 작은것 중에 젤 큰값 계산 HH = 0; if 타점1 < DayOpen*0.99 and 타점1 < DayClose(1) and 타점1 > HH Then HH = 타점1; if 타점2 < DayOpen*0.99 and 타점2 < DayClose(1) and 타점2 > HH Then HH = 타점2; if 타점3 < DayOpen*0.99 and 타점3 < DayClose(1) and 타점3 > HH Then HH = 타점3; if 타점4 < DayOpen*0.99 and 타점4 < DayClose(1) and 타점4 > HH Then HH = 타점4; if 타점5 < DayOpen*0.99 and 타점5 < DayClose(1) and 타점5 > HH Then HH = 타점5; } if TotalTrades > TotalTrades[1] Then entry = False; if MarketPosition == 0 and sTime < 133000 and entry == true Then { Buy("1차매수",AtLimit,HH,Floor(투자금액1/min(NextBarOpen,HH))); } if MarketPosition == 1 Then { Buy("2차매수.",AtLimit,HH*0.974,Floor(투자금액2/min(NextBarOpen,HH*0.974))); } if MarketPosition == 1 Then { if MaxEntries == 1 Then { ExitLong("1차매수 1프로익절",AtLimit,avgEntryPrice*1.01,"",Floor(MaxContracts*0.4)); ExitLong("1차매수 2프로익절",AtLimit,avgEntryPrice*1.02); } if MaxEntries == 2 Then { ExitLong("2차매수 0.3익절",AtLimit,avgEntryPrice*1.003,"",Floor(MaxContracts*0.5)); ExitLong("2차매수 0.5익절",AtLimit,avgEntryPrice*1.005); } ExitLong("손절",AtStop,HH*0.96); } SetStopEndofday(151800); ------------------------------------------------------------------- 제가 수정한 식 ---------------------------------------------------------------------- input : 타점1(5000),타점2(4500),타점3(4000),타점4(3500),타점5(3000); input : 투자금액1(1000000),투자금액2(2000000); var : entry(False), HH(0),hi(0); Array : VV[6](0); vv[1] = 타점1; vv[2] = 타점2; vv[3] = 타점3; vv[4] = 타점4; vv[5] = 타점5; if Bdate != Bdate[1] Then { HH = 0; hi = 0; if vv[1] < DayOpen*0.99 and vv[1] > HH and vv[1] < DayClose(1) Then { HH = vv[1]; hi = 1; } if vv[2] < DayOpen*0.99 and vv[2] > HH and vv[2] < DayClose(1) Then { HH = vv[2]; hi = 2; } if vv[3] < DayOpen*0.99 and vv[3] > HH and vv[3] < DayClose(1) Then { HH = vv[3]; hi = 3; } if vv[4] < DayOpen*0.99 and vv[4] > HH and vv[4] < DayClose(1) Then { HH = vv[4]; hi = 4; } if vv[5] < DayOpen*0.99 and vv[5] > HH and vv[5] < DayClose(1) Then { HH = vv[5]; hi = 5; } } if TotalTrades > TotalTrades[1] Then entry = False; if MarketPosition == 0 and sTime < 133000 and entry == true Then { Buy("1차매수",AtLimit,VV[hi],Floor(투자금액1/min(NextBarOpen,VV[hi]))); } if MarketPosition == 1 Then { Buy("2차매수.",AtLimit,VV[hi]*0.974,Floor(투자금액2/min(NextBarOpen,VV[hi]*0.974))); if CurrentContracts < CurrentContracts[1] and LatestExitName(0) == "1차매수 2프로익절" Then hi = hi-1; } if MarketPosition == 1 Then { if MaxEntries == 1 Then { ExitLong("1차매수 1프로익절",AtLimit,avgEntryPrice*1.01,"",Floor(MaxContracts*0.4)); ExitLong("1차매수 2프로익절",AtLimit,avgEntryPrice*1.02); } if MaxEntries == 2 Then { ExitLong("2차매수 0.3익절",AtLimit,avgEntryPrice*1.003,"",Floor(MaxContracts*0.5)); ExitLong("2차매수 0.5익절",AtLimit,avgEntryPrice*1.005); } ExitLong("손절",AtStop,HH*0.96); } SetStopEndofday(151800); ----------------------------------------------------------------------------------------------------------------
프로필 이미지
맴맴잉
2021-09-25
1788
글번호 152454
시스템
답변완료

선좀 부탁 드립니다.

* 좋은 한주 되십시요^^ * <질문1> 예제 : TL_ SetExtRight(TL1,True); 식별번호가 TL1인 추세선 개체를 오른쪽으로 확장합니다. 위 수식 적용하면 선이 150개 정도 나옴니다. 이전 30개 까지만 표시 할려면 어떻게 해야 하나요? <질문2> 아래 수식에서 중심선 좀 부탁드립니다. input : n(10),z(10); var : mav(0),tl1(0),tl2(0),tl3(0),tl4(0); mav = ma(c,n); TL_Delete(tl1); TL_Delete(tl2); TL_Delete(tl3); TL_Delete(tl4); tl1 = TL_New(sdate[n-1],stime[n-1],highest(H,n),sdate,stime,highest(H,n)); tl2 = TL_New(sdate[n-1],stime[n-1],Lowest(L,n),sdate,stime,Lowest(L,n)); tl3 = TL_New(sdate[n-1],stime[n-1],highest(H,n),sdate[n-1],stime[n-1],Lowest(L,n)); tl4 = TL_New(sdate,stime,highest(H,n),sdate,stime,Lowest(L,n)); * 고맙습니다. 좋은 한주 되십시요^^
프로필 이미지
요타
2021-09-27
1302
글번호 152452
지표
답변완료

간단한 수식에서 특정일 특정시간에 일괄청산(계약수와 상관없이) 수식 추가요청

아까와는 다른식인데 이수식에서도 특정일 특정시간에 청산하는 수식 부탁드려요~~ 매수만 되는 수식인데 계약수에 상관없이 2021년 12월 16일 23시 10분 30초에 전량 청산되는 수식 부탁드려요~~~ 해외선물 나스닥 60분봉 input : MFI기간(20),MFI값(14),하락틱수(100),익절틱(120),손절틱(1050); input : 추가매수횟수(4),X(25),Y(300); var : MoneyFlow(0); MoneyFlow = MFI(MFI기간); if MarketPosition == 0 and MoneyFlow <= MFI값 and C <= Highest(H,X)-PriceScale*Y Then Buy("b",OnClose,DEf,1); if MarketPosition == 1 and MaxEntries < 추가매수횟수 Then Buy("bb",AtLimit,LatestEntryPrice(0)-PriceScale*하락틱수); SetStopLoss(PriceScale*손절틱,PointStop); SetStopProfittarget(PriceScale*익절틱,PointStop);
프로필 이미지
이형지
2021-09-24
1328
글번호 152448
시스템
답변완료

data2 이용 피라미딩

아래 피라미딩 수식은 data1 차트 값을 적용하는 수식입니다. data2 차트값을 이용하여 피라미딩하는 수식으로 수정바랍니다. ex) data1 국내선물 data2 선물 외국인순매수 수량 - 진입 : 외국인선물 순매수 수량 - 피라미딩 : 외국인선물 순매수 수량 차트 사용 ******************************************************************************* if MarketPosition == 1 and IsEntryName("b1") == true Then { if C >= EntryPrice+uppyra검증1 and MaxContracts < 상승N1 Then buy("bb1",AtStop,LatestEntryPrice(0)+상승Pyra1); } if MarketPosition == -1 and IsEntryName("s1") == true Then { if C <= EntryPrice-dnpyra검증1 and MaxContracts < 하락N1 Then sell("ss1",AtStop,LatestEntryPrice(0)-하락Pyra1); }
프로필 이미지
목마와숙녀
2021-12-16
1011
글번호 152445
시스템
답변완료

간략한 수식 부탁 드립니다.

안녕하세요. 아래 수식은 부탁드려서 작성해주신 수식을 간략하게 바꾼 수식입니다. DiPlus와 DiMinus 함수를 사용하고 싶습니다. 그런데 DiPlus와 DiMinus의 결과 값을 Heikin Ash 차트의 형태에 대한 결과값으로 적용하고 싶습니다. 게시판에 보면 Heikin Ash의 시, 고, 저, 종 값을 구하는 식이 나와있는데, DiPlus와 DiMinus 함수를 구성하는 식을 알아야 Heikin Ash의 시,고, 저, 종 값을 적용할 수 있을 것 같습니다. 감사합니다.
프로필 이미지
밤의마법사
2021-09-24
978
글번호 152443
사용자 함수
답변완료

수식 좀 요청 드립니다.

* 항상 많은 도움에 고맙습니다. * 요청 사항 - 100틱 차트에서 스톡캐스터 crossup(StoK , 80) 이면 매수 - 300틱 차트에서 스톡케스터 crossdown(StoK , 50) 이면 청산 매매로직좀 부탁 드립니다. ## 아래 수식 Input : Period(10), Period1(3), Period2(3); var1 = StochasticsK(Period,Period1); var2 = StochasticsD(Period,Period1,Period2); if var1 > var1[1] then plot1(var1,"K",red); else plot1(var1,"K",blue); if var2 > var2[1] then plot2(var2,"D",red); else plot2(var2,"D",blue); PlotBaseLine1(20, "기준선1",black); PlotBaseLine2(80, "기준선2",black); * 좋은 주말 되십시요.
프로필 이미지
요타
2021-09-24
894
글번호 152439
시스템
답변완료

궁금한점이 있어 요청드립니다.

안녕하세요 항상감사드립니다. 지난번에 요청드린 시스템식에서 좀더 필요한조건이 있는데.. 수식작성이 어려워 요청드립니다. 아래의 기존식에서 1차 매수후 1타점 익절, 2타점 익절 , 마지막 3타점 익절이 남았는데 3타점 익절이 오기전에 하락하게 되면 2차매수가 진행되도록 수식이 짜여져 있습니다. 여기서 2타점 익절후에 하락하더라도 2차매수가 진행 안되도록 수식을 수정하고 싶습니다. (참고로 1타점 익절 후에는 하락해도 기존식과 동일하게 2차매수가 진행) 부탁드립니다. ------------------------------------------------- 1 input : 타점1(5000),타점2(4500),타점3(4000),타점4(3500),타점5(3000); input : 투자금액1(1000000),투자금액2(2000000); var : entry(False),HH(0); if Bdate != Bdate[1] Then { entry = true; #5개의 타점중 시가보다 작은것 중에 젤 큰값 계산 HH = 0; if 타점1 < DayOpen and 타점1 > HH Then HH = 타점1; if 타점2 < DayOpen and 타점2 > HH Then HH = 타점2; if 타점3 < DayOpen and 타점3 > HH Then HH = 타점3; if 타점4 < DayOpen and 타점4 > HH Then HH = 타점4; if 타점5 < DayOpen and 타점5 > HH Then HH = 타점5; } if TotalTrades > TotalTrades[1] Then entry = False; if MarketPosition == 0 and HH > 0 and DayOpen > HH and sTime < 130000 and entry == 0 Then { Buy("1차매수",AtLimit,HH,Floor(투자금액1/min(NextBarOpen,HH))); } if MarketPosition == 1 and DayOpen > HH Then { Buy("2차매수.",AtLimit,HH*0.98,Floor(투자금액2/min(NextBarOpen,타점1*0.98))); } if MarketPosition == 1 Then { if MaxEntries == 1 Then { ExitLong("1차익절1",AtLimit,avgEntryPrice*1.02,"",Floor(MaxContracts*0.3)); ExitLong("1차익절2",AtLimit,avgEntryPrice*1.03,"",Floor(MaxContracts*0.4)); ExitLong("1차익절3",AtLimit,avgEntryPrice*1.04); } if MaxEntries == 2 Then { ExitLong("2차익절1",AtLimit,avgEntryPrice*1.01,"",Floor(MaxContracts*0.3)); ExitLong("2차익절2",AtLimit,avgEntryPrice*1.02,"",Floor(MaxContracts*0.4)); ExitLong("2차익절3",AtLimit,avgEntryPrice*1.03); } ExitLong("손절",AtStop,avgEntryPrice*0.97); } SetStopEndofday(151800); ----------------------------------------------------
프로필 이미지
맴맴잉
2021-09-24
923
글번호 152438
시스템