커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4675
글번호 230811
답변완료
문의드립니다
안녕하세요~
매수진입발생후 진입이후 최고가에서 0.5p 밀리면 청산을 하려고 합니다
청산조건 then ExitLong("매수청산",AtStop,Highest(H,BarsSinceEntry)-0.5);
위 수식으로 작성하면 진입당 최대 손실이 0.5p가 되어야 하는데
문제점이 매수진입봉 출현후 바로 다음봉에 0.5p보다 큰 음봉 발생하면
큰 손실을 발생시킵니다.
진입이후 최고가에서 0.5p밀린 값에서 청산을 하려고 하면 위 수식을 어떻게 바꿔야하나요?
2016-02-18
116
글번호 95468
답변완료
수식 문의 드립니다.
안녕하세요..
아래와 같이 답변 주신대로 수식을 넣고 실행하려했으나,
예스트레이더 시스템 목록에서 코드 자체가 뜨지 않아 실행을 못시키고 있습니다.
코드에 문제가 있어서 그런 것일지요?
제가 사용한, 전체 코드는 아래와 같습니다.
------------------------------------------------------------------------
Var : value(0);
if nextbarstime != time Then
MessageLog("현재봉 시가는 %.2f %s",NextBarOpen,"입니다");
------------------------------------------------------------------------
어디가 문제일까요?
그리고 nextbarstime 이라는 변수를 사용하셨는데, 원래 있는 변수인가요?
매뉴얼에서는 못 찾겠어서요..
그리고 MessageLog 쪽에 보면 표시할 변수는 2개( %.2f %s)인데,
대입되는 변수는 NextBarOpen만 있는 것처럼 보이는데, 제가 맞게 본것인지요
감사합니다.
====================================================================================
안녕하세요
예스스탁입니다.
if nextbarstime != time Then
MessageLog("현재봉 시가는 %.2f %s",NextBarOpen,"입니다");
즐거운 하루되세요
> ywesry 님이 쓴 글입니다.
> 제목 : 수식 문의 드립니다.
> 안녕하세요.
예스랭귀지 함수 중에 MessageLog라는 함수가 있습니다.
이 함수를 이용해서 현재 10분봉의 시가를 로그창에 띄우줄수 있을지요?
즉, 이전 봉이 완성되자마자, 다음 봉 시작할때 시가가 나오면 바로 즉시 로그로 보고 싶습니다.
예시는 다음과 같습니다.
"현재시간, (예를들어 9시10분00초) 현재 봉의 시가는 (얼마) 입니다"
쉽게 해결하실 것 같은데 저로써는 어렵네요..
수식 부탁드립니다. 감사합니다.
2016-02-17
132
글번호 95467
답변완료
시스템식부탁드립니다.
if stime == 100000 Then
buy();
==> 10시 매수식인데 신호가나지않습니다.
각각 따로따로
오전10시25분 매수식부탁드립니다.
오후 1시35분 매도식부탁드립니다.
그리고 매수후10개봉후 음봉 매도식 부탁드립니다.
2016-02-17
117
글번호 95466
답변완료
문의드립니다.
연결선물 15분챠트에서
60이평을 골든크로스하면 매수, 로스컷 2포인트
60이평을 데드크로스하면 매도, 로스컷 2포인트
단 여기서 골든크로스하여 매수 진입했는데 로스컷 되기 전에 데드크로스하여 매도 진입하게
되는 경우 매수는 그대로 둔 상태에서 매도 진입이 가능한지요.
buy문 다음에 청산 주문없이 sell을 사용하면 청산 후 매도주문이 되는 걸로 알고 있는데
그렇게 처리되지 않고 매수는 매수대로 로스컷까지 유지된 상태에서 매도 주문이 신규로
진입되게 처리하고 싶은데 가능한지 궁금하고 처리방법이 있다면 알려주시면 감사하겠습니다.
2016-02-17
104
글번호 95462
매의눈 님에 의해서 삭제되었습니다.
2016-02-17
17
글번호 95453
답변완료
문의드립니다
var1 = wma(c,5);
var2 = wma(c,20);
if crossup(var1,var2) then
value1 = var1;
if CrossDown(var1,var2) Then
value1 = var1;
var3 = var1-value1;
if var3 > 0 Then{
plot1(var1,"선1");
plot2(value1-(var3),"선2");
}
else{
plot1(var1,"선1");
plot2(value1+abs(var3),"선2");
}
.........................................................
상기수식을 데이타2용으로도 만들어 주세요
감사합니다.
2016-02-17
122
글번호 95446
답변완료
수식 문의드립니다
지수이동평균선이 순차적으로 정배열 되었을때 ,
즉 지수이동평균선이 14, 21,50,100 이렇게 순차적으로 되고나서 5개의 캔들 뒤에서 매수
신호가 나오게끔 하는 수식 부탁드립니다
반대로 매도는 100 , 50, 21, 14 지수이동평균선이 역배열 되었을때 5개의 캔들 뒤에서 매
도 신호가 나오게끔 입니다. 감사합니다.
2016-02-17
120
글번호 95435
답변완료
함수수정요청(11-1)
안녕하세요?
아래 함수를 수정요청드립니다.
아래 함수는 진입 봉에서 수익이든 손실이든 청산 신호가 발생됩니다.
포지션 진입 후 수익청산조건이면 진입봉에서도 수익청산이되나
손실청산 조건이 진입봉에서 발생되면 당봉청산 금지, 즉 익봉이후에 청산할 수 있도록 수정 요청드립니다.
---------------------------------------------------------------------------------------
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);
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();
}
2016-02-17
114
글번호 95434
답변완료
지표 문의 드립니다
if high[3]<high[2]
then sa=True;
sd=False;
if high[2]<high[1]
then sb=True;
if high[1]<high
then sc=True;
if sa==true and sb==true and sc==True
then sd=true;
sa=False;
sb=False;
sc=False;
if low[3]>low[2]
then sa1=True;
sd1=False;
if low[2]>low[1]
then sb1=True;
if low[1]>low
then sc1=True;
if sa1==true and sb1==true and sc1==True
then sd1=true;
sa1=False;
sb1=False;
sc1=False;
2번구간은 다음과 같은 식으로 3번연속 저가갱신이 처리가 되는데 1번에 경우 연속 봉으로 저가이 갱신 된게 아니라서 처리가 되지 않습니다. 어떻게 할수 있는지 문의 드립니다.
한가지 더 추가 하고 싶은게 이전 봉에 고가을 넘으로 3번연속에서 제외하고 싶습니다..
도움 주셔서 감사합니다~
2016-02-17
167
글번호 95433