커뮤니티
예스랭귀지 Q&A
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1392
글번호 230811
답변완료
문의드립니다
1
0봉(현재봉) 제외하고
1봉전 거래대금
2봉전 거래대금
3봉전 거래대금
....
몇봉전 거래대금을 차례로 누적하여
누적 거래대금이 5000천억 돌파할때 까지
걸리는 봉의 갯수를 나타내는지표
2
거래대금을 누적하는 지표를 만들고
누적거래대금이
0 에서 2000천억 구간 사이의 최고값과 최저값
2000천억 에서 4000천억 구간 사이의 최고값과 최저값
4000천억 에서 6000천억 구간 사이의 최고값과 최저값
.....
2000천억 배수를 돌파할때 마다
그 사이 구간의 최고값과 최저값
감사합니다
2024-07-11
734
글번호 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
862
글번호 181372
tjsdud 님에 의해서 삭제되었습니다.
2024-07-10
0
글번호 181371
답변완료
안녕하세요, 수식을 문의드립니다
안녕하세요
예스스탁입니다.
어떤 구조로 변경을 요청하시는지 모르겠습니다.
답변드린 수식은 청산식이고
올려주신 내용은 진입식 내용인데
해당 식 아래에 붙여넣기 하고 사용하시면 됩니다.
즐거운 하루되세요
> 금보 님이 쓴 글입니다.
> 제목 : 안녕하세요, 수식을 문의드립니다
>
안녕하세요,
수식을 문의드립니다
저의 문의에 대하여
주신 답변에 감사드리며
<<< RE
안녕하세요
예스스탁입니다.
문의하신 내용을 정확히 이해하지 못했습니다.
0.85 이상 수익이후에 최고가에서 0.25포인트 하락하면 청산하게 작성해 드립니다
if MarketPosition == 1 and highest(h,BarsSinceEntry) >= EntryPrice+0.85 Then
ExitLong("bx",AtStop,highest(h,BarsSinceEntry)-0.25);
if MarketPosition == -1 and lowest(l,BarsSinceEntry) <= EntryPrice-0.85 Then
ExitShort("sx",AtStop,lowest(l,BarsSinceEntry)+0.25); >>>
((( 답변을 주신 수식을 C>= Value20 or C>= Value60 or C>= Value120 등등
몇가지 다른 수식과 같이 적용하려 하오니 )))
아래의 수식에 적용할수 있도록
# 매수/매도청산
If
if MarketPosition == 1 and highest(h,BarsSinceEntry) >= EntryPrice+0.85 Then
ExitLong("bx",AtStop,highest(h,BarsSinceEntry)-0.25);
or C>= Value20
or C>= Value60
or C>= Value120
Then
{
Buy();
}
# 매도/매수청산
If
if MarketPosition == -1 and lowest(l,BarsSinceEntry) <= EntryPrice-0.85 Then
ExitShort("sx",AtStop,lowest(l,BarsSinceEntry)+0.25);
or C<= Value20
or C<= Value60
or C<= Value120
Then
{
sell();
}
이러한
수식으로 만들어 주시기 바랍니다
감사합니다
2024-07-10
822
글번호 181370
구름구름 님에 의해서 삭제되었습니다.
2024-07-10
34
글번호 181369
답변완료
문의
코스피 선물연결지수와 코스닥 선물연결지수의
날짜별 시가 고가 저가 종가 데이터를 엑셀로
매일 받아보고 싶습니다.
자동화 하고 싶은데 그게 안되면
수동으로 하는 방법이라도 부탁드려요
2024-07-10
565
글번호 181368
답변완료
문의 드립니다
수고하십니다
1) AFMAX(value1) 으로 가변 되는지요
가능하다면
2) 소수점 아래 5자리수 아래로는 버렸으면 합니다
감사합니다
Input : AF(0.01), AFMAX(Value1);
value1 = Data2(c) / Data3(c) ;
Input : p(0);
var : Diff(0), mav(0);
Diff = (C);
mav = ma(Diff,P);
Var : Direction(0), SAR_Value(Diff), AF_Value(.02), HighValue(diff), LowValue(diff), EP(0),CSARV(0);
if Diff == 0 Then
Diff = Diff[1];
if EP != 0 Then
{
if Direction == 1 then
{
EP = HighValue;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if diff > HighValue then
{
HighValue = diff;
AF_Value = AF_Value + AF;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
if diff < SAR_Value then
{
Direction = -1;
SAR_Value = EP;
AF_Value = 0;
EP = 0;
LowValue = diff;
}
}
else
{
EP = LowValue;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if diff < LowValue then
{
LowValue = diff;
AF_Value = AF_Value + Af;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
if diff > SAR_Value then
{
Direction = 1;
SAR_Value = EP;
AF_Value = 0;
EP = 0;
HighValue = diff;
}
}
CSarv = SAR_Value;
}
else
{
if SAR_Value != 0 && EP == 0 then
{
if Direction == 1 then
{
EP = HighValue;
AF_Value = AF;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if diff > HighValue then
{
HighValue = diff;
AF_Value = AF_Value + AF;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
}
else
{
EP = LowValue;
AF_Value = Af;
SAR_Value = SAR_Value + AF_Value * (EP - SAR_Value);
if diff < LowValue then
{
LowValue = diff;
AF_Value = AF_Value + AF;
if AF_Value >= AFMAX then AF_Value = AFMAX;
}
}
CSarv = SAR_Value;
}
else
{
if Direction == 0 then
{
if diff > diff[1] then Direction = 1;
else
if diff < diff[1] then Direction = -1;
}
else
{
if Direction == 1 then
{
if diff < diff[1] then
{
Direction = -1;
SAR_Value = HighValue;
CSarv = SAR_Value;
}
}
if Direction == -1 then
{
if diff > diff[1] then
{
Direction = 1;
SAR_Value = LowValue;
CSarv = SAR_Value;
}
}
}
LowValue = min(diff, LowValue);
HighValue = max(diff, HighValue);
}
}
if (diff > CSARV) Then
Buy("매수");
if (diff < CSARV) Then
ExitLong("청산");
2024-07-11
793
글번호 181362
답변완료
함수요청
안녕하세요?
아래 전략에 대해 스크립트 작성 부탁드립니다.
국내선물 5분봉으로 일중거래를 하고자 합니다.
전영업일 종가 < 20ma < 당일 시가이고
당일의 첫봉의 MACD 오실레터가 양인데 음으로 반전하되 그 반전 시점까지 당일 스토케스틱 %K와 %D 교차가 3번이내였으면 완성시 익봉 시가에 매도 진입
20ma 이탈 완성하거나 MACD 오실레이터가 양전환되면 먼저 도래 되는 시점 익봉 시가에 매도청산
전영업일 종가 > 20ma > 당일 시가이고
당일의 첫봉의 MACD 오실레터가 음인데 양으로 반전하되 그 반전 시점까지 당일 스토케스틱 %K와 %D 교차가 3번이내였으면 완성시 익봉 시가에 매수 진입
20ma 돌파 완성하거나 MACD 오실레이터가 음전환되면 먼저 도래 되는 시점 익봉 시가에 매수청산
매수든 매도는 최대 하루 한번 진입하며 15시 20분 강제청산 하고자 합니다.
2024-07-10
688
글번호 181354
답변완료
문의 드립니다
안녕하세요
볼밴상단을 상향돌파하거나 터치하고 다시 상단안으로 들어오면 매도신호
볼밴하단을 하향돌하거나 터치하고 다시 하단안으로 들어오면 매수신호
이평변수는 변환가능하게 부탁드립니다
감사합니다
2024-07-10
665
글번호 181353