커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

수식 부탁합니다.

안녕하세요. 3분차트에서 60분타주기분봉 직전봉 고가 종가상돌파시 매수 직전봉 저가 종가상 돌파시 매도 해선용이구요 매매시간은 17시--새벽02시 까지입니다. 수고하십시요.
프로필 이미지
바닥차기
2017-01-01
197
글번호 105467
시스템

바닥차기 님에 의해서 삭제되었습니다.

프로필 이미지
바닥차기
2017-01-01
2
글번호 105466
지표
답변완료

수식부탁드립니다-------------

지수 와 GapVa77의 변동율에 일정값을 곱한것인데 이렇게하니까 첨부의 차트중간처럼 둘의 변동폭이 일정범위에서 같이 움직입니다 이를다시 일정범위를 기준으로변동율을 누적해서 첨부의 맨아래차트처럼 지수형태로 부탁드림니다 va90과 va91을 겹쳐보고싶어서 그럽니다 부탁드립니다 Input : Period1(1),Period5(3),단기급증(6),단기급감(3),단기급등락(30), 장기급증(0.8),장기급감(0.8),장기급등락(5),돌파(15),급변(100),단기급변(50),순매수급증보정(0.6), 순매수급감보정(0.6),순매수보정한계(50)/*,고저기간(0)*/ ,LENGTH1(2) ,LENGTH2(20),과열(10),되돌림(0),tsfPeriod(14); Var : va(0); Var : va1(0); Var : va2(0); Var : va3(0); Var : va4(0); Var : va11(0); Var : va12(0); Var : va15(0); Var : va33(0); Var : va20(0); Var : va38(0); Var : va77(0); Var : va87(0); Var : va88(0); Var : va90(0); Var : va91(0); var : va94(0); var : va95(0); Var : value(0); Var : vp(0),II(0),AA(0),BB(0); var : N(0),T(0),EP1(0),EP2(0); var : ema11(0),ema12(0),ema13(0); var : ema21(0),ema22(0),ema23(0),cnt1(0),cnt2(0); var : vmin(0),vmax(0); var : TSF(0); EP1 = 2/(LENGTH1+1); EP2 = 2/(LENGTH2+1); if Bdate != Bdate[1] Then{ II = 0; BB = 0; AA = 0; } II = II+1; BB = BB+Bids; AA = AA+Asks; if II < Period5 Then{ va = (BB/II)-(AA/II)+8000; } else{ va = ma(bids,period5)-ma(asks,period5)+8000; } if II < Period1 Then{ va1 = (BB/II)-(AA/II)+8000; va2 = (BB/II)-(AA/II)+8000; va3 = (BB/II)-(AA/II)+8000; va4 = (BB/II)-(AA/II)+8000; } //순매수에 8000 더해 양의값만들기---------------------------- else{ va1 = ma(bids,period1)-ma(asks,period1)+8000; va2 = ma(bids,period1)-ma(asks,period1)+8000; va3 = ma(bids,period1)-ma(asks,period1)+8000; va4 = ma(bids,period5)-ma(asks,period5)+8000; } //순매수5이평의 급등락축소시작---------------------------- if ii > 1 and va >va[1]+장기급등락 then va = ((va -va[1])/장기급증)+va[1]; if ii > 1 and va <va[1]-장기급등락 then va = va[1]-((va[1] -va)/장기급감); If ii >= 2 Then { //순매수 일정차 이상의급등락축소시작---------------------------- //if va1 >va1[1]+급등락 then va1 = va1 -급등락; if va1 >va1[1]+단기급등락 then va1 = ((va1 -va1[1])/단기급증)+va1[1]; //if va1 >va1[1]+소등락 then va1 = va1 - 소등락; if va1 <va1[1]-단기급등락 then va1 = va1[1]-((va1[1] -va1)/단기급감); //if va1 <va1[1]-급등락 then va1 = va1 + 급등락; //if va1 <va1[1]-소등락 then va1 = va1 + 소등락; //급등락축소시작---------------------------- //순매수 일정차 이하의급등락축소시작---------------------------- if va2 >va2[1]+순매수보정한계 then va2 = ((va2 -va2[1])*순매수급증보정)+va2[1]; if va2 <va2[1]-순매수보정한계 then va2 = va2[1]-((va2[1] -va2)*순매수급감보정); if va2 >va2[1]+20 then va2 = ((va2 -va2[1])*0.22)+va2[1]; if va2 <va2[1]-20 then va2 = va2[1]-((va2[1] -va2)*0.22); if va2 >va2[1]+220 then va2 = ((va2 -va2[1])*0.3)+va2[1]; if va2 <va2[1]-220 then va2 = va2[1]-((va2[1] -va2)*0.3); //1이평 막대표시 ----------------------------------------------- If va1 > va1[1] Then { Plot10(va1, "매수잔량 우위"); Plot11(0, "매도잔량 우위"); } Else{ Plot10(0, "매수잔량 우위"); Plot11(va3, "매도잔량 우위"); } //5이평 막대표시 ----------------------------------------------- If va > va[1] Then { Plot3(va, "5매수총잔량 우위"); Plot4(0, "5매도총잔량 우위"); } Else{ Plot3(0, "5매수총잔량 우위"); Plot4(va, "5매도총잔량 우위"); } PlotBaseLine1(12000,"기준선12"); PlotBaseLine2(11000,"기준선11"); //테마합 일정 수량차이상의 급등락 표시 if va4 > va4[1]+ 급변 Then{plot55(vp-100,"급등");} if va4 < va4[1]- 급변 Then{plot46(vp-100,"급락");} } // if Highest(va1,고저기간 )==0 then{ // va11=Lowest(va1,고저기간 ); if ii >= 2 and va2 > va2[1]+ 단기급변 Then{plot66(va2,"단기");} if ii >= 2 and va2 < va2[1]- 단기급변 Then{plot66(va2,"단기");} Plot99(va2, "순매수1차보정",iff(va2>va2[1]-00,red,iff(va2<va2[1]+00,BLUE,BLACK))); Plot9(va4, "순매수"); if va2 >va2[1]+25 then va15 = ((va2 -va2[1])*01.1)+va2[1]; if va2 <va2[1]-25 then va15 = va2[1]-((va2[1] -va2)*1.1); if va15 >va15[1]+30 then va15 = ((va15 -va15[1])*1.1)+va15[1]; if va15 <va15[1]-30 then va15 = va15[1]-((va15[1] -va15)*1.1); //-------------------------------------------- if va15 < va2 then {vp=((va2-va15)/2)+va15;} if va2 < va15 then {vp=((va15-va2)/2)+va2;} if va2 > va15 then va33 = (va2 - va15) / 2 + va15; if va15 > va2 then va33 = (va15 - va2) / 2 + va2; plot47(va33,"반반",iff(vp>vp[1]+00,red,iff(vp<vp[1]-00,BLUE,BLACK))); //********************************************************* if vp >vp[1]+570 then vp = ((vp -vp[1])*0.25)+vp[1]; if vp <vp[1]-570 then vp = vp[1]-((vp[1] -vp)*0.25); //********************************************************** // vp = (2 * Ema(vp,LENGTH1)) - (2 * Ema(Ema(vp,LENGTH1),LENGTH1)) + // (Ema(Ema(Ema(vp,LENGTH1),LENGTH1),LENGTH1)); //Plot20(vp, "반"); plot20(vp+100, "반",iff(vp>vp[1]+00,red,iff(vp<vp[1]-00,BLUE,BLACK))); /*TSF = LRL(va4,tsfPeriod)+LRS(va4,tsfPeriod); if TSF >TSF[1]+220 then TSF = ((TSF -TSF[1])*0.6)+TSF[1]; if TSF <TSF[1]-220 then TSF = TSF[1]-((TSF[1] -TSF)*0.6); Plot60(TSF,"TSF",iff(TSF>TSF[1]+00,red,iff(TSF<TSF[1]-00,BLUE,BLACK))); */ Plot60(va15, "순매수1",iff(va15>va15[1]+00,RED,iff(va15<va15[1]-00,BLUE,BLACK))); if ii == 1 Then ema11 = va3; else ema11 = va3 * EP1 +ema11 * (1-EP1); if ii <= 2 Then ema12 = ema11; else ema12 = ema11 * EP1 +ema12 * (1-EP1); if ii <= 3 Then ema13 = ema12; else ema13 = ema12 * EP1 +ema13 * (1-EP1); //순매수를 테마로 if ii >= 3 then va77 = (2.6 * ema11) - (2.6 * ema12) + (ema13); Plot58(va77, "테마"); va88 = va77; if va2 < va77 and va3 > va77 Then { va88 = va3; } if va2 > va77 and va3 < va77 Then { va88 = va3; if va88 >va88[1]+220 then va88 = ((va88 -va88[1])*0.3)+va88[1]; if va88 <va88[1]-220 then va88 = va88[1]-((va88[1] -va88)*0.3); } Plot95(va88, "테마합"); if ii == 1 Then ema21 = va88; Else ema21 = va88 * EP2 +ema21 * (1-EP2); if ii <= 2 Then ema22 = ema21; Else ema22 = ema21 * EP2 +ema22 * (1-EP2); if ii <= 3 Then ema23 = ema22; else ema23 = ema22 * EP2 +ema23 * (1-EP2); if ii >= 3 then va87 = (3 * ema21) - (3 * ema22) + (ema23); //Plot78(va87, "테마합테마"); plot78(va87+000, "테마합테마",iff(va87>va87[1]+00,red,iff(va87<va87[1]-00,BLUE,BLACK))); if ii >= 2 then{ //TSF 막대표시 ----------------------------------------------- If va87 < va77 Then { Plot45(vmin-100, "테마상승 우위"); Plot44(0, "테마하락 우위"); } If va87 > va77 Then{ Plot45(0, "테마상승 우위"); Plot44(vmin-100, "테마하락 우위"); } //매수매도신호------------------------------------------------------- /* If va4[1]+300 < va4 Then{ Plot96(va4+200, "매/수"); } If va4[1]-300 > va4 Then{ Plot97(va4+200, "매/도"); } */ //------------------------------------------------------------------------- /* if CrossUp(va2,vp) Then { Plot85(va2-200, "buy"); PlaySound("C:₩예스트레이더₩data₩Sound₩bubbles"); } if CrossDown(va2,vp) Then { Plot86(va2+300, "sall"); PlaySound("C:₩예스트레이더₩data₩Sound₩accept.wav"); } */ //--------------------------------------------------------------------------- if va4[2] > va4[1] and va4[1]+00 < va4 Then{ plot85(va4-230,"y매수"); // PlaySound("C:₩예스트레이더₩data₩Sound₩reject.wav"); } if va4[2] < va4[1] and va4[1]-00 > va4 Then{ plot86(va4+250,"y매도"); // PlaySound("C:₩예스트레이더₩data₩Sound₩reject.wav"); } vmin = min(va87,va77); vmax = max(va87,va77); if va2 > va15 then va33 = (va2 - va15) / 2 + va15; if va15 > va2 then va33 = (va15 - va2) / 2 + va2; plot47(va33,"반반"); va20 = (vp+va15+va2+va33)/4; plot98(va20, "4평균",iff(va20>va20[1]+00,red,iff(va20<va20[1]-00,BLUE,BLACK))); input: 봉완성(0); var : SS(0),TS(0),second(0); #봉시작 var1 = TimeToMinutes(stime)*60; var2 = FracPortion(stime/100)*100;//시작시간 초 SS = var1+var2; #봉끝 value1 = TimeToMinutes(time)*60; value2 = FracPortion(time/100)*100;//&#44561;시간 초 TS = value1+value2; Second = TS-SS; if second < 봉완성 Then plot27(vmin-200,"체결단"); Else plot28(vmin-200,"체결장"); } var : gap1(0),gapVa77(0); var : gap2(0),gapVa4(0); var : gap3(0),gapVa87(0); if Bdate != Bdate[1] Then{ gap1 = gap1+(va77-va77[1]); gap2 = gap2+(va4-va4[1]); gap3 = gap3+(va87-va87[1]); } GapVa77 = Va77-Gap1; GapVa4 = Va4-Gap2; GapVa87 = Va87-Gap3; plot91(GapVa77,"테마합갭보정"); plot92(GapVa4); plot93(GapVa87,"테마합테마갭보정",iff(GapVa87>GapVa87[1]+00,rgb(255,0,0),iff(GapVa87<GapVa87[1]-00,BLUE,BLACK))); if GapVa87[2]>GapVa87[1] and GapVa87[1]<GapVa87 Then{ plot71(GapVa87-200,"테마매수유리"); PlaySound("C:₩예스트레이더₩data₩Sound₩Bell2.wav"); } if GapVa87[2]<GapVa87[1] and GapVa87[1]>GapVa87 Then{ plot72(GapVa87+200,"테마매도유리"); PlaySound("C:₩예스트레이더₩data₩Sound₩Bell2.wav"); } //==================================================================== va90=((c-c[1])/c[1]*100)*20000; plot74(va90,"지수변폭"); va91=((GapVa77-GapVa77[1])/GapVa77[1]*100)*140; plot75(va91,"테마변폭"); //=====================================================================
프로필 이미지
leekss1
2017-01-01
320
글번호 105465
지표
답변완료

박스권 돌파 수식 질문입니다.

1. 종가기준 30개봉 동안 최고가 최저가가 차이가 10틱 이내 2. 현재봉 종가기준 3틱이상 돌파시 다음봉 시가에 매수 3. 익절 8틱, 손절 8틱 감사합니다.
프로필 이미지
척노리스
2017-01-01
204
글번호 105464
시스템
답변완료

디버깅 창에서 동일 시간의 반복

30분봉 차트의 경우는 정상적으로 표시가 되나 5분봉 차트에서 디버깅 시 첨부와 같이 09:05분 시간대가 날짜별 계속 반복됩니다. 원인이 뭘까요?
프로필 이미지
sksore
2016-12-30
170
글번호 105463
시스템
답변완료

문의드립니다.

수고하십니다. 항상 도움 주셔서 조금씩 재미가 붙고 있습니다. 감사합니다. <MACD매매> 1.매수조건 MACDV 가 기준선을 골든크로스한 다음 2번째 봉(크로스 교차점에서 2번째 봉) 에서 시장가 매수진입 이때 5일선과 아래 20일선 과의 수직교차 거리가 3틱 이상 2.매도조건 매수조건과 반대 3.청산조건 매수청산: 전고점 보다 고점이 낮아지면 청산 매도청산: 전저점 보다 저점이 높아지면 청산 하고 a.wav 실행 4.손절 : 15틱 손절후 b.wav 실행 5.본절 : 수익이 10틱 이상 12틱 이하 일때 진입가+1틱 으로 손절가를 이동시키고 c.wav 실행 <스토캐스틱매매> 1.매수조건 스토캐스틱 침체 이고 캔들 저점이 (연속 3봉이상 또는 5봉 중에 3봉이상) 동일한 값을 유지하며 아래를 뚫지 못할때 다음 봉에서 시장가 매수진입 2.매도조건 스토캐스틱 과열 이고 캔들 고점이 (연속 3봉이상 또는 5봉 중에 3봉이상) 동일한 값을 유지하며 위를 뚫지 못할때 다음 봉에서 시장가 매도진입 3.청산,손절 청산: 매수진입했다면 (과열 이고 스토캐스틱 데드크로스) or MACD 데드크로스 즉시 청산 매도진입했다면 (침체 이고 스토캐스틱 골든크로스) or MACD 골든크로스 즉시 청산 하고 a.wav 실행 손절: 12틱 손절후 b.wav 실행 본절: 수익이 8틱 이상 10틱 이하 일때 진입가+1틱 으로 손절가를 이동시키고 c.wav 실행 이상과 같이 2개의 수식 부탁드립니다. 2개의 수식을 1개의 시스템 파일에 넣고 매매시간을 오전,오후로 다르게 설정하여 운영하려 합니다. 그런데 청산,손절,본절 값이 각각 다릅니다. 이럴땐 각각 따로 청산,손절,본절 수식을 설정해주는지 궁금합니다. 그리고 아래와 같이 1개의 시스템 파일에 2개 이상의 매매기법을 사용하였는데 A매매 가 청산 되지 않았는데도 B매매 가 매수신호가 나옵니다. 어떤때는 빼곡히 몇개가 나오기도 하구요. 청산,손절 수식도 뒤에 있는데 말이죠...A매매 가 청산,손절 등으로 포지션이 없어지기 전에는 다른 매수,매도 신호가 안나오게 하려면 어떻게 하면 되나요? 가르침 바랍니다. if MarketPosition <= 0 and 조건문 Then { buy("A매매"); } if MarketPosition <= 0 and 조건문 Then { buy("B매매"); } 새해 복 많이 받으세요 ^^
프로필 이미지
웹피
2017-01-02
157
글번호 105462
시스템
답변완료

수식 변환

안녕하세요? 제가 적합이동평균을 사용자 함수를 정의하였습니다 Inputs : Price(Numeric),Period(Numeric); Vars : Noise(0),Signal(0),Diff(0),efRatio(0), Smooth(1),Fastest(0.6667),Slowest(0.0645), AdaptMA(0); Diff = AbsValue(Price - Price[1]); IF CurrentBar <= Period Then AdaptMA = Price; IF CurrentBar > Period Then Begin Signal = AbsValue(Price - Price[Period]); Noise = accumN(Diff, Period); efRatio = Signal / Noise; Smooth = Power(efRatio * (Fastest - Slowest) +Slowest, 2); AdaptMA = AdaptMA[1] + Smooth * (Price - AdaptMA[1]); End; ama = AdaptMA; 위식은 검증하니 이상이 없엇읍니다 그런데 이 ama를 지표를 적용할려고 예전에 시그널메이커에 문의한 수식을 대입하니 에러가 나네요 제가 알고 있는 것이 이것 밖에 없어서 그렇게 섰습니다 에스트레이더에서 쓸수 있게 아래식을 변환 부탁 드립니다. Params : Period(5); Vars : value(0); value=ama(c,Period); plot1(value,"적합5일"); 첨부파일은 이렇게 입력한 에러 메세지입니다
프로필 이미지
knoll
2016-12-30
228
글번호 105461
지표
답변완료

수고많으십니다

if T == 1 then{ i1 = i1+2; if i1 == 2 Then var1 = H; if i1 >= 2 and C > var1 and TotalTrades == TotalTrades[1] Then{ if (MarketPosition == 0 and MarketPosition(1) != 1) or MarketPosition == -1 then buy("",OnClose,def,7); 해외선물 기준입니다. 아침9시부터 새벽5시까지만 신호가 뜨고 다시 아침에 새로운 장이 시작되면 전날에 있던 신호 무시하고 새로운 신호가 뜰수 있게끔 추가좀 부탁드립니다. 전날에 매수 포지션을 오늘아침에 새로운 장이 시작했는데 신호가 안뜨고 계속 매수신호 유지라고 뜨네요
프로필 이미지
디셈버
2016-12-30
154
글번호 105460
시스템
답변완료

청산 가격 표시

아래 수식에 진입 후 청산 되는 가격과 스위칭 손절되는 틱수를 화면에 표시 하고 싶습니다.. 수식 input : P(5); var1 = ma(C,P); if MarketPosition <= 0 and #현재 무포지션이거나 매도포지션 C[1] > O[1] and #전봉 양봉 var1[1] <= max(C[1],O[1]) and #전봉 몸통상단(종가)는 이평보다 같거나 큼 C > O Then #현재봉 양봉 buy(); if MarketPosition >= 0 and #현재 무포지션이거나 매수포지션 C[1] < O[1] and #전봉 음봉 var1[1] >= min(c[1],o[1]) and #전봉 몸통하단(종가)은 이평보다 같거나 작음 C < O Then #현재봉 음봉 sell(); 익절가 표시 방법) 매수 진입 후 10틱 익절가 도달시 차트에 10틱으로 캔들위에 표시 매수 진입 후 20틱 익절가 도달시 차트에 20틱으로 캔들위에 표시 . . . 매도 진입 후 10틱 익절가 도달시 차트에 10틱으로 캔들아래에 표시 매도 진입 후 20틱 익절가 도달시 차트에 20틱으로 캔들아래에 표시 . . . 스위칭 손절가 표시 방법) 매수 진입 후 익절가 10틱에 도달하지 못하고 반대 신호가 발생 할 경우 시 차이나는 틱 수를 표시 예) 익절 스위칭 시 4틱, 10틱, ... , 손절 스위칭 시 -6틱, -7틱, ...) 가능 할까요?;;; 생각보다 어렵네요 ㅡ.ㅡ;
프로필 이미지
phoenix
2016-12-31
149
글번호 105459
시스템