커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4763
글번호 230811
수루지 님에 의해서 삭제되었습니다.
2015-09-13
0
글번호 90280
답변완료
예스로 수식전환 부탁드림니다
수식1
a=avg(c,20);
valuewhen(1,a>=a(1),a)
수식2
valuewhen(1,a<a(1),a)
2015-09-14
138
글번호 90279
답변완료
부탁드립니다
YT로 변환부탁 드립니다
미리 감사 드립니다.
1)
bdy=abs(c-o);
mid=(h+l)/2;
hb=highest(bdy,20);
m=valuewhen(1,hb==bdy,mid);
m(1);
2)
a=avg(c,10);
b=avg(c,20);
ab=valuewhen(1,a>=a(1),a);
x=valuewhen(1,crossup(a,b) or crossdown(a,b),b);
xb=if(x<c,x,b);
3)
RE=EAVG(C,21);
Src=EAVG((C-RE)/RE(21),21);
Y=Src-Src(1);
SR=100/(1+If(EAVG( If(Src<SRC(1),-y,0),10)==0,1000000,
EAVG(If(Src>SRC(1),y,0),10)/(EAVG(If(Src<SRC(1),-y,0),10) +0.000001)));
SRA=Sum(SR)/Sum(IF(SR>-1,1,0));
pk=SR(1)>SR(2) AND SR(1)>SR AND SR(1)>SRA;
pkVal=ValueWhen(1,pk,SR(1));
2015-09-13
134
글번호 90278
답변완료
문의합니다
안녕하세요
선물1분봉에서 연속양봉출현시 두번째양봉이 첫번째보다 종가가 높으면은 매수
청산은 첫번째봉과 두번째봉의 두봉의합틱으로합니다 예을들어서 첫번째3틱봉 두번째2틱봉이면은 두합5틱수익청산 손절은 두번째봉시가을 이탈하면은 손절
매도는그반대식 부탁합니다
2015-09-13
110
글번호 90277
답변완료
가격평균
예를 들어
30일동안의 "(종가+고가+저가)/3*거래량" 을 30일동안의 "누계거래량"으로 나누어 가격평균을 구현하고 싶습니다.
2015-09-13
100
글번호 90276
yes 님에 의해서 삭제되었습니다.
2015-09-14
27
글번호 90275
답변완료
함수수정요청(11-1호, 전환선매수)
아래의 ###함수에서 매수전략(b,bx)을 제거하고 #####함수를 합성하여 하나의 함수로 다시 짜고 싶습니다.
###
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);
#####
Var : 전환선(0);
전환선 = (Highest(High, 9) + Lowest(Low, 9)) / 2;
if stime == 60000 Then{//마지막봉 시간
exitlong();
ExitShort();
if C < 전환선 and (C<O or (C == O and C < C[1])) Then
buy("b",AtMarket);
}
SetStopProfittarget(4,PercentStop);
2015-09-12
127
글번호 90274
답변완료
예스글로벌 오류 여부 확인 요청
plot1(Ma(C,20));
상기문장을 유로달러에 대해 실행하면 소수점 2자리까지만 표시되고 계산도 그리됨
유로달러는 소수점 4 자리까지 인지해야 평균값인 이동평균선 로직 구사 가능..
오류 여부 확인 요청 드림
2015-09-12
105
글번호 90273
답변완료
문의드립니다.
1.
input : 시작시간(210000),끝시간(043000);
var : EntryStart(false);
var1 = ma(c,120);
var2 = ma(c,240);
if stime == 시작시간 or (stime > 시작시간 and stime[1] < 시작시간) Then
EntryStart = true;
if stime == 끝시간 or (stime > 끝시간 and stime[1] < 끝시간) Then
EntryStart = false;
if MarketPosition == 0 and BarsSinceExit(1) == 1 and IsExitName("bx1",1) == true Then
EntryStart = false;
if var1 > var2 and C <= C[2] and EntryStart == true Then
buy();
if MarketPosition == 1 Then{
ExitLong("bx1",Atlimit,EntryPrice+PriceScale*120);
ExitLong("bx2",AtStop,daylow-PriceScale);
if stime == 끝시간 or (stime > 끝시간 and stime[1] < 끝시간) Then
ExitLong();
}
2.
input : 시작시간(210000),끝시간(043000);
var : EntryStart(false);
var1 = ma(c,120);
var2 = ma(c,240);
if stime == 시작시간 or (stime > 시작시간 and stime[1] < 시작시간) Then
EntryStart = true;
if stime == 끝시간 or (stime > 끝시간 and stime[1] < 끝시간) Then
EntryStart = false;
if MarketPosition == 0 and BarsSinceExit(1) == 1 and IsExitName("sx1",1) == true Then
EntryStart = false;
if var1 < var2 and C >= C[2] and EntryStart == true Then
sell();
if MarketPosition == -1 Then{
ExitShort("sx1",atlimit,EntryPrice-PriceScale*120);
ExitShort("sx2",AtStop,dayhigh+PriceScale);
if stime == 끝시간 or (stime > 끝시간 and stime[1] < 끝시간) Then
ExitShort();
}
1번에서 당일저가 손절인데요.이거를 당일 아침 시작가에서 오후9시 전 사이의 있는 저가하향돌파를 손절로 넣어주세요. 손절되면 자동거래완전종료.
2번은 1번 반대로 아침시작가에서 오후9시전 사이의 있는 고가상향돌파를 손절로 넣어주세요.
손절되면 자동거래완전종료.
부탁드리겠습니다.
2015-09-11
105
글번호 90272