커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

문의드립니다.

도움주시는 덕분에 도전하고 있습니다. 매번 감사합니다. 1. 기타 아래 전략은 진입횟수 1로 해도 하루 진입횟수를 초과해서 진입하더라구요. 어떻게 수정해야 하나요? /* 1. 전략내용 LRL지표의 변화율이(현재봉과 두봉전) 상승하면서 일정값 이상이면 매수, 하락하면서 일정값 이하면 매도 매수포지션 상태에서 진입후 LRL의 최고가에서 일정값 이상 하락하면 매도 매도포지션 상태에서 진입후 LRL의 최저가에서 일정값 이상 상승하면 매수 2. 기타 LRL지표를 이용하여 TrailingStop과 같은 기능을 구현한게 눈에 띔 매수와 매도 변수를 각각 따로 최적화 하는 것이 갠적으로 걸림.. */ inputs: ndays(30),//10~100(10) pctup(0.01),//0.001~0.01(0.001) pctdn(0.005),//0.001~0.01(0.001) jmpup(0.20),//0.10~0.60(0.02) jmpdn(0.18);//0.10~0.60(0.02) vars: pf(0),le(0),se(0); pf = LRL(close, ndays); if marketposition == 0 then begin if pf / pf[2]*100 > 100 + jmpup then begin buy("B1", atmarket); le = 1; end; if pf / pf[2]*100 < 100 - jmpdn then begin sell("S1", atmarket); se = 1; end; end; input : 진입횟수(1), 손절률(1), 익절률(1) ; var : count(0),T1(0); input : 진입시간(90000),제한시간(150000),청산시간(153400); var : Tcond(false); SetStopLoss(손절률,PercentStop); SetStopProfittarget(익절률,PercentStop); if stime == 청산시간 or (stime > 청산시간 and stime < 청산시간) Then{ Tcond = false; if MarketPosition == 1 Then exitlong(); if MarketPosition == -1 Then ExitShort(); } if (sdate != sdate[1] and stime >= 진입시간) or (sdate == sdate[1] and stime >= 진입시간 and stime[1] < 진입시간) then { Tcond = true; T1 = TotalTrades; } if (sdate != sdate[1] and stime >= 제한시간) or (sdate == sdate[1] and stime >= 제한시간 and stime[1] < 제한시간) then { Tcond = false; } if MarketPosition == 0 Then count = TotalTrades-T1; Else count = TotalTrades-T1+1; if Count < 진입횟수 and Tcond == true then { if marketposition == 1 then begin if pf < highest(pf, le) * (1 - pctdn) then begin sell("S2", atmarket); le = 0; end; le = le + 1; end; if marketposition == -1 then begin if pf > lowest(pf, se) * (1 + pctup) then begin buy("B2", atmarket); se = 0; end; se = se + 1; end; } 2. 기타 아래 전략 시뮬차트에서도 쓸 수 있게 수정부탁드립니다. Inputs: TrixLen(3), TSLen(8), ZeroCrss("Y"), AvgCrss("Y"); Vars: TRXval(0), AvgTRX(0), Zero(0), NewTrix(0); Vars: LogP(0), alpha(0), sm1(0), sm2(0), sm3(0); //newTrix 시작 LogP = Log(Close); IF CurrentBar == 1 Then Begin sm1 = LogP; sm2 = LogP; sm3 = LogP; alpha = 2 / (TRIXLen + 1); End Else Begin sm1 = (LogP - sm1) * alpha + sm1; sm2 = (sm1 - sm2) * alpha + sm2; sm3 = (sm2 - sm3) * alpha + sm3; NewTrix = (sm3 - sm3[1]) * 100; End; //newTrix 끝 TRXval = NewTRIX; AvgTRX = LRL(TRXval, TSLen); IF UpperStr(ZeroCrss) == "Y" Then Begin IF CrossUp(TRXval , Zero) Then Buy("B_ZCrss"); IF CrossDown(TRXval , Zero) Then Sell("S_ZCrss"); End; IF UpperStr(AvgCrss) == "Y" Then Begin IF CrossUp(TRXval , AvgTRX) Then Buy("B_AvgCrss"); IF Crossdown(TRXval , AvgTRX) Then Sell("S_AvgCrssS"); End; 3. 기타 전에 만들어주신 수식인데요. 한번 진입한 뒤 진입을 안합니다. 가장 첫 거래때 손실이면 0이 되서 진입을 안하는 건지 이유를 잘 모르겠습니다. 수정 부탁드립니다. 1. input : 설정수량(1),증감수량(1),제한수량(10); var : vol(0); if MarketPosition == 0 then { if TotalTrades == 0 Then vol = 설정수량; Else { if PositionProfit(1) >= 0 Then vol = MaxContracts(1)+증감수량; else vol = MaxContracts(1)-증감수량; } } else { if PositionProfit(0) >= 0 Then vol = MaxContracts(0)+증감수량; else vol = MaxContracts(0)-증감수량; } if MarketPosition <= 0 and vol <= 제한수량 and 매수진입조건 Then { Buy("b",OnClose,def,vol); } if MarketPosition >= 0 and vol <= 제한수량 and 매도진입조건 Then { sell("s",OnClose,def,vol); } 2 input : 설정수량(1),증감수량(1),제한수량(10); var : vol(0); if MarketPosition == 0 then { if TotalTrades == 0 Then vol = 설정수량; Else { if PositionProfit(1) >= 0 Then vol = MaxContracts(1)+증감수량; } } else { if PositionProfit(0) >= 0 Then vol = MaxContracts(0)+증감수량; } if MarketPosition <= 0 and vol <= 제한수량 and 매수진입조건 Then { Buy("b",OnClose,def,vol); } if MarketPosition >= 0 and vol <= 제한수량 and 매도진입조건 Then { sell("s",OnClose,def,vol); }
프로필 이미지
잡다백수
2018-08-19
180
글번호 121433
시스템

세발낚지 님에 의해서 삭제되었습니다.

프로필 이미지
세발낚지
2018-08-18
31
글번호 121432
시스템
답변완료

검증기간을 늘릴려면 어떻게 해야되나요?

input : Period(2),익절틱수(1),손절틱수(30),하락틱수(1); input : P1(100),P2(1); var : DParity(0); DParity = Disparity(Period); if CrossDown(DParity,P1) Then Buy("매수"); if CrossUp(DParity,P2) Then Sell("매도"); SetStopTrailing(PriceScale*하락틱수,PriceScale*익절틱수,PointStop); SetStopLoss(PriceScale*손절틱수, PointStop);
프로필 이미지
이형지
2018-12-02
219
글번호 121431
시스템
답변완료

이격도접점표시3

안녕하세요 관리자님!! 날씨가 많이 선선해졌습니다. 저의 수익도 관리자님 덕에 시원하게 불어나리라 믿습니다.ㅋㅋ 아래지표는 前주의 최고,최저가에서 시작하는 이격도를 제가 편집한 건데요 접점이 발생합니다. 저번처럼 이 접점발생시 이격도지표내에서 수평선을 표현하고 싶습니다. 왠만한건 제가 편집하겠는데 이건 좀 어렵습니다. 부탁드립니다. -아 래- var : wo(0),wh(0),wl(0); var : wo1(0),wh1(0),wl1(0); if DayOfWeek(bdate) < DayOfWeek(bdate[1]) Then { WO = O; WH = H; WL = L; WO1 = WO[1]; WH1 = WH[1]; WL1 = WL[1]; } if h > wh Then wh = h; if l < wl Then wl = l; if WO1 > 0 then { var1 = C/WO1*100-100; plot1(var1,"시가"); } if WH1 > 0 then { var2 = -(C/WH1*100-100); plot2(var2,"고가"); } if WL1 > 0 then { var3 = C/WL1*100-100; plot3(var3,"저가"); } PlotBaseLine1(0,"중심선");
프로필 이미지
카카
2018-08-17
221
글번호 121430
지표
답변완료

이평선 매매

안녕하세요 현물 주식 입니다 1, 월봉 차트 에서보면 단순이동평균선 3 >7 > 28 > 14 > 56 이렇게 나열되는 종목있는데요 나열된 상테 에서 주가가 또는 현재 값 이 단순이동평균선 14 이평 만나는경우 매수 월봉 차트 에서보면 단순이동평균선 3 < 7 < 28 < 14 < 56 이렇게 나열되는 종목있는데요 역나열된 상테 에서 주가가 또는 현재 값 이 단순이동평균선 14 이평 만나는경우 매도 2, 주봉 차트 에서보면 단순이동평균선 3 >7 > 28 > 14 > 56 이렇게 나열되는 종목있는데요 나열된 상테 에서 주가가 또는 현재 값 이 단순이동평균선 14 이평 만나는경우 매수 주봉 차트 에서보면 단순이동평균선 3 < 7 < 28 < 14 < 56 이렇게 나열되는 종목있는데요 역나열된 상테 에서 주가가 또는 현재 값 이 단순이동평균선 14 이평 만나는경우 매도 3, 일봉 차트 에서보면 단순이동평균선 3 >7 > 28 > 14 > 56 이렇게 나열되는 종목있는데요 나열된 상테 에서 주가가 또는 현재 값 이 단순이동평균선 14 이평 만나는경우 매수 일봉 차트 에서보면 단순이동평균선 3 < 7 < 28 < 14 < 56 이렇게 나열되는 종목있는데요 역나열된 상테 에서 주가가 또는 현재 값 이 단순이동평균선 14 이평 만나는경우 매도 하는 식 부탁요 감사합니다^^
프로필 이미지
회원
2018-08-17
251
글번호 121426
시스템

잡다백수 님에 의해서 삭제되었습니다.

프로필 이미지
잡다백수
2018-08-17
0
글번호 121419
시스템
답변완료

문의드립니다

1 피라미딩 식에서 종가가 무포지션일때 2N 배수 상향 돌파 매수진입 aa개씩진입 매수 포지션 있을때 2N-1 배수 하향 돌파 매수청산 bb개씩청산 무포지션일때 2N-1 배수 하향 돌파 매도진입 cc개씩진입 매도 포지션 있을때 2N 배수 상향 돌파 매도청산 dd개씩청산 2 1번식에서 골드가 1000~2000 사이에서 움직이므로 무포지션일때 1002 상향 돌파 매수진입 1004 상향 돌파 매수진입 ... 2000 상향 돌파 매수진입 매수포지션일때 1001 하향 돌파 매수청산 1003 하향 돌파 매수청산 ... 1999 하향 돌파 매수청산 무포지션일때 1001 하향 돌파 매도진입 1003 하향 돌파 매도진입 ... 1999 하향 돌파 매도진입 매도포지션일때 1002 상향 돌파 매도청산 1004 상향 돌파 매도청산 ... 2000 상향 돌파 매도청산 종가가 선을 상향/하향 돌파시 진입/청산하는 피라미딩 시스템식 감사합니다
프로필 이미지
파인애플
2018-08-17
191
글번호 121418
시스템
답변완료

수식 검증 부탁 드립니다.

안녕하세요 ~ 오늘도 수고 많으십니다. ^^ 주식/종목검색을 처음 작성 중인데 기존 수식을 참고해서 작성했는데 제가 예상했던 결과와 좀 다른것 같아 수식이 제대로 작성이 됐는지 확인 부탁 드립니다. AAV(tsi)수식을 만들어 시그널을 당일 돌파 시 검색이 되도록 했던 내용입니다. 수식선언은 맞는데, #검색 부분이 올바르게 된건지 검증 부탁 드립니다. #검색부분의 수식이 기존 소스를 보면 대부분 이렇게 처리되있는데 이해가 안되는 부분도 있어서요, 설명 주석도 부탁 드립니다. -------------------------- INPUTS: R(4), S(8), U(6), ZEROLINE(0), SMTHLEN(5), short(4),long(8),sig(6); var : Truestrength(0),Truestrengthsig(0),value(0), AA(0),BB(0),AAAv(0),signal(0); //# 수식 선언 AA = ma(ma(C[1]-C, short), long); BB = ma(ma(abs(C[1] - C), short), long); AAAv = iff(BB == 0, 0, AA/BB * 100 * (-1)); signal = iff(BB == 0, 0, ma(AA/BB*100 * (-1),sig)); # 검색 if crossup(AAAv,signal) Then { If C==C[1] Then value2 = 0.001; Else value2 = (C-C[1])/C[1]*100; } Else value2 = 0; Find(value2);
프로필 이미지
무한도전짱짱
2018-08-17
212
글번호 121417
종목검색
답변완료

질문드립니다

아래시스템에서 당일 시가 < 전일 종가일때를 매수조건에 추가 부탁드립니다 DayOpen < DayClose[1]로 하니 적용이 안되네요 1분봉이며 장시작전에 스팟에 수식적용하고 있습니다. input : 매수금액(100000); input : Per(5),경과분수(10),수익률(3); var : Evol(0),Xcnt(0),OpenCond(false),Xcond1(false),Xcond2(false),Xcond3(false); Var1 = ma(C,5); Var2 = ma(C,10); Var3 = ma(C,20); Var4 = ma(C,40); Var5 = ma(C,120); input : 진입횟수(1); var : Entry(0); if Bdate != Bdate[1] Then Entry = 0; if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then Entry = Entry+1; if Entry < 진입횟수 and CrossUp(Var1,Var4) and countif(C<Var4,5)>0 then { buy(); }
프로필 이미지
가이츠
2018-08-17
193
글번호 121411
시스템