커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7563
글번호 230811
답변완료
문의 드립니다.
청산 조건문을 문의드립니다.
자세한 답변 미리 감사드립니다.
1. 볼린저밴드에서 %b값이 100이상을 터치한 후 시그널선이 %b선을 crossdown시
매도 진입하고, 매도 진입 직후 5개봉중 4개봉이 양봉일 시 손절하려고
합니다.
if marketposition == -1 then
if countif(c>o,5) >= 4 then exitshort();
라고 식을 작성하였더니,
매도 진입전에 있었던 양봉도 함께 카운팅하여 손절 처리하더군요.
매도 진입 직후 5개봉을 카운팅하여 손절 처리했으면 합니다.
(매도 진입이후 연속된 5개봉이 아니라, barssinceEntry 5개봉 입니다)
2. 매수(매도)후
바로 아래에 있는 이평선으로 지지선을 설정하고
지지선을 하향 돌파할 때 매수 건을 손절 청산하고자 합니다.
이평선은 30, 60, 90, 120, 150, 180, 210 등 일정 간격을 두고
구획합니다.
매수한 봉의 위치가 30선과 60선 사이에 위치할 때는 60선을 지지선으로
설정하고, 현재봉과 전봉이 음봉으로 두봉 연속하여 60선 이평선을
하향 돌파할 때 손절 청산하는 방법입니다.
매수한 봉의 위치가 120선과 150선 사이에 위치할 때는 150선을 지지선으로
설정하고, 두봉 모두 음봉으로 150선을 연속 하향 돌파할 때 손절 청산합니다.
3. 매수후 최고가가 (매수가 + 1포인트) ~ (매수가 + 2포인트) 사이에 있으면
(매수가격 + 0.15포인트)를 청산가격으로 지정하고,
이후 종가가 (매수가 + 2포인트)를 넘어서면
현재가가 (최고가 - 1.0포인트)에 도달할 때 익절하고자 합니다.
수식 부탁드립니다.
2013-05-20
229
글번호 63349
답변완료
안녕하세요~
input : Period(100), period2(100);
var1 = ma(L,Period);
var3 = ma(L,period2);
if var1 > var1[2] and value1 <= 0 Then{
value1 = 2;
var2 = var1[2];
}
if var1 < var1[2] and value1 >= 0 Then{
value1 = -2;
var2 = var1[2];
}
if var3 > var3[2] and value3 <= 0 Then{
value3 = 2;
var4 = Var3[2];
}
if var3 < var3[2] and value3 >= 0 Then{
Value3 = -2;
var4 = var3[2];
}
plot1(var1);
plot2(var2);
plot3(var3);
plot4(var4);
위 식을 일목균 처럼 선행스팬을 가질 수 있을까요?
있다면 식 좀 부탁드립니다^^;;
그럼 오늘 하루도 화이팅요~
2013-05-20
236
글번호 63348
답변완료
종목검색식 문의
두가지 수식에 대해서 문의를 드립니다.
첫번째 수식
1. 당일 종가 기준으로 5일선/20일선 위로 올라가는 양봉 검색
- 전일 종가상 역배열
- 당일 양봉으로 마감 & 5일선/20일선 위로 종가 마감
2. 1년이내 신고가 돌파하는 종목검색
- 당일 종가가 7%이상 양봉
- 당일 종가는 당일 고가 대비 -3%이상 마감
ex) 당일 고가 10% 당일 종가 5% --> 검색 제외
당일 고가 10% 당일 종가 8% --> 검색 포함
- 일봉기준으로 당일종가 >= 전일 종가까지 최고점
*검색일은 전일~D-180일 기준으로 검색
두 식은 다르게 해서 검색할 예정입니다
2013-05-20
263
글번호 63347
tkssjdnf 님에 의해서 삭제되었습니다.
2013-05-20
1
글번호 63346
답변완료
문의 드립니다.
수고가 많으십니다.
5분봉 선물 시스템 구현 중입니다.
매수/매도 조건이 5분봉 1분내에 조건이 완성되고, 5분에 신호가 발생되면서,
낭패를 보는 경우가 있습니다.
매수 / 매도 조건이 5분봉 1분내에 조건이 완성되면, 그조건이 5분까지 유지되더라도
신호가 발생되지 않았음 합니다.
감사합니다.
2013-05-20
302
글번호 63345
답변완료
문의 드림니다
당일 매매에서 다음수식 문의 드림니다
5이평이 20이평을 상향돌파 하면 매수 하되 아래조건 충족시만 매수진입
매수진입조건:
1)당일1회만 진입 하거나 당일 1회이상 진입이있었으면 이전포지션이 매도일경우만 진입
2)당일 1회이상 진입이있었으면 이전포지션이 수익일때만 진입
3)당일 1회이상 진입이있었으면 이전포지션이 -1p 보다 손실이 적을경우만 진입
매도는
5이평이 20이평을 하향돌파 하면 매도 하되 아래조건 충족시만 매도진입
매도진입조건:
1)당일1회만 진입 하거나 당일 1회이상 진입이있었으면 이전포지션이 매수일경우만 진입
2)당일 1회이상 진입이있었으면 이전포지션이 손실일때만 진입
3)당일 1회이상 진입이있었으면 이전포지션이 1p 보다 수익이 적을경우만 진입
2013-05-20
184
글번호 63344
회원 님에 의해서 삭제되었습니다.
2013-05-20
39
글번호 63343
답변완료
문의
잘 안되네요..^^;
1) 여전히 exitShort 에서 오류가 납니다.
'12년 5월 28일 오전 7시에 모든 계약을 청산했는데(그림에도 신호가 나타납니다)
로그를 찍어보면 여전히 8시에 계약을 1개 가지고 있습니다.
2) 그림에서 보면 eS9 / eS11 등이 두번씩 발생합니다.
3) 진입과 청산이 무수히 발생함에도 불구하고, 수익차트에는 반영이 안됩니다..
번거롭게 죄송합니다 ^^
부탁드릴께요.
input: period(90);
var: ii(0),avr(0), vari(0), sum(0), cnt(0), bet(0), flag(0), k(0), p(0), buy_cnt(0), sell_cnt(0);
MessageLog("Cntrct %.f", CurrentContracts*MarketPosition);
MessageLog("profit %.3f", NetProfit);
MessageLog("sell %.f // buy %.f", sell_cnt, buy_cnt);
sum = 0;
for ii = 0 to period-1
{
sum = sum + (C[ii]-C[ii+1])/(C[ii]);
}
avr = sum/period;
sum = 0;
for ii=0 to period-1
{
sum = sum + ((C[ii]-C[ii+1])/(C[ii])-avr)^2;
}
vari = sum/period; //수익률 평균
k = avr/vari;
p = k / abs(k);
if abs(k)/20 >= 1 then
{
bet = int((50+netProfit)/(C/20));
}
else
bet = int(((50+netProfit)/(C/20))*(abs(k)/20));
if MarketPosition == 1 and MarketPosition != MarketPosition[1] Then
buy_cnt = 0;
if MarketPosition == -1 and MarketPosition != MarketPosition[1] Then
sell_cnt = 0;
if bet*p == CurrentContracts*MarketPosition then
{
// MessageLog("변동없음.%.f",int(-0.5));
}
else if MarketPosition == 0 Then
{
if p > 0 then
{
buy("L", AtMarket, DEF, bet);
}
else if p <= 0 then
{
Sell("S", AtMarket, DEF, bet);
}
}
else if MarketPosition > 0 Then
{
if CurrentContracts < CurrentContracts[1] Then
buy_cnt = buy_cnt + 1;
if p > 0 then
{
if bet > CurrentContracts then
{
buy("Ladd", AtMarket, DEF, bet-CurrentContracts);
}
else if bet < CurrentContracts && buy_cnt == 0 then
{
ExitLong("eL1", AtMarket, DEF,"",CurrentContracts-bet,1);
}
else if bet < CurrentContracts && buy_cnt == 1 then
{
exitlong("eL2", AtMarket, DEF,"",CurrentContracts-bet,1);
}
else if bet < CurrentContracts && buy_cnt == 2 then
{
exitlong("eL3", AtMarket, DEF,"",CurrentContracts-bet,1);
}
else if bet < CurrentContracts && buy_cnt == 3 then
{
exitlong("eL4", AtMarket, DEF,"",CurrentContracts-bet,1);
}
else if bet < CurrentContracts && buy_cnt == 4 then
{
exitlong("eL5", AtMarket, DEF,"",CurrentContracts-bet,1);
}
else if bet < CurrentContracts && buy_cnt == 5 then
{
exitlong("eL6", AtMarket, DEF,"",CurrentContracts-bet,1);
}
else if bet < CurrentContracts && buy_cnt == 6 then
{
exitlong("eL7", AtMarket, DEF,"",CurrentContracts-bet,1);
}
else if bet < CurrentContracts && buy_cnt == 7 then
{
exitlong("eL8", AtMarket, DEF,"",CurrentContracts-bet,1);
}
else if bet < CurrentContracts && buy_cnt == 8 then
{
exitlong("eL9", AtMarket, DEF,"",CurrentContracts-bet,1);
}
else if bet < CurrentContracts && buy_cnt == 9 then
{
exitlong("eL10", AtMarket, DEF,"",CurrentContracts-bet,1);
}
else if bet < CurrentContracts && buy_cnt == 10 then
{
exitlong("eL11", AtMarket, DEF,"",CurrentContracts-bet,1);
}
else if bet < CurrentContracts && buy_cnt == 11 then
{
exitlong("eL12", AtMarket, DEF,"",CurrentContracts-bet,1);
}
else if bet < CurrentContracts && buy_cnt == 12 then
{
exitlong("eL13", AtMarket, DEF,"",CurrentContracts-bet,1);
}
else if bet < CurrentContracts && buy_cnt == 13 then
{
exitlong("eL14", AtMarket, DEF,"",CurrentContracts-bet,1);
}
}
else if p <= 0 then
{
sell("change_S", AtMarket, DEF, bet);
}
}
else if MarketPosition < 0 Then
{
if CurrentContracts < CurrentContracts[1] Then
Sell_cnt = Sell_cnt + 1;
if p < 0 then
{
if bet > CurrentContracts then
{
Sell("Sadd", AtMarket, DEF, bet-CurrentContracts);
}
else if bet < CurrentContracts && sell_cnt == 0 then
{
exitShort("eS1", AtMarket, DEF,"", CurrentContracts-bet,1);
}
else if bet < CurrentContracts && sell_cnt == 1 then
{
exitShort("eS2", AtMarket, DEF,"", CurrentContracts-bet,1);
}
else if bet < CurrentContracts && sell_cnt == 2 then
{
exitShort("eS3", AtMarket, DEF,"", CurrentContracts-bet,1);
}
else if bet < CurrentContracts && sell_cnt == 3 then
{
exitShort("eS4", AtMarket, DEF,"", CurrentContracts-bet,1);
}
else if bet < CurrentContracts && sell_cnt == 4 then
{
exitShort("eS5", AtMarket, DEF,"", CurrentContracts-bet,1);
}
else if bet < CurrentContracts && sell_cnt == 5 then
{
exitShort("eS6", AtMarket, DEF,"", CurrentContracts-bet,1);
}
else if bet < CurrentContracts && sell_cnt == 6 then
{
exitShort("eS7", AtMarket, DEF,"", CurrentContracts-bet,1);
}
else if bet < CurrentContracts && sell_cnt == 7 then
{
exitShort("eS8", AtMarket, DEF,"", CurrentContracts-bet,1);
}
else if bet < CurrentContracts && sell_cnt == 8 then
{
exitShort("eS9", AtMarket, DEF,"", CurrentContracts-bet,1);
}
else if bet < CurrentContracts && sell_cnt == 9 then
{
exitShort("eS10", AtMarket, DEF,"", CurrentContracts-bet,1);
}
else if bet < CurrentContracts && sell_cnt == 10 then
{
exitShort("eS11", AtMarket, DEF,"", CurrentContracts-bet,1);
}
else if bet < CurrentContracts && sell_cnt == 11 then
{
exitShort("eS12", AtMarket, DEF,"", CurrentContracts-bet,1);
}
else if bet < CurrentContracts && sell_cnt == 12 then
{
exitShort("eS13", AtMarket, DEF,"", CurrentContracts-bet,1);
}
else if bet < CurrentContracts && sell_cnt == 13 then
{
exitShort("eS14", AtMarket, DEF,"", CurrentContracts-bet,1);
}
else if bet < CurrentContracts && sell_cnt == 14 then
{
exitShort("eS15", AtMarket, DEF,"", CurrentContracts-bet,1);
MessageLog("차이 %.f", CurrentContracts-bet);
}
else if bet < CurrentContracts && sell_cnt == 15 then
{
exitShort("eS16", AtMarket, DEF,"", CurrentContracts-bet,1);
}
else if bet < CurrentContracts && sell_cnt == 16 then
{
exitShort("eS17", AtMarket, DEF,"", CurrentContracts-bet,1);
}
else if bet < CurrentContracts && sell_cnt == 17 then
{
exitShort("eS18", AtMarket, DEF,"", CurrentContracts-bet,1);
}
}
else if p >= 0 then
{
Buy("change_B", AtMarket, DEF, bet);
}
}
MessageLog("BET %.f", bet);
2013-05-22
450
글번호 63342
답변완료
수식문의
첨부한파일처럼 지표가가능하면 부탁합니다
2013-05-20
232
글번호 63341