커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
8124
글번호 230811
답변완료
문의드립니다.
알에스아이가 70상향돌파할때 거래량이 전거래량보다 100프로 이상일때 매수.
손절은 당일 저가에서 5틱 더 내려갔을때..
알에스아이가 30하향돌파할때 거래량이 전거래량보다 100프로 이상일때 매도.
손절은 당일 고가에서 5틱 더 올라갔을때..
거래는 오전7시부터 새벽5시까지..
2017-07-01
172
글번호 110899
답변완료
안녕하세요?
안녕하세요?
유선상으로 53822문의 드린내용중에 질문입니다.
*.간혹 신호가 안뜨는 내용으로 질문을 드렸었는데요.
그림1: 청산이 안된 상태.
그림2: 청산이 된 상태.
그림2는 설정된 목표가에 도달하면 청산이 되어 다음 신호가 발생되는데요.
그림1은 설정된 목표가에 도달하지 않아 crossdown(var3,var4) 이부분을
간혹 처리하지 못하는것 같습니다.
아래내용으로 수식수정 요청드립니다.
그림1처럼 설정된 목표가에 도달하지 않아도 crossdown(var3,var4) 이부분이
진입신호를 만나게 되면 매수로 스위칭 될수 있도록 수정 부탁드립니다.
"crossdown(var3,var4)이후 20개이내봉" 조건이 매수와매도조건에 중복되는 경우도
예상되는데요.
종가기준 바로이전 crossdown(var3,var4) 조건만 적용이 가능하면 하다면 수정 부탁드립니다.
새로운 "crossdown(var3,var4)이후 20개이내봉"조건이 발생하면 봉카운터가 리셋 되어서
그전 "crossdown(var3,var4)이후 20개이내봉" 조건은 적용되지 않는 조건입니다.
수식수정이 가능 하다면 수정 부탁드립니다.
항상 친절하게 도움주심에 감사드립니다.
------------------------------------------------------------------------
var : ii(0),T(0),TT(0);
var2 = ma(c,20);
if var2 > var2[1] Then
T = 1;
if var2 < var2[1] Then
T = -1;
if C > O Then
TT = 1;
if C < O Then
TT = -1;
if Crossdown (var3 , var4) and T == -1 Then{
ii = index;
Condition1 = false;
}
if MarketPosition == 1 Then
Condition1 = true;
if Condition1 == false and
var3<var4 and index >= ii and index < ii+20 and T == -1 and
TT == 1 and TT[1] == 1 Then
buy("b",OnClose,def,1);
if Crossdown (var3 , var4) and T == 1 Then{
ii = index;
Condition1 = false;
}
if MarketPosition == -1 Then
Condition1 = true;
if Condition1 == false and
var3<var4 and index >= ii and index < ii+20 and T == 1 and
TT == -1 and TT[1] == -1 Then
sell("s",OnClose,def,1);
2017-07-01
224
글번호 110898
답변완료
수식 수정 부탁드립니다.
안녕하세요
오류가 있어서 수정 부탁드립니다.
1.
var : sum(0),sum1(0),Didx(0);
var : DD(0),LL(0),HH(0),RR(0);
if Bdate != Bdate[1] Then{
sum = 0;
sum1 = sum[1];
Didx = Didx+1;
}
sum = sum + money;
if DayHigh(0) >= DayClose(1)*1.15 and DayHigh(0) >= DayLow(0)*1.15
and DayClose(0) >= DayOpen(0)*1.09 and sum >= 25000000000 Then{
HH = max(DayLow(0),DayHigh(0));
LL = Min(DayLow(0),DayHigh(0));
RR = (HH+LL)/2;
DD = Didx;
}
if DD > 0 and Didx < DD+5 and Didx >= DD Then{
plot1(HH);
plot2(LL);
plot3(RR);
plot4(LL+(HH-LL)*0.764);
plot5(LL+(HH-LL)*0.618);
plot6(LL+(HH-LL)*0.382);
}
이렇게 했는데요 첨부 파일에서 보듯이 이렇게 하고 싶은데요.
수정 부탁드립니다.
2.
input : Period(260),BarRio(0.01),Percent1(50);
var : B(0),sumB(0);
B = IFF((C-O)/O>=BarRio or (C[1]*1.02<=H and C>=O) or (C[2]>O[2]*1.01 and C[1]>O[1]*1.01 and C>=O)
, V, IFF((C-O)/O<=-BarRio or (C < O and C[1]*1.03 <= H) or (C[1]*0.99>=C and C < O)
or (C[1]*0.97>=L and C < O) or (H[1]*0.97 > C and O>C),-V,0));
sumB = sumB+B;
var1 = sumB-Lowest(sumB,Period);
var2 = highest(SumB,Period)-SumB;
var3 = highest(SumB-Lowest(SumB,Period),Period)*(Percent1/100);
plot1(var1,"XX",RED);
plot2(var3,"50%",YELLOW);
이렇게 했는데요
여기서 Period(260) 대신 날짜 지정을 해서 지표값을 출력할순 없을까요?
예를 들어 2017/04/28 부터 값을 보고 싶으면 어떻게 수정을 해야 하나요?
감사합니다~ 항상 행복하세요
2017-07-03
298
글번호 110897
답변완료
추가수식부탁드립니다.
안녕하세요..글번호 49899 에 추가부탁드립니다.(전항목 데이타4 지정)
데이타4 전일주간장시가라인
데이타4 전일주간장고점라인
데이타4 전일주간장저점라인
데이타4 전일주간장종가라인
데이타4 전일야간장고점라인
데이타4 전일야간장저가라인
데이타4 전일야간장종가라인
데이타4 당일야간장고가라인
데이타4 당일야간장저가라인
데이타4 당일야간장종가라인
데이타4 주간장고가라인 (야간장시가에서~야간장마감구간까지)
데이타4 주간장저가라인 (야간장시가에서~야간장마감구간까지)
데이타4 주간장종가라인 (야간장시가에서~야간장마감구간까지)
수고하세요..꾸벅
2017-07-01
199
글번호 110896
답변완료
질문드립니다.
if MarketPosition == -1 then{
if Low <= k60 Then
ExitShort();
if countif(CrossDown(c,m3),BarsSinceEntry) >= 1 and CrossUp(C,m3) Then
ExitShort();
If ExitName(-1) == "L1매도청산" Then;
if countif(CrossDown(c,r1+m4),BarsSinceEntry) >= 1 and CrossUp(C,m5) Then
ExitShort();
If ExitName(-1) == "L2매도청산" Then;
SetStopLoss(PriceScale*4,PointStop);
if stime == 050000 then{
exitlong();
exitshort();
}
1. 이렇게짜면 최종목표가인 k60에서 청산은 되는데 밑 L1매도청산과 L2매도청산이 되질않습니다. 각 선이 밑으로 점점있으면 새로 청산해야하는 선이 갱신되야하는데 말이지요
2. 그리고 시스템 신호에서 매도신호중이고 틱값으로 4틱 절대손절값을 주었을때 매도포지션 보유중에 손절값이 오지않았는데 매수신호가오면 포지션을 정리하고 매수로 들어가버립니다.
3. exitname은 저렇게쓰는게 맞는지요
4. 당일청산 수식을 넣었는데 왜 안되는지요. 시스템 설정에서 설정하면 시그널이 안뜨네요.
2017-07-01
230
글번호 110895
답변완료
안녕하세요! 주식 조건 검색식 좀 의뢰드려요
아래는 너무 나도 유명한 알랙산더 앨더의 책 '나의 트레이딩 룸으로 오라(come into my trading room)'에 소개된 조건식 내용으로 아래 조건대로 조건식을 만들어
종목을 선택하고 싶습니다.
주봉과 일봉 2가지 검색식으로 선별하고 싶습니다.
[검색 조건]
1> (주봉상의 지수이평(13)이 전주의 지수이평보다 상승하고 주봉상의 MACD오실레이터(12,26,9)가 전주보다 상승)일때
2> (일봉상의 지수이평(13)이 전일의 지수이평보다 상승하고 일봉상의 Macd오실레이터(12,26,9)가 전일보다 상승)일때 진입 시점을 찾고 싶습니다.
부탁드립니다.
2017-07-01
349
글번호 110894
답변완료
수식 작성 문의드립니다.
지난번에 종목코드 이름으로 CSV 파일 저장을 여쭤보았는데요
한번에 전체 종목의 분봉 데이터를 다운 받는 수식을 짤 수는 없나요??
2017-06-30
224
글번호 110893
답변완료
수식작성 부탁합니다.
아래 조건 수식 작성좀 부탁합니다.
매수 진입
1차 조건 : 캔들의 종가가 볼밴 하단을 이탈할 것.
한 번 만족한 위 1차 조건은 해제하지 말고 유지하고 있다가 아래 2차 조건을 만족하면 매수 진입한다
2차조건 : 볼밴의 상단이 우상향일 때는 진입하지 말고 수평 또는 우하향일 때만 진입할 것
매도 진입
1차 조건 : 캔들의 종가가 볼밴 상단을 돌파할 것.
한 번 만족한 위 1차 조건은 해제하지 말고 유지하고 있다가 아래 2차 조건을 만족하면 매도 진입한다
2차조건 : 볼밴의 하단이 우하향일 때는 진입하지 말고 수평 또는 우상향일 때만 진입할 것
1차~2차 조건을 동시에 만족하는 경우가 거의 없어 진입 기회가 오지 않아 1차 만족후 보유하고 있는 상태에서 2차 조건을 만족하면 진입해보려고 합니다.
2017-06-30
185
글번호 110888
답변완료
부탁드립니다
input : 시작시간(090000),종료시간(152000);
input : Period15(200),Period16(100),Period17(40),Period18(20),익절틱수(20),손절틱수(15);
Input : Period(500),sigPeriod(150);
input : Period33(100),sigPeriod34(75);
input : Period43(20),sigPeriod44(15);
var : mav15(0),mav16(0),mav17(0),mav18(0),Bxcond(false),Sxcond(false);
var : Tcond(false);
mav15 = ma(c, Period15);
mav16 = ma(c, Period16);
mav17 = ma(c, Period17);
mav18 = ma(c, Period18);
value1 = TRIX(Period);
value2 = ema(value1, sigPeriod);
value3 = TRIX(Period33);
value4 = ema(value3, sigPeriod34);
value5 = TRIX(Period43);
value6 = ema(value5, sigPeriod44);
if Bdate != Bdate[1] then
{
Tcond = True;
BXcond = false;
SXcond = false;
}
if stime == 종료시간 or (stime > 종료시간 and stime[1] < 종료시간) Then{
Tcond = false;
if MarketPosition == 1 Then
ExitLong();
if MarketPosition == -1 Then
ExitShort();
}
if TotalTrades > TotalTrades[1] then{
BXcond = false;
SXcond = false;
if (IsExitName("bl",1) == true or IsExitName("bp",1) == true) Then
BXcond = true;
if (IsExitName("sl",1) == true or IsExitName("sp",1) == true) Then
SXcond = true;
}
if Tcond == true then{
if MarketPosition <= 0 and Bxcond == false and
(value1 > value2 and value3 > value4 and
mav15[3] < mav15[2] and mav15[2] < mav15[1] and mav15[1] < mav15 and
mav16[1] < mav16 and mav17[1] < mav17 and mav18[3] < mav18[2] and mav18[2] < mav18[1] and mav18[1] < mav18) Then
buy("b1",OnClose,def,1);
if MarketPosition <= 0 and Bxcond == false and
(value1 > value2 and value3 < value4 and value5 > value6 and mav18[3] < mav18[2] and mav18[2] < mav18[1] and mav18[1] < mav18) Then
buy("b2",OnClose,def,1);
if MarketPosition == 1 Then{
if (mav17[1] < mav17 and mav18[1] < mav18 and CurrentContracts < 3) Then
buy("bb1",OnClose,def,1);
if (mav17[1] < mav17 and mav18[3] >= mav18[2] and mav18[2] <= mav18[1] and mav18[1] < mav18 and CurrentContracts < 5) Then
buy("bb2",OnClose,def,1);
if IsEntryName("b1") == true and
(CrossDown(value1, value2)) or (CrossDown(value3, value4)) or
(mav17[3] > mav17[2] and mav17[2] > mav17[1] and mav17[1] > mav17 and
mav18[3] > mav18[2] and mav18[2] > mav18[1] and mav18[1] > mav18) Then
ExitLong("bx1");
if IsEntryName("b2") == true and CrossDown(value5, value6) Then
ExitLong("bx2");
ExitLong("bp",atlimit,AvgEntryPrice+PriceScale*익절틱수);
ExitLong("bl",AtStop,AvgEntryPrice-PriceScale*손절틱수);
}
if MarketPosition >= 0 and Sxcond == false and
(value1 < value2 and value3 < value4 and
mav15[3] > mav15[2] and mav15[2] > mav15[1] and mav15[1] > mav15 and
mav16[1] > mav16 and mav17[1] > mav17 and mav18[3] > mav18[2] and mav18[2] > mav18[1] and mav18[1] > mav18) Then
sell("s1",OnClose,def,1);
if MarketPosition >= 0 and Sxcond == false and
(value1 < value2 and value3 > value4 and value5 < value6 and mav18[3] > mav18[2] and mav18[2] > mav18[1] and mav18[1] > mav18) Then
sell("s2",OnClose,def,1);
if MarketPosition == -1 then{
if mav17[1] > mav17 and mav18[1] > mav18 and CurrentContracts < 3 Then
sell("ss1",OnClose,def,1);
if mav17[1] > mav17 and mav18[3] <= mav18[2] and mav18[2] >= mav18[1] and mav18[1] > mav18 and CurrentContracts < 5 Then
sell("ss2",OnClose,def,1);
if IsExitName("s1") == true and
(crossup(value1, value2)) or (crossup(value3, value4)) or
(mav17[3] < mav17[2] and mav17[2] < mav17[1] and mav17[1] < mav17 and
mav18[3] < mav18[2] and mav18[2] < mav18[1] and mav18[1] < mav18) Then
ExitShort("sx1");
if IsExitName("s2") == true and crossup(value5, value6) Then
ExitShort("sx2");
ExitShort("sp",atlimit,AvgEntryPrice-PriceScale*익절틱수);
ExitShort("sl",AtStop,AvgEntryPrice+PriceScale*손절틱수);
}
}
위 수식에서 한가지 이상한 점이 있어 문의합니다
다른 수식은 정상으로 동작하지만
s2-ss1-ss2 ====== sx2 (모두청산)이 정상적으로 동작하지 않고 있습니다
b1-bb1-bb2 ====== bx1 모두청산정상
b2-bb1-bb2 ====== bx2 모두청산정상
s1-ss1-ss2 ====== sx1 모두청산정상
s2-ss1-ss2 ====== sx2 동작불가 sx1으로 동작
어떤 이유인지 모르겠습니다
계속 수정도 했지만 원인을 모르겠습니다
수정해 주시면 대단히 고맙겠습니다
매번 감사합니다
2017-06-30
176
글번호 110887