커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4689
글번호 230811
답변완료
지그재그를 이용한 마디가 구하기
항상 회원들의 질문에 성심성의껏 답변 해주셔서 감사합니다.
다름아니라, 첨부파일처럼 지그재그 수식을 이용해서 마디가를 구하고 싶습니다
동그라미 친 부분들이 지그재그 꺽이는 부분인데, 그 꺽이는 부분의 종가들의 평균을 선으로 그어주는걸 만들고 싶습니다.
물론 변수로 봉갯수를 입력할 수 있게 만들어 주시면 감사하겠습니다.
즉, 예를 들면, 변수로 120을 입력하면, 그 기간동안 지그재그로 인해 꺽이는 부분이 4번 있다면, 그 4개 캔들 종가의 평균을 직선으로 표현하고 싶습니다.
2016-01-27
445
글번호 94835
오늘도수익 님에 의해서 삭제되었습니다.
2016-01-27
30
글번호 94834
답변완료
문의드립니다
안녕하세요~
1.주간기준으로
최대 3번의 진입만 할 것이고
손절당하는 경우가 아니고 익절하는 경우
해당 주는 더이상 진입이 발생하지 않게 하고 싶습니다
따라서 주간기준으로 max 3번의 진입이 있게되는데
첫번째 진입에 익절하는 경우 해당 주 더이상 진입 금지이고
첫번째 진입 손절 후 두번째 진입에 익절하는 경우 해당 주 진입금지
세번째 진입은 주간 마지막 진입입니다.
2. 현재가가 5일이평 아래에 지속적으로 있다가
현재가가 5일이평과 같을 때 바로 매수하는 수식을 알려주세요
3. bdate 와 sdate의 차이를 알려주세요
늘 감사드려요~
2016-01-26
94
글번호 94833
답변완료
재문의합니다
안녕하세요
답변 매번 감사합니다
(buy1매수조건)을 어떻게 추가하는것인지 난감하네요
아래 buy1수식을 첨부합니다
if nday >= 10 then
if data1(c) < data2(c) Then
if countif(CrossDown(sma44,sma45+0.5),3) >=1 Then
Buy("Buy1",AtLimit,c-pricescale*1);
다시한번 부탁드립니다
감사합니다
안녕하세요
예스스탁입니다.
작성하신 식이시면 첨부된 그림과 같이
buy1로 진입중에 sell이 발생하지 않습니다.
다만 Sell진입이 봉완성시 값을 셋팅하고
다음봉에서 신호가 발생하므로
셋팅되는 봉에서 buy조건이 동시충족되면
다음봉에서 동시에 신호가 나올수 있습니다.
이럴경우 동시셋팅되지 않게
아래와 같이 buy1조건이 아니라는 내용을
추가로 적어주셔야 합니다.
!(조건)이 지정된 조건이 아니라는 표현입니다.
if IsEntryName("buy1")==False and !(buy1매수조건) Then{
if countif(CrossDown(sma44,sma45),3) >=1 Then
Sell("Sell",AtLimit,c+pricescale*1);
}
즐거운 하루되세요
> 파티아 님이 쓴 글입니다.
> 제목 : 문의드립니다
> 안녕하세요
늘감사합니다
30분봉입니다
buy1 매수중에는 sell 진입을 금지하고 싶은데도 계속 진입이 되네요
수식 수정 부탁드려요
감사합니다
if IsEntryName("buy1")==False Then{
if countif(CrossDown(sma44,sma45),3) >=1 Then
Sell("Sell",AtLimit,c+pricescale*1);
}
2016-01-26
102
글번호 94832
답변완료
함수수정요청(11-1)
안녕하세요?
아래의 함수를 수정요청드립니다.
아래의 함수는 매수와 매도가 서로 독립적으로 영향을 받고 있지 않습니다.
다시 말씀드리면 기존에 매도(s) 포지션이 진입되면
익절(sp)이든 손절(sl)이든 청산이 되야 매수(b) 신호가 생성됩니다.
그러지 말고 기존에 매도포지션이 들어가있어도 매수조건이 맞으면
기존의 매도포지션이이 청산되고 매수가 들어갈 수 있도록 수정 요청드립니다.
------------------------------------------------------------------------------------
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-01-26
102
글번호 94831
삼족오 님에 의해서 삭제되었습니다.
2016-01-26
6
글번호 94830
답변완료
46143 이어서 지표 문의 드립니다.
조금 더 자세히 풀어봤습니다.
신고가가 계속 갱신되고 있습니다.
그에 맞춰서 저가도 계속 올라가고 있는 상황입니다.
제가 원하는 것은
신고가가 아무리 갱신되더라도
아주 예전의 폭(a)이였어도
그것이 최대폭이라면 그 폭이 유지가 되는 것입니다.
초기화 조건이 없는 상태라면
폭 a b c d e
전자가 다 크다는 가정을 하겠습니다.
a >b a
a>c a
a>d a
a>e a
가 되어
5의 신고가 상태에서도
5의 가격 - a = 제가 원하는 폭 의 가격이 나와야 합니다.
지금 식대로라면
a > b a
b > c b
c > d c
d > e d
이렇게 비교를 하는 것 같습니다.
엑셀 데이타 그림
제가 원하는 방식으로 지표를 나오게 하고 싶습니다. 감사합니다.
2016-01-26
128
글번호 94829
답변완료
please check
please check attaschment.
always thank you.
2016-01-27
108
글번호 94828
삼족오 님에 의해서 삭제되었습니다.
2016-01-27
22
글번호 94826