커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1513
글번호 230811
답변완료
swinghigh 값을 messagelog로 표시하기
항상 도움에 감사드립니다.
1.
첫번째 이미지에 있는 차트를 가지고
swinghigh의 값을 messagelog로 출력 해봤는데요.
코드는 아래와 같습니다.
--------------------------------------------------------------------
input: LeftL(3),RightL(3),period(500);
var : k(0);
Array: swingH[4](0), swingL[4](0);
for k = 1 to 4;
{
swingH[k] = SwingHigh(k, H, LeftL, RightL, period);
}
MessageLog("swingH : %.f, %.f, %.f, %.f ", swingH[1], swingH[2], swingH[3],swingH[4]);
-------------------------------------------------------------------
그런데 messagelog 의 값이 두번째 이미지와 같이
다 0으로 나오는데요.
어디가 잘못됐는지 모르겠습니다.
swinghigh1 ~ 4번째 까지 값을 messagelog로 디버깅 창에
출력하려면 어떻게 해야하나요?
(또는 swinghigh에 for문을 쓰는 것이 잘못된 것인가요?)
2023-08-24
1382
글번호 171825
답변완료
전환추세 쌍바닥 조건 추가
Input : 전환(0.25);
Var:j(0),jj(0),HH(0),LL(0),hiBar(0),loBar(0),최종꼭지점(""),처리구분(""),TL(0),tx(0),tx1(0);
Array:고[10,4](0),저[10,4](0);
Plot1(0);
HH = H;
LL = L;
If Index == 0 Then
{
고[1,1] = HH;
고[1,2] = 0;
고[1,3] = sDate;
고[1,4] = sTime;
저[1,1] = LL;
저[1,2] = 0;
저[1,3] = sDate;
저[1,4] = sTime;
}
If Index > 0 Then
{
hiBar = hiBar + 1;
loBar = loBar + 1;
}
If HH[hiBar] < HH Then hiBar = 0;
If LL[loBar] > LL Then loBar = 0;
Condition1 = 저[1,1]+전환 <= HH and hiBar == 0;
Condition2 = 고[1,1]-전환 >= LL and loBar == 0;
처리구분 = "";
If Condition1 and Condition2 Then
{
If 최종꼭지점 == "저점" Then
{
If 저[1,1] > LL Then 처리구분 = "저점처리";
Else 처리구분 = "고점처리";
}
Else If 최종꼭지점 == "고점" Then
{
If 고[1,1] < HH Then 처리구분 = "고점처리";
Else 처리구분 = "저점처리";
}
}
Else If Condition1 Then 처리구분 = "고점처리";
Else If Condition2 Then 처리구분 = "저점처리";
If 처리구분 == "고점처리" Then
{
If 최종꼭지점 == "저점" Then
{
For j = 10 DownTo 2
{
For jj = 1 To 4
{
고[j,jj] = 고[j-1,jj];
}
}
고[1,1] = HH[hiBar];
고[1,2] = Index - hiBar;
고[1,3] = sDate[hiBar];
고[1,4] = sTime[hiBar];
hiBar = -1;
loBar = -1;
TL = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]);
TL_SetSize(TL,2);
TL_SetColor(TL,RED);
if 저[1,1] <= 저[2,1] + PriceScale* 2 and 저[1,1] >= 저[2,1] - PriceScale* 1 Then
{
tx = text_new(저[1,3],저[1,4],저[1,1],"●");
Text_SetStyle(tx,2,2);
Text_SetColor(tx,Magenta);
Text_SetSize(tx,20);
}
if 저[1,1] <= 저[2,1] - PriceScale* 2 and 저[1,1] <= 고[2,1]-0.5 Then
{
tx1 = text_new(저[1,3],저[1,4],저[1,1],"●");
Text_SetStyle(tx1,2,2);
Text_SetColor(tx1,Black);
Text_SetSize(tx1,25);
}
}
Else If 고[1,1] < HH[hiBar] Then
{
고[1,1] = HH[hiBar];
고[1,2] = Index - hiBar;
고[1,3] = sDate[hiBar];
고[1,4] = sTime[hiBar];
hiBar = -1;
loBar = -1;
TL_SetEnd(TL,고[1,3],고[1,4],고[1,1]);
}
최종꼭지점 = "고점";
}
If 처리구분 == "저점처리" Then
{
If 최종꼭지점 == "고점" Then
{
For j = 10 DownTo 2
{
For jj = 1 To 4
{
저[j,jj] = 저[j-1,jj];
}
}
저[1,1] = LL[loBar];
저[1,2] = Index - loBar;
저[1,3] = sDate[loBar];
저[1,4] = sTime[loBar];
hiBar = -1;
loBar = -1;
TL = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]);
TL_SetSize(TL,2);
TL_SetColor(TL,BLUE);
}
Else If 저[1,1] > LL[loBar] Then
{
저[1,1] = LL[loBar];
저[1,2] = Index - loBar;
저[1,3] = sDate[loBar];
저[1,4] = sTime[loBar];
hiBar = -1;
loBar = -1;
TL_SetEnd(TL,저[1,3],저[1,4],저[1,1]);
}
최종꼭지점 = "저점";
}
83488 재문의
0.5p 이상인 하락추세선에 의미없이 표시만 됩니다.
하락추세선의 크기가 0.5p 이상일 때, 다음 하락추세선의 저점이 -2틱으로 쌍바닥이 될 때 동그라미 표시. 0.5p 이하이면 기존 수식대로 +2틱에서 -1틱에 쌍바닥이면 표시.
(-2틱 쌍바닥은 직전 하락추세선의 크기가 0.5p 이상일 때만 해당)
수정 부탁드립니다.
2023-08-24
2183
글번호 171824
답변완료
수식 문의입니다.
if var23==1 and L < Var20 Then { Var23=2;
Print("C:₩Users₩user₩Desktop₩백업₩data.csv",",%.2f",var23);}
이렇게 하려고 할때 var23에 값이 0이나 다른 숫자로 변경되지 않는 이상 한번만 출력하려면 어떻게 수정하면 될까요?? 도움 부탁드립니다. 감사합니다.
2023-08-24
1291
글번호 171823
답변완료
옵션 시뮬레이터 역사적 변동성
x = log(당일종가/전일종가)
a = 수익율(x) 제곱 합산
b = 수익율(x) 합산
c = (a/기간-1) - (b/기간-1)
d = c의 제곱근
HV = d * 244 의 제곱근
HV : 역사적 변동성
예전에 옵션 시뮬레이터에 있는 역사적 변동성 (HV 60일) 값을 구하는 공식을 위와 같이 답변해주셨는데, 예트 코스피200 종합 지수에 지표를 적용하니 값이 다르게 나옵니다. 아래 수식은 지표 수식입니다. 어떻게 수정하면 좋을까요? 항상 도움주셔서 감사합니다.
Input : period(60);
var : cnt(0);
Var1 = log(C/C[1]);
Var10 = Square(Var1);
Var2 = 0;
For cnt = 0 to period-1 {
Var2 = Var10[cnt] + Var2;
}
Var3 = 0;
For cnt = 0 to period-1 {
Var3 = Var1[cnt] + Var3;
}
Var4 = (Var2/period-1) - (Var3/period-1);
Var5 = SqRt(Var4);
Var6 = Var5 * SqRt(244);
Plot1(Var6);
2023-08-24
1095
글번호 171820
답변완료
swinghigh
안녕하세요?
손절설정 부탁드립니다
buy 진입시 : SL2
sell 진입시 : SH2
감사합니다~~^^
안녕하세요
예스스탁입니다.
변수의 기본값이 기본이 0 이므로 0보다 큰것은 값이 저장된것을 의미합니다.
지정한 변수에 값저장이 없어 추가해 드립니다.
input : left(3),right(3);
var : sl1(0),sl2(0),sh1(0),sh2(0);
if SwingLow(1,L,Left,right,Left+right+1) != -1 Then
{
sl1 = l[right];
sl2 = sl1[1];
#최근저점이 전저점보다 크면 매수
if SL1 > SL2 and SL2 > 0 Then
buy();
}
if SwingHigh(1,H,Left,right,Left+right+1) != -1 Then
{
sh1 = h[right];
sh2 = sh1[1];
#최근고점이 전고점보다 작으면 매도
if SH1 < SH2 and SH2 > 0 Then
sell();
}
input : SL(70),SPR(1.2);
SetStopContract;
SetStopLoss(SL,PointStop);
SetStopProfittarget(SL*SPR,PointStop);
즐거운 하루되세요
2023-08-24
1082
글번호 171819
답변완료
안녕하세요
안녕하세요
선물 매매 수식 1
1,
선물지수가
30봉 이내에
5ma가 60ma를 golden cross 하였으며
다시 60ma를 하향 이탈 후
다시 5ma가 60ma를 golden cross 하면 매수
( 단 전저점을 0.1P 이내 하회하여야 한다
= 단 전고점을 0.1P 이상 하락하면 안된다)
2,
선물지수가
30봉 이내에
5ma가 60ma를 Dead cross 하였으며
다시 60ma를 상향 돌파 후
다시 5ma가 60ma를 Dead cross 하면 매도
( 단 전고점을 0.1P 이내 여야 한다
= 단 전고점을 0.1P를 초과하면 안된다)
선물 매매 수식 2
Input : Period(12), Period1(5), Period2(5);
value1 = StochasticsK(Period,Period1);
value2 = StochasticsD(Period,Period1,Period2);
# 매수/매도청산
If CrossUP(value1, value2) Then
{
Buy();
}
# 매도/매수청산
If CrossDown(value1, value2) Then
{
sell();
}
위의 수식을
1,
선물지수가
30봉 이내에
value1가 value2를 golden cross 하였으며
다시 value2를 하향 이탈 후
다시 value1가 value2를 golden cross 하면 매수
2,
선물지수가
30봉 이내에
value1가 value2를 Dead cross 하였으며
다시 60ma를 상향 돌파 후
다시 value1가 value2를 Dead cross 하면 매도
선물 매매 수식 3
ㄱ,
20ma가 12봉 중에서 7봉 상향시 매수
ㄴ,
20ma가 12봉 중에서 7봉 하향시 매도
감사합니다
2023-08-24
852
글번호 171804
정구지 님에 의해서 삭제되었습니다.
2023-08-24
37
글번호 171803
답변완료
수식문의
수고하십니다.
(문의1) 아래수식에서 3분봉에서 120봉 이내에서 문의종목검색식을 만족하는
3번째 봉을 검색하고 싶습니다.
(문의2) 검색된 종목이 재검색시에도 계속유지될 수 있도록 부탁드립니다
# 문의종목검색식 if CROSSUP(C,CL) OR CROSSUP(C,LL) &&
C>C[1] && C>O && V>V[1]*1.0 Then
Find(1);
Input : P20(20);
Var : CL(0),sum(0),ii(0),avgif(0),cnt(0);
Var : SumSqrt(0),StdevIf(0),LL(0);
Array : diff[500](0);
CL = ma(C,p20);
Var1 = C-CL;
if IsNan(CL) == False then
{
if Var1 < 0 Then
{
ii = ii + 1;
diff[ii] = var1;
sum = sum + var1;
avgif = sum/ii;
}
if ii >= 1 then
{
SumSqrt = 0;
For cnt = 1 To ii
{
SumSqrt = SumSqrt + (diff[cnt] - avgif)^2;
}
StdevIf = SquareRoot(SumSqrt / ii);
LL = Var1 + avgif - 2*StdevIf;
if CROSSUP(C,CL) OR CROSSUP(C,LL) && C>C[1] && C>O && V>V[1]*1.0 Then
Find(1);
}
}
2023-08-24
905
글번호 171801
답변완료
문의드립니다
안녕하세요?
아래수식에서
소리출력이 한번만되도록 도와주세요
감사합니다
if s == 1 and s1 == 0 and s2 == -1 Then
PlaySound("C:₩WRFutures₩YesGlobalPro₩data₩Sound₩alert.wav");
2023-08-24
863
글번호 171798