커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7651
글번호 230811
답변완료
수식문의
수고하십니다.
daylow(1)와 daylow(2) 둘중에서 가장최저가를 나타내는 지표식과
dayhigh(1)와 dayhigh(2) 둘중에서 가장최고가를 나타내는 지표식
감사합니다.
2012-05-31
258
글번호 51510
칭기스칸 님에 의해서 삭제되었습니다.
2012-05-31
20
글번호 51509
답변완료
MACD값 구하기
지난번에 문의드린 바로는 예스트레이더에서 기본으로 제공되는MACD와 시그널은
모두 ema가 기준이 되어 작성된 식이라고 하셨습니다.
var1 = MACD(12, 26);
var2 = Ma(MACD(12, 26), 9);
결국 위처럼 해서 구한 값은
챠트에서 표시되는 MACD값 그리고 시그널값과 틀린 값이란 말씀으로 이해했습니다.
그렇다면 챠트화면에서 표시되는 MACD값과 시그널 값을 식에서 구하려면
어떻게 해야하는지요?
2012-05-31
304
글번호 51507
답변완료
디버깅이 이상하게 됩니다.
messagelog를 찍어보면 디버깅창에 시간이
1997-12-15 09:00:00 부터 시작되어서,
2012-05-30 09:00:00 까지 데이터가 잘 나오다가
거기서 디버깅이 끝나야 되는데, 끝나지 않고
1997-12-15 06:00:00 부터 다시 시작되어서
2012-05-30 06:00:00 까지 엄한 데이터들이 다시 쌓여서
결국은 뒤에나온 값들로 차트가 그려져서 본래의 데이터를 볼 수가 없습니다.
왜 시뮬레이션이 시간이 09시에서 06시로 바뀌어 한번 더 반복되는지
알수가 없습니다.
첨부파일에 디버깅 잘 되다가 한번 더 되는거 나옵니다.
어떻게 고쳐야 할까요?
2012-05-30
348
글번호 51506
답변완료
한번더 검토해주시고 종목검색식도 부탁드립니다
안녕하세요 ?
작성해주신 프로그램인데요
가). 앞부분도 설명좀 부탁 드립니다
수동매매에서는 종목이 나오는데
프로그램상으로는 나오지 않습니다
죄송하지만 수식 한번더 검토해주시고 앞부분도 설명 부탁드리구요
input : loss(3);
if date != date[1] Then{
var1 = H;
var2 = L;
var11 = stime;
var21 = stime;
}
if H > var1 Then{
var1 = H;
var11 = stime;
}
if L < var2 Then{
var2 = L;
var21 = stime;
}
if stime >= 110000 and#11시 이후
C[dayindex] > O[dayindex] and #첫봉양봉
C[dayindex] < var1 and #첫봉 종가가 당일최고가 보다 작음후
var11 < 110000 and #당일 최고가는 11시 이전에 형성
var11 < var12 and #당일최고가 형성후 최저가 형성
C <= var1*0.91 and #11이전 최고가 대비 9%이상 하락
C <= DayClose(1)*1.01 and C >= DayClose(1)*1.01 Then#전일종가 +-1% 부근
buy();
if MarketPosition == 1 Then{
if MaxContracts == CurrentContracts Then
exitlong("b1x",atlimit,EntryPrice*1.04,"",int(CurrentContracts*0.5),1);
exitlong("bx2",AtStop,highest(H,BarsSinceEntry)*0.85);
}
SetStopLoss(3,PercentStop);
SetStopEndofday(144500);
나). 그리고 아래의 조건으로 종목검색식도 부탁드립니다
매수 :
1. 당일 첫 봉(A)이 양봉이며 오전 11이이전 최고가 봉(B) 보다 작고
2. 일정시간(2시간정도) 상승유지 후 하락을 시작하여 전일종가 부근으로 하락(봉C : 최고가 B 대비 9% 이상) 하면 매수
* if A == 양봉 and A < B then
if 시간 > 110000 and B >= (C * 1.09)
buy();
매도 :
1. 매수가격에서 3% 하락 시 손절(외부변수사용가능토록 설정)
2. 매수가격에서 4% 상승 시 50 % 매도
3. 최고가격 대비 15% 하락 시 전량매도
4. 당일청산 (144500)
2012-05-30
319
글번호 51505
무성이 님에 의해서 삭제되었습니다.
2012-05-30
0
글번호 51504
답변완료
수식 작성 질문
1. MACD 선의 기울기 > 0
위 조건을 수식으로 어떻게 작성하나요?
2. Standard Deviation 지표를 보면 STD와 Deviation 두 가지로 구성이 되어있는데요
STD함수는 찾았는데 Deviation에 대한 함수가 따로 있나요?
따로 없다면 어떻게 작성을 해야하는 지 알려주시면 감사하겠습니다.
2012-05-30
329
글번호 51503
답변완료
재문의 드립니다.
직전에 수식에 대해 재검토를 요청 드렸는데 다시한번 요청 드립니다.
NetProfit > value1 조건이 만족할때만 주문이 들어가게 되어있는데
실제 적용해보니 두가지 문제점이 발생하는군요.
(물론 우상향 수익이 나는 시스템으로 적용 했습니다.)
문제1. NetProfit 값이 value1 값을 하향 이탈시 마지막 포지션이 계속 보유중으로 마무리 되네요.
=> 최종포지션 청산하는식이 필요합니다.
문제2. 시스템 재개 문제 입니다.
NetProfit 값이 value1 값을 상향 돌파시 시스템이 다시 돌아가는 조건인데요.
직전에 문제1.과 같은 상황이 나와 매매가 이루어 지지 않으면 레코드가 쌓이지 않아
재진입이 이루어 지질 않습니다.
실매매는 이루어 지지 않고 시뮬레이션처럼 시스템이 돌아가야 하는 상황처럼 뭔가 조치가 필요합니다!
정리하자면, NetProfit 값과 value1 값에 의해 중단과 재개가 이루어 졌음 합니다.
신경써 주심에 항상 감사드립니다. ^^
//-----------------------------------------------------------
안녕하세요
예스스탁입니다.
1.
수식이 이전 30개의 거래결과가 필요하므로
최초 진입부터 30번거래까지는 오실레이터 절대값 하락 조건만
추가해서 적용했습니다.
2.
현재 손익이 이전 30개의 최저 누적손익보다 작다면
매매가 중단되므로 더이상 거래가 없어
이후에 진입도 없도 없어 이에 따라 손익의 변화도 없게됩니다.
이에 대한 내용은 추가하셔야 합니다.
3.
Input : Period1(12), Period2(26), Period3(9);
Var : Ep1(0), EP2(0), EP3(0), JISU1(0), JISU2(0), PreJISU1(0), PreJISU2(0);
Var : macdVal(0), preMacdVal(0), macdSig(0),macdOsc(0),PreMacdOsc(0);
var : cnt(0);
if (dayofweek(date) <= DayOfWeek(date[1]) and sdate > sdate[1]) then {
PreJISU1 = JISU1[1];
PreJISU2 = JISU2[1];
PreMacdVal = macdSig[1];
PreMacdOsc = macdOsc[1];
}
Ep1 = 2/(Period1+1);
EP2 = 2/(Period2+1);
EP3 = 2/(Period3+1);
JISU1 = C * Ep1 + PreJISU1 * (1-Ep1); //단기지수이동평균
JISU2 = C * Ep2 + PreJISU2 * (1-Ep2); //장기지수이동평균
macdVal = JISU1 - JISU2; //macd
macdSig = macdVal * Ep3 + PreMacdVal * (1-Ep3); //macd signal
macdOsc = macdval-macdsig;
var1 = abs(macdOsc);
var2 = BarsSinceExit(1);
var3 = BarsSinceEntry(30);
var4 = NetProfit;
value1 = var4[var2];
for cnt = var2 to var3{
if var4[cnt] < value1 Then
value1 = var4[cnt];
}
if TotalTrades >= 30 and var1 < var1[1] and NetProfit > value1 then {
if crossup(ma(c,5),ma(c,20))
then buy("bb");
if crossdown(ma(c,5),ma(c,20))
then sell("ss");
}
if TotalTrades < 30 and var1 < var1[1] then {
if crossup(ma(c,5),ma(c,20))
then buy("b");
if crossdown(ma(c,5),ma(c,20))
then sell("s");
}
즐거운 하루되세요
> 으쌰 님이 쓴 글입니다.
> 제목 : 수식 재문의 드립니다.
> 24719 번 게시글 참조해 주세요!
작성해 주신 수식을 적용해보니 매매신호가 한번도 나오질 않습니다.
조건1을 제외하고 조건2만 적용해봐도 마찬가지네요~
조건2부분의 수식부분을 재검토 부탁 드리겠습니다.
감사합니다.
2012-05-30
325
글번호 51502
답변완료
시스템식 오류 문의
아래 수식을 1틱에서 매매해 볼려고 했는데,전혀 매수/매도가 안 되는데,
이유가 뭔가요? 성과분석에서는 분명히 매수/매도가 되서, 결과가 나왔는데,
실제에서는 전혀 체결이 안 됩니다.
1틱이 너무 짧아서, 그런가요? 아니면 수식이 잘못 되었나요?
(shortPeriod(5), longPeriod(4);)-> 쇼트하고, 롱이 반대로 되었지만,
성과분석에서는 결과가 제대로 나옵니다.
Input : shortPeriod(5), longPeriod(4);
Var : value1(0), value2(0);
value1 = ema(C, shortPeriod);
value2 = ema(C, longPeriod);
// 매수/매도청산
If CrossAbove(value1, value2) Then
Begin
Buy();
Exitshort();
End;
// 매도/매수청산
If CrossBelow(value1, value2) Then
Begin
Sell();
Exitlong();
End;
2012-05-30
354
글번호 51501