커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

수식요청 드립이다.

안녕하세요. 연결선물 분봉 틱봉 차트에서 장시작 후 실시간으로 봉이 완성될때마다 차트에 표시. -> 직전완성봉 기준으로, 당일시가에서 직전완성봉 고가 까지의 변폭 시가라인 위에 표시 예) 고가변폭 : 0.5P -> 직전완성봉 기준으로, 당일시가에서 직전완성봉 저가 까지의 변폭 시가라인 아래에 표시 예) 저가변폭 : 0.8P 수식요청 드립이다. 감사합니다.
프로필 이미지
dandy
2018-02-08
129
글번호 116449
검색
답변완료

문의드립니다

이미지와 같이 5개의 이평을 한번에 돌파하는 양봉 강조식 부탁드립니다. 이미지는 20, 60, 120, 240, 480 선을 돌파한것입니다.
프로필 이미지
확실한수익
2018-02-08
177
글번호 116446
강조
답변완료

문의 드립니다.

input : N(20); var1 = AccumN(V*C,N); var2 = AccumN(V,N); var3 = var1/var2; plot1(var3); 이수식에서 n거래량이 높은 거래량만 포함시키고 싶습니다 감사합니다
프로필 이미지
양봉길만걷자
2018-02-08
139
글번호 116445
지표
답변완료

문의드립니다.

매번 고맙습니다. 1. 시스템 분봉 외부변수 금액,n개봉,RSI기간,타주기봉기간 진입 1-타주기 이평 40이상에서 타주기 RSI가 2봉 연속 25이하면 금액의 10% 매수 2-1에서 n개봉 지났는데 1보다 가격이 낮으면 20% 매수 3-2에서 n개봉 지났는데 2보다 가격이 낮으면 30% 매수 청산 -1,2,3, 진행하는 동안 RSI가 70에 도달하면 추가 매수는 안하고 모두 청산. -3까지 진행된 뒤 RSI가 70까지 도달하지 못하고 전체포지션 손실률이 n2%에 도달하면 청산
프로필 이미지
잡다백수
2018-02-08
164
글번호 116435
시스템
답변완료

문의드립니다.

도움주시는 덕분에 도전하고 있습니다. 매번 감사합니다. 1. 기타 예스코드로 변환 부탁드립니다. inputs: Price( Close ), RetracePct( 5 ) ; variables: LowPrice( 0 ), HighPrice( 0 ), RetraceFctrUp( 0 ), RetraceFctrDn( 0 ) ; if CurrentBar = 1 then begin LowPrice = Price ; HighPrice = Price ; RetraceFctrUp = 1 + 0.01 * RetracePct ; RetraceFctrDn = 1 - 0.01 * RetracePct ; end else begin if Price < LowPrice then LowPrice = Price ; if Price > HighPrice then HighPrice = Price ; if MarketPosition < 1 and Price >= LowPrice * RetraceFctrUp then begin Buy this bar on Close ; HighPrice = Price ; end else if MarketPosition > -1 and Price <= HighPrice * RetraceFctrDn then begin Sell Short this bar on Close ; LowPrice = Price ; end ; end ;
프로필 이미지
잡다백수
2018-02-08
152
글번호 116429
시스템
답변완료

도움을 부탁드립니다.

아직 뼈대를 잡지 못했습니다. 도움을 부탁드립니다. 키움에서 시험적용해서 사용하던 것인데 예스 트레이더 시스템으로 변환을 하고 싶습니다. 변수값 p=20 m=2 매수진입 c>=avg(c,p)+m*stdev(c,p) or c>=lowest(c,p)+3*atr(p) 매수청산 c<=avg(c,p)-m*stdev(c,p) or c<=highest(c,p)-3*atr(p) 매도진입 c<=avg(c,p)-m*stdev(c,p) or c<=highest(c,p)-3*atr(p) 매도청산 c>=avg(c,p)+m*stdev(c,p) or c>=lowest(c,p)+3*atr(p) 매일매일 고생 하심에 감사드립니다.
프로필 이미지
플로스트
2018-02-08
159
글번호 116428
시스템
답변완료

동일계좌 진입 청산 질문 입니다.

안녕하세요. ^^ "A" 라는 시스템이 있는데, 한개의 동일계좌로 30분, 60분, 90분 각각의 차트에 동일한 "A" 라는 시스템을 연결했을 때, 진입 신호는 B 또는 S , 청산 신호는 BB 또는 SS 라고 명했습니다. 매수청산은 BB , 매도청산은 SS 입니다. 한개의 동일계좌로 동일시스템을 진행 할 때, 일,분,틱에 복수로 적용했을 때, 문제 될 건 없는지요? 예를 들어, 30분 매수로 B가 진입하면, 90분 매수청산 신호로 BB 가 뜬다면, 동일계좌에서 먼저 매수로 진입한 30분 B 매수 포지션이, 90분 매수청산 신호인 BB로 청산 되면서 문제가 되지 않을까 하는 질문입니다. (증권사들은 먼저 진입한 포지션을 첫 청산으로 처리하는것 같아서 문의합니다.) 답변 부탁드립니다. 감사합니다~ ^^
프로필 이미지
postdog
2018-02-08
140
글번호 116427
시스템
답변완료

검색식 부탁드립니다..

차트상에서 적용(A)에서 검색으로 들어가면 N일 신고가 처럼 N일 거래대금 신고가 검색 부탁드립니다 따로 검색이 되는게 아니라 차트상에서 표시되게 해주시면 감사하겟습니다
프로필 이미지
그리즐리
2018-02-08
141
글번호 116426
검색
답변완료

질문있습니다.

현물시스템 3분봉 3000봉에 참조데이타로 지수연결선물 3분봉 3000봉으로 지수 이평선을 보고 매수매도를 결정하려고하는 시스템을 구현하려고합니다. var : mt_sum3(0),mt_sum5(0),mt_sum10(0),mt_sum15(0),mt_sum20(0); var : mt_ma3(0),mt_ma5(0),mt_ma10(0),mt_ma15(0),mt_ma20(0); var : mt_ma3Flag(0),mt_ma5Flag(0),mt_ma10Flag(0),mt_ma15Flag(0),mt_ma20Flag(0); var : mt_10(0),mt_20(0),mt_30(0),mt_40(0),mt_120(0),mt_600(0); var : mt_buyFlag(1),mt_sellFlag(0),mt_changeFlag(0),mt_change_t1(0),mt_change_t2(0); var : mt_buyfactor(0); var : i(0); if index==0 Then{ ClearDebug; mt_10=30/BarInterval; mt_20=60/BarInterval; mt_30=90/BarInterval; mt_40=120/BarInterval; mt_120=360/BarInterval; mt_600=600/BarInterval; } if DayIndex==0 Then{ mt_sum3 = 0; mt_sum5 = 0; mt_sum10 = 0; mt_sum15 = 0; mt_sum20 = 0; for i=1 to 19 { if i<3 Then mt_sum3 = mt_sum3 + DayClose(i); if i<5 Then mt_sum5 = mt_sum5 + DayClose(i); if i<10 Then mt_sum10 = mt_sum10 + DayClose(i); if i<15 Then mt_sum15 = mt_sum15 + DayClose(i); mt_sum20 = mt_sum20 + DayClose(i); } } mt_ma3 = (mt_sum3 + DayClose(0))/3; mt_ma5 = (mt_sum5 + DayClose(0))/5; mt_ma10 = (mt_sum10 + DayClose(0))/10; mt_ma15 = (mt_sum15 + DayClose(0))/15; mt_ma20 = (mt_sum20 + DayClose(0))/20; MessageLog("%.f %.f %.f",mt_ma3,mt_ma5,mt_ma10); MessageLog("%.f %.f %.f",DayClose(0),DayClose(1),DayClose(2)); if(mt_ma3<c)Then{ mt_ma3Flag=1; }Else mt_ma3Flag=0; if(mt_ma5<c)Then{ mt_ma5Flag=1; }Else mt_ma5Flag=0; if(mt_ma10<c)Then{ mt_ma10Flag=1; }Else mt_ma10Flag=0; if(mt_ma15<c)Then{ mt_ma15Flag=1; }Else mt_ma15Flag=0; if(mt_ma20*0.99<c)Then{ mt_ma20Flag=1; }Else mt_ma20Flag=0; //지수로 확인하는 것 if(DayIndex==0)Then{ mt_changeFlag = 0; mt_change_t1 = 0; mt_change_t2 = 0; mt_buyFlag = 1; mt_sellFlag = 0; } if(mt_ma3Flag+mt_ma5Flag+mt_ma10Flag+mt_ma20Flag==0)Then{ mt_sellFlag = 1; mt_buyFlag = 0; MessageLog("모두팔기!1"); } if(mt_ma20Flag==0&&(mt_ma3Flag+mt_ma5Flag+mt_ma10Flag>=2))Then{ mt_buyFlag = 1; mt_sellFlag = 0; } if(mt_changeFlag==0)Then{ if(DayHigh*0.985>c||DayClose(1)*0.985>c)Then{ mt_buyFlag = 0; } if(DayHigh*0.98>c||DayClose(1)*0.98>c)Then{ mt_buyFlag = 0; mt_sellFlag = 1; MessageLog("모두팔기!2"); } } if(mt_buyFlag==0)Then{ if(ma(c,mt_20)>ma(c,mt_120))Then{ mt_change_t1 = 1; }Else mt_change_t1 = 0; if((Lowest(h,mt_600)[15]*1.005<c||Lowest(h,mt_600)[30]*1.005<c)&&(ma(c,mt_10)*1.01<c||Highest(h,mt_10)[2]*1.005<c))Then{ mt_change_t2 = 1; }Else mt_change_t2 = 0; if(mt_change_t1==1||mt_change_t2==1)Then{ mt_changeFlag = 1; mt_buyFlag = 1; mt_sellFlag = 0; } } if(mt_changeFlag==1)Then{ if(ma(c,mt_20)>ma(c,mt_120))Then{ mt_change_t1 = 1; }Else mt_change_t1 = 0; if((Lowest(h,mt_600)[15]*1.005<c||Lowest(h,mt_600)[30]*1.005<c)&&(ma(c,mt_10)*1.01<c||Highest(h,mt_10)[2]*1.005<c))Then{ mt_change_t2 = 1; }Else mt_change_t2 = 0; if(mt_change_t1+mt_change_t2==0)Then{ mt_changeFlag = 0; mt_buyFlag = 0; } } //20선 위 if(mt_buyFlag==1&&mt_ma20Flag==1)Then{ mt_buyfactor = ((mt_ma3Flag+mt_ma5Flag+mt_ma10Flag+mt_ma10Flag)*10+60)/100; Plot1(mt_buyfactor); } //20선 아래 if(mt_buyFlag==1&&mt_ma20Flag==0)Then{ var1 = 0; if(ma(c,mt_20)>ma(c,mt_120))Then var1 = var1+1; if(Lowest(h,mt_600)[15]*1.005<c)Then var1 = var1+1; if(Lowest(h,mt_600)[30]*1.005<c)Then var1 = var1+1; if(ma(c,mt_10)*1.01<c)Then var1 = var1+1; if(Highest(h,mt_10)[2]*1.005<c)Then var1 = var1+1; mt_buyfactor = (var1*10)/100; Plot2(mt_buyfactor); } 위의 식은 일반적으로 연결선물지수 차트에 지표로 사용하는 것입니다. 위에 것을 현물 차트(3분봉 3000봉)에 참조데이터 연결선물지수(3분봉 3000봉)인 곳에서 사용할수 있도록 변환을 아래와 같이하였지만 정상작동하지않습니다. var : mt_sum3(0,data2),mt_sum5(0,data2),mt_sum10(0,data2),mt_sum15(0,data2),mt_sum20(0,data2); var : mt_ma3(0,data2),mt_ma5(0,data2),mt_ma10(0,data2),mt_ma15(0,data2),mt_ma20(0,data2); var : mt_ma3Flag(0,data2),mt_ma5Flag(0,data2),mt_ma10Flag(0,data2),mt_ma15Flag(0,data2),mt_ma20Flag(0,data2); var : mt_10(0,data2),mt_20(0,data2),mt_30(0,data2),mt_40(0,data2),mt_120(0,data2),mt_600(0,data2); var : mt_buyFlag(1,data2),mt_sellFlag(0,data2),mt_changeFlag(0,data2),mt_change_t1(0,data2),mt_change_t2(0,data2); var : mt_buyfactor(0,data2); var : i(0,data2); if index==0 Then{ ClearDebug; mt_10=30/data2(BarInterval); mt_20=60/data2(BarInterval); mt_30=90/data2(BarInterval); mt_40=120/data2(BarInterval); mt_120=360/data2(BarInterval); mt_600=600/data2(BarInterval); } if DayIndex==0 Then{ mt_sum3 = 0; mt_sum5 = 0; mt_sum10 = 0; mt_sum15 = 0; mt_sum20 = 0; for i=1 to 19 { if i<3 Then mt_sum3 = data2(mt_sum3 + CloseD(i)); if i<5 Then mt_sum5 = data2(mt_sum5 + CloseD(i)); if i<10 Then mt_sum10 = data2(mt_sum10 + CloseD(i)); if i<15 Then mt_sum15 = data2(mt_sum15 + CloseD(i)); mt_sum20 = data2(mt_sum20 + CloseD(i)); } } mt_ma3 = data2((mt_sum3 + CloseD(0))/3); mt_ma5 = data2((mt_sum5 + CloseD(0))/5); mt_ma10 = data2((mt_sum10 + CloseD(0))/10); mt_ma15 = data2((mt_sum15 + CloseD(0))/15); mt_ma20 = data2((mt_sum20 + CloseD(0))/20); MessageLog("%.f %.f %.f",data2(mt_ma3),data2(mt_ma5),data2(mt_ma10)); MessageLog("%.f %.f %.f",data2(CloseD(0)),data2(CloseD(1)),data2(CloseD(2))); if(mt_ma3<c)Then{ mt_ma3Flag=1; }Else mt_ma3Flag=0; if(mt_ma5<c)Then{ mt_ma5Flag=1; }Else mt_ma5Flag=0; if(mt_ma10<c)Then{ mt_ma10Flag=1; }Else mt_ma10Flag=0; if(mt_ma15<c)Then{ mt_ma15Flag=1; }Else mt_ma15Flag=0; if(mt_ma20*0.99<c)Then{ mt_ma20Flag=1; }Else mt_ma20Flag=0; //지수로 확인하는 것 if(DayIndex==0)Then{ mt_changeFlag = 0; mt_change_t1 = 0; mt_change_t2 = 0; mt_buyFlag = 1; mt_sellFlag = 0; } if(mt_ma3Flag+mt_ma5Flag+mt_ma10Flag+mt_ma20Flag==0)Then{ mt_sellFlag = 1; mt_buyFlag = 0; //MessageLog("모두팔기!1"); } if(mt_ma20Flag==0&&(mt_ma3Flag+mt_ma5Flag+mt_ma10Flag>=2))Then{ mt_buyFlag = 1; mt_sellFlag = 0; } if(mt_changeFlag==0)Then{ if(data2(HighD(0)*0.985>c||CloseD(1)*0.985>c))Then{ mt_buyFlag = 0; } if(data2(HighD(0)*0.98>c||CloseD(1)*0.98>c))Then{ mt_buyFlag = 0; mt_sellFlag = 1; //MessageLog("모두팔기!2"); } } if(mt_buyFlag==0)Then{ if(data2(ma(c,mt_20)>ma(c,mt_120)))Then{ mt_change_t1 = 1; }Else mt_change_t1 = 0; if(data2((Lowest(h,mt_600)[15]*1.005<c||Lowest(h,mt_600)[30]*1.005<c)&&(ma(c,mt_10)*1.01<c||Highest(h,mt_10)[2]*1.005<c)))Then{ mt_change_t2 = 1; }Else mt_change_t2 = 0; if(mt_change_t1==1||mt_change_t2==1)Then{ mt_changeFlag = 1; mt_buyFlag = 1; mt_sellFlag = 0; } } if(mt_changeFlag==1)Then{ if(data2(ma(c,mt_20)>ma(c,mt_120)))Then{ mt_change_t1 = 1; }Else mt_change_t1 = 0; if(data2((Lowest(h,mt_600)[15]*1.005<c||Lowest(h,mt_600)[30]*1.005<c)&&(ma(c,mt_10)*1.01<c||Highest(h,mt_10)[2]*1.005<c)))Then{ mt_change_t2 = 1; }Else mt_change_t2 = 0; if(mt_change_t1+mt_change_t2==0)Then{ mt_changeFlag = 0; mt_buyFlag = 0; } } //20선 위 if(mt_buyFlag==1&&mt_ma20Flag==1)Then{ mt_buyfactor = ((mt_ma3Flag+mt_ma5Flag+mt_ma10Flag+mt_ma10Flag)*10+60)/100; Plot1(mt_buyfactor); } //20선 아래 if(mt_buyFlag==1&&mt_ma20Flag==0)Then{ var1 = 0; if(data2(ma(c,mt_20)>ma(c,mt_120)))Then var1 = var1+1; if(data2(Lowest(h,mt_600)[15]*1.005<c))Then var1 = var1+1; if(data2(Lowest(h,mt_600)[30]*1.005<c))Then var1 = var1+1; if(data2(ma(c,mt_10)*1.01<c))Then var1 = var1+1; if(data2(Highest(h,mt_10)[2]*1.005<c))Then var1 = var1+1; mt_buyfactor = (var1*10)/100; Plot2(mt_buyfactor); } 어디가어떻게 잘못되었는지 알려주시면 감사하겠습니다 감사합니다
프로필 이미지
여유로운투자
2018-02-08
159
글번호 116425
지표