커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

수식 부탁드립니다.

수고하십니다. var ChartSet = new ReqChartItem("00000000",2,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,true); 스팟에서 갭보정을 시킨다음 예스랭귀지에서는 전일종가-당일시가는 갭이 계산되는데.. 갭보정을해서 전일종가-당일시가가 틀려집니다.. 정확한 갭 계산을 하고 싶네요..
프로필 이미지
구름달
2023-03-06
973
글번호 166942
지표

lbh1119 님에 의해서 삭제되었습니다.

프로필 이미지
lbh1119
2023-03-06
0
글번호 166934
시스템
답변완료

시스템식 부탁드립니다.

안녕하세요. 아래 시스템식 수정 부탁드립니다. 종목 : 해외선물 요청사항 1 가격이 계속 하락시 20개까지 추가 매수하도록 되어 있지만 최대 6개밖에 매수가 되지 않습니다. 왜 더 추가로 매수가 되지 않는지 모르겠습니다. 시스템식 수정 부탁드립니다. 요청사항 2 가격이 계속 하락하여 만약 5계약이 매수된 경우 첫번째 청산은 마지막 5번째 들어간 매수부터 청산하되 5번째 매수한 가격에서 20틱 상승시 청산 그 다음 4번째 들어간 매수를 청산하되 4번째 매수도 매수가격보다 20틱 상승시 청산 그 다음 3번째 들어간 매수를 청산하되 3번째 매수도 매수가격보다 20틱 상승시 청산 마지막으로 1번째로 매수한 것을 마지막으로 청산하고 싶습니다. 시스템식 수정 부탁드립니다. 요청사항 3 가령 매수를 5계약을 들어간 경우 청산은 5계약의 평균 진입가격에서 20틱 상승한 경우 한번에 청산하는 시스템식으로 수정 부탁드립니다. 감사합니다. #----------------------------------------- # 변수셋팅 #----------------------------------------- Input : 매수진입폭(20) ; Input : 매도진입폭(20) ; var : 기준가격(0) ; #--------------------------------------------------- # 매수시스템 #-------------------------------------------------- var1 = PriceScale*매수진입폭; #------------- # Long 매수 #------------- if MarketPosition == 0 and L > DayOpen-var1 Then Buy("B1",AtLimit,DayOpen-var1,1); #--------------------- # Long 매수 물타기 #--------------------- if MarketPosition == 1 and MaxEntries == 1 Then Buy("B2",AtLimit,DayOpen-var1*2,1); if MarketPosition == 1 and MaxEntries == 2 Then Buy("B3",AtLimit,DayOpen-var1*3,1); if MarketPosition == 1 and MaxEntries == 3 Then Buy("B4",AtLimit,DayOpen-var1*4,1); if MarketPosition == 1 and MaxEntries == 4 Then Buy("B5",AtLimit,DayOpen-var1*5,1); if MarketPosition == 1 and MaxEntries == 5 Then Buy("B6",AtLimit,DayOpen-var1*6,1); if MarketPosition == 1 and MaxEntries == 6 Then Buy("B7",AtLimit,DayOpen-var1*7,1); if MarketPosition == 1 and MaxEntries == 7 Then Buy("B8",AtLimit,DayOpen-var1*8,1); if MarketPosition == 1 and MaxEntries == 8 Then Buy("B9",AtLimit,DayOpen-var1*9,1); if MarketPosition == 1 and MaxEntries == 9 Then Buy("B10",AtLimit,DayOpen-var1*10,1); if MarketPosition == 1 and MaxEntries == 10 Then Buy("B11",AtLimit,DayOpen-var1*11,1); if MarketPosition == 1 and MaxEntries == 11 Then Buy("B12",AtLimit,DayOpen-var1*12,1); if MarketPosition == 1 and MaxEntries == 12 Then Buy("B13",AtLimit,DayOpen-var1*13,1); if MarketPosition == 1 and MaxEntries == 13 Then Buy("B14",AtLimit,DayOpen-var1*14,1); if MarketPosition == 1 and MaxEntries == 14 Then Buy("B15",AtLimit,DayOpen-var1*15,1); if MarketPosition == 1 and MaxEntries == 15 Then Buy("B16",AtLimit,DayOpen-var1*16,1); if MarketPosition == 1 and MaxEntries == 16 Then Buy("B17",AtLimit,DayOpen-var1*17,1); if MarketPosition == 1 and MaxEntries == 17 Then Buy("B18",AtLimit,DayOpen-var1*18,1); if MarketPosition == 1 and MaxEntries == 18 Then Buy("B19",AtLimit,DayOpen-var1*19,1); if MarketPosition == 1 and MaxEntries == 19 Then Buy("B20",AtLimit,DayOpen-var1*20,1); #--------------------- # Long 매수 청산 #--------------------- if MarketPosition == 1 and MaxEntries == 1 Then ExitLong("BX1",AtLimit,DayOpen+var1*0,"",1,2); if MarketPosition == 1 and MaxEntries == 2 Then ExitLong("BX2",AtLimit,DayOpen+var1*1,"",1,2); if MarketPosition == 1 and MaxEntries == 3 Then ExitLong("BX3",AtLimit,DayOpen+var1*2,"",1,2); if MarketPosition == 1 and MaxEntries == 4 Then ExitLong("BX4",AtLimit,DayOpen+var1*3,"",1,2); if MarketPosition == 1 and MaxEntries == 5 Then ExitLong("BX5",AtLimit,DayOpen+var1*4,"",1,2); if MarketPosition == 1 and MaxEntries == 6 Then ExitLong("BX6",AtLimit,DayOpen+var1*5,"",1,2); if MarketPosition == 1 and MaxEntries == 7 Then ExitLong("BX7",AtLimit,DayOpen+var1*6,"",1,2); if MarketPosition == 1 and MaxEntries == 8 Then ExitLong("BX8",AtLimit,DayOpen+var1*7,"",1,2); if MarketPosition == 1 and MaxEntries == 9 Then ExitLong("BX9",AtLimit,DayOpen+var1*8,"",1,2); if MarketPosition == 1 and MaxEntries == 10 Then ExitLong("BX10",AtLimit,DayOpen+var1*9,"",1,2); if MarketPosition == 1 and MaxEntries == 11 Then ExitLong("BX11",AtLimit,DayOpen+var1*10,"",1,2); if MarketPosition == 1 and MaxEntries == 12 Then ExitLong("BX12",AtLimit,DayOpen+var1*11,"",1,2); if MarketPosition == 1 and MaxEntries == 13 Then ExitLong("BX13",AtLimit,DayOpen+var1*12,"",1,2); if MarketPosition == 1 and MaxEntries == 14 Then ExitLong("BX14",AtLimit,DayOpen+var1*13,"",1,2); if MarketPosition == 1 and MaxEntries == 15 Then ExitLong("BX15",AtLimit,DayOpen+var1*14,"",1,2); if MarketPosition == 1 and MaxEntries == 16 Then ExitLong("BX16",AtLimit,DayOpen+var1*15,"",1,2); if MarketPosition == 1 and MaxEntries == 17 Then ExitLong("BX17",AtLimit,DayOpen+var1*16,"",1,2); if MarketPosition == 1 and MaxEntries == 18 Then ExitLong("BX18",AtLimit,DayOpen+var1*17,"",1,2); if MarketPosition == 1 and MaxEntries == 19 Then ExitLong("BX19",AtLimit,DayOpen+var1*18,"",1,2); if MarketPosition == 1 and MaxEntries == 20 Then ExitLong("BX20",AtLimit,DayOpen+var1*19,"",1,2); #--------------------------------------------------- # 매도시스템 #--------------------------------------------------- var3 = PriceScale*매도진입폭; #------------- # short 매도 #------------- if MarketPosition == 0 and H < DayOpen+var3 Then Sell("S1",AtLimit,DayOpen+var3,1); #--------------------- # Short 매도 물타기 #--------------------- if MarketPosition == -1 and MaxEntries == 1 Then Sell("S2",AtLimit,DayOpen+var3*2,1); if MarketPosition == -1 and MaxEntries == 2 Then Sell("S3",AtLimit,DayOpen+var3*3,1); if MarketPosition == -1 and MaxEntries == 3 Then Sell("S4",AtLimit,DayOpen+var3*4,1); if MarketPosition == -1 and MaxEntries == 4 Then Sell("S5",AtLimit,DayOpen+var3*5,1); if MarketPosition == -1 and MaxEntries == 5 Then Sell("S6",AtLimit,DayOpen+var3*6,1); if MarketPosition == -1 and MaxEntries == 6 Then Sell("S7",AtLimit,DayOpen+var3*7,1); if MarketPosition == -1 and MaxEntries == 7 Then Sell("S8",AtLimit,DayOpen+var3*8,1); if MarketPosition == -1 and MaxEntries == 8 Then Sell("S9",AtLimit,DayOpen+var3*9,1); if MarketPosition == -1 and MaxEntries == 9 Then Sell("S10",AtLimit,DayOpen+var3*10,1); if MarketPosition == -1 and MaxEntries == 10 Then Sell("S11",AtLimit,DayOpen+var3*11,1); if MarketPosition == -1 and MaxEntries == 11 Then Sell("S12",AtLimit,DayOpen+var3*12,1); if MarketPosition == -1 and MaxEntries == 12 Then Sell("S13",AtLimit,DayOpen+var3*13,1); if MarketPosition == -1 and MaxEntries == 13 Then Sell("S14",AtLimit,DayOpen+var3*14,1); if MarketPosition == -1 and MaxEntries == 14 Then Sell("S15",AtLimit,DayOpen+var3*15,1); if MarketPosition == -1 and MaxEntries == 15 Then Sell("S16",AtLimit,DayOpen+var3*16,1); if MarketPosition == -1 and MaxEntries == 16 Then Sell("S17",AtLimit,DayOpen+var3*17,1); if MarketPosition == -1 and MaxEntries == 17 Then Sell("S18",AtLimit,DayOpen+var3*18,1); if MarketPosition == -1 and MaxEntries == 18 Then Sell("S19",AtLimit,DayOpen+var3*19,1); if MarketPosition == -1 and MaxEntries == 19 Then Sell("S20",AtLimit,DayOpen+var3*20,1); #--------------------- # Short 매도 청산 #--------------------- if MarketPosition == -1 and MaxEntries == 1 Then ExitShort("SX1",AtLimit,DayOpen-var3*0,"",1,2); if MarketPosition == -1 and MaxEntries == 2 Then ExitShort("SX2",AtLimit,DayOpen-var3*1,"",1,2); if MarketPosition == -1 and MaxEntries == 3 Then ExitShort("SX3",AtLimit,DayOpen-var3*2,"",1,2); if MarketPosition == -1 and MaxEntries == 4 Then ExitShort("SX4",AtLimit,DayOpen-var3*3,"",1,2); if MarketPosition == -1 and MaxEntries == 5 Then ExitShort("SX5",AtLimit,DayOpen-var3*4,"",1,2); if MarketPosition == -1 and MaxEntries == 6 Then ExitShort("SX6",AtLimit,DayOpen-var3*5,"",1,2); if MarketPosition == -1 and MaxEntries == 7 Then ExitShort("SX7",AtLimit,DayOpen-var3*6,"",1,2); if MarketPosition == -1 and MaxEntries == 8 Then ExitShort("SX8",AtLimit,DayOpen-var3*7,"",1,2); if MarketPosition == -1 and MaxEntries == 9 Then ExitShort("SX9",AtLimit,DayOpen-var3*8,"",1,2); if MarketPosition == -1 and MaxEntries == 10 Then ExitShort("SX10",AtLimit,DayOpen-var3*9,"",1,2); if MarketPosition == -1 and MaxEntries == 11 Then ExitShort("SX11",AtLimit,DayOpen-var3*10,"",1,2); if MarketPosition == -1 and MaxEntries == 12 Then ExitShort("SX12",AtLimit,DayOpen-var3*11,"",1,2); if MarketPosition == -1 and MaxEntries == 13 Then ExitShort("SX13",AtLimit,DayOpen-var3*12,"",1,2); if MarketPosition == -1 and MaxEntries == 14 Then ExitShort("SX14",AtLimit,DayOpen-var3*13,"",1,2); if MarketPosition == -1 and MaxEntries == 15 Then ExitShort("SX15",AtLimit,DayOpen-var3*14,"",1,2); if MarketPosition == -1 and MaxEntries == 16 Then ExitShort("SX16",AtLimit,DayOpen-var3*15,"",1,2); if MarketPosition == -1 and MaxEntries == 17 Then ExitShort("SX17",AtLimit,DayOpen-var3*16,"",1,2); if MarketPosition == -1 and MaxEntries == 18 Then ExitShort("SX18",AtLimit,DayOpen-var3*17,"",1,2); if MarketPosition == -1 and MaxEntries == 19 Then ExitShort("SX19",AtLimit,DayOpen-var3*18,"",1,2); if MarketPosition == -1 and MaxEntries == 20 Then ExitShort("SX20",AtLimit,DayOpen-var3*19,"",1,2);
프로필 이미지
양치기
2023-03-05
755
글번호 166933
시스템
답변완료

수식 작성 문의드려요

수고가 많으십니다. 첨부파일은 예스트레이더에서 사용하는 Williams Vix Fix 와 Williams Vix Fix inverse 지표입니다.(출처는 갬블러라는분의 블로그입니다.) 이 지표를 가지고 종목검색식을 만들고 싶습니다. 검색 조건은 아래와 같습니다. 검색식은 각각 따로 분리해주시면 감사하겠습니다. 검색조건 1. Williams Vix Fix 가 과매도구간(녹색)인 종목 검색 검색조건 2. Williams Vix Fix inverse 값이 3 이하인종목 검색 검색조건 3. Williams Vix Fix 값이 전일 대비 감소한 종목 검색 검색조건 4. Williams Vix Fix inverse 값이 전일 대비 증가한 종목 검색 미리 감사의 말씀 드립니다.
프로필 이미지
신데렐라맨
2023-03-05
1476
글번호 166932
종목검색
답변완료

문의드립니다

안녕하세요? 아래수식에서 plot1 과 plot5 두가지의선이 기울기가 상향일때 빨강색 ,수평일때 그린색 ,하향일때 파랑색으로 표현되기를원합니다 감사드립니다 input : a(60); var1 = highest(h,a)[1]; Var2 = (3*highest(h,a)[1]+lowest(l,a)[1])/4; Var3 = (highest(h,a)[1]+lowest(l,a)[1])/2; var4 = (3*lowest(l,a)[1]+highest(h,a)[1])/4; var5 = lowest(l,a)[1]; Plot1(var1); Plot2(var2); Plot3(var3); Plot4(var4); Plot5(var5);
프로필 이미지
새벽에
2023-03-05
1334
글번호 166931
지표
답변완료

문의드립니다

안녕하세요? 코딩부탁합니다.. 현재 운용계약수가 4계약이라할때 매매하다가 수익나면 계약수 50프로증가, 손실나면 계약수 50프로감소.. 매수는 스토케스틱(5,3,3)이 골드날때 매도는 스토게스틱(5,3,3)이 데드날때 청산은 트레일링 청산 감사합니다..
프로필 이미지
사이버
2023-03-06
985
글번호 166930
시스템
답변완료

부탁드립니다.

1. 당일 20시를 기준으로 다음 날 20시까지의 60분차트에 일봉 타주기를 구현해 주세요 2. 일봉차트에 주봉 타주기를 구현해 주세요 감사합니다.
프로필 이미지
서태공
2023-03-05
1488
글번호 166929
지표

고성 님에 의해서 삭제되었습니다.

프로필 이미지
고성
2023-03-05
27
글번호 166928
지표
답변완료

시스템식 부탁드립니다.

항상 도움 주셔서 감사합니다. 아래와 같은 시스템식을 작성하였습니다. 종목 : 해외선물 도움요청1 : 가령 가격이 계속 하락하여 매수로 3계약이 들어갔을 경우 가격이 다시 상승하면 맨 마지막 진입부터 청산이 되어야 하는데 처음 들어간 계약부터 청산 되고, 마지막 3번째 들어간 매수는 가장 높은곳에서 청산 됩니다. 저는 가격이 다시 상승할 경우 마지막 매수진입분터 제일 먼저 청산하고 처음들어간 매수포지션은 맨 마지막에 청산하고 싶습니다 아래 시스템 수식 수정 부탁드립니다. 도움요청2 : 당일 청산 순수익과 현재 포지션 손익의 합이 20틱 이상 수익인 경우 새벽 6시에 체크하여 잔고 모두 청산하도록 시스템식 수정 부탁드립니다. 도움요청3 : 매수든 매도든 포지션 처음 진입이후 포지션 청산 순수익과 현재 포지션 손익의 합이 20틱 이상 수익인 경우 잔고 모두 청산하도록 시스템식 수정 부탁드립니다. 도움요청4 : 포지션이 있는 경우 가격이 특정값보도 높게 상승하거나 특정값보다 낮게 하락하는 경우 모든 포지션 청산(손절)하도록 시스템식 수정부탁드립니다. #---------------------------------------------------------------- #-------------------------------- # 매수 #-------------------------------- var : x(0); var1 = PriceScale*매수진입폭; if MarketPosition == 0 and L > DayOpen-var1 Then Buy("B",AtLimit,DayOpen-var1,1); if MarketPosition == 1 Then { Buy("B2",AtLimit,DayOpen-var1*(MaxEntries+1),1); if CurrentContracts > CurrentContracts[1] Then Var2 = AvgEntryPrice; if CurrentContracts < CurrentContracts[1] Then x = x+1; ExitLong("BX",AtLimit,Var2+var1*(x+1),"",1,2); } Else x = 0; #-------------------------------- # 매도 #-------------------------------- var : xx(0); var3 = PriceScale*매도진입폭; if MarketPosition == 0 and H < DayOpen+var3 Then Sell("S",AtLimit,DayOpen+var3,1); if MarketPosition == -1 Then { Sell("S2",AtLimit,DayOpen+var3*(MaxEntries+1),1); if CurrentContracts > CurrentContracts[1] Then Var4 = AvgEntryPrice; if CurrentContracts < CurrentContracts[1] Then xx = xx+1; ExitShort("SX",AtLimit,Var4-var3*(xx+1),"",1,2); } Else xx = 0; #---------------------------------------------------------------- 감사합니다.
프로필 이미지
양치기
2023-03-05
979
글번호 166927
시스템