커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7530
글번호 230811
관리자에 의해 프로그램 사용법 QnA로 이동되었습니다
2013-10-30
6
글번호 69018
답변완료
수식요청
3분봉 차트에서 쓰는 수식입니다..
틱차트에서 같은 값을 나타내는 수식 부탁합니다..
2013-10-30
199
글번호 69017
답변완료
수식문의드립니다.
안녕하세요.
늘 감사드립니다..
.아래수식은 0.2% 손실시 스위칭매매식입니다..
여기서 다시 손실시 스위칭매매가 이루워 질수있도록
추가해 주세요..
if MarketPosition == 1 Then
sell("switch Sell",AtStop,EntryPrice*90);
if MarketPosition == -1 Then
buy("switch Buy",AtStop,EntryPrice*110);
.그리고 시가부터 원웨이가 발생하면 교차가 이루워지지 않아
진입을 못하고 나중에 교차가 발생된후 진입이 되는데
교차되지 않은상황이라도 평균값을 이탈,돌파하면 진입할수있게
추가해 주세요..
if Condition1 == false Then{
if MarketPosition == 0 and crossup(c,var3) and stime >= 091000 Then
buy("b");
if MarketPosition == 0 and CrossDown(c,var3) and stime >= 091000 Then
sell("s");
}
그리고 궁굼한점에대한 질문입니다
현재 사용하고있는 매매식에서 추가로 보완할수있는
매매식을 추가하고 싶은데 가능한지요...
또한 상황에 따라서 다르게 목표수익을 지정할수있는지요..
늘 감사드립니다..
2013-10-30
171
글번호 69016
답변완료
text관련
* 일일 1회만 진입청산하고 진입이 없을수도 있는 시스템에서,
(1)최근 10회거래중 승리한 횟수가 전번보다 증가했으면 "증가"라고 text로 찍히고
변화없으면 "변화없음" 감소했으면 "감소"라고 text로 찍히는 수식은 어떻게 표현하나요?
(2)상기 최근 10회거래중 승리한 횟수가 전번보다 증가할 경우에만 buy조건을 실행한다는
시스템수식은 어떻게 표현하는지 궁금합니다. 또는 최근 10거래중 승리한 횟수가 10회
미만일 경우에만 buy조건을 실행한다는 시스템수식은 어떻게 되는지요?
(3) 한편, 아래 지도해주신 수식에는 10거래중 승리횟수 text가 장시작과 함께 뜨는 것으로
해주셨는데, 전일 장이 마감되고 나면 바로 찍힐 수 있도록 하는 방법은 없는지요?
(1)번 요청의 "증가" "변화없음" " 감소" 그리고 "승리회수 X" 모두 전일장마감시에
다 뜸으로서 오늘이 되면 장시작전에 그 text들을 미리 볼 수 있었으면 합니다.
감사합니다. 오늘도 좋은하루 되십시오.
(참고)아래는 지도해주신 수식의 일부입니다.
----------------------------------------------------------------------------------------
input : P1(10);
var : win(0),cnt1(0),sum1(0),mav(0),text1(0);
Array : WinArr[20](-1);
if dayindex == 0 Then{
#최근 10개 거래 승리거래횟수
win = 0;
for cnt1 = 1 to 10{
if PositionProfit(cnt1) > 0 Then
win = win+1;}
text1 = Text_New(sdate,stime,H,"승리횟수"+NumToStr(win,0));
Text_SetStyle(text1,1,1);
}
2013-10-30
201
글번호 69015
답변완료
한가지 부탁드립니다.
날씨가 많이 추워졌는데, 고생 많으십니다.
수식 한가지 부탁드리려고 합니다.
현재
var1 = ma(c,5);
if countif(C > O,2) == 2 or
(C[1] > O[1] and C == O and var1 > var1[1]) Then
buy("매수");
if countif(C < O,2) == 2 or
(C[1] < O[1] and C == O and var1 < var1[1]) Then
Sell("매도");
이 매수, 매도 조건을 사용하고 있는데요.
여기에 이것들을 더해주세요.
1. 반대매매 표시를 1회 견딘다.
(다시말해, 반대매매신호를 한번은 무시한다는 뜻입니다.)
2. 대신 반대매매가 나오는 조건이면서,(or가 아니고 and)
고(저)점대비 5틱 이상 하락(상승)일 경우는 견디지 않고 신호를 표시한다.
(그러면 반대매매가 나오는 조건인데, 고(저)점대비 5틱이상의 하락(상승)이 나오지 않는다면 신호가 나오지 않아야겠지요.)
늘 감사드립니다. 수고하십시요..
2013-10-29
168
글번호 69013
답변완료
문의
문의
1. 그림에서 30분시작지수인 검정색과 60이평선이 크로스하는 지점에서 신호가 발생하는 공식인데요
2. 문제가 30분 시간이 바뀌는 지점에서 무조건 신호가 발생하는데
3. 시간단위가 바뀌는 지점에서의 신호는 발생하지않고(A지점)
4. 30분시작지수인 검정색과 60이평선(녹색)이 교차하는 지점만(B)신호가 발생하게 수정부탁드립니다.
수고하세요
#########################################
Input : p60(60),N(30);
Var : var60(0);
if dayindex == 0 or (TimeToMinutes(stime)%n == 0 and TimeToMinutes(stime[1])%n != 0) Then
var5 = O;
var60 = ma(C, p60);
If crossup(var60, var5)
then buy("SL60GC");
If crossdown(var60, var5)
then sell("SL60DC");
Input :Period3(60);
2013-10-29
179
글번호 69012
답변완료
캔들의 중심값...
input : N(1000);
if date != date[1] Then
var1 = 0;
var1 = var1+Ticks;
var2 = (var1-Ticks)%N;
if dayindex == 0 or (dayindex > 0 and var2 < var2[1]) Then{
value1 = O;
value2 = H;
value3 = L;
}
if H > value2 Then
value2 = H;
if L < value3 Then
value3 = L;
plot1(value1,"시");
plot2(value2,"고");
plot3(value3,"저");
시고저에 중심값을 추가하고싶습니다
선선한 날씨 감기 조심하시고 좋은하루되세요
2013-10-29
209
글번호 69011
답변완료
지표식 문의 드립니다.
밑은 터틀 공식인데요
(사는 값-파는값)을 누적하는 지표를 만들고 싶습니다.
변수가 여러개 있다 보니 잘 모르겠습니다.;
input:Capital(1000000);
var:AtrV(0),unit(0),MP(0);
AtrV=ATR(20);
Unit=(Capital*0.02)/AtrV;
MP=Marketposition;
#진입
if MP==0 then {
buy("B",AtStop,Highest(High,20),unit);
sell("S",AtStop,Lowest(Low,20),Unit);
}
#피라미딩진입
If MP==1 and CurrentEntries<4 Then
buy("bp",AtStop,EntryPrice+AtrV[BarsSinceEntry]*1*CurrentEntries,Unit);
If MP==-1 and CurrentEntries <4 Then
Sell("sp",atstop,Entryprice-AtrV[BarsSinceEntry]*1*CurrentEntries,Unit);
#청산
If MP ==1 then {
ExitLong("El",AtStop,Lowest(L,10));
ExitLong("El_stop",AtStop,AvgEntryPrice-2*AtrV);
}
If MP == -1 then {
ExitShort("ES",AtStop,Highest (H,10));
ExitShort("ES_stop",AtStop, AvgEntryPrice+2*AtrV);
}
2013-10-29
205
글번호 69010
답변완료
문의 (YST)
1. 선물 3분봉에서 5일선을 적용하고 전일종가시 5일선값대비 금일시가시 5일선 값을 비교하는 것입니다. 아래식 검증부탁드립니다.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// CLOSED MARKET DATA
//
VARS: M5D.CMD(0, DATA2), M13D.CMD(0, DATA2);
VARS: M5D.UTrend(FALSE, DATA2), M13D.UTrend(FALSE, DATA2);
//----------------------------------------------------------------------------------------------------------------------------------------------------------
if ( DATA2(stime == 151500) ) Then
{
M5D.CMD = M5D;
M13D.CMD = M13D;
}
//----------------------------------------------------------------------------------------------------------------------------------------------------------
// INIT
if ( DATA2(Date <> Date[1]) ) then
{
if ( M5D > M5D.CMD + PriceScale ) Then { M5D.UTrend = TRUE; }
else { M5D.UTrend = FALSE; }
if ( M13D > M13D.CMD - PriceScale ) Then { M13D.UTrend = TRUE; }
else { M13D.UTrend = FALSE; }
}
2. 그리고 위에서 PriceScale을 적용했을때 정확한 이해를 위해 질문드리는데, 이렇게 할 경우 3분봉이라 할지라도 틱 단위이기 때문에 선물기준으로 1틱(0.05pt)을 의미하는 것인가요?
3. 2째줄부터 라인별로 아래식 간단히 설명부탁드립니다.. ...
var: va1(0),va2(0),va3(0);
va1= int(date/100)-int(date/10000)*100;
a2= date - int(date/100)*100;
a3=DayOfWeek(date);
if va1%1 == 0 and va2 >= 8 and va2 <= 14 and va3 == 4 Then
SetStopEndofday(144000);
Else SetStopEndofday(150000);
4. 덕분에 아래 코드를 사용하여참조데이타 분봉에서 일봉표시를 해결했습니다. 다시한번 감사드립니다. 관련 질문을 드리면 CLOSED를 사용할때보다 아래식을 사용할때 메모리나 속도면에서 더욱 이점이 있는 것을 확인했습니다. 내부적으로 상세한 질문이 될지 모르지만 이러한 차이가 발생하는 이유가 무엇인지 궁금합니다. 또한 코드상에서 저는 주로 ( )를 사용하고 주석이 코딩의 50%정도 되며 가독성을 높이고자 하는데 속도면에서 크게 문제가 되는지요? 그리고 주석도 컴파일시 포함되는지요? 주석포함 코딩 라인은 전체적으로 1만 라인 이하입니다.
5. yst 파일 크기가 1M를 넘는 경우도 종종있나요? 예스트레이더는 최대 어느정도 크기까지 허용범위에 있고, 리얼타임에서 컴파일된 시스템파일이 클 경우 디코딩 속도에 영향을 주어 신호발생에 문제를 일으키는 경우는 없는지요?
다소 질문이 많은데 미리 답변 감사드립니다.
...
...
for cnt = 0 to P5-1{
if cnt < P1 and CC[P1-1] > 0 Then
sum1 = sum1+CC[cnt];
if cnt < P2 and CC[P2-1] > 0 Then
sum2 = sum2+CC[cnt];
if cnt < P3 and CC[P3-1] > 0 Then
sum3 = sum3+CC[cnt];
if cnt < P4 and CC[P4-1] > 0 Then
sum4 = sum4+CC[cnt];
if cnt < P5 and CC[P5-1] > 0 Then
sum5 = sum5+CC[cnt];
}
M5D = sum1/P1;
M13D = sum2/P2;
M20D = sum3/P3;
M33D = sum4/P4;
M60D = sum5/P5;
감사합니다.
2013-10-30
233
글번호 69009