커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
2543
글번호 230811
답변완료
다시 한번 확인 부탁드립니다.
알려주신 대로 IF maketposition==0 으로 변경하여 확인 하였더니 exitlong # exitshort #
사라졌으나
첨부파일을 보면 파란원안에 "bxL" "bxm" 로 신호명은 바르게 표기되어있으나, 빨간원 부근에서 청산되지를 않고
다음봉의 시가에 청산되어 손실이 두배이상 나옵니다.이런 현상이 2회나 발생합니다. 확인 좀 부탁드립니다.
참고로 진입은 IF maketposition==0 조건 then
Buy("b",OnClosE,DeF,2);
청산은 if MarketPosition == 1 Then
ExitLong("bxL",AtStop,L[BarsSinceEntry]); 이렇게 되어있습니다.
2024-07-11
866
글번호 181381
답변완료
수식작성 문의드립니다.
안녕하세요, 수고 많으십니다.
매수 진입신호를 작성 부탁드리려고 합니다.
- 전고점 이후 하락중인 조건에서, 저점을 갱신할 때마다 L이라는 변수에 넣음
- 반등하여 직전 최저점(L) 대비 5틱 상승하면 매수진입
감사합니다.
2024-07-11
753
글번호 181378
답변완료
수식작성 부탁드립니다
안녕하세요
수고많으십니다.
각항 검색식으로 부탁드려 봅니다.
input : P(5);
var : cnt(0),sum1(0),sum2(0),Csum(0),wma1(0),wma2(0);
Array : H1[100](0),L1[100](0);
if Bdate > Bdate[1]+30 Then
{
H1[0] = h;
L1[0] = l;
for cnt = 1 to 99
{
H1[cnt] = H1[cnt-1][1];
L1[cnt] = L1[cnt-1][1];
}
}
if h > H1[0] Then
h1[0] = h;
if l < l1[0] Then
l1[0] = l;
if L1[P] > 0 Then
{
Sum1 = 0;
Sum2 = 0;
CSum = 0;
For cnt = 0 To P - 1
{
Sum1 = Sum1 + H1[cnt] * (P - cnt);
Sum2 = Sum2 + L1[cnt] * (P - cnt);
CSum = CSum + P - cnt;
}
WMA1 = Sum1/CSum;
WMA2 = Sum2/CSum;
plot1(wma1);
plot2(wma2);
}
-----------------------------------------------------
input : P(5);
var : cnt(0),sum1(0),sum2(0),Csum(0),wma1(0),wma2(0);
Array : H1[100](0),L1[100](0);
if DayOfWeek(Bdate) < DayOfWeek(Bdate[1]) Then
{
H1[0] = h;
L1[0] = l;
for cnt = 1 to 99
{
H1[cnt] = H1[cnt-1][1];
L1[cnt] = L1[cnt-1][1];
}
}
if h > H1[0] Then
h1[0] = h;
if l < l1[0] Then
l1[0] = l;
if L1[P] > 0 Then
{
Sum1 = 0;
Sum2 = 0;
CSum = 0;
For cnt = 0 To P - 1
{
Sum1 = Sum1 + H1[cnt] * (P - cnt);
Sum2 = Sum2 + L1[cnt] * (P - cnt);
CSum = CSum + P - cnt;
}
WMA1 = Sum1/CSum;
WMA2 = Sum2/CSum;
plot1(wma1);
plot2(wma2);
}
------------------------------------------------------------
input : P(5);
var : cnt(0),sum1(0),sum2(0),Csum(0),wma1(0),wma2(0);
Sum1 = 0;
Sum2 = 0;
CSum = 0;
For cnt = 0 To P - 1
{
Sum1 = Sum1 + DayHigh(cnt) * (P - cnt);
Sum2 = Sum2 + daylow(cnt) * (P - cnt);
CSum = CSum + P - cnt;
}
WMA1 = Sum1/CSum;
WMA2 = Sum2/CSum;
plot1(wma1);
plot2(wma2);
---------------------------------------------------
input : ntime(480),P(5);
var : S1(0),D1(0),TM(0),TF(0),cnt(0);
var : sum1(0),sum2(0),Csum(0),wma1(0),wma2(0);
Array : H1[100](0),L1[100](0);
if Bdate != Bdate[1] Then{
S1 = TimeToMinutes(stime);
D1 = sdate;
}
if D1 > 0 then
{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TF = TM%ntime;
if Bdate != Bdate[1] or
(Bdate == Bdate[1] and ntime > 1 and TF < TF[1]) or
(Bdate == Bdate[1] and ntime > 1 and TM >= TM[1]+ntime) or
(Bdate == Bdate[1] and ntime == 1 and TM > TM[1]) Then
{
H1[0] = h;
L1[0] = l;
for cnt = 1 to 99
{
H1[cnt] = H1[cnt-1][1];
L1[cnt] = L1[cnt-1][1];
}
}
if h > H1[0] Then
h1[0] = h;
if l < l1[0] Then
l1[0] = l;
if L1[P] > 0 Then
{
Sum1 = 0;
Sum2 = 0;
CSum = 0;
For cnt = 0 To P - 1
{
Sum1 = Sum1 + H1[cnt] * (P - cnt);
Sum2 = Sum2 + L1[cnt] * (P - cnt);
CSum = CSum + P - cnt;
}
WMA1 = Sum1/CSum;
WMA2 = Sum2/CSum;
plot1(wma1);
plot2(wma2);
}
}
항삼 감사 드립니다.
수고 하십시요
2024-07-11
1041
글번호 181377
답변완료
문의드립니다
코인(업비트 KRW 종목 : 비트코인 이더리움 등등)
A조건 만족시
100만원 매수식
b조건 만족시
매수청산식
부탁드립니다
감사합니다
2024-07-11
1066
글번호 181376
답변완료
검색식 부탁 드려요
1. 시가총액이 5,000 억이 넘는 종목 검색식 부탁드려요.
2024-07-11
712
글번호 181375
답변완료
부탁드립니다.
1. 종가가 음봉이면서 과거 직전 15개이내의 음봉중에 고가와 저가의 길이가 가장 긴 음봉이면 빨강색으로, 종가가 양봉이면서 과거 직전 15개이내의 양봉중에 고가와 저가의 길이가 가장 긴 양봉이면 파란색으로 구현해 주세요
2. 종가가 양봉이면서 과거 직전 15개이내의 음봉중에 고가와 저가의 길이가 가장 긴 음봉의 길이보다 더 길면 파란색으로, 종가가 음봉이면서 과거 직전 15개이내의 양봉중에 고가와 저가의 길이가 가장 긴 양봉의 길이보다 더 길면 빨강색으로 구현해 주세요
고맙습니다.
2024-07-11
818
글번호 181374
답변완료
문의드립니다
1
0봉(현재봉) 제외하고
1봉전 거래대금
2봉전 거래대금
3봉전 거래대금
....
몇봉전 거래대금을 차례로 누적하여
누적 거래대금이 5000천억 돌파할때 까지
걸리는 봉의 갯수를 나타내는지표
2
거래대금을 누적하는 지표를 만들고
누적거래대금이
0 에서 2000천억 구간 사이의 최고값과 최저값
2000천억 에서 4000천억 구간 사이의 최고값과 최저값
4000천억 에서 6000천억 구간 사이의 최고값과 최저값
.....
2000천억 배수를 돌파할때 마다
그 사이 구간의 최고값과 최저값
감사합니다
2024-07-11
748
글번호 181373
답변완료
지표 계산 문의드립니다.
var:n(2); // SwingHigh, SwingLow에서 좌우 날개에 해당하는 봉의 개수
var : 파동선두께(2) // 파동선의 두께. 0 ~ 5
;
var : dayH(0),dayL(0);
var : nowH(0),nowL(0);
var : strongH(0),strongL(0);
Var:j(0),jj(0),HH(0),LL(0),TL_H(0),TL_L(0),TL_L_1(0),TL_L_2(0),TL_L_3(0),TL_H_1(0),TL_H_2(0),TL_H_3(0),최종꼭지점(""),처리구분("");
Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime
var : t1(0),t2(0);
if Index==0 Then
ClearDebug;
파동선두께 = 1;
#==========================================#
HH = H; // IFF(조건식,참일 때 결과,거짓일 때 결과)
LL = L;
// SwingHigh 정의
Condition1 = Highest(HH,n)[n+1] <= HH[n] and HH[n] > Highest(HH,n);
// SwingLow 정의
Condition2 = Lowest (LL,n)[n+1] >= LL[n] and LL[n] < Lowest (LL,n);
처리구분 = "";
If Condition1 and Condition2 Then
// 긴 장대봉에서는 SwingHigh와 SwingLow가 동시에 나타날 수 있다.
{
If 최종꼭지점 == "저점" Then
{
If 저[1,1] > LL[n] Then 처리구분 = "저점처리";
Else 처리구분 = "고점처리";
}
Else If 최종꼭지점 == "고점" Then
{
If 고[1,1] < HH[n] Then 처리구분 = "고점처리";
Else 처리구분 = "저점처리";
}
}
Else If Condition1 and 저[1,1] < HH[n] Then 처리구분 = "고점처리";
// SwingHigh 조건이 돼도 저점보다 낮으면 가격이 계속 하락중이므로 무시한다.
Else If Condition2 and 고[1,1] > LL[n] Then 처리구분 = "저점처리";
// SwingLow 조건이 돼도 고점보다 높으면 가격이 계속 상승중이므로 무시한다.
//==========================================
If 처리구분 == "고점처리" Then
{
If 최종꼭지점 == "저점" Then
{
For j = 10 DownTo 2
{
For jj = 1 To 4 // 2차원 배열이므로 For문안에 또 For문이 올 수 있다.
{
고[j,jj] = 고[j-1,jj];
}
}
고[1,1] = HH[n]; // 가격
고[1,2] = Index - n; // Index
고[1,3] = sDate[n]; // 날짜
고[1,4] = sTime[n]; // 시각
TL_H = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]); // 신규 추세선 생성
TL_SetSize(TL_H,파동선두께);
TL_SetColor(TL_H,Red);
}
Else If 고[1,1] < HH[n] Then // 고점 다음에 다시 고점이 온 경우로 신규 고점이 더 높아야 의미가 있다.
{
고[1,1] = HH[n];
고[1,2] = Index - n;
고[1,3] = sDate[n];
고[1,4] = sTime[n];
TL_SetEnd(TL_H,고[1,3],고[1,4],고[1,1]);
// 시작점은 변동없고 끝점의 위치가 현재 봉으로 연장된 것임
TL_SetSize(TL_H,파동선두께);
}
최종꼭지점 = "고점"; // 이전 꼭지점이 무엇인지 판단하기 쉽도록 변수에 상태를 저장
}
//==========================================
If 처리구분 == "저점처리" Then
{
If 최종꼭지점 == "고점" then
{
For j = 10 DownTo 2
{
For jj = 1 To 4
{
저[j,jj] = 저[j-1,jj];
}
}
저[1,1] = LL[n];
저[1,2] = Index - n;
저[1,3] = sDate[n];
저[1,4] = sTime[n];
TL_L = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]);
TL_H_3 = TL_H_2;
TL_H_2 = TL_H_1;
TL_H_1 = TL_H;
TL_SetSize(TL_L,파동선두께);
TL_SetColor(TL_L,Blue);
//var1 = NthHighest(1,strongL,고[1,2]-저[2,2]+1)[저[1,2]-고[1,2]+n];
//var2 = NthHighest(2,strongL,고[1,2]-저[2,2]+1)[저[1,2]-고[1,2]+n];
//var3 = NthHighest(3,strongL,고[1,2]-저[2,2]+1)[저[1,2]-고[1,2]+n];
Var13 = 고[1,2]-저[2,2]+1;
var14 = 저[1,2]-고[1,2]+n;
t1 = 고[1,2]-저[2,2]+1;
t2 = 저[1,2]-고[1,2]+n;
//*
MessageLog("%.2f %.2f %.2f %.f %.f %.f %.f %.f %.2f ",Asks/Bids,고[1,2]-저[2,2]+1,
저[1,2]-고[1,2]+n,sTime,
고[1,3],고[1,4],
저[2,3],저[2,4],
NthHighest(1,Asks/Bids,고[1,2]-저[2,2]+1)[저[1,2]-고[1,2]+n]);
//*/
//var1 = NthHighest(1,Asks/Bids,Var13)[var14];
var2 = NthHighest(2,Asks/Bids,Var13)[var14];
var3 = NthHighest(3,Asks/Bids,Var13)[var14];
//var1 = NthHighest(1,Asks/Bids,고[1,2]-저[2,2]+1)[저[1,2]-고[1,2]+n];
//var2 = NthHighest(2,Asks/Bids,고[1,2]-저[2,2]+1)[저[1,2]-고[1,2]+n];
//var3 = NthHighest(3,Asks/Bids,고[1,2]-저[2,2]+1)[저[1,2]-고[1,2]+n];
MessageLog("%.2f %.2f %.2f %.f %.f %.f %.f %.f %.f %.f %.f %.f %.f %.f %.f %.f" ,var1,Var2,Var3,var11,Var12
,NthHighestBar(1,Asks/Bids,고[1,2]-저[2,2]+1)[저[1,2]-고[1,2]+n],
NthHighestBar(2,Asks/Bids,고[1,2]-저[2,2]+1)[저[1,2]-고[1,2]+n]
,NthHighestBar(3,Asks/Bids,고[1,2]-저[2,2]+1)[저[1,2]-고[1,2]+n]
,NthHighestBar(1,Asks/Bids,Var13)[var14]
,NthHighestBar(2,Asks/Bids,Var13)[var14]
,NthHighestBar(3,Asks/Bids,Var13)[var14]
,NthHighestBar(1,Asks/Bids,t1)[t2]
,NthHighestBar(2,Asks/Bids,t1)[t2]
,NthHighestBar(3,Asks/Bids,t1)[t2]
);
}
Else If 저[1,1] > LL[n] then
{
저[1,1] = LL[n];
저[1,2] = Index - n;
저[1,3] = sDate[n];
저[1,4] = sTime[n];
TL_SetEnd(TL_L,저[1,3],저[1,4],저[1,1]);
TL_SetSize(TL_L,파동선두께);
}
최종꼭지점 = "저점";
}
질문1
제룡전기 1분봉 1300봉 기준으로 해당지표를돌려보면 24년7월8일 9시59분에 결과값이 매우이상합니다.
,NthHighestBar(1,Asks/Bids,고[1,2]-저[2,2]+1)[저[1,2]-고[1,2]+n],
NthHighestBar(2,Asks/Bids,고[1,2]-저[2,2]+1)[저[1,2]-고[1,2]+n]
,NthHighestBar(3,Asks/Bids,고[1,2]-저[2,2]+1)[저[1,2]-고[1,2]+n]
와
,NthHighestBar(1,Asks/Bids,Var13)[var14]
,NthHighestBar(2,Asks/Bids,Var13)[var14]
,NthHighestBar(3,Asks/Bids,Var13)[var14]
와
,NthHighestBar(1,Asks/Bids,t1)[t2]
,NthHighestBar(2,Asks/Bids,t1)[t2]
,NthHighestBar(3,Asks/Bids,t1)[t2]
는 모두 같은 값이출력되어야하는데
16 17 15 로 출력되고
2 0 3
2 0 3 이렇게 출력됩니다.
매우이상합니다
이런식으로 되면 어떻게 수식을작성해야되는지막막합니다.
해당 구간에서는
,NthHighestBar(1,Asks/Bids,고[1,2]-저[2,2]+1)[저[1,2]-고[1,2]+n],
NthHighestBar(2,Asks/Bids,고[1,2]-저[2,2]+1)[저[1,2]-고[1,2]+n]
,NthHighestBar(3,Asks/Bids,고[1,2]-저[2,2]+1)[저[1,2]-고[1,2]+n]
결과값이 맞는걸로나오는데
이게 아니라 다른종목에서는 반대의 결과로
,NthHighestBar(1,Asks/Bids,고[1,2]-저[2,2]+1)[저[1,2]-고[1,2]+n],
NthHighestBar(2,Asks/Bids,고[1,2]-저[2,2]+1)[저[1,2]-고[1,2]+n]
,NthHighestBar(3,Asks/Bids,고[1,2]-저[2,2]+1)[저[1,2]-고[1,2]+n]
값이 틀리고
변수로 저장해서 한게 맞는케이스가 간혹나옵니다
디버깅하는데 한계가있는데 디버깅해주십시오
제가 잘못사용하는건지...
아님 프로그램에 버그가있는건지궁금합니다.
질문2
제룡전기 1분봉 1300봉 기준으로 해당지표를돌려보면 24년7월10일 9시9분에 결과값이 매우이상합니다.
0.0 1..7 1.#R 이렇게나오는데요
여기에는 이런 값이 나올수없을뿐더러 이렇게 1.#R로 계산이되는일은 없어야되는곳인데 이렇게 값이 완전다르거나 없는값으로 나오는경우도 많습니다.
확인 부탁드리빈다.
2024-07-11
909
글번호 181372
tjsdud 님에 의해서 삭제되었습니다.
2024-07-10
0
글번호 181371