커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4425
글번호 230811
답변완료
오류메세지 수정 부탁드립니다.
감사합니다.
//==========================================
// Indicator Name : FibonacciRetracement
// Written by : yahoosir
// Blog : http://yahoosir.blog.me
//==========================================
Input:length(10),ClsPxUseBit(0),inRange(10),waveLineSize(2),displPRC(1);
Var:j(0),jj(0),jjj(0),HH(0),LL(0),lastHi(0),lastLo(0),lastVertex(""),procBit(""),
TL1(0),TL2(0);
Array:PK[50,4](0),VL[50,4](0), // 1:Price, 2:BarNumber, 3:Date, 4:Time
basePK[5](0),baseVL[5](0); // 0:N/A, 1:Price, 2:BarNumber, 3:Date, 4:Time
//==========================================
HH = IFF(ClsPxUseBit == 1,C,H);
LL = IFF(ClsPxUseBit == 1,C,L);
If CurrentBar == 1 Then Begin
PK[1,1] = HH;
VL[1,1] = LL;
End ;
Condition1 = Highest(HH,length) = HH and lastHi <> HH;
Condition2 = Lowest (LL,length) = LL and lastLo <> LL;
procBit = "";
If Condition1 and Condition2 Then Begin
If lastVertex == "Valley" Then procBit = "Peak" ;
Else procBit = "Valley";
End
Else If Condition1 Then procBit = "Peak" ;
Else If Condition2 Then procBit = "Valley";
//==========================================
If procBit == "Peak" Then Begin
lastHi = HH;
If lastVertex == "Valley" Then Begin
For j = 50 DownTo 2 Begin
For jj = 1 To 4 Begin
PK[j,jj] = PK[j-1,jj];
End ;
End ;
PK[1,1] = HH;
PK[1,2] = BarNumber;
PK[1,3] = Date;
PK[1,4] = Time;
TL1 = TL_New(VL[1,3],VL[1,4],VL[1,1],PK[1,3],PK[1,4],PK[1,1]);
TL_SetSize(TL1,waveLineSize);
TL_SetColor(TL1,RED);
basePK[1] = 0;
For j = 1 To inRange Begin
If basePK[1] < PK[j,1] Then Begin
For jjj = 1 To 4 Begin
basePK[jjj] = PK[j,jjj];
End ;
End ;
End ;
End
Else If PK[1,1] < HH Then Begin
PK[1,1] = HH;
PK[1,2] = BarNumber;
PK[1,3] = Date;
PK[1,4] = Time;
TL_SetEnd(TL1,PK[1,3],PK[1,4],PK[1,1]);
End ;
lastVertex = "Peak";
End ;
//==========================================
If procBit == "Valley" Then Begin
lastLo = LL;
If lastVertex == "Peak" then Begin
For j = 50 DownTo 2 Begin
For jj = 1 To 4 Begin
VL[j,jj] = VL[j-1,jj];
End ;
End ;
VL[1,1] = LL;
VL[1,2] = BarNumber;
VL[1,3] = Date;
VL[1,4] = Time;
TL1 = TL_New(PK[1,3],PK[1,4],PK[1,1],VL[1,3],VL[1,4],VL[1,1]);
TL_SetSize(TL1,waveLineSize);
TL_SetColor(TL1,BLUE);
baseVL[1] = 0;
For j = 1 To inRange Begin
If baseVL[1] > VL[j,1] or baseVL[1] = 0 Then Begin
For jjj = 1 To 4 Begin
baseVL[jjj] = VL[j,jjj];
End ;
End ;
End ;
End
Else If VL[1,1] > LL then Begin
VL[1,1] = LL;
VL[1,2] = BarNumber;
VL[1,3] = Date;
VL[1,4] = Time;
TL_SetEnd(TL1,VL[1,3],VL[1,4],VL[1,1]);
End ;
lastVertex = "Valley";
End ;
//==========================================
Array: fr[7,4](0); // 1:Rate, 2:Price, 3:Trendline ID, 4:Text ID
If CurrentBar == 1 Then Begin
fr[1,1] = 0;
fr[2,1] = 0.236;
fr[3,1] = 0.382;
fr[4,1] = 0.50;
fr[5,1] = 0.618;
fr[6,1] = 0.764;
fr[7,1] = 1;
End ;
If basePK[1] > 0 and baseVL[1] > 0 Then Begin
If baseVL[2][1] <> baseVL[2] or basePK[2][1] <> basePK[2] Then Begin
If TL2 > 0 Then TL_Delete(TL2);
TL2 = TL_New(baseVL[3],baseVL[4],baseVL[1],basePK[3],basePK[4],basePK[1]);
TL_SetSize(TL2,4);
TL_SetColor(TL2,Magenta);
If baseVL[2] < basePK[2] Then Begin
for j = 1 to 7 Begin
If fr[j,3] > 0 Then TL_Delete(fr[j,3]);
fr[j,2] = basePK[1] - ((basePK[1] - baseVL[1]) * fr[j,1]);
fr[j,3] = TL_New(baseVL[3],baseVL[4],fr[j,2],Date,Time,fr[j,2]);
If displPRC == 1 Then Begin
If fr[j,4] > 0 Then Text_Delete(fr[j,4]);
fr[j,4] = Text_New(baseVL[3],baseVL[4],fr[j,2],"(" + NumToStr(fr[j,1]*100,1) + "%) " + NumToStr(fr[j,2],2));
Text_SetStyle(fr[j,4], 1, 2);
Text_SetColor(fr[j,4],black);
End ;
End ;
End
Else If basePK[2] < baseVL[2] Then Begin
for j = 1 to 7 Begin
If fr[j,3] > 0 Then TL_Delete(fr[j,3]);
fr[j,2] = baseVL[1] + ((basePK[1] - baseVL[1]) * fr[j,1]);
fr[j,3] = TL_New(basePK[3],basePK[4],fr[j,2],Date,Time,fr[j,2]);
If displPRC == 1 Then Begin
If fr[j,4] > 0 Then Text_Delete(fr[j,4]);
fr[j,4] = Text_New(basePK[3],basePK[4],fr[j,2],"(" + NumToStr(fr[j,1]*100,1) + "%) " + NumToStr(fr[j,2],2));
Text_SetStyle(fr[j,4], 1, 2);
Text_SetColor(fr[j,4],black);
End ;
End ;
End ;
End
Else Begin
for j = 1 to 7 Begin
TL_SetEnd(fr[j,3],Date,Time,fr[j,2]);
End ;
End ;
End ;
2017-03-15
160
글번호 107813
답변완료
지표 만들고 검색할때
사용자 지표를 만들고 저장해놓으면
검색식 만들때 그 지표를 불러와서 사용가능한가요?
예를 들어
Q(0) 라는 지표를 만들어서 지표식에서 작동하는 것을 확인했고
검색식을 만들때 Q(0)라는 지표를 불러서 사용하면 되는 지 궁금합니다.
2017-03-15
126
글번호 107811
답변완료
수정 부탁드려요
52376 댓글에 보완 사항을 적었습니다
확인해보시고 수정 부탁드립니다
2017-03-15
140
글번호 107805
답변완료
문의드립니다.
좋은 하루 입니다.
1.환경:
당일 고가저가의 중심인 중심선상
2.표시
20일선이 30일선 아래 있으면 중심선 색상이 파랑색
20일선이 30일선 위에 있으면 중심선 색상이 빨강색
으로 표시되도록 하려는데 잘 안되네요.
수고하세요 ^^
2017-03-15
124
글번호 107804
답변완료
Line에 text 표시
안녕하세요
Line에 text를 표시하는 방법 부탁드립니다.
-----------------------------
선물 분봉 사용하여 (시간주기 상관없이)
당일시가기준으로 1pt 상승시 또는 하락시 마다
Line이 그려졌다고 했을 때
1) 빨간색 상승Line 위에 해당지수,경과봉수를 text로 표시
2) 파란색 하락Line 아래에 해당지수,경과봉수를 text로 표시
(text는 되도록 Line 중앙에 위치)
그림으로 표시하면 다음과 같습니다.
괄호안은 해당line의 봉경과 갯수입니다.
278.50 (10) 빨간색
상승선 ---------------- 빨간색
277.50 (24) 빨간색
상승선 --------------- 빨간색 하락선 ----------- 파란색
277.50 (7) 파란색
하락선 ---------------- 파란색
276.50 (14) 파란색
꼭 위의 예가 아닌 스윙하이 스윙로우 Line 등
수평추세선이 나오는 어떤 예도 상관없습니다.
이상입니다.
감사합니다 !!
2017-03-15
145
글번호 107799
답변완료
수식부탁드립니다
안녕하세요^^
혼자 수식을 만드는데 어려워서 도움을 청합니다.
단순 5 이동평균선을 사용하여 골드일때 매수식 데드일때 매도식을 만들고 싶습니다.
감사합니다.
2017-03-15
113
글번호 107797
답변완료
문의드립니다
시스템 적용시
수익구간의 봉갯수 누적지표
손실구간의 봉갯수 누적지표
를 나타내고 싶습니다
감사합니다
2017-03-15
114
글번호 107796
답변완료
볼린져밴드 상하단 매수매도
총 투입금액 안에서
첨부된 그림과 같이 일정 거래량 이상과 함께 볼린져 밴드 하단을 터치할때 마다 최대4회 정도 나눠서 매수하고,(매수비중은 총투입금액의 매수1=10% 매수2=20%, 매수3=30%, 매수4=40%)
볼린져 밴드 상단을 터치할경우엔 무조건 청산 하는 식을 만들어 보고 싶습니다.
몇회 매수가 되었던 볼린져 밴드 상단을 터치할 경우엔 완전 청산하는 식으로요.
2017-03-15
195
글번호 107795
답변완료
부탁드립니다
부탁 합니다
input : sto1(12),sto2(5),sto3(2);
var : T1(0),entry(0),Tcond(false);
var : stok(0),stod(0);
if stime == 150000 or (stime > 150000 and stime[1] < 150000) Then{
Tcond = true;
T1 = TotalTrades;
}
if stime == 020000 or (stime > 020000 and stime[1] < 020000) Then
Tcond = false;
if MarketPosition == 0 Then
entry = TotalTrades-T1;
Else
entry = (TotalTrades-T1)+1;
if
entry < 3 and
crossup(stok,20) Then
buy("매수",OnClose,def,2);
if
entry < 3 and
CrossDown(stok,80) Then
sell("매도",OnClose,def,2);
오후3시부터 익일 새벽 2시 사이에만 신호가 나오게 하고 싶은데
다른 시간에도 신호가 나옵니다
entry <3 라는 수익은 하루 두번이상 진입 금지라는 뜻 인가요
아니면 동일방향 두번 이상 진입금지란 소린가요??
전 신호가 매수 매도 합쳐서 하루에 두번이상 안나오게 하고 싶습니다 지금은 3번도 나오네요 ^^
대신 청산신호는 아무때나 나오게 하고 싶습니다
그리고 청산수식이 신호가 안나옵니다
수익이 잘못 된건가요 확인 부탁 합니다
if MarketPosition == 1 Then{
if highest(h,BarsSinceEntry) >= EntryPrice+PriceScale*50 Then
exitlong("bx2",AtStop,LL+(HH-LL)*23.6);
}
if MarketPosition == -1 Then{
if Lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*50 Then
ExitShort("sx2",AtStop,LL+(HH-LL)*76.4);
}
2017-03-15
116
글번호 107794