커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7748
글번호 230811
답변완료
수고 많으십니다. 수식부탁드립니다.
Input : af(0.02), maxaF(0.2);
# 매수/매도청산
If Crossup(C,SAR(af,maxaf)) Then
{
Buy();
}
# 매도/매수청산
If CrossDown(C,SAR(af,maxaf)) Then
{
Sell();
}
---------------
위와같은 기본 식에...
손절 0.5포인트,
1포인트 수익부터 50%트레일링스탑을 기본으로하고...
진입시부터 위아래 0.5포인트 이내에 다른 진입신호가 있다면 무시하다가
(즉, 청산 전에는 무시하다가)
그 범위를 벗어나면 보류했던 최근 진입신호가 다시 나오게하고 싶습니다.
휩소를 피하고 싶어서요.
손절과 수익을 input으로 표현하게 해 주시구요.
거듭 고맙습니다.
2010-11-03
673
글번호 33292
답변완료
재질문입니다.
안녕하세요
예스스탁입니다.
var: 돌파(0),돌파1(0);
if crossup(c,ma(c,20)) then{
돌파=c;#가장 최근 돌파 시 종가
돌파1 = 돌파[1];#직전 돌파 시 종가
}
직전 돌파시 값이 필요하시면 저장하여 사용하셔야 합니다.
즐거운 하루되세요
.
> 제목 : 이전값 참조 문의
> var: 돌파(0);
if crossup(c,ma(c,20)) then
돌파=c;
위와 같이 변수 돌파 를 만들었습니다.
예를 들어 위의 '돌파' 가 10번째 봉에서 이루어졌고, 그전 '돌파'는 5번째 봉에서 이루어 졌다면,
만약 이전값 돌파[1] 이라고 표현한다면,
단지 변수 '돌파'의 전봉인 9번째 봉을 나타내는 것인지 ------------- 1번
아니면 전 '돌파'한 5번째 봉을 나타내는 것인지 설명부탁드리니다. ------ 2번
단순히 돌파[1]로 표현했을때 어느봉을 나타내는지도 설명부탁드립니다.
그리고 2번과 같이 표현할려면 배열함수를 써야 하는지도 설명부탁드립니다.
2010-11-03
591
글번호 33291
답변완료
시작봉 추가----------------------
input : Period(1),Period1(7),전봉차(2500);
var1 = ma(bids,Period)-ma(asks,Period);#호가잔량 오실레이터
if stime >= 90000 and stime < 145000 then{
if var1 >= var1[1]+전봉차 and (var1 >= 100 or var1 <= -100) and var1 > var1[1] and var1 >= -10000 Then
Buy();
if CrossDown(ma(c,5),ma(C,30)) Then
ExitLong();
if var1 <= var1[1]-전봉차 and (var1 >= 100 or var1 <= -100) and var1 < var1[1] and var1 >= 10000 Then
Sell();
if CrossUp(ma(c,5),ma(C,30)) Then
ExitShort();
}
위식에서 그날 첫봉은 오시레이터값을 전봉과비교하지말고 그냥 "0+전봉차"는 매수
"0-전봉차"는 매도 되게해주세요 (전일종가와 의 왜곡을 방지하기위함)
부탁드립니다
2010-11-03
737
글번호 33290
답변완료
수식문의
1분봉으로 시스템을 만들경우,매수후 매수청산식조건에의해
청산한 경우, 30개봉 이내에는 재매수 진입금지하는 수식을 부탁드립니다.
매도도 동일함.
수고하세요.
2010-11-03
662
글번호 33289
답변완료
초보 질문입니다~
5분봉상 시초가보다 2호가이상 위면서 양봉 완성되면 매수 1개(매수가는 2호가 위로 주문 확실히 체결되게 하기위해서)
(음봉일 경우는 반대 조건으로 매도 1개 체결 이고요)
다시 시초가 아래로 2호가 이하면서 음봉 완성되면, 청산후 매도1개(청산, 매도 모두 2호가 아래로 주문)
다시 시초가 위로 2호가 이상이면서 양봉 완성이면 매도 청산후 매수1개 (청산, 매도 모두 2호가 위로 주문)
계속 이렇게 반복되고
청산은 3시4분 청산이고요
이렇게 만들려면 어떻게 해야 하지요?
2010-11-03
558
글번호 33288
답변완료
수식 작성 좀 부탁드립니다...
[ 2분봉상 볼린저밴드(20,2)에서 주가가 볼린저밴드 상한선을 돌파할때 매수하고자 하는 수식을 작성할려고 합니다.]
1. 매수: 1) 2분봉에서 종가가 볼린저밴드(20,2)의 상한선을 돌파시 매수.
* 위의 주가가 볼린저밴드 돌파시 시가가 볼린저밴드 상한선보다 낮거나
같아야 함.
(시가 <= 볼린저밴드 상한선)
* 주가가 볼린저밴드 돌파시 시가가 볼린저밴드 중심선보다 높아야 함.
(시가 > 볼린저밴드 중심선)
2)일봉상 시가가 +5%이상 높게 시작하거나 -5%이상 낮게 시작하면 매수 금지
3)진입시점은 2분봉상 봉완성시 다음시초가에 진입
2. 매수청산: 매수가 대비 3% 수익청산, -3% 손절처리
3. 하루 1번만 매수, 매수청산한다.
4. 오후 2:50분 강제청산한다.(시스템트레이딩 적용시간: 9:00 ~ 14:50)
위와 같이 할려면 수식이 어떻게 되는지 부탁드립니다....
2010-11-03
629
글번호 33287
답변완료
시스템식 질문입니다
옵션 000종목 1분차트
일간data2 다우산업
일간data3 FTSE 100
위와 같이 차트를 설정해 놓은 다음
전일 다우산업 지수가 0.5% 이상양봉
전일 FTSE 지수가 0.5% 이상양봉
금일 옵션1분차트 090000 봉이 양봉이면 매수 하는 식입니다
감사합니다
2010-11-03
596
글번호 33286
답변완료
시스템식문의요!
오래간만에 글을 남기는거 같아 죄송하네요~
5분봉으로 볼 때 120분 이평선이 위아래로 등락을 거듭하잖아요~
그래서 120분 이평선만봤을때 그 기울기가 꼭지점을 지나서 방향이
바뀔때 들어가는 식이 궁금해요~
아래그림을 참고로....
2010-11-03
626
글번호 33285
답변완료
식 부탁드립니다.
이 식에서
input : 총투자금(4500000), period1(20);
var : L10(0),cnt(0),sum(0),count(0);
sum = 0;
for count = 1 to Period1{
sum = sum + max(abs(dayclose(count+1)-DayHigh(count)),abs(Dayclose(count+1)-DayLow(count)),abs(dayhigh(count)-daylow(count)));
}
value1 = sum/period1; #일간 20 ATR
value2 = int(((총투자금*0.01)/(value1*3))/10)*10;
value8 = 13450; #이익청산구간
value6 = 12300; #박스권상단
value7 = 11800; #박스권귀속
#전일 기준 10일 최저가
L10 = DayLow(1);
for cnt = 1 to 10{
if DayLow(cnt) < L10 Then
L10 = DayLow(cnt);
}
#1차
#value6 상향돌파때 매수
if MarketPosition == 0 and stime < 150000 and sdate >= 20101028 and ExitDate(1) != sdate Then{
if H <= value6 Then# 매수가격대 돌파시 매수.
buy("first_",AtStop,value6+PriceScale,value2);
}
#2차
if MarketPosition == 1 Then{
#진입이 있을 때마다 value3에 value1저장 value4에 해당봉 고가저장
if CurrentEntries > CurrentEntries[1] Then{
value3 = value1;
value4 = H;
}
#첫번째 피라미딩
if CurrentEntries == 1 Then{
if H <= value6+value1 Then
buy("up_", AtStop, value6+value1,value2);# value6+value1 이상에서 진입
}
}
#청산 포지션이 3번 누적이후에 발동
if MarketPosition == 1 Then{
if L >= L10-PriceScale Then# L7-PriceScale 위에 있다가 내려가면 청산입니다.
exitlong("L10",AtStop,L10-PriceScale);
if L >= value4-value3*3 then # value4-value3*3 위에 있다가 내려가면 청산입니다.
exitlong("변동성2",AtStop,value4-value3*3);
if L >= value6-value3*3 Then
exitlong("변동성3",atstop,value6-value3*3); #박스권하향하면 청산.
if L >= value7 Then
exitlong("박스권귀속",atstop,value7-pricescale); #박스권하향하면 청산.
}
if MarketPosition == 1 Then{
exitlong("이익청산",atlimit,value8+PriceScale); #이익실현가격대에서 한틱상승하면 매수청산
}
이익청산까진 됐습니다. 이익청산은 모두 청산하는 거구요.
음 그런데 시초가 매수때에
if stime == 150000 then
buy("b",atmarket);
이식을 어디에 넣어야하는지, 그리고 매수 주식의수는 value2만큼으로 정하고 싶은데
매수가격대가 정할수없으니, 매수주식의수또한 정하기 곤란하군요
어떻게 해야 합니까?
수고하세요^^
2010-11-03
554
글번호 33281