커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

수식 문의 드립니다.

아래글은 일전에 제가 문의하여 작성해 주신 예이고요~ ^^ 아래 수식에 추가로 상승방향이면 매수진입하여 매도청산만 하는 수식(매도진입은 금지) 매수진입후 손실 중에는 매도청산하지않는다라는 값도 넣어주세요 ^^; 반대로 하락방향일시 매도진입하여 매수청산(매수진입금지)만 또한 매도진입후 손실 중에는 매도청산하지않는다라는 값도 넣어주세요 ^^; 하는 수식을 따로 기재좀 해 주시면 감사하겠습니다 좋은 하루 되세요~* 안녕하세요 예스스탁입니다. Input : Period1(10), Period2(5),Period3(5); var : Stok(0),StoD(0); StoK = StochasticsK(Period1,Period2); StoD = StochasticsD(Period1,Period2,Period3); If CrossUP(StoK, StoD) and stok <= 20 Then { Buy("매수"); } If CrossDown(StoK, StoD) and stok >= 80 Then { Sell("매도"); } 즐거운 하루되세요 > 어쿠스틱p 님이 쓴 글입니다. > 제목 : 수식문의 드려요 > 스톡케스틱 지표값이 80이상 수치에서 k값이 d값을 데드크로스했을시만 매도신호발생 20이하 수치에서 k값이 d값을 골드크로스했을시만 매수신호발생
프로필 이미지
어쿠스틱p
2015-06-11
210
글번호 87115
시스템
답변완료

추가 부탁드리겠습니다.

아래 수식에 대해서 매수된 수량에 대해서 매수청산이 모두 완료된 경우 MessageLog를 통해 성과를 표시한 후 1시간이 경과된 이후부터 재매수 가능하도록 로직을 보완하고 싶습니다. ex) 9:05분 1차 매수 9:08분 2차 매수 9:10분 1차 매도 9:20분 전량 매도 MessageLong(분할횟수, 평균단가, 수익금액, 수익률)이 표시됨 10:30분 1차 매수 10:35분 1차 매도 10:40분 전량 매도 MessageLong(분할횟수, 평균단가, 수익금액, 수익률)이 표시됨 위와 같이 9:05분~9:20분까지 매매가 완료된 후 Log를 표시하고 1시간이 경과한 시점부터 재매수를 하여 10:30분~10:40분까지 매매가 완료된 후 Log를 표시함 감사합니다. input : fdate(20150610), stime_from(090000), stime_to(144500), entry1(1000000),entry2(1000000),entry3(2000000); input : updn_tm1(15), buy_r1(0.93), buy_r2(0.9), buy_r3(0.87); var : V1(0),V2(0),V3(0),cnt(0),count(0),updn_p1(0),AVgv(0); count = 0; for cnt = 0 to 10{ if sdate == EntryDate(cnt) Then count = count+1; } if CodeCategoryEx == 11 and BasePrice < 50000 Then { V1 = int(int(entry1/C)/10)*10; V2 = int(int(entry2/C)/10)*10; V3 = int(int(entry3/C)/10)*10; } Else { V1 = int(entry1/C); V2 = int(entry2/C); V3 = int(entry3/C); } if sdate != sdate[1] then { updn_p1 = updn_tm1 / BarInterval; } if sdate == fdate then { if MarketPosition == 0 and CurrentEntries == 0 then { var1 = Highest(H, updn_tm1)[1]; if stime >= stime_from and stime <= stime_to and count < 1 then { buy("b11",atlimit,var1*buy_r1,V1); buy("b12",atlimit,var1*buy_r2,V2); buy("b13",atlimit,var1*buy_r3,V3); var3 = var1; var4 = L; } } if MarketPosition == 1 and MaxEntries == 1 then { buy("b21",atlimit,var3*buy_r2,V2); buy("b22",atlimit,var3*buy_r3,V3); } if MarketPosition == 1 and MaxEntries == 2 then { buy("b31",atlimit,var3*buy_r3,V3); } if MarketPosition == 1 Then { AVgv = AvgEntryPrice; if L < var4 then var4 = L; if MaxEntries <= 2 Then{ if CurrentContracts == MaxContracts Then exitlong("bx1_1",atlimit,var4+(var3-var4)*0.5,"",int(MaxContracts*0.5),1); if CurrentContracts == MaxContracts Then exitlong("bx1_2",atlimit,var4+(var3-var4)*0.75); } if MaxEntries == 3 Then{ if CurrentContracts == MaxContracts Then exitlong("bx2_1",atlimit,var4+(var3-var4)*0.25,"",int(MaxContracts*0.5),1); if CurrentContracts == MaxContracts Then exitlong("bx2_2",atlimit,var4+(var3-var4)*0.50); } if stime >= 144500 Then{ exitlong("종가청산",AtMarket); if count == 1 and MarketPosition == 0 Then{ MessageLog("분할횟수 %.f 평균단가 %.f 수익금액 %.2f 수익률",MaxEntries(1),avgv,PositionProfit(1),PositionProfit(1)/avgv); } } } }
프로필 이미지
엠제이
2015-06-11
219
글번호 87113
시스템

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

프로필 이미지
엠제이
2015-06-11
2
글번호 87111
시스템
답변완료

시스템식부탁드립니다.

안녕하세요 선물마감 3개월전 표현식부탁드립니다. 선물마감 1개월전 표현식부탁드립니다. 선물마감 1주전 표현식부탁드립니다. 선물마감 3일전 표현식부탁드립니다. 선물마감 당일 표현식부탁드립니다.
프로필 이미지
외국인
2015-06-11
225
글번호 87109
시스템
답변완료

수정부탁드립니다.

봉이 바뀔때마다 최근 1000봉의 최적변수를 구하려고합니다. //If Index >= 1500 && Index <= 2500 Then 처럼 직접 숫자를 넣어주니, 한번이지만 올바르게 작동은합니다. 매봉마다 구하려고 하다가 막혔습니다. ============================================================= Input: 시작변수(1),종료변수(19),수수료(0),슬리피지(0),참조봉갯수(1000); Var: cnt(0),n(0),shortPeriod(0),longPeriod(0),longMa(0),최적변수(0); Array: shortMa[501](0), MP[501](0),BuySellEntryPrice[501](0),OpenPP[501](0),NP[501](0),TP[501](0); If Index >= cnt && Index <= cnt + 참조봉갯수 Then //If Index >= 1500 && Index <= 2500 Then For n = 0 to 종료변수-시작변수 { shortPeriod = n+시작변수; longPeriod = 20; shortMa[n] = ma(C,shortPeriod); longMa = ma(C,longPeriod); If MP[n] == 1 Then { OpenPP[n] = (C-BuySellEntryPrice[n]); } Else If MP[n] == -1 Then { OpenPP[n] = (BuySellEntryPrice[n]-C); } Else { OpenPP[n] = 0; } If MP[n] <= 0 and shortMa[n] > longMa Then { // If shortMa[n] > longMa Then { if MP[n] == -1 Then { NP[n] = NP[n]+OpenPP[n]; } BuySellEntryPrice[n] = C; MP[n] = 1; } If MP[n] >= 0 and shortMa[n] < longMa Then { // If shortMa[n] < longMa Then { if MP[n] == 1 Then{ NP[n] = NP[n]+OpenPP[n]; } BuySellEntryPrice[n] = C; MP[n] = -1; } TP[n] = NP[n] + OpenPP[n]; If TP[최적변수] < TP[n] Then { 최적변수 = n; } } cnt = cnt + 1; MessageLog("시가,%.4f,종가,%.4f,MP,%.0f,NP,%.4f,OpenPP,%.4f,TP,%.4f,최적변수,%.0f,cnt,%.0f",open,close,MP[최적변수],NP[최적변수],OpenPP[최적변수],TP[최적변수],최적변수+1,cnt);
프로필 이미지
9단
2015-06-11
230
글번호 87108
지표
답변완료

수식 문의드립니다.

안녕하세요? 아래식은 문의드린 것에 대해 답변 받은 것입니다. 그런데 아래식은 plot3 에 해당하는 트레일링스탑에 걸리지 않았더라도 16시가 되면 새롭게 모든 선이 지워지고 plot1, plot2 가 뜨네요. 트레일링스탑에 걸리지 않으면 며칠이고 선이 계속 이어지다가, 걸리고 나서야 다시 당일(16시 ~ 16시가 하루)의 plot1,2,3 의 선이 뜨게는 안되나요? var : AA(0), BB(0),MP(0),EP(0),HH(0); if stime == 160000 or (stime > 160000 and stime[1] < 160000) Then{ var1 = O; MP = 0; } AA = var1*1.01; if MP == 0 and crossup(c,AA) Then{ MP = 1; EP = AA; HH = H; } if MP == 1 Then{ if H > HH Then HH = H; plot3(HH-(HH-EP)*0.9,"청산선"); } if MP == 1 and crossdown(c, HH-(HH-EP)*0.9) then { MP = 0; } if MP == 0 Then{ plot1(var1); plot2(AA); }
프로필 이미지
spek
2015-06-11
191
글번호 87107
지표
답변완료

변수값에 소수점이 잔뜩 찍히는 문제

제가 다음과 같이 프로그램을 짜서 실행시켜 보았는데, 결과값을 보면 이상하게 소수점 이하에 값이 잔뜩 찍히는 경우가 있습니다. function Main_OnStart() { var a=120.45, b=120.46; var c, d, e; c = 130.46; d = a+10; e = b+10; Main.MessageList(a, b, c, d, e); if (c == e) Main.MessageList("true"); else Main.MessageList("false"); } 실행한 결과==========> 120.45 120.46 130.46 130.45 130.4599999999999998 false 위 결과값에서 a, b, c, d 는 정상적으로 값이 찍히는데 유독 e 만 130.46으로 찍히지 않고 이상하게 소수점 형태로 찍히더군요. 근데, 문제는 수식을 짤 때 저렇게 소수점 형태로 찍히는 경우가 상당히 많아서 if 문같은 비교 수식에서 엉터리 결과를 내는 경우가 아주 많다는 겁니다. 위에서 예를든 경우에도 상식적으로 c와 e는 같은 값을 가질거라고 예상되어 true 가 나와야 되는데 false 가 나와서 비교수식이 오작동하는 경우가 많습니다. 전략도 당연히 엉터리로 돌죠. 이게 자바스크립트 언어 자체가 갖고 있는 오류인가요? 아니면 예스스팟의 오류인가요? 이런 경우에 어떻게 대처해야하는지 참 난감합니다. 어떤 경우에 소수점이 잔뜩 찍힌 형태로 값이 나오는지 감도 못잡겠고요. 대처가 안됩니다 ㅠㅠ 혹시 이런 경우 접하신 적 있으신지? 도와주세요.
프로필 이미지
김태희
2015-06-11
221
글번호 87106
사용자 함수

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

프로필 이미지
ho2350
2015-06-11
0
글번호 87104
종목검색
답변완료

부탁합니다

거래량조건 1일전일봉거래량. 1일전일봉거래량 < 2일전 일봉거래량. 1일전알봉거래량 > 3일전일봉거래량. 2일전일봉거래량. 2일전일봉거래량 > 1일전일봉거래량 > 3일전일봉거래량. 현재거래량 30분봉거래량기준 과거3일간 30분봉평균거래량*3 < 금일시초가30분봉거래량. 캔들조건 2일전캔들 +4%이상양봉 현재일봉 캔들 양봉. 주석처리부탁합니다.
프로필 이미지
ho2350
2015-06-11
183
글번호 87103
종목검색