커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4775
글번호 230811
답변완료
함수 수정 요청
아래의 함수는 영업일 기준으로 날짜를 계산하고 있습니다.
그런데 날짜의 구분을 Bdate가 아닌 date 즉, 우리시각으로 자정을 기준으로 날짜를 계산하는 함수로 수정하고 싶습니다.
해외선물의 금일 하루 거래는 써머타임기간인 26일 수요일 오전 7시~ 27일 오전7시 15분이 아닌,
26일 0시 0분부터 23시 59분 59초까지로 아래 함수를 짜고 싶습니다.
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-26
129
글번호 89841
에리조나 님에 의해서 삭제되었습니다.
2015-08-26
0
글번호 89840
답변완료
수식부탁드립니다.
안녕하세요?
항상 수고가 많으십니다.
아래의 내용을 어떻게 표현하는지 부탁드립니다.
감사합니다.
일봉상 당일 종가상 5일연속 5일선 위에 있으며, 5일, 20일, 60 일 정배열인 종목검색
분봉상 시초가 대비 1% 하락시 매수
분봉상 시초가 대비 2% 하락시 매수
분봉상 당일 시초가 돌파시 매수
2015-08-26
128
글번호 89839
답변완료
전환선.
안녕하세요.
일목에서 전환선 기울기가 전봉기울기보다 0.1이상 높으면서 음봉이면 매수
일목에서 전환선 기울기가 전봉기울기보다 0.1이하 낮으면서 양봉이면 매도
(손익/손절은 각각 0.3으로 설정)
수식 부탁합니다...
2015-08-26
125
글번호 89838
답변완료
거래시스템 조정
항상 감사드립니다
아래 거래량이용 조건식을 변경하고싶습니다
1.지표식
If V== highest(V,10) then
Var1=(C+H+L)/3;
Plot(var1);
질문1)
var1과 var1[1]값의 의미가
var1 현재봉으로부터 앞전10개봉까지의 최고가
var1[1] 앞전11개봉부터 20번째봉까지의 최고가
var1,var1[1] 의 의미는?
질문2)
2-1 상승방향
현재봉의 거래선라인값을 (현재직선구간) var1
현재거래선라인의 앞전직선구간 값을 var2 라할때
var1-var2 >= 0.3 이면
var10=1
Var1(현재직선라인)
+++++++++>>>
+
Var2 (앞전직선라인)+
++++++++>>
2-2하락방향
현재봉의 거래선라인값을 (현재직선구간) var1
현재거래선라인의 앞전직선구간 값을 var2 라할때
var1-var2 <= -0.3 이면
var10=-1
var2(앞전직선라인)
+++++++++>>
+
+ var1(현재직선라인)
+++++++++++>>>
감사합니다.
2015-08-26
110
글번호 89836
답변완료
시스템 수식
안녕하세요. 수고 많으십니다.
하기 수식에 추가 조건 부탁드립니다.
[ 추가조건 ]
1. 매수/매도청산 : 0선 이하에서만 발생
2. 매도/매수청산 : 0선 이상에서만 발생
- 하기 -
Input : shortPeriod(12), longPeriod(26), Period(9);
Var : MACDv(0),T(0);
MACDv = MACD(shortPeriod, longPeriod);
if MACDV < MACDV[1] Then
T = -1;
Else
T = 1;
if T == 1 and T[1] != 1 Then{
value1 = TimeToMinutes(stime);
value2 = sdate;
}
if T == -1 and T[1] != -1 Then{
value1 = TimeToMinutes(stime);
value2 = sdate;
}
if T == 1 and TimeToMinutes(stime) >= value1+1 and sdate == value2 Then
buy();
if T == -1 and TimeToMinutes(stime) >= value1+1 and sdate == value2 Then
sell();
2015-08-26
122
글번호 89830
답변완료
추가진입 문의드립니다
MACD 0선 상향돌파시 매수하고, 첫 번째 진입보다 10틱 더 상승하면 1계약 추가진입매수.
MACD 0선 하향돌파시 매도하고, 첫 번째 진입보다 10틱 더 하락하면 1계약 추가진입매도.
손절은.. 각 진입가격에서 0.5포인트 손실나면 손절..
위 아이디어를 수식화 해봤는데 추가진입 신호가 잘 안나오네요.특히 매도쪽에서 에러가 자꾸 나옵니다. 쉬운 것 같은데 뭐가 틀렸는지 모르겠네요. 전문가한테 도움을 청해야 할 것 같아서 글 납깁니다.
수식 좀 만들어주시면 감사하겠습니다.
2015-08-26
111
글번호 89826
답변완료
문의 드립니다.
카운트 초기값은 0
최근 거래가 손실로 끝나면 카운트에 +1
최근 거래가 수익으로 끝나면 카운트에 -1
이걸 수식으로 부탁드립니다.
2015-08-26
106
글번호 89825
답변완료
문의 드립니다.
최근 거래가 손실로 끝나면 주문 계약수 x 2배
최근 거래가 수익으로 끝나면 주문 계약수는 다시 초기계약으로...
이걸 수식으로 부탁드립니다.
2015-08-26
109
글번호 89824