커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7659
글번호 230811
답변완료
시스템식 문의
5분봉 기준으로 데이트레이딩 시스템 문의합니다.
참조 데이타 [ data2(c)+data3(c)+ {data4(c)+data5(c)}/100 ] 값의
9시 장시작부터 현재까지 (어제의 값은 절대로 들어가서는 안됩니다.)
진동폭(최고값 - 최저값)의 90% 값을 하향돌파하면 매도하고,
진동폭(최고값 - 최저값)의 90% 값을 상향돌파하면 매수하라!
는 시스템식을 가르쳐 주세요!!!
초보라 잘 안됩니다.
부탁합니다.
2012-04-18
357
글번호 50226
항상여유있게 님에 의해서 삭제되었습니다.
2012-04-18
14
글번호 50225
답변완료
종목검색식부탁
LRS지표로 종목을 검색 할 수 있는 종목검색식 부탁합니다.
2012-04-18
285
글번호 50219
답변완료
질문 드립니다.
아래의 수식을 코덱스 레버리지에 적용하면 2010년 9월 17일 이후에는 거래가
일어나지 않고 있습니다. 어디를 수정하면 거래가 현재까지 진행되는지 궁금합니다.
if dayindex == 0 Then{
if bids > asks Then
buy("b",AtMarket);
if bids < asks Then
sell("s",AtMarket);
}
2012-04-18
328
글번호 50218
답변완료
find함수 등 질문입니다..
1. find 함수 괄호 안에 매개변수를 여러개 지정은 안되는가요??
예를 들면 스토캐스틱, rsi, macd 3개 다 표시하도록은 안되는가요?
2. 아~ 그리고 분봉 검색주기는 임의로 변경 불가능한가요? 3분봉 이라던가 7분봉이라던가
예스트레이더 리딩스타 우리트레이더 전부 임의 변경 불가인가요?
3. 차트 분봉으로 표시할때 3시 동시호가봉만 따로 표시되는데 봉 시간이 균등한 봉이 되도록 하는 방법은 없는가요??
예를 들면 120분봉으로 표시하면 4개 봉으로 하루가 완성되어 나오잖아요.
근데 첫 3개봉은 2시간 간격으로 표시되는데 마지막 봉 1개는 동시호가 끝날 때 순간봉(이건 시간 간격이 1분? 1초인가요?)으로 표시가 되는데 이거 어떻게 해결 안되나요?
10분 30분 60분 90분 전부 마찬가지인거 같은데 해결 방안 좀 부탁드립니다..^^
2012-04-18
321
글번호 50217
답변완료
문의드립니다.
수식지왕님의 인공지능 수식인데
여기에 아래와 같은 청산로직을 추가하고 싶습니다.
현물로만 매매할 예정입니다.
[추가하고 싶은 청산로직]
==================================================================================
if CodeCategory == 1 Then{
if BasePrice < 50000 Then
매도수량 = int(int(MaxContracts*0.4)/10)*10;
Else
매도수량 = int(MaxContracts*0.4);
}
if CodeCategory == 2 Then
매도수량 = int(MaxContracts*0.4);
if CurrentContracts == MaxContracts Then
exitlong("청산5",atlimit,EntryPrice*1.05,"",매도수량,1);
if CurrentContracts < MaxContracts and highest(H,BarsSinceEntry) >= EntryPrice*1.05 Then{
exitlong("청산3",AtStop,EntryPrice*1.03);
exitlong("청산10",atlimit,EntryPrice*1.1, "", 매도수량, 1);
}
if CurrentContracts == MaxContracts and highest(H,BarsSinceEntry) >= EntryPrice*1.03 Then{
exitlong("청산0",AtStop,EntryPrice*1);
}
[수식지왕님의 인공지능 시스템식에 위의 청산로직을 추가하고 싶습니다.]
==================================================================================
#==========================================#
# 시스템명 : Golden_Dead Cross (자동최적화)
# 이동평균 + 지수이동평균
# 작 성 자 : 수식지왕
# 블 로 그 : http://yahoosir.blog.me
#==========================================#
Input:수수료(0.02),거래세(0.3),슬리피지(0.0); //현물에 맞춤
Var:shortPeriod(0), longPeriod(0), indicators(0),
j(0),n(0),최적변수(0),
매수(10),매도(-10),매수비용(0),매도비용(0),평가일(False);
Array:shortMa[1001](0),longMa[1001](0),
누적수익[1001](0),모의횟수[1001](0),모의진입[1001](0),모의수익률[1001](0),
모의방향[1001](0),모의이익[1001](0),모의승수[1001](0),확정손실폭[1001](0),
모의승률[1001](0),보상비율[1001](0),잠재손실[1001](0),최대손실폭[1001](0);
#=========================================================#
# 초기처리 (Initialize Routine)
#=========================================================#
매수비용 = 1 + 수수료/100;
매도비용 = 1 - (수수료+거래세)/100;
If (BarInterval==1 &&
Int(Date/100)[1] < Int(Date/100) //매월마다 최적 변수 search
//&& (Int(Date/100)-Int(Date/10000)*100)%3 == 0 //또는 분기 1회
) ||
(BarInterval > 1 && //분봉일 때는
Date[1] < Date && DayOfWeek(Date[1]) >= DayOfWeek(Date)) //매주마다
Then
평가일 = True;
Else
평가일 = False;
#=========================================================#
# 메인처리 (Main Routine)
#=========================================================#
For n = 1 To 1000
{
indicators = Int((n-1)/(25*20))%2; //이평구분(0~1)
shortPeriod = Int((n-1)/25)%20+10; //10~29
longPeriod = (n-1)%25*2+20; //20~69
If shortPeriod < longPeriod Then //장기 기간이 단기 기간보다 더 클때만 진행
{
#이동평균 계산
If indicators == 0 Then
{
shortMa[n] = Ma(C, shortPeriod);
longMa[n] = Ma(C, longPeriod);
}
#지수이동평균 계산
If indicators == 1 Then
{
If Index == 1 Then
{
shortMa[n] = C; //shortMa[n] = Ema(C, shortPeriod);
longMa[n] = C; //longMa[n] = Ema(C, longPeriod);
} //값이 틀리게 나오므로
Else //지수이평도 아래와 같이 풀어서 써야 한다.
{
shortMa[n] = C * (2/(shortPeriod+1)) + shortMa[n][1] * (1-(2/(shortPeriod+1)));
longMa[n] = C * (2/(longPeriod+1)) + longMa[n][1] * (1-(2/(longPeriod+1)));
}
}
//if n==1834 /*and date == 19920727*/ Then
//print("검증1.csv",",%.2f,%.2f,%.2f,%.2f",sP,lP,shortMa[n],longMa[n]);
//MessageLog("검증1,%.2f,%.2f,%.2f,%.2f",shortMa[n][1],longMa[n][1],shortMa[n],longMa[n]);
#=========================================================#
# 시뮬레이션 평가
#=========================================================#
If 모의방향[n] == 매수 Then
{
모의이익[n] = (C*매도비용 - 모의진입[n]*매수비용) - (슬리피지*2);
잠재손실[n] = Min(잠재손실[n],(L*매도비용 - 모의진입[n]*매수비용) - (슬리피지*2));
}
Else If 모의방향[n] == 매도 Then
{
모의이익[n] = (모의진입[n]*매도비용 - C*매수비용) - (슬리피지*2);
잠재손실[n] = Min(잠재손실[n],(모의진입[n]*매도비용 - H*매수비용) - (슬리피지*2));
}
Else
{
모의이익[n] = 0;
잠재손실[n] = 0;
}
최대손실폭[n] = Min(최대손실폭[n],확정손실폭[n]+잠재손실[n]);
# 매수/매도청산
# If CrossUP(shortMa[n], longMa[n]) Then //For문 안에서 계산상 오류가 생기므로
If shortMa[n][1] <= longMa[n][1] && //풀어서 사용
shortMa[n] > longMa[n] Then
{
If 모의방향[n][1] == 매도 Then
{
누적수익[n] = 누적수익[n] + 모의이익[n];
If 모의이익[n] > 0 Then 모의승수[n] = 모의승수[n] + 1;
모의수익률[n] = 모의이익[n]*100/모의진입[n];
모의횟수[n] = 모의횟수[n] + 1;
모의승률[n] = 모의승수[n]*100/모의횟수[n];
보상비율[n] = 누적수익[n]/Abs(최대손실폭[n]);
모의방향[n] = 0;
확정손실폭[n] = Min(확정손실폭[n]+모의이익[n],0);
잠재손실[n] = 0;
//if n == 1834 then print("거래내역.csv",",매도청산1,%.2f,%.2f,%.2f,%.2f",C,모의이익[n],누적수익[n],모의수익률[n]);
}
If 모의방향[n] == 0 &&
Iff(BarInterval==1,1,Iff(Time<142000,1,0))==1 //분봉이 아니면 무조건 적용
Then
{
모의방향[n] = 매수;
모의진입[n] = C;
//if n == 1834 then print("거래내역.csv",",매수,%.2f",모의진입[n]);
}
}
# 매도/매수청산
# If CrossDown(shortMa[n], longMa[n]) Then
If shortMa[n][1] >= longMa[n][1] &&
shortMa[n] < longMa[n] Then
{
If 모의방향[n][1] == 매수 Then
{
누적수익[n] = 누적수익[n] + 모의이익[n];
If 모의이익[n] > 0 Then 모의승수[n] = 모의승수[n] + 1;
모의수익률[n] = 모의이익[n]*100/모의진입[n];
모의횟수[n] = 모의횟수[n] + 1;
모의승률[n] = 모의승수[n]*100/모의횟수[n];
보상비율[n] = 누적수익[n]/Abs(최대손실폭[n]);
모의방향[n] = 0;
확정손실폭[n] = Min(확정손실폭[n]+모의이익[n],0);
잠재손실[n] = 0;
//if n == 1834 then print("거래내역.csv",",매수청산1,%.2f,%.2f,%.2f,%.2f",C,모의이익[n],누적수익[n],모의수익률[n]);
}
If CodeCategory() > 2 && //파생상품
모의방향[n] == 0 &&
Iff(BarInterval==1,1,Iff(Time<142000,1,0))==1
Then
{
모의방향[n] = 매도;
모의진입[n] = C;
//if n == 1834 then print("거래내역.csv",",매도,%.2f",모의진입[n]);
}
}
If 평가일 == True Then
{
If 보상비율[최적변수] < 보상비율[n] && //이부분은 개발자 맘대로 설정
// If 누적수익[최적변수] < 누적수익[n] && //보상비율 대신 누적수익으로 대체
모의승률[n] > 40 Then
최적변수 = n;
}
}
}
#==========================================#
# 시뮬레이션 결과 검증용
#==========================================#
/*If LastBarOnChart == 1 Then
{
For j = 1 to 1000
{
var1 = Int((j-1)/(25*20))%2; //이평구분(0~1)
var2 = Int((j-1)/25)%20+10; //10~29
var3 = (j-1)%25*2+20; //20~68
Print("시뮬보고서.csv",",%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",j,var1,var2,var3,
누적수익[j],모의횟수[j],모의승수[j],모의승률[j],최대손실폭[j],보상비율[j]);
}
}*/
#==========================================#
# 시스템식
#==========================================#
If 최적변수 > 0 Then
{
#현재 적용되고 있는 변수 값을 알고 싶을 때 아래 주석을 풀고 디버깅한다.
if 최적변수[1] != 최적변수 Then
{
var1 = Int((j-1)/(25*20))%2;
var2 = Int((최적변수-1)/25)%20+10;
var3 = (최적변수-1)%25*2+20;
// MessageLog(",%.2f,%.2f,%.2f,%.2f",최적변수,var1,var2,var3);
Print("최적변수.csv",",%.2f,%.2f,%.2f,%.2f",최적변수,var1,var2,var3);
}
value1 = shortMa[최적변수]; //이미 위에서 계산해 놓은 값을 이용
value2 = longMa[최적변수];
# 매수/매도청산
If CrossUP(value1, value2) Then
{
ExitShort();
If 누적수익[최적변수] > 0 Then Buy();
}
# 매도/매수청산
If CrossDown(value1, value2) Then
{
ExitLong();
If 누적수익[최적변수] > 0 Then Sell();
}
}
2012-04-18
638
글번호 50216
답변완료
문의 드립니다.
Input: 라인1(1.31472),Period(20),sto1(10),sto2(5),sto3(5);
var1 = Disparity(Period);
var2 = StochasticsK(sto1,sto2);
var3 = StochasticsD(sto1,sto2,sto3);
if var1 <= 100.50 and var1 >= 99.50 then{
if crossup(c,라인1) and var2 > var3 Then
buy();
if CrossDown(c,라인1) and var2 < var3 Then
sell();
}
위의 식에서..
필터중 스토 케스틱의 지표값 해당 차트에서 구하는게 아니라 다른 프레임 차트의
지표값으로 설정 가능한가요 ?
예를들어..
실행하는 차트는 타임프레임 15분이고 필터에 사용할 스토우 케스틱은 60분의 값으로
필터를 걸수 있는지 궁금합니다.
가능하다면 식도 부탁드리겠습니다.
2012-04-18
356
글번호 50207
답변완료
문의드립니다.
안녕하세요.
5분봉 차트에서
Input : Period(71) ;
var1 = ema(C,Period); //1일
if CrossDown(c,var1) Then
var11 = var1;
var21 = 1-var11/DayHigh;
if DayHigh>var11 && var21 > 0.03 && c<var11*0.98
Then
find(1);
위 종목검색식을 5분으로 설정한 후 검색기간을 150으로 하여 종목을 검색하면
진흥기업이 검색이 됩니다.
위 식에서 DayHigh>var11 조건 상 진흥기업이 나올 수 없습니다.
뭐가 잘못된건가요?
수고하세요.
2012-04-18
318
글번호 50205
답변완료
문의드립니다
아래식을 예스로 변환 부탁합니다.
HighestSince(1,Crossup(C,eavg(C,20)),H)
수고하세요
2012-04-18
359
글번호 50204