커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7439
글번호 230811
답변완료
수정부탁합니다
Inputs: 기준선기간(26),shortPeriod(5), longPeriod(20),x(1),y(1);
Variables: 기준선(0);
value1 = ma(C, shortPeriod);
value2 = ma(C, longPeriod);
기준선 = (Highest(High, 기준선기간) + Lowest(Low, 기준선기간)) / 2;
if Value1>Value2 and crossup(l[0],기준선 ) Then{
buy()
}
if Value1<Value2 and crossdown(h[0],기준선 ) Then{
sell()
}
setstoploss(x);
SetStopProfittarget(y);
감사합니다
2015-12-08
134
글번호 93146
답변완료
시스템 수식 문의드립니다.
안녕하세요.
먼저 수식작성 Q&A를 통해 많은 도움을 받고 있어 항상 감사한 마음을 전합니다.
아래와 같은 수식에서
#매수진입후 조금 상승..매수이후 최고가 대비 8틱이상 하락후 4틱 상승하면 매도로
스위칭 하고자하는 수식을 부탁드립니다.
(매수진입후 조금 상승한 다음에 반대로 하락할 경우를 대응하기 위함입니다.)
#매도진입후 조금 하락..매도이후 최저가 대비 8틱이상 상승후 4틱 하락하면 매수로
스위칭 하는 수식도 부탁드립니다.
(매도진입후 조금 하락후 반대로 상승으로 돌아설 경우를 대응하기 위함입니다.)
처음 진입구간은 아래와 같은 수식을 사용하고 스위칭 경우만 위의 상황을 작성해
주시면 감사하겠습니다.
수고하십시요.
var : T(0),HH(0),LL(0);
var1 = ma(c,20);
if var1 > var1[1] Then
T = 1;
if var1 < var1[1] Then
T = -1;
if T == 1 and T[1] != 1 Then
HH = H;
if T == -1 and T[1] != -1 Then
LL = L;
#상승구간
if T == 1 Then{
#최고가 계산
if H > HH Then
HH = H;
#최고가에서 5틱 하락하면 매수
if H == HH Then
buy("b1",Atlimit,HH-PriceScale*5);
if H < HH and L > HH-PriceScale*5 Then
buy("b2",atlimit,HH-PriceScale*5);
}
#하락구간
if T == -1 Then{
#최저가 계산
if L < LL Then
LL = L;
#최저가에서 5틱 상승하면 매도
if L == LL Then
sell("s1",Atlimit,LL+PriceScale*5);
if L > LL and H < LL+PriceScale*5 Then
sell("s2",atlimit,LL+PriceScale*5);
}
2015-12-08
139
글번호 93142
오늘도수익 님에 의해서 삭제되었습니다.
2015-12-08
29
글번호 93141
답변완료
질문드립니다.
선물일봉에서 시스템을 작성하고자 합니다.
예를들어 당일 첫 매수 진입이 10ma를 돌파할 때 이루어졌다고 가정해봅니다.
당일의 첫번째 거래가 매수로 들어가서 손절로 손해를 보고 거래가 종료되었다고 하면, 당일의 두번째 매수 진입은 첫번째 거래가 이루어진 진입가를 돌파할 때 매수하고 싶습니다.
단, 날이 바뀌면 첫번째 진입은 다시 10ma 돌파로 이루어져야 합니다.
즉, 당일의 재진입시에만 적용되는,
재진입 가격은 당일 손절로 마감된 거래의 진입가에 들어가는 시스템 부분을 만들고 싶습니다.
간단한 예시와 함께 부탁드립니다.
그리고 신호는 atstop으로 내고 싶습니다.
2015-12-08
122
글번호 93137
답변완료
수식 부탁 드립니다.
A = MA(C, 72, 가중);
C < MA(종가,100,가중) &&
(H + H(1) + H(2) < H(3) + H(4) + H(5) ||
L + L(1) + L(2) < L(3) + L(4) + L(5))
&&
(L <= L(2) ||
L <= L(3))
&&
(TEMA((C/C(432)-1)*100,9)
+ TEMA((C(1)/C(433)-1)*100,9)
>
TEMA((C(3)/C(434)-1)*100,9)
+ TEMA((C(4)/C(435)-1)*100,9)) &&
(
((MA(dayclose(), short, 가중) - MA(dayclose(), long, 가중)
- eavg((MA(dayclose(), short, 가중) - MA(dayclose(), long, 가중)),signal))
<
(MA(dayclose(), short, 가중) - MA(dayclose(), long, 가중)
- eavg((MA(dayclose(), short, 가중) - MA(dayclose(), long, 가중)),signal1)))
||
(MA(dayclose(), short, 가중) - MA(dayclose(), long, 가중)
- eavg((MA(dayclose(), short, 가중) - MA(dayclose(), long, 가중)),signal))
== 0
)
&&
C < MA(dayclose(),3,단순)
&&
C < MA(dayclose(),5,단순)
&&
C < nPreDayClose(2)
&&
C < nPreDayClose(1)
&&
(nPreDayClose(1)/nPreDayClose(2)-1)*100 > -10.0
&&
L < L(1)
&&
(L < MA(종가,50,단순)
||
L < A + AvgIf( C - A, -1, 0.0 )
- 2 * StdevIf( C - A, -1, 0.0 ))
2015-12-07
161
글번호 93136
답변완료
함수수정요청(11-1호)
안녕하세요?
해외선물 매매를 하고자 합니다.
여기서 하루의 개념이 해외선물 영업일 기준으로 되어 있습니다.
그런데 하루를 Day가 아닌 시간개념(hour)을 적용하여
해외선물 거래시간(08:00~07:00, 써머타임시 07:00~06:00)에 맞추어 변경 요청드립니다.
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();
}
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);
if V7 < V8 Then
sell("s2",Atlimit,V8);
}
if MarketPosition == -1 and IsEntryName("s1") == true Then{
ExitShort("sp1",atlimit,V9);
ExitShort("sl1",AtStop,V6);
}
if MarketPosition == -1 and IsEntryName("s2") == true Then{
ExitShort("sp2",atlimit,V9-0.03);
ExitShort("sl2",AtStop,V6);
}
2015-12-07
146
글번호 93135
답변완료
데이터 저장 문의드립니다.
해외선물 프로그램에서....최대 10,000개 봉까지만 csv파일로 내보낼 수 있는 걸로 아는데..해당 수식 좀 부탁드립니다.
그리고 원하는 기간의 데이터를 내보낼 수도 있으면 해당 수식 부탁드립니다.
2015-12-07
171
글번호 93134
답변완료
문의 드립니다.
230.00이라는 가격에 수치전환 수평선을 그어놓고 호가가 수치전환 수평선을 돌파해서 종가에 거래하는게 아니라 230.00에 그어진 수치전환 수평선에 가격이 닿으면 시장가 진입하는 수식을 알고 싶습니다.
예) 시가 200.00에 시가에서 위, 아래 0.5 포인트씩 수치전환 수평선을 그어놓아서 위에서 0.5포트 위로 닿으면 매수 아래로 0.5에 닿으면 매도 이런식의 수식을 알고 싶습니다. 아래 주석도 달아주시면 감사하겠습니다.
2015-12-07
134
글번호 93133
답변완료
지표와 시스템 문의
30일간의 신고가 돌파 종목을 넣어서 시스템 테스트를 하고 자 합니다.
적용 일봉
지표
기간고가
기간저가
var1 = highest(h,period);
 var2 = lowest(L,Period);
기준선=(고가+저가)/2
if var1[1] < var1 Then
       SS = (var1+var2)/2;
s4 매도기준 저가 =고가 돌파후 저가(만들어지는 당일봉이 아니라 다음날 부터)
s5 자율반등폭= (고가-기준선)/2
s6 매수타점1=(s1-s5)+2틱
s7 매수타점2=(s3-s5)+2틱
s8 매도타점1= (s4+s5)-2틱
s9 매도타점2=(s4+s5)+2틱
시스템 문의
1. 기본사항
 1) 위 지표식을 일봉 현물에 적용하여 시스템 매매를 할려고 합니다.
 2) 기본 외부변수 할당은 다음과 같습니다.
   input : 전략식시작일자(20151101), 전략식시작시간(090000), 전략총매수금액(1000000)
   input : 1차매수비중(50), 2차매수비중(50) ; 
            ##괄호안의 숫자는 총매수금액의 각 분할매수할 퍼센티지입니다.
   input : 1차매도비중(70), 2차매도비중(30),
            ##괄호안의 숫자는 매수된 금액의 각 분할매도할 퍼센티지입니다.
 
   그외 외부변수는 추가해 주시기 바랍니다.
2. 매수기준
 1) 2분할 매수
 2) 강 1차매수에서 1차매수비중 만큼 매수
 3) 강 2차매수에서 2차매수비중 만큼 매수
 4) 시가가 -5%이상 갭하락하면 1차매수를 하지 않음. (2차 매수시에는 상관없음.)
 5) 매수되었을때 각매수차수에서 매수된 상태를 차트에 표시 ("강 1차매수", "강 2차매수")
3. 매도기준
 1) 2분할 매도입니다.
 2) S8상황시 1차매도 비중 만큼 매도
 3) S9상황시 2차매도 비중 만큼 매도
 4) 2분할매수가 모두 안이루어졌어도 매도조건만 만족하면 1차, 2차매수상태에서도 매도
 5) 매도되었을때 각매도차수에서 매도된 상태를 차트에 표시 ("1차매도", "2차매도")
답변주신거 바탕으로 정리해서 다음 질문드리겠습니다!
2015-12-07
161
글번호 93132