커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
6545
글번호 230811
답변완료
SetstopProfit 함수관련 문의
업무에 노고가 많으십니다.
Setstopprofit 함수를 사용할때, 지정된 조건이나 지정한 진입명을 만족할때만
적용되도록 하는 방법을 알고 싶습니다. 아래와 같이 적용해도 조건이나 진입명과
무관하게 모든 경우에 SetStopProfittarget(10, Percentstop) 함수가 작동되고 있고,
Exitlong으로 수정해서 적용할 경우, 결과값이 다르게 나오네요.
예를 들어,
If 조건 Then SetStopProfittarget(10, Percentstop);
또는
If IsEntryname("AA") == true Then SetStopProfittarget(10, Percentstop);
2015-08-28
134
글번호 89908
답변완료
함수수정 요청
아래의 함수에서 진입시의 봉에 청산주문이 나오지 않게
즉, 진입한 익봉부터 청산주문이 가능하도록 함수를 수정하고 싶습니다.
var : entry1(0);
var : ho1(0),OL1(0),HL1(0);
var : maho1(0),maOL1(0),maHL1(0);
var : cnt1(0),sumho1(0),sumOL1(0),sumHL1(0);
var : EntryCnt1(0);
var : V1(0),V2(0),V3(0),V4(0),V5(0);
var : V6(0),V7(0),V8(0),V9(0),V10(0);
if bdate != bdate[1] Then
entry1 = 0;
if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then
entry1 = entry1+1;
ho1 = Dayhigh-Dayopen;
OL1 = DayOpen-DayLow;
HL1 = DayHigh-DayLow;
sumho1 = 0;
sumOL1 = 0;
sumHL1 = 0;
for cnt1 = 1 to 10{
sumho1 = sumho1 + (dayhigh(cnt1)-dayopen(cnt1));
sumOL1 = sumOL1 + (DayOpen(cnt1)-DayLow(cnt1));
sumHL1 = sumHL1 + (DayHigh(cnt1)-DayLow(cnt1));
}
maho1 = sumho1/10;
maOL1 = sumOL1/10;
maHL1 = sumHL1/10;
V1 = dayopen(0)+maho1;
V2 = DayOpen(0)-maOL1;
V3 = DayOpen(0)+maHL1;
V4 = DayOpen(0)-maHL1;
V5 = NthMaxList(1,V1,V2,V3,V4);
V6 = NthMaxList(2,V1,V2,V3,V4);
V9 = NthMaxList(3,V1,V2,V3,V4);
V10 = NthMaxList(4,V1,V2,V3,V4);
V7 = (V5+V10)/2;
V8 = (V6+V9)/2;
if MarketPosition == 0 and entry1 == 0 Then{
if V7 > V8 Then
sell("s1",AtStop,V7-0.02);
if V7 < V8 Then
sell("s2",Atlimit,V8-0.02);
}
if MarketPosition == -1 and IsEntryName("s1") == true Then{
ExitShort("sp1",atlimit,V9-0.03);
ExitShort("sl1",AtStop,V6);
}
if MarketPosition == -1 and IsEntryName("s2") == true Then{
ExitShort("sp2",atlimit,V9-0.03);
ExitShort("sl2",AtStop,V6);
}
var : TF(0);
var : Xtime(0), Etime(false),cnt(0),mav1(0),mav2(0);
var : HV(0),LV(0),HV1(0),LV1(0),HV2(0),LV2(0);
Array : HH[50](0),LL[50](0),CC[50](0);
mav1 = ma(c,5);
mav2 = ma(C,20);
TF = TimeToMinutes(stime)%30;
if Bdate != Bdate[1] Then{
Etime = true;
if stime >= 090000 Then
Xtime = 050000;
Else
Xtime = 060000;
}
if Bdate != Bdate[1] or (TF < TF[1] and stime > stime[1]) or date != date[1] Then{
HH[0] = H;
LL[0] = L;
for cnt = 1 to 49{
HH[cnt] = HH[cnt-1][1];
LL[cnt] = LL[cnt-1][1];
CC[cnt] = CC[cnt-1][1];
}
}
if H > HH[0] Then
HH[0] = H;
if L < LL[0] Then
LL[0] = L;
CC[0] = C;
if HH[25+2] > 0 Then{
HV = HH[0];
LV = LL[0];
HV1 = HH[1];
LV1 = LL[1];
HV2 = HH[2];
LV2 = LL[2];
for cnt = 0 to 25{
if HH[cnt] > HV Then
HV = HH[cnt];
if LL[cnt] < LV Then
LV = LL[cnt];
if HH[cnt+1] > HV Then
HV = HH[cnt+1];
if LL[cnt+1] < LV Then
LV = LL[cnt+1];
if HH[cnt+2] > HV Then
HV = HH[cnt+2];
if LL[cnt+2] < LV Then
LV = LL[cnt+2];
}
var1 = (HV+LV)/2;
var2 = (HV1+LV1)/2;
var3 = (HV2+LV2)/2;
if Etime == true then{
if MarketPosition == 0 and CC[0] > var1 and CC[1] < var2 and CC[2] < var3 and C >= daylow+0.5 Then
buy("b",AtMarket);
if MarketPosition == 1 and c <= highest(H,BarsSinceEntry)-0.5 and CrossDown(mav1,mav2) Then
ExitLong("bx",AtMarket);
}
}
if stime == Xtime or (stime > Xtime and stime[1] < Xtime) Then{
Etime = false;
ExitLong();
}
SetStopLoss(0.8,PercentStop);
SetStopProfittarget(3,PercentStop);
SetStopInactivity(3,23,PercentStop);
2015-08-28
131
글번호 89907
답변완료
수정부탁드립니다.
현재 분봉기준 전일누적거래량과 당일누적거래량을 비교하는 검색식입니다.
이것을 전전일과 당일 비교로 변경해주시면 감사하겠습니다.감사합니다..
input : Per(100);
var : cnt(0),PreV(0);
PreV = 0;
for cnt = 1 to 500 {
if sdate[cnt] < sdate and stime[cnt] <= stime then{
PreV = DayVolume[cnt];
cnt = 1000;
}
}
if PreV > 0 and DayVolume >= PreV*(per/100) then
find(DayVolume/PreV*100);
2015-08-28
115
글번호 89904
답변완료
일목 균형
일목균형표에서
기준값은 현재가을 기준으로
1.현재가와 선행1의진폭 만큼 선행1을 기준으로 대칭선(반대로)을 만들고
2.현재가와 선행2의진폭 만큼 선행2을 기준으로 대칭선(반대로)을 만들고 싶습니다
3.그리고 1,2의선의 고점과고점을 연결하는선,저점과저점을 연결하는 선을 만들고
싶습니다
감사합니다
2015-08-28
186
글번호 89903
만강 님에 의해서 삭제되었습니다.
2015-08-28
0
글번호 89902
답변완료
수식 문의입니다.
현재의 캔들자리에 수직선을 그리는 수식 부탁드립니다.
2015-08-28
130
글번호 89896
9회말2아웃 님에 의해서 삭제되었습니다.
2015-08-28
1
글번호 89894
답변완료
시스템 문의드립니다.
안녕하세요? 시스템트레이딩 막 입문한 초보입니다.
처음으로 전략을 짜서 모의거래에 돌려봤는데 엉뚱한 결과가 나오네요.
검토하시고 수정 좀 부탁드립니다.
전략내용은 대략 다음과 같습니다.
<진입>
추세방향판단 : 60이평선 우상향 매수만. 우하향 매도만
매수: 60,20이평선 우상향. 전봉이 음봉이고 5일선아래서 양봉전환시
매도: 60,20이평선 우하향. 전봉이 양봉이고 5일선위에서 음봉전환시
당일2회(07:00~16:00,16:00~04:30) 트레이딩 시작후 최초매수면 2개매수,최초매도면 2개매도
단타포지션-단타목표치도달시 TS청산, 신호시 반복 재진입
추세포지션-20일이평선 반전시 청산
<청산>
손절 : -10틱
본절 : 10틱 수익시 진입가+2틱으로 손실방지
청산 : 단기포지션- 20틱 수익시 TS 청산
추세포지션- 20이평선 방향전환시 청산
장종료전 04:30 포지션 모두 정리
[질의내용]
1.
stop 이 잘안먹히고 본절,청산시 손실이 30~150틱이 나오는데 이유를 잘 모르겠습니다.
2.
장종료 모두 청산되어야 하는데 다음날켜보면 청산안된 포지션이 남아있는데 왜 그런지 모르겠습니다.
혹시 0430 이전에 프로그램 종료후 당일매매종료라 생각하고 컴퓨터를 꺼버리기도 하는데 그경우에 문제가 발생하나요?
3.
if MarketPosition == 0 and LongEntryCount == 0 and // 첫매수
countif(C<O and C < Sma1,10) >= 1 and crossup(c,Sma1) and C > O Then {
buy("b1",OnClose,def,1);
buy("b1ts",OnClose,def,1);
LongEntryCount = LongEntryCount +1 ;
위 진입식에서 봉 완성후 진입하니 장대봉일경우 손실이 크던데 이평선 돌파 순간에 진입하는 방법은 없나요?
그리고 countif 적용을 10봉이 아니라 당일 거래오픈후로 바꾸고 싶은데 어떻게 바꾸어야 하나요?
4.
한계좌에서 위의전략을 오일과 금 해외선물에 동시에 실행하면 문제가 생기나요?
초보라 질문이 많네요.
아래내을 바로 전략실행할 수 있게 손 좀 봐주시길 부탁드립니다.
감사합니다.
2015-08-28
211
글번호 89889
답변완료
수식 문의
안녕하세요. 하기 추가 조건에 준한 신호발생 2가지 수식 부탁드립니다.
* 1번 *
Input : Period(12), Period1(5), Period2(5);
value1 = StochasticsK(Period,Period1);
value2 = StochasticsD(Period,Period1,Period2);
# 매수/매도청산
If CrossUP(value1, value2) Then
{
Buy();
}
# 매도/매수청산
If CrossDown(value1, value2) Then
{
sell();
}
[ 추가 조건 ]
- 매수/매도청산 : 40 이하
- 매도/매수청산 : 60 이상
* 2번 *
Input : af(0.02), maxAF(0.2) ;
Var : value(0);
value = csar(af,maxAF);
# 매수/매도청산
If C > value Then
{
Buy();
}
# 매도/매수청산
If C < value Then
{
Sell();
}
[ 추가 조건 ]
Stochastics: Period(12), Period1(5), Period2(5);
- 매수/매도청산 : 40 이하
- 매도/매수청산 : 60 이상
2015-08-28
115
글번호 89886