커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
6345
글번호 230811
답변완료
지표문의
안녕하세요
하기 지표 & 검색식에서 한가지 추가하고 싶습니다.
ADX 라인 증가하여 표시가 되는 것은 매우 감사하게 잘 활용하고 있습니다.
그런데, MACD ocillator도 추가하고 싶습니다.
ADX 라인이 DP가 위에 있어서 가격이 올라갈 때 표시가 되는데
가끔 ocillator는 음의 방향을 나타내고 있습니다.
이럴때는 지표나 검색식에 나타나지 않도록 부탁드립니다.
즉 ADX 라인이 증가하고, DP/DM 중에서 하나는 증가할텐데,
그럼 ocillator도 같은 방향으로 나타낼 때만 지표와 강조가 표시되도록 부탁드립니다.
감사합니다.
안녕하세요
예스스탁입니다.
1. 검색
input : P(14);
var1 = ADX(P);
if var1 >= 10 and var1 >= var1[1]+0.5 Then
plot1(H,"검색",MAGENTA);
2,강조
input : P(14);
var1 = ADX(P);
if var1 >= 10 and var1 >= var1[1]+1.0 Then
PlotPaintBar(H,L,"강조",MAGENTA);
즐거운 하루되세요
> softtoug 님이 쓴 글입니다.
> 제목 : 문의 사항
> 안녕하세요
ADX 라인이 증가하는 종목 검색을 할 수 있는 검색식 부탁드립니다.
1. ADX 10 이상에서 0.5 이상 증가하게 되면 챠트에 표시 될 수 있는 검색식 부탁드립니다.
2. ADX 10 이상에서 1 이상 증가하면 강조도 부탁드립니다.
감사합니다.
2017-02-23
144
글번호 107167
답변완료
문의 드립니다
답변대로 했는데 잘 안되네요. 부탁드립니다.
1.고점대비 2.2pt 하락시 and 20이평 하향이탈시 청산
#청산
if MarketPosition()==1 Then {
ExitLong("bp1",AtLimit,EntryPrice+2.5,"",1,1);
ExitLong("bp2",AtLimit,EntryPrice+4.0,"",1,1);
ExitLong("bp3",AtLimit,EntryPrice+5.5,"",1,1);
ExitLong("bp4",AtLimit,EntryPrice+7.0,"",1,1);
ExitLong("bx1",AtStop,Highest(H,BarsSinceEntry)-2.2);
}
if MarketPosition()==-1 Then {
ExitShort("sp1",AtLimit,EntryPrice-2.5,"",1,1);
ExitShort("sp2",AtLimit,EntryPrice-4.0,"",1,1);
ExitShort("sp3",AtLimit,EntryPrice-5.5,"",1,1);
ExitShort("sp4",AtLimit,EntryPrice-7.0,"",1,1);
ExitShort("sx1",AtStop,Lowest(L,BarsSinceEntry)+2.2);
}
2. No.52073에 재문의 드렸습니다.
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
부탁드립니다. 꾸벅~
2017-02-23
128
글번호 107163
답변완료
문의드립니다.
안녕하세요?
아래 지표식을 일봉과 동일하게 분봉지표식으로 변경부탁드립니다.
var : LoL(0),newh(0),box1(false),ii(0),top(0),UND(0);
LoL=Lowest(L,5);
if h > highest(h,5)[1] Then{
newh = h;
ii = 0;
}
ii = ii+1;
box1 = highest(h,3) < highest(h,4);
if ii == 4 and box1 == true Then
top = newh;
if ii == 4 and box1 == true Then
UND = LoL;
plot1(top);
plot2(UND);
2017-02-23
146
글번호 107162
답변완료
검색식 부탁드립니다
안녕하세요
아래식은 MP와ADX DM DP를 이용한 검색식입니다
이식을 DM DP가 기준선 20이상 상승유지할때만 검색신호가 발생되도록 수정부탁드립니다
input :P1(14);
var1 = MedianPrice;
var2 = ADX(p1);
var3 = DiPlus(P1);
var4 = DiMinus(P1);
if var1 > var1[1] and var2 > var2[1] and var3 > var4
Then{
plot1(H,"검색",RED);
}
if var1 < var1[1] and var2 > var2[1] and var3 < var4
Then{
plot2(L,"검색",BLACK);
}
2017-02-23
144
글번호 107158
답변완료
피보나치 식 수정 부탁드립니다.
예스스탁입니다.
해당식 모두 영업일 변경시가을 기준으로작성이 된 식입니다.12시 기준으로 되어 있지 않습니다.
기본적으로 당일시고저종가는 영업일 변경시간을 기준으로 값이 리턴되고
주/월/년별 지표도 Bdate를 기주으로 작성이 되어 있습니다.
수식 내용 확인하시기 바랍니다.
일별과 같은 경우 당일 그리지 않는 조건때문에
당일 12시 이후에 그려지지 않는 것 뿐입니다.
아래와 같이 해당 조건 삭제하고 보시기 바랍니다.
input : Per1(61.8),Per2(50.0),Per3(38.2);
var : HH(0),LL(0),DD(0),TT(0);
HH = dayhigh(0);
LL = daylow(0);
var1 = 10^(LOG10(LL)+(LOG10(HH)-LOG10(LL))*(Per1/100));
var2 = 10^(LOG10(LL)+(LOG10(HH)-LOG10(LL))*(Per2/100));
var3 = 10^(LOG10(LL)+(LOG10(HH)-LOG10(LL))*(Per3/100));
plot1(HH,"최고");
plot3(var1,"61.8");
plot4(var2,"50.0");
plot5(var3,"38.2");
plot7(LL,"최저");
==============================================================
이 식으로는 이상하게
15:00이나 20:30 등에서 그림이 꺾입니다.
하루 지난 전일 그림이기 때문에
장개시 후부터 새벽야간장이 마칠 때까지를 당일로 보고
고저가가 같은 수평선으로 나오게 해 주시면 감사하겠습니다.
야간장 때문에 Dayhigh와 Daylow 함수가 문제가 된 듯 합니다.
그냥 09:00 부터 익일 09:00 이전까지의 high와 low를 사용해야 할 듯 합니다.
2017-02-23
290
글번호 107157
답변완료
수식 검증
수고하십니다.
아래 수식이
하루전 20일이평이 60일이평 보다 크면서 이평선의 수치가 1%이내로 근접하였다
오늘 상승하였다라고 하는데,,
제가 붙임 사진과 같이 검색한 종목(2.22일 검색, 체크 된)은 60과 20이평이 너무 이격이 큰데
검색이 되었습니다. 이해가 잘 않되는 부분입니다.
설명을 부탁드리며,,
식이 잘못되었다면 수정을 부탁드립니다.
input : P(1); //지지선 혹은 저항선 근접정도(P%이내)
var : Bcnt(0),Scnt(0);
//Bcnt는 20이평이 60이평보다 클때 카운트 되므로 20이평이 60이평보다 작을떄는 0값
if ma(C,20) < ma(C,60) Then{
Bcnt = 0;
}
if CountIF(ma(C,20) > ma(C,60), 3) == 3 and //3봉연속 20이평이 60이평보다 크고
ma(c,20) > ma(c,20)[1] and ma(C,20)[1] < ma(c,20)[2] and //20이평이 V자형태이고
ma(c,20)[1] <= ma(c,60)[1] * (1+ P/100) Then //P%이내 근접한후 상향
Bcnt = Bcnt+1;
if Bcnt == 1 Then{ //첫번째 V형태일때//
find(1);
}
2017-02-23
155
글번호 107156
답변완료
예스차트관련 문의드립니다~
1. 예스차트이용할려고 할려면 어떻게 해야 하나요?
홈페이지에 따로 나와있는곳이 없네요~ 결제해야되면 결제금액은 얼마인지 안내되어있는곳이 안보입니다. 그리고 예스차트에 해외선물의 분데이터와 함께 틱데이터도 제공이 되는지 궁금합니다.~
2. 예스트레이더에서 분차트가지고 1년치를 불러와서 보니깐 과거차트에서는 봉이 거의없으면서 제대로 시뮬레이션이 안되더라구요 이것도 모르고 성과가 안좋은갚다 하고 생각하고 있었거든요~ 과거돌려보니깐 봉이 이상했고 최근에만 봉이 제대로 나오는 거 같이 보였는데
예스차트를 통하지 않고 예스트레이더자체에서 해외선물 연결선물로 불러왔을때에 명확하게 시뮬레이션 할 수 있는 기간이 얼마정도 됩니까? 틱은5000봉까지 불러와지고 일주일정도는 볼 수 있더라구요 분차트는 불러는 와지는데 얼마정도가 오류없이 시뮬레이션 할 수 있는 기간인지요?
3. 현재 2개시스템을 합성해서 적용할려고 하는데요 과최적화가 되어서
신호가 너무많이 나오더라구요
a시스템과 b시스템이 있다고 가정했을때에
a시스템에서 매수전략에 따른 청산전략을 a시스템의 청산전략과 함께 b시스템의매수청산전략을 같이적용하고 b시스템의 매수는 b시스템의 매수청산전략만 적용하는 식으루요
각각시스템의 매수매도전략에 따라서 청산전략을 각각 구분해서 적용하고
각각매수매도전략도 구분해서 적용할려면 어떻게 해야되는지 문의드립니다~
4.
청산수식에서
1)진입후에 25틱이상움직였을때 이전저점1틱아래에서 익절(꼭지점스탑방식)
2)50틱이상움직였을때 10일선이탈시점에 익절
각각수식좀 부탁드립니다~
5.항생시가선수식인데요 제대로 적용이 안되어서 수정 좀 부탁드립니다~
var : cnt(0),Tcond(false);
Array : DO[100](0),DH[100](0),DL[100](0),DC[100](0);
if stime == 101400 or (stime > 101400 and stime[1] < 101400) Then{
DO[0] = O;
DH[0] = H;
DL[0] = L;
for cnt = 1 to 99{
DO[cnt] = DO[cnt-1][1];
DH[cnt] = DH[cnt-1][1];
DL[cnt] = DL[cnt-1][1];
DC[cnt] = DC[cnt-1][1];
}
}
if H > DH[0] Then
DH[0] = H;
if L < DL[0] Then
DL[0] = L;
DC[0] = C;
plot2(DH[0]);
plot3(DL[0]);
plot4(DC[0]);
if C == DO[0] Then
plot1(DO[0],"시가선",GREEN);
if C > DO[0] Then
plot1(DO[0],"시가선",RED);
if C < dayopen Then
plot1(DO[0],"시가선",blue);
6.이전질문내용에서 틱에서 30분단위로 불러와서 적용을해서 잘 사용하고 잇는데요
이게 문제가 이전30분종가기준으로 가격이 계산되는게 아니고
예를들어서5봉전30분종가보다 클때를 조건문으로 적용하면 5봉전가격에서
틱봉상 30분이 끝나고 나서 그다음봉이 완성되고나서 가격이 계산됩니다.
30분시작봉이 작으면 별로 문제가 안되는데 10틱넘어가버리면
오차범위가 커서요~ 틱봉에서 30분주기로 계산될때에
30분종가기준으로 계산되게 할 수 있는 방법이 있을까요?
감사합니다~ 좋은하루되시구요!
2017-02-23
233
글번호 107155
답변완료
수정좀 부탁합니다.
청산후에는 청산 전에 발생한 신호와 같은 방향으로는 진입 금지 하는 청산 식을 삽입하고자
본 게시판을 검색하여 아래와 같이 청산수식을 삽입하였습니다.
그런데 청산 전에 발생한 신호와 같은 방향으로 진입하는 경우가 자주 있습니다. (첨부 이미지 참고)
어디가 문제인지 수정좀 부탁합니다.
input : Period(3), Period1(1), Period2(2);
var : T(0);
value3 = StochasticsK(Period, Period1);
value4 = StochasticsD(Period, Period1, Period2);
value5 = (highest(H,1)+lowest(L,1))/2;
value8 = (highest(H,32)+lowest(L,32))/2;
if T <= 0 and CrossUp(value3, value4) Then{
T = 1;
value1 = C;
}
if T >= 0 and CrossDown(value3, value4) Then{
T = -1;
value1 = C;
}
Condition1 = MarketPosition == 0 and MarketPosition(1) == 1 and IsExitName("StopLoss",1) == true ;
Condition2 = MarketPosition == 0 and MarketPosition(1) == -1 and IsExitName("StopLoss",1) == true ;
if Condition1 == false and (Close >= (value1 + (PriceScale * 5))) Then
Buy("매수", OnClose);
if Condition2 == false and (Close <= (value1 - (PriceScale *5))) Then
Sell("매도", OnClose);
SetStopLoss(1.25,PointStop);
if highest(H,BarsSinceEntry) >= EntryPrice+PriceScale*11 and value5 - value8 < PriceScale*-1 Then
ExitLong("매수청산");
if lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*11 and value8 - value5 < PriceScale*-1 Then
ExitShort("매도청산");
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-02-22
156
글번호 107154
답변완료
수식문의
안녕하세요
하기 수식문의 드립니다.
input : P(14),BBP(20),dv(2),MAP(60);
input : short(12),long(26),sig(9);
var : ADXV(0),DP(0),DM(0),T(0),BBup(0),BBdn(0),mav(0);
var : MACDV(0),MACDS(0),Bcond(false),Scond(False),bbmd(0),diff(0),cnt(0),count(0);
ADXV = ADX(P);
DP = Diplus(P);
DM = DiMinus(P);
bbmd = ma(c,BBP);
BBup = BollBandUp(BBP,dv);
BBdn = BollBandDown(BBP,dv);
mav = ma(C,MAP);
MACDV = MACD(short,long);
MACDS = ema(MACDV,sig);
diff = C-O;
if MarketPosition <= 0 and
C > BBup and C > O and countif(C > C[1],2) == 2 and
(ADXV < 40 or (ADXV > 40 and DP > DM)) and
BBup-BBdn >= PriceScale*30 and countif(adxv > adxv[1],2) == 2 Then{
buy("b2");
}
if MarketPosition >= 0 and
C < BBdn and C < O and countif(C < C[1],2) == 2 and
(ADXV < 40 or (ADXV > 40 and DP < DM)) and
BBup-BBdn >= PriceScale*30 and countif(adxv > adxv[1],2) == 2 Then{
sell("s2");
}
상기 수식에서 손절방법을 부탁드립니다.
1. 매도든 매수든 가격이 볼린져 밴드 중앙선과 닿으면 손절하는 수식 부탁드립니다.
2. MACD oscillator 가 바뀌면 손절하는 수식 부탁드립니다.
그리고 MACD ocillator 변경이 진입후 3개 봉이내에 바뀔경우에는 반대매매 부탁드립니다.
반대매매는 한번만 들어가는 것으로 부탁드립니다.
3. 더이상 ADX 라인이 증가하지 않으면,
매도 진입했던 것은 매수로 반대매매 진입,
매수 진입했던 것은 매도로 반대매매 진입 부탁드립니다.
감사합니다.
2017-02-23
131
글번호 107153