커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4356
글번호 230811
답변완료
문의드립니다.
이평1 이평2 아래에 있고 rsi가 30를 세번째 상향돌파 매수 네번째 상향돌파 매수
당일 저가보다 6틱 더 내려갔을때 손절..
이평1 이평2 위에 있고 rsi가 70을 세번째 하향돌파 매도 네번째 하향돌파 매도
당일 고가보다 6틱 더 올라갔을때 손절..
수고하세요.
2017-07-04
112
글번호 110972
답변완료
지난번 답변 주셨던것에 대해 추가해봅니다
전일종가와 당일시가의 갭이 발생했을때 진입하지 않는 조건으로 아래의 식을 주셨습니다.
var : entry(false);
entry = false;
if DayOpen == DayClose(1) Then
entry = true;
if dayopen > DayClose(1) and daylow <= DayClose(1) Then
entry = true;
if dayopen < DayClose(1) and DayHigh >= DayClose(1) Then
entry = true;
if entry == true then
{
진입청산수식들
}
1)그런데 갭이 캔들의 몸통으로 채워지려면 daylow(dayhigh) 대신에 dayclose를 사용하면 안되나요? 위의 수식에서는 캔들의 꼬리만 갭안으로 들어와도 충족되는 것 같아서요.
2)그리고 갭이 채워지고 나서 바로 'true'가 되면 안되고 3개의 캔들(60분봉이라면 3시간 후)을 지나보내고 'true'가 되었으면 하는데 어떻게 하면 될까요??
2017-07-04
107
글번호 110971
답변완료
30분 고저 기준 사용자 함수 요청입니다.
수고하십니다.
30분 기준의 하기의 고저점을 사용자 함수로 만들어
검색 및 타주기 지표로 사용하고자 합니다.
HLRate, M20Rate 값을 가져 올수 있게 하고싶습니다.
부탁드립니다.
var : HH(0),LL(0),Sma5(0),Rbar(0),RC(0),HLRate(0),M20Rate(0);
Sma5 = ma(c,5);#5이평
#이평 하락반전일때 HH를 고점으로 저장
if Sma5 < Sma5[1] and Sma5[1] > Sma5[2] Then{
HH = Highest(C,5);
}
#이평 상승반전일때 LL를 저점으로 저장
if Sma5 > Sma5[1] and Sma5[1] < Sma5[2] Then{
LL = Highest(C,5);
}
HLRate = (1-(Highest(HH,40)/Lowest(LL,40)))*100;
M20Rate = ((1-(H/Ma(C,20)))*2.2)*100;
Plot4(HLRate,"고저기준");
Plot5(M20Rate,"Ma20기준 고가");
2017-07-04
112
글번호 110969
답변완료
5392 재문의
빠르고 친절한 답변 감사합니다.
보유 수량의 청산 관련 문의 입니다.
자동 매수 조건을 단계별로 설정해 놓은 경우
일부 매수 조건을 충족시키지 못하여
일부 수량만 확보하는 경우가 있는데
이런 경우 단계별로 매도를 하는 수식 좀 부탁드립니다.
예를 들어 현재 보유 수량이 n개일 경우
1/2 은 5일 이평선이 20일 이평선을 붕괴하는 경우 청산하고
나머지 1/2은 5일 이평선이 60일 이평선을 붕괴하는 경우
청산하고자 합니다.
2017-07-04
106
글번호 110968
답변완료
종목 검색식 좀 다시 부탁드립니다
참조 그림 추가합니다!
제 챠트는 이동 평균선 13, 65일 / MACD (12,26,9) (60, 130, 45) (13,12,26,9) 이렇게 설치되어 있습니다. 모두가 임펄스 시스템에 맞주어져 있습니다.
그래서 검색식도 임펄스 시스템에 맞추고 싶습니다.
첨부그림에서 처럼 파랑색 동그라미가 일치하는 조건에 맞는 종목을 검색하고 싶습니다.
파랑 동그라미는 = 이평선 13선 이 65선을 처음 돌파하기 시작이며 /
MACD 오실레이터 3가지 (12,26,9) (60, 130, 45) (13,12,26,9) 가 모두 0선 위로 올라서기
시작하는 순간입니다.
특히 MACD 오실레이터 2가지 (12,26,9) (60, 130, 45) 가 꼭 0선 위에서 동시에 시그널이
시작하는 순간을 좋아합니다.
위 조건에 부합하는 종목을 일봉, 주봉, 15분봉에서 뽑고 싶습니다.
부탁드립니다.
2017-07-04
157
글번호 110967
답변완료
질문드립니다.
If Condition2 and MRO(Condition2,3,2) == -1 Then 이라는 조건이 있습니다.
위조건을 3번 만족하면 plotpaintbar red를띄울려면 로직을 어떻게 써야 할까요?
2017-07-03
118
글번호 110966
답변완료
질문드립니다.
밑의 질문과 구분이 어려울 수 있어 따로올립니다.
작성자님이 올려준 로직대로 해보았는데요.
Condition2 = (Close+PriceScale*2);
If p < P[5] Then
If Condition2 and MRO(Condition2,3,2)= = -1 Then{
If Close < h range value Then
If Close > l range value Then
If MarketPosition = = 0 Then
Sell("중돌매도");}
if MarketPosition = = -1 then{
If Close < l range value Then
ExitShort();
if CountIF(CrossDown(c,m3),BarsSinceEntry) >= 1 and CrossUp(C,m3) Then // H1
ExitShort("h1청산",OnClose,EntryPrice);
if CountIF(CrossDown(c,r1+m3/2),BarsSinceEntry) >= 1 and CrossUp(C,r1+m3/2) Then // H2
ExitShort("h2청산",OnClose,EntryPrice);
if CountIF(CrossDown(c,r1),BarsSinceEntry) >= 1 and CrossUp(C,r1) Then // H3
ExitShort("h3short",OnClose,EntryPrice);
SetStopLoss(12*PriceScale);
If sTime== 050000 or(sTime > 050000 and 050000 < sTime) Then{
ExitLong();
ExitShort();}
}
if marketposition == 0 then 조건을 주어도 바로 청산이되네요.
그리고 매수에 stoploss로 12틱을 걸었는데 청산지점이 희한한 곳에서 됩니다.
2.각 라인에서 crossup과 crossdown이 같이 일어나는 에러가 나는걸까요. 전혀 그럴일은 barssinceentry때문에 그럴일은 없는데 말이지요..
3. condition1~ then 매도로 12틱 손절하였는데 손절한 캔들 바로 한 캔들 전이 매수신호 였다면 현재캔들에서 추격매수 이건 로직으로 할려면 어떻게 해야할까요?
총 첨부하겠습니다. 늘 노고에 감사드립니다.
2017-07-03
155
글번호 110965
답변완료
지표값 문의 드립니다
해외 선물에서 문의드립니다
크루드오일 같은 경우는 ,우리나라 시장과는 거래시간이 다른데요,,,
지표값의 전일 고가,저가,시가,종가를 나타내려면 어떻게 해야 하나요?
전일이란 개념이 우리나라 시간으로 맞춰서 본다고 가정하면,
아침 7시에 시작해서 다음날 아침 6시 정도에 끝나는 것 같던데,
이런 경우에는 어떻게 해야하는지 알려주시면 감사하겠습니다,,
2017-07-03
145
글번호 110964
답변완료
질문드립니다.
var : WH(0),WL(0),Dcnt(0);
#영업일 기준으로 한주의 시작
if DayOfWeek(bdate) < DayOfWeek(bdate[1]) Then{
WH = H;#주간 최고가를 저장할 변수(초기값 해당봉고가)
WL = L;#주간 최저가를 저장할 변수(초기값 해당봉저가)
Dcnt = 0; #주간 날짜수를 저장할 변수(초기값0)
}
#영업일이 변경되면 1씩 증가
if bdate != bdate[1] Then
Dcnt = Dcnt+1;
#WH에 저장된 값보다 큰 고가가 발생하면 WH에 값을 현재봉 고가로 변경
if H > WH Then
WH = H;
#WL에 저장된 값보다 작은 저가가 발생하면 WL에 값을 현재봉 저가로 변경
if L < WL Then
WL = L;
#주간 첫날이면
if Dcnt == 1 then{
var1 = max(WH,dayhigh(1));
var2 = 10^(((log10(max(WH,dayhigh(1)))-log10(min(WL,daylow(1))))*-0.236)+log10(max(WH,dayhigh(1))));
var3 = 10^(((log10(max(WH,dayhigh(1)))-log10(min(WL,daylow(1))))*-0.382)+log10(max(WH,dayhigh(1))));
var4 = 10^(((log10(max(WH,dayhigh(1)))-log10(min(WL,daylow(1))))*-0.500)+log10(max(WH,dayhigh(1))));
var5 = 10^(((log10(max(WH,dayhigh(1)))-log10(min(WL,daylow(1))))*-0.618)+log10(max(WH,dayhigh(1))));
var6 = 10^(((log10(max(WH,dayhigh(1)))-log10(min(WL,daylow(1))))*-0.764)+log10(max(WH,dayhigh(1))));
var7 = min(WL,daylow(1));
}
else{#두번째 날부터
var1 = WH;
var2 = 10^(((log10(WH)-log10(WL))*-0.236)+log10(WH));
var3 = 10^(((log10(WH)-log10(WL))*-0.382)+log10(WH));
var4 = 10^(((log10(WH)-log10(WL))*-0.500)+log10(WH));
var5 = 10^(((log10(WH)-log10(WL))*-0.618)+log10(WH));
var6 = 10^(((log10(WH)-log10(WL))*-0.764)+log10(WH));
var7 = WL;
}
If DayOpen > Close Then
Sell();
if MarketPosition == -1 then{
if countif(CrossDown(c,var3),BarsSinceEntry) >= 1 and crossup(C,var3) Then
ExitShort();
if countif(CrossDown(c,var4),BarsSinceEntry) >= 1 and crossup(C,var4) Then
ExitShort();
if countif(CrossDown(c,var5),BarsSinceEntry) >= 1 and crossup(C,var5) Then
ExitShort();
if CrossDown(c,var6) Then
ExitShort();
if stime == 050000 or (stime > 050000 and stime< 050000) then{
exitlong();
exitshort();}
SetStopLoss(12*PriceScale);
}
올려주신 수식인데요. 당일청산 넣고 했습니다. 근데 사진을 보시면 청산과 진입이 동시에 되고있습니다. barssinceEntry로 경과봉수를 count하지만 crossdown과 crossup이 같이 일어날 수 없고 동시에 신호가 나오면 신호가 나오는즉슨 팔 수 밖에 없지않나요? 실제로 봉갯수를 보면 0개에 진입과 청산이 되고있음을 볼 수 있습니다.
2. 매도시그널이 12틱에 온전히 안되는 이유가 무엇인지요?
3. 사진과 같이 종가가 var선 어디서 시작할지 모르는데 저렇게 쭉 나열해놓으면 종가가 어디에 위치하든 위치하는 시점부터 (위에선을 배제한체) 라인을 구분하여 진입하여 청산하는건가요? 거기서 에러가뜨면 동시 진입, 청산이 이루어지지 않을까 싶은데요.
2017-07-03
175
글번호 110963