커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7356
글번호 230811
답변완료
부탁드립니다.
답변에 대해 감사드립니다.
초보라서 그런지 질문을 자꾸하니까 이해가 되는군요.
지수상관계수와 지수베타계수에 대해서 2개를 겹치지 않고 별도로 보고싶습니다.
1. 지수상관계수를 오실레이터 형상으로 보고싶습니다.
이때 0보다 큰 윗부분은 적색으로 아래부분은 청색으로 보고싶습니다.
13일기준 기본종목과 참조데이터는 제가 넣고 막대그래프로 수정하겠습니다.
2. 지수베타계수도 상간계수와는 별도롤 오실레이터 형상으로 보고싶습니다.
이때 0보다 큰 윗부분은 적색으로 아래부분은 청색으로 보고싶습니다.
13일기준 기본종목과 참조데이터는 제가 넣고 막대그래프로 수정하겠습니다.
다시한번 도움을 청합니다. 감사합니다.
안녕하세요
예스스탁입니다.
참조데이터로 지수를 추가하고 아래식 적용하시면 됩니다.
참조데이터는 차트왼쪽 상단의 종목선택 버튼 중 오른쪽을 클릭하시면
선택해 추가할 수 있습니다.
input : length(13);
var : ii(0);
var : Rjt(0), Rmt(0);
var : ERj(0), ERm(0);
var : Dtj(0), Dtm(0), Dtc(0), Dtsm(0), Dtsj(0);
var : Dcov(0), Dsig(0), Dfac(0);
Rjt = data1((c - c[1]) / c[1]);
Rmt = data2((c - c[1]) / c[1]);
ERj = data1(ma(Rjt,length));
ERm = data2(ma(Rmt,length));
Dtc = 0;
Dtsm = 0;
Dtsj = 0;
for ii = 0 to length-1 {
Dtj = Rjt[ii] - ERj; //종목편차=가격-평균
Dtm = Rmt[ii] - ERm; //마켓편차=가격-평균
Dtsm= Dtsm + (Dtm ^ 2); //시장편차제곱의합
Dtsj= Dtsj + (Dtj ^ 2); //종목편차제곱의합
Dtc = Dtc + (Dtj * Dtm);
}
Dcov = Dtc / (length-1);
Dsig = Dtsm/ (length-1);
Dfac = Dcov/Dsig;//베타계수
plot1(Dfac,"베타");
plot2(data1(Correlation(data1(c),data2(c),13)),"상관");
2017-01-08
159
글번호 105685
답변완료
수식 부탁드립니다.
안녕하세요.
예스글로벌에서 윗꼬리 또는 밑꼬리가 한쪽이라도 몸통보다 같거나 긴 경우에
(음봉이든, 양봉이든 상관없이)
차트에 표시가 되도록 하는 수식 부탁드립니다.
감사합니다.
2017-01-08
134
글번호 105684
답변완료
수식좀 부탁합니다.
항상 빠른 답변에 감사드립니다.
1. 아래 수식에서 신호 발생 조건 만족 후에 즉시 신호 발생하지 말고 3틱이 더 진행된 후에 발생하거나,
또는 3개 캔들이 더 지난 후에도 조건 만족을 유지하고 있으면 신호 발생 되도록 해주세요..
2. 아래 수식에서 신호 발생후 몇틱째 이익인지 표시 되도록하기위해 아래 수식을 붙여넣었더니 신호 발생이 안됩니다.
해결좀 부탁합니다.
if MarketPosition == 1 Then{
var1 = Floor((highest(H,BarsSinceEntry)-EntryPrice)/(PriceScale*3));
if var1 > var1[1] Then
Text_New(sdate,stime,H,NumToStr(var1*3,0)+"틱");
}
if MarketPosition == -1 Then{
var1 = Floor((EntryPrice-Lowest(L,BarsSinceEntry))/(PriceScale*3));
if var1 > var1[1] Then
Text_New(sdate,stime,H,NumToStr(var1*3,0)+"틱");
}
----------------------------------------------------------------------
input : P(40);
var1 = ma(c,P);
if var1 > var1[1] Then
buy("매수",AtMarket);
if var1 < var1[1] Then
sell("매도",AtMarket);
if MarketPosition == 1 Then{
var1 = Floor((highest(H,BarsSinceEntry)-EntryPrice)/(PriceScale*3));
if var1 > var1[1] Then
Text_New(sdate,stime,H,NumToStr(var1*3,0)+"틱");
}
if MarketPosition == -1 Then{
var1 = Floor((EntryPrice-Lowest(L,BarsSinceEntry))/(PriceScale*3));
if var1 > var1[1] Then
Text_New(sdate,stime,H,NumToStr(var1*3,0)+"틱");
}
2017-01-08
130
글번호 105683
답변완료
5번째
11시이후 5번째양봉에매수 또는5번째
음봉에 매도 수식 부탁합니다
2017-01-08
119
글번호 105682
답변완료
부탁드립니다-----
아래식을 간단하게안되나요 부탁드립니다
if TEMA1+지수더하기 > TEMA2+호가더하기 Then{
var80 = (TEMA1+지수더하기 - TEMA2+호가더하기)*0.5+TEMA2+호가더하기;
}
if TEMA1+지수더하기 < TEMA2+호가더하기 Then{
var80 = (TEMA2+호가더하기-TEMA1+지수더하기 )*0.5+TEMA1+지수더하기;
}
PLOT17(var80,"지호평균");
2017-01-08
124
글번호 105681
답변완료
지표문의드립니다.
장 시작후 각 캔들의 중간값들의 평균을 구하는 수식입니다. 물론 예스스탁을 통해서
받은것입니다.
input : 시간(90000);
if stime == 시간 or (stime > 시간 and stime[1] < 시간) Then{
var1 = 0;
var2 = 0;
}
var1 = var1+(H+L)/2;
var2 = var2+1;
plot1(var1/var2);
그냥 무리없이 잘 사용하고 있으나 국내선물경우 수능시험일이나 특수한 경우 장시작시간이 9시가 아닌 10인경우 시간을 다시 세팅해야하고 해외선물경우 썸머타임에 따라 장시작시간이 변경이 되는경우가 있어서 매일 제가 세팅해서 사용하는데에는 문제가 없지만 과거차트를 볼때는 불편함이 있습니다.
보통 시저가 라인이라는 지표를 보면 시가를 dayopen이라는것을 사용해서 위와같이 시작시간이 변경되어도 자동적으로 시가를 표현하는데 이 지표식도 그렇게 바꾸었으면 합니다.
그리고 하루전, 이틀전, 삼일전, 사일전 도 같이 볼수있었으면 합니다.
정리하자면 위에 지표식(중간값평균식)을
1. 제가 시가시간을 기입하는방식이 아니고 자동적으로 시가가 결정되어서 작동되는 지표를
원합니다.
2. 추가적으로 하루전, 이틀전, 삼일전, 사일전 중간값평균도 같이 나오게 하는 지표를 원합니다.
(2017년 1월3일 해외선물이 개장하였으니 1월3일 기준으로는 하루전이 12월30일 되겠죠.
이렇게 자동적으로 알아서 나오는 지표식을 원합니다.
국내선물경우 수능시험 다음날 차트를 봤을때 하루전 (즉, 수능시험당일) 차트에서는 시작시간이 10시로 해서 중간값평균이 자동적으로 표시되게끔 표시되었으면 합니다.)
새해복많이 받으시고 빠른답변 부탁드립니다.
2017-01-08
159
글번호 105680
답변완료
문의드립니다
문의드립니다.
#==============================================================================#
# 지 표 명 : Range Bar Bollinger Bands
# 작 성 자 : 수식지왕
# 내 용 : Range Bar Chart의 값으로 계산한 Bollinger Bands
# 분봉 차트에 적용
# 블 로 그 : http://yahoosir.blog.me
#==============================================================================#
Input:tick(20);
Input:BBPeriod(12), MultiD(2);
Var:j(0),k(0),n(0),trend(0),tickVal(0),oneTick(0),count(0),remain(0);
var:Sum(0),SumPow(0),MApow(0),STDv(0);
Array:OO[1000](0),HH[1000](0),LL[1000](0),CC[1000](0),val[4](0);
Array:MAv[1000](0),BBup[1000](0),BBdn[1000](0);
#==============================================================================#
# Range Bar Chart 계산
#==============================================================================#
If Index == 0 Then
{
tickVal = tick * PriceScale;
oneTick = PriceScale;
OO[0] = O;
HH[0] = O;
LL[0] = O;
CC[0] = O;
}
count = 0;
val[0] = O;
val[3] = C;
If O > C Then
{
val[1] = H;
val[2] = L;
If L < C Then trend = 1;
Else trend = -1;
}
Else If O < C Then
{
val[1] = L;
val[2] = H;
If H > C Then trend = -1;
Else trend = 1;
}
Else If C[1] > O Then
{
val[1] = L;
val[2] = H;
If H > C Then trend = -1;
Else trend = 1;
}
Else If C[1] < O Then
{
val[1] = H;
val[2] = L;
If L < C Then trend = 1;
Else trend = -1;
}
Else If trend == 1 Then
{
val[1] = H;
val[2] = L;
If L < C Then trend = 1;
Else trend = -1;
}
Else If trend == -1 Then
{
val[1] = L;
val[2] = H;
If H > C Then trend = -1;
Else trend = 1;
}
For k = 0 To 3
{
If HH[0] > 0 && HH[0] < val[k] Then
{
While val[k] - LL[0] > tickVal
{
HH[0] = LL[0] + tickVal;
CC[0] = HH[0];
For j = 998 DownTo 0
{
OO[j+1] = OO[j];
HH[j+1] = HH[j];
LL[j+1] = LL[j];
CC[j+1] = CC[j];
}
count = count + 1;
OO[0] = HH[1] + oneTick;
LL[0] = OO[0];
}
If val[k] - LL[0] <= tickVal Then
{
HH[0] = val[k];
CC[0] = val[k];
}
}
Else If LL[0] > val[k] Then
{
While HH[0] - val[k] > tickVal
{
LL[0] = HH[0] - tickVal;
CC[0] = LL[0];
For j = 998 DownTo 0
{
OO[j+1] = OO[j];
HH[j+1] = HH[j];
LL[j+1] = LL[j];
CC[j+1] = CC[j];
}
count = count + 1;
OO[0] = LL[1] - oneTick;
HH[0] = OO[0];
}
If HH[0] - val[k] <= tickVal Then
{
LL[0] = val[k];
CC[0] = val[k];
}
}
Else
{
CC[0] = val[k];
}
}
#==============================================================================#
# Range Bar Chart BollBand 값 계산
#==============================================================================#
If count > 0 && CC[BBPeriod - 1 + count] > 0 Then
{
For n = count DownTo 1
{
For j = 998 DownTo 1
{
MAv[j+1] = MAv[j];
BBup[j+1] = BBup[j];
BBdn[j+1] = BBdn[j];
}
Sum = 0; SumPow = 0;
For j = n To BBPeriod - 1 + n
{
Sum = Sum + CC[j];
SumPow = SumPow + Pow(CC[j],2);
}
MAv[1] = Sum/BBPeriod;
MApow = SumPow/BBPeriod;
STDv = SqRt(MApow - Pow(MAv[1],2));
BBup[1] = MAv[1] + (MultiD * STDv);
BBdn[1] = MAv[1] - (MultiD * STDv);
}
}
Else
{
Sum = 0; SumPow = 0;
For j = 0 To BBPeriod - 1
{
Sum = Sum + CC[j];
SumPow = SumPow + Pow(CC[j],2);
}
MAv[0] = Sum/BBPeriod;
MApow = SumPow/BBPeriod;
STDv = SqRt(MApow - Pow(MAv[0],2));
BBup[0] = MAv[0] + (MultiD * STDv);
BBdn[0] = MAv[0] - (MultiD * STDv);
}
If DayIndex == 0 Then remain = 0;
remain = remain + count;
n = remain;
If MAv[n] > 0 Then Plot1(MAv[n], "이평");
If BBup[n] > 0 Then Plot2(BBup[n], "상단밴드");
If BBdn[n] > 0 Then Plot3(BBdn[n], "하단밴드");
If remain > 0 Then remain = remain - 1;
..................
위의 지표식에서 하단부분의 볼린저밴드대신에
1.일목균형표와
2.Awesome 으로 각각 변경부탁드립니다.
input : ShortPeriod(5),LongPeriod(34),Signalperiod(5);
var : Mid(0),AO(0),Signal(0);
Mid = (H+L)/2;
AO = Ma(Mid,ShortPeriod)-Ma(Mid,LongPeriod);
Signal = Ma(AO,Signalperiod);
If AO[1] < AO Then
Plot1(AO, "상승Awosome");
If AO[1] > AO Then
Plot2(AO, "하락Awosome");
plot3(Signal,"시그널");
PlotBaseLine1(0,"기준선");
2017-01-09
258
글번호 105679
backsu9 님에 의해서 삭제되었습니다.
2017-01-08
18
글번호 105678
답변완료
수식 부탁드립니다
아래와 같은 피라미딩과 트레일링 스탑을 매수만 적용 했을때 그림과 같은 진입과 청산 지점이 나옵니다.
최초 진입은 buy 이고 피라미딩은 bb, bs입니다.
if MarketPosition == 1 Then
{
if MaxContracts < 20 and entryprice > LatestEntryPrice Then
buy("bb",atstop,LatestEntryPrice(0)+1.5,1);
if MaxContracts < 20 Then
buy("bs",atlimit,latestEntryPrice(0)-5,1);
}
if MarketPosition == -1 Then
{
if MaxContracts < 20 and entryprice < LatestEntryPrice Then
sell("ss",atstop,LatestEntryPrice(0)-1.5,1);
if MaxContracts < 20 Then
sell("sb",atlimit,latestEntryPrice(0)+5,1);
}
#진입별 1.5포인트 수익시 청산
SetStopProfittarget(2.5,PointStop);
SetStoptrailing(70,0.6,PercentStop);
if MarketPosition == 1 Then
ExitLong("bp",atlimit,EntryPrice+7);
if MarketPosition == -1 Then
ExitShort("sp",atlimit,EntryPrice-7);
if MarketPosition == 1 and c > entryprice + 2.0 and Relative1 >= 65 Then
exitlong("bx1",AtStop,c);
if MarketPosition == -1 and c < EntryPrice - 2.0 and Relative1 <= 35 Then
exitShort("sx1",AtStop,c);
시스템 적용 후 이해가 안되는 부분은
1. 트레일링 스탑 적용시 타원 박스는 트레일링 스탑이 정상적으로 적용 되는데, 네모 박스는
트레일링 스탑이 적용이 안된다는 점으로 동일 시스템식에서 트레일링 스탑의 결과가 다르
게 나오는 이유를 모르겠습니다
2. 최초 진입시(buy매수) 상방으로 피라미딩(bb진입)이 적용이 안되고,
최초 진입후(buy매수) 하방으로 피라미딩(bs진입) 후에만 상방으로 피라미딩 진입(bb진입)
이 된다는 점입니다
제가 만들고 싶은 시스템은 트레일링 스탑이 잘 적용되고, 최초 매수후 바로 상방피라미딩도 되는 시스템을 만들고 싶습니다
시스템식을 수정 부탁드립니다.(매도일 경우도 적용될 수 있도록 수정 부탁드립니다)
2017-01-09
164
글번호 105677