커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4763
글번호 230811
프네우마 님에 의해서 삭제되었습니다.
2015-09-10
0
글번호 90236
답변완료
수식 작성 중 오류
책의 내용대로 시스템 수식 작성을 하는중 entriestoday 가 선언되지 않은 이름으로 나옵니다. 함수가 바뀐건지 설명 부탁드립니다.
Input : Daymult(0.35), Mult(6.5);
Var1 = (DayHigh(1)-DayLow(1))*DayMult;
# 진입
If EntriesToday(date)<1 and sTime<143000 Then {
Buy("B2", AtStop, DayOpen+Var1);
Sell("S2", AtStop, DayOpen-Var2);
}
# 청산
Var3 = Highest(H,BarsSinceEntry+1)-ATR(15)*Mult;
VAr4 = Lowest(L, BarsSinceEntry+1)+Atr(15)*Mult;
ExitLong("EL1", AtStop, Var3);
ExitShort("ES1", AtStop, Var4);
SetStopLoss(2, PercentStop);
SetStopEndofday(1450);
2015-09-10
98
글번호 90235
답변완료
키움에서 구현한 것을 yes에서 어떻게 구현을 하나요..?
키움에서 구현한 것을 에스트레이더에서 구현이 가능한가요...?
사진은 b/b인데요...위 분홍생과 중앙 노란색 그리고 밑 부분 하늘색이 구현 가능하지
부탁 좀드리겠습니다..
2015-09-10
269
글번호 90231
답변완료
수식 요청
안녕하세요. 항상 감사드립니다.
복합 챠트 300틱 사용하며 지난가격에 준하여 지정가격 (예: 전일 주야 고점, 저점, 고저중심 등)으로 매매하려고 합니다. 기본수식만 알려주시면 공부해서 수식 만들어 보겠습니다.
하기와 같은 조건에 준하여 수식 부탁드립니다.
* 매수/매도 : 1) 전일 주야 고저중심 2) 전일고저중심+2.5P/-2.6P
- crossup/crossdown 조건이 아닌 돌파/이탈로 가격 터치시에 신호 발생
- 진입 후 5개봉 이내 신호발생 없음
- 손절 10틱
- 매매시간 : 09:00 ~ 14:45
- 종가청산 : 15:15
감사합니다.
2015-09-10
125
글번호 90228
답변완료
수식문의
아래의 식을 시스템으로 바꾸어주세요
Input : shortPeriod(12), longPeriod(26), Period(9);
Var : value(0) , macdosc(0), MACD전저점(0), 가격전저점(0), 예비저(0), 예비봉저(999), macdplot(0),
macd전고점(0), 가격전고점(0), 예비고(0), 예비봉고(0);
value = MACD(shortPeriod, longPeriod);
macdosc = value-ema(value,Period);
if macdosc > 0 then
{
plot3(macdosc * 2, "MACDOscillator", RED);
if(macdosc[1] <= 0) then
{ // 이전 봉 까지는 음수인 경우 전저점이 확정된다.
// 다이버전스 조건이 충족 되었는지 검증한다.
if(macd전저점 <= -0.01 ) and (macd전저점 <= 예비저) and (가격전저점 >= 예비봉저) then
{
macdPlot = macd전저점 * -1;
MessageLog("macd전저점 %.0f 가격전저점%.0f 예비저%.0f 예비봉저%.0f 다이버젼스 발견", macd전저점, 가격전저점, 예비저, 예비봉저);
}
else
macdPlot = 0;
if(예비저 <= -0.01) then
{
macd전저점 = 예비저;
가격전저점 = 예비봉저;
}
}
else
{
macdPlot = 0;
}
예비저 = 0;
예비봉저 = 999;
if(예비고 < macdosc) then
{
예비고 = macdosc;
}
예비봉고 = max(예비봉고, c);
}
else
{
Plot3(macdosc * 2, "MACDOscillator", BLUE);
macdPlot = 0;
if(예비저 > macdosc) then
{
예비저 = macdosc;
}
if(macdosc[1] >= 0) then
{ // 이전 봉 까지는 양수인 경우 전고점이 확정된다.
// 다이버전스 조건이 충족 되었는지 검증한다.
if(macd전고점 >= 0.01 ) and (macd전고점 > 예비고) and (가격전고점 <= 예비봉고) then
{
macdPlot = macd전고점 * -1;
MessageLog("macd전고점 %.0f 가격전고점%.0f 예비고%.0f 예비봉고%.0f 다이버젼스 발견", macd전고점, 가격전고점, 예비고, 예비봉고);
}
else
macdPlot = 0;
if(예비고 >= 0.01) then
{
macd전고점 = 예비고;
가격전고점 = 예비봉고;
}
}
else
{
macdPlot = 0;
}
예비고 = 0;
예비봉고 = 0;
예비봉저 = min(예비봉저, c);
}
PlotBaseLine1(0, "기준선1");
plot1(macdPlot);
//MessageLog("macd전저점 %.0f 가격전저점%.0f 예비저%.0f 예비봉저%.0f", macd전저점, 가격전저점, 예비저, 예비봉저);
2015-09-10
128
글번호 90227
답변완료
부탁드립니다
키움껀데요 예스랭귀지로 바꿔주시면 감사하겠습니다
1번하고 2번 두개다 좀 바꿔줄수있으시면 바꿔주세요
1번따로 2번따로 부탁드립니다
(1번)
p1(5) p2(20)
a=ma(c,p1)
b=ma(c,p2)
k=a-b
k
a=ma(c,p1)
b=ma(c,p2)
k=a-b
-k
(2번)
macd 오실레이터 12.26.9 기본값를 1번처럼 부탁드립니다
2015-09-10
171
글번호 90225
답변완료
추적 두번
첫번째추적
#추적청산수식
input : RangeMult(2.5), AtrMult(2.1), AtrPeriod(20);
var : PreRange(0), ChUp(0), ChDn(0), AtrVal(0), posHigh(0), posLow(0);
# 진입
PreRange = (dayHigh(1)-dayLow(1))*RangeMult;
ChUp = dayOpen + PreRange;
ChDn = dayOpen - PreRange;
If CrossUp(C, ChUp) Then
buy();
If CrossDown(C, ChDn) Then
sell();
# ATR 추적청산
ATRVal = ATR(AtrPeriod) * AtrMult;
PosHigh = Highest(H,BarssinceEntry+1);
PosLow = Lowest(L,BarsSinceEntry+1);
If MarketPosition == 1 Then
ExitLong("ATR1", AtStop, PosHigh - ATRVal);
If MarketPosition == -1 Then
ExitShort("ATR2", AtStop, PosLow + ATRVal);
두변째추적
#추적청산수식
input : RangeMult(2.5), AtrMult(2.1), AtrPeriod(20);
var : PreRange(0), ChUp(0), ChDn(0), AtrVal(0), posHigh(0), posLow(0);
# 진입
PreRange = (dayHigh(1)-dayLow(1))*RangeMult;
ChUp = dayOpen + PreRange;
ChDn = dayOpen - PreRange;
If CrossUp(C, ChUp) Then
buy();
If CrossDown(C, ChDn) Then
sell();
# ATR 추적청산
ATRVal = ATR(AtrPeriod) * AtrMult;
PosHigh = Highest(H,BarssinceEntry+1);
PosLow = Lowest(L,BarsSinceEntry+1);
If MarketPosition == 1 Then
ExitLong("ATR1", AtStop, PosHigh - ATRVal);
If MarketPosition == -1 Then
ExitShort("ATR2", AtStop, PosLow + ATRVal);
위추적청산수식을 두번동시에 매매할수있는식으로부탁합니다
2015-09-10
103
글번호 90216
답변완료
메뉴얼 공부 중 질문드립니다.
수고하십니다.
예스스팟 글로벌 메뉴얼 '5장 예스스팟 사용시 주의사항'에서 질문입니다.
1. "3) 잔고(Balance), 미체결(Unfill), 체결(NotifyFill)등 계좌관련 객체 사용시 주의 사항"을 보면
가원장 상태가 실제 원장과 동기화 될 수 있도록 '잔고조회'를 하라고 나와 있는데요,
여기서 잔고조회를 어떻게 합니까? 시스템 수식안에서 잔고조회 라는 명령어가 있나요?
아니면 수동 매매창(일반창)에서 잔고조회를 하면 시스템 수식도 자동으로 연동되어 잔고조회가 되나요?
랭귀지에서는 함수 중 Marketposition 이 1,0,-1 이냐 하는 것이 잔고조회인가요?
2. "8) 예스스팟은 서버에 과도한 부하를 줄이기 위해 시세조회와 계좌 조회를 15초당 60회로 제한하고 있습니다."이라고 나와있는데요,
이런 제한이 랭귀지 시스템에도 적용되나요?
랭귀지 함수 Marketposition 이 계좌 조회에 해당하나요?
3. "9) 예스스팟은 주문 오작동을 막기 위해 15초당 90회까지만 주문이 가능합니다."라고 나와있는데요,
분할주문의 경우는 어떻게 됩니까? 예를 들어 시그널이 났을때 5계약을 한꺼번에 주문하는게 아니라 1계약 주문을 5번 연속으로 내는 방식 말입니다. 이런 방식의 경우 1회 주문인가요 5회 주문인가요?
이런 제한이 랭귀지 시스템에도 적용되나요?
2015-09-10
120
글번호 90215
답변완료
종목검색에서
var : count(0), cnt(0);
count = 0;
for cnt = 0 to 5
begin
if ma(C[cnt], 60) < ma(C[cnt + 1], 60) then count = count + 1;
end;
if count == 0 then find(1);
위처럼 식을 작성했습니다.
6일 연속 60일이평이 상승중인 종목을 검색하기 위함입니다.
검색식을 적용해보니 여러 종목이 잡히는데
그중 "CJ CGV"란 종목이 나오는데
해당종목은 3일동안 작게라도 연속 60이평이 내렸는데
검색식에 잡히는 이유를 모르겠습니다.
잘못된 부분이 있으면 설명과 수정을 부탁드립니다.
p.s.
검색식을 돌린 지금 시간이 2015-09-10일 새벽2시49분입니다.
일봉기준이고
검색식에 필요한 최소기간은 100봉을 줬습니다.
2015-09-10
110
글번호 90214