커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4477
글번호 230811
2wnwn 님에 의해서 삭제되었습니다.
2016-12-13
14
글번호 104946
답변완료
틱챠트 1분내 동일방향 진입 금지 방법 문의
해외 오일을 틱 챠트에서 매매하는 시스템식을 운용하고 있습니다.
첨부 그림과 같이 결과과 동시에 두개의 동일방향 진입이 일어나고 있는데
이를 방지할 방법은 없는지요.
참고로 시스템 수식내에 1분내 동일방향 진입금지를 위한 아래 식이 삽입되어 있는데
역할을 하지 못하는 군요.
1분내 동일방향 진입 방지 수식
##################################################### 1분내 재진입 방지조건
var81 = TimeToMinutes(stime)%1;
if date != date[1] Then var81 = 0;
if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then var81 = var81+1;
#당일 첫진입은 이전 진입의 시간과 관계없이 진입하고
#당일 두번째 진입부터는 직전직입보다 최소 1분이후에 진입
if var81 == 0 or
(MarketPosition == 0 and var81 > 1 and TimeToMinutes(stime) >= TimeToMinutes(EntryTime(1))+1) or
(MarketPosition != 0 and var81 > 1 and TimeToMinutes(stime) >= TimeToMinutes(EntryTime(0))+1) Then {
###################################################################
< <시스템 매매식>>
}
###################################################################
###################################################################
2016-12-13
118
글번호 104943
답변완료
안녕하세요. 질문드립니다.
해외선물(오일) 질문 드리겠습니다.
1. 거래 한번
2. 22시 종가에서 0.5 상승 매수
22시 종가에서 0.5 하락 매도
3. 진입은 22시 부터 다음날 새벽 4시까지
4. 진입 후 강제청산시간은 새벽 5시
+++++++아! 그리고 섬머타임을시스템이 인식할 수 있는 방법이 있나요?
가령 미국장 개장시간이 섬머타임 적용 시 바뀌게 되는데, 미국 개장 시간에 매수진입이라고 시스템 구성이 가능한지도 부탁 드립니다.
하루가 넘어가는 것이라 국선이랑 다르네요.
정말 프로그래밍은 어렵습니다.
그리하여 또 이렇게 질문드립니다. 늘 감사합니다.
2016-12-13
106
글번호 104941
자연금이 님에 의해서 삭제되었습니다.
2016-12-13
19
글번호 104940
답변완료
수식 부탁드립니다
SetStopLoss 설정시 개별 진입가 대비 0.3p 손실시 청산이 아니고 평균 진입가 대비 0.3p 손실시 청산인 식을 부탁드립니다.
또 트레일링 스탑시도 개별 진입가로 최고 수익 대비 80% 하락(1p 이상 수익 후)일 경우 청산이 아니고 평균 진입가 기준 최고수익 대비 80% 하락(1p이상 수익 후)일 경우 청산식을 부탁드립니다. 감사합니다
2016-12-13
91
글번호 104936
미스포터 님에 의해서 삭제되었습니다.
2016-12-13
14
글번호 104934
답변완료
부탁 드립니다.
도움주심에 감사드립니다.
시작일시와
종료일시를 지정하여
봉생성 갯수를 알려고 합니다만
1일분만 나타 납니다.
어덯게 수정 해야 하는지요?
INPUT:시작일자(20161212),종료일자(20161213),시작시각(080000),끝시각(070000);
Var : cond5(false),idx(0);
var99=시작일자;
VAR88=종료일자;
var10=시작시각;
var20=끝시각;
if sdate == var99 and (stime == var10 or (stime > var10 and stime[1] < var10)) then{
cond5 = true;
idx = 0;
}
if sdate ==VAR88 and stime == var20 or (stime > var20 and stime[1] < var20 ) Then
Cond5 = false;
if cond5 == true then{
idx = idx+1;
plot1(idx);
}
2016-12-13
102
글번호 104931
답변완료
웰스멘토 관련 문의
안녕하세요 웰스멘토 관련해서 식을 하나 짜려하는데 도움을 좀 주셨음 합니다
1.종목시장검색을 통해 1001(PBR)저평가순으로 상위 10종목 추출
2.우선주제외, KP200포함종목, 시장경보, ISSUE 등을 감안하여 매수종목군 작성
3.하루 최대 10종목까지 매수한다
4.예스랭귀지식인
Input : Period1(20), Period2(60), LPercent(103), SPercent(97) ,ZPercent(100);
Var : value(0);
Value1 = Disparity(Period1) ;
Value2 = Disparity(Period2) ;
# 상승장일때 매수/매수청산
If value2 >= LPercent Then
{
If CrossUp(Value1,ZPercent) Then Buy("상승장매수");
If Value2 < LPercent and CrossDown(Value1,ZPercent) Then ExitLong("상승장매수청산");
}
# 하락장일때 매도/매도청산
If Value2 <= SPercent then
{
If CrossDown(Value1,ZPercent) Then Sell("하락장매도");
If Value2 > SPercent and CrossUp(Value1,ZPercent) Then ExitShort("하락장매도청산");
}
# 횡보장 매수/매도
If Value2 < LPercent and Value2 > SPercent Then
{
If CrossUp(Value1,ZPercent) Then Sell("횡보매도");
If CrossDown(Value1,ZPercent) Then Buy("횡보매수");
}
를 이용하여 매수,매도를 한다
위 내용을 웰스멘토 식으로 짜주시면 감사합니다
2016-12-13
113
글번호 104924
답변완료
재문의 드립니다
안녕하세요. 바쁜 하루 즐겁게 시작하세요~
전에 수식중에 아래의 경우 이해가 안가서 문의드립니다. 제 생각이 맞는지도 알고 싶구요.
1. 본절설정
if HH >= EntryPrice+PriceScale*10 and HH < EntryPrice+PriceScale*15 Then
ExitLong("매수본절",AtStop,EntryPrice);}
위 구문에서 ExitLong 으로 매수청산주문 을 들어간거 같은데요, 제가 구현하려는건 청산을 해버리는게 아니라 수익이 10틱이 되는 순간 -15틱으로 설정돼 있던 손절을 끌어올려서 매수진입가와 같게 해버린다는 것이고 매수포지션은 계속 살아있어서 만일 수익이 25틱에 다다르면 익절청산 되고 수익이 떨어져서 밑으로 계속 내려가면 이젠 손절가=매수진입가 가 되어있으므로 매수진입가에서 청산돼 버리는 겁니다.
2. 수식질문
var : MACDV(0),mav1(0),mav2(0),mav3(0),mav4(0),mav5(0),HH(0),LL(0),RR(0);
위 구문에서 RR(0) 는 수식 중에 안보이는데 어떤 기능인지 궁금합니다.
3. 기타 질문
MACD 관련 수식 표현에서
기준선 위에 있으면 MACD > 0 이라는 표현이 맞나요?
MACDV = MACD(short,long);
MACDS = ema(MACDv,sig);
에서 골든크로스 한다면 CrossUp(MACDV,MACDS) 라는 표현을 사용하는것 같은데요,
만일 이미 골든크로스 교차점을 지나서 1개봉 정도 갔다면 아래와 같은 표현을 사용해야 하나요?
MACDV > MACDS
골든크로스 수식을 써주면 정확히 크로스 하는 시점만을 찾는것 같아서 그렇습니다.
if MarketPosition == 1 Then
이런 표현은 "현재 매수포지션이 있다면" 이라는 의미 맞나요?
if MarketPosition <= 0 and , if MarketPosition >= 0 and
그런데 이런 표현의 의미는 무엇인가요?
모르는게 많습니다. 가르침 부탁드립니다.
수고하세요 ^^
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 문의드립니다
> 안녕하세요
예스스탁입니다.
청산 25틱으로 작성해 드립니다.
input : Short(12),Long(25),P1(5),P2(20),P3(30),P4(60),P5(120);
var : MACDV(0),mav1(0),mav2(0),mav3(0),mav4(0),mav5(0),HH(0),LL(0),RR(0);
MACDV = MACD(short,long);
mav1 = ma(C,P1);
mav2 = ma(C,P2);
mav3 = ma(C,P3);
mav4 = ma(C,P4);
mav5 = ma(C,P5);
if MarketPosition <= 0 and
MACDV > 0 and
mav1 > mav2 and mav2 > mav3 and mav3 > mav4 and mav4 > mav5 and
countif(mav2 > mav2[1],5) == 5 and
C < mav1 and c < mav2 Then{
buy();
PlaySound("a.wav~~~~~~~~");
}
if MarketPosition >= 0 and
MACDV < 0 and
mav1 < mav2 and mav2 < mav3 and mav3 < mav4 and mav4 < mav5 and
countif(mav2 < mav2[1],5) == 5 and
C > mav1 and c > mav2 Then{
sell();
PlaySound("b.wav~~~~~~~~");
}
if MarketPosition == 1 Then{
exitlong("매수익절",atlimit,EntryPrice+PriceScale*25);
HH = highest(H,BarsSinceEntry);
if HH < EntryPrice+PriceScale*10 Then
ExitLong("매수손절",AtStop,EntryPrice-PriceScale*15);
if HH >= EntryPrice+PriceScale*10 and HH < EntryPrice+PriceScale*15 Then
ExitLong("매수본절",AtStop,EntryPrice);}
if MarketPosition == -1 Then{
ExitShort("매도익절",atlimit,EntryPrice-PriceScale*25);
LL = Lowest(L,BarsSinceEntry);
if LL > EntryPrice-PriceScale*10 Then
ExitShort("매도손절",AtStop,EntryPrice+PriceScale*15);
if LL <= EntryPrice-PriceScale*10 and LL > EntryPrice-PriceScale*15 Then
ExitShort("매도본절",AtStop,EntryPrice);
}
즐거운 하루되세요
> 웹피 님이 쓴 글입니다.
> 제목 : 문의드립니다
> 오늘도 수고 많으십니다.
환경 : 이평선(5,20,30,60,120일선)
1.매수
(MACD가 기준선 아래서 골든크로스 또는 기준선 위에 있으며) and (이평선 정배열) and (20일선 우상향이 5개봉 이상 유지되고 있고) and (현재봉 시가가 5일선 and 20일선 밑에 있다) 일때 매수진입 및 a.wav 실행
2.매도
(MACD가 기준선 위에서 데드크로스 또는 기준선 아래에 있으며) and (이평선 역배열) and (20일선 우하향이 5개봉 이상 유지되고 있고) and (현재봉 시가가 5일선 and 20일선 위에 있다) 일때 매도진입 및 b.wav 실행
3.기타
.청산 100틱(트레일링스탑을 구현할수 없으면 청산 25틱)
.손절 15틱
.본절: 10틱이상 수익중이면 손절가를 진입가와 동일하게 변경
.트레일링스탑: 15틱이상 수익중이면 손절을 5틱에 걸고 10틱 단위로 트레일링스탑으로 손절값을 변경해준다. 손절값 변경시 마다 c.wav 실행
예>매수진입시 +15틱 수익시 +5틱 손절, +25틱 수익시 +15틱 손절, +35틱 수익시 +25틱 손절.....
.수익 틱수를 마지막 완료된 봉위에 출력이 가능하시면 부탁드립니다.
주말 즐겁게 보내세요 ^^
2016-12-13
111
글번호 104923