커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4466
글번호 230811
답변완료
분봉에서...
분봉차트에서 5%이상 상승한 일봉의 저가를 기억하고 그 일봉이 7일이내발생했고
30분봉차트에서 봉의 H와 L사이에 그일봉의 저가가 있을때를 아래와 같이
답변해 주셨는데 잘 않됩니다
검토 부탁드립니다
var : cnt(0);
Condition1 = false;
for cnt = 1 to 7{
if Condition1 == false and DayLow(cnt) > DayClose(cnt+1) Then{
var1 = daylow(1);
Condition1 = true;
}
}
if Condition1 == true and
H >= var1 and var1 >= L Then
find(1);
2017-01-02
126
글번호 105474
답변완료
문의드립니다.
선물차트 기준으로 문의드립니다.
일목균형표의 선행스팬1선을 기준으로 선행스팬1선 위는 붉은색으로 선행스팬1선 아래는
파란색으로 색채우기를 하고 싶습니다.
수식을 어떻게 작성해야 하는지요?
부탁드립니다.
감사합니다. !!!
2017-01-02
139
글번호 105468
답변완료
수식 부탁합니다.
안녕하세요.
3분차트에서 60분타주기분봉 직전봉 고가 종가상돌파시 매수
직전봉 저가 종가상 돌파시 매도 해선용이구요 매매시간은
17시--새벽02시 까지입니다.
수고하십시요.
2017-01-01
181
글번호 105467
바닥차기 님에 의해서 삭제되었습니다.
2017-01-01
2
글번호 105466
답변완료
수식부탁드립니다-------------
지수 와 GapVa77의 변동율에 일정값을 곱한것인데 이렇게하니까 첨부의 차트중간처럼 둘의 변동폭이 일정범위에서 같이 움직입니다 이를다시
일정범위를 기준으로변동율을 누적해서 첨부의 맨아래차트처럼 지수형태로 부탁드림니다 va90과 va91을 겹쳐보고싶어서 그럽니다
부탁드립니다
Input : Period1(1),Period5(3),단기급증(6),단기급감(3),단기급등락(30),
장기급증(0.8),장기급감(0.8),장기급등락(5),돌파(15),급변(100),단기급변(50),순매수급증보정(0.6),
순매수급감보정(0.6),순매수보정한계(50)/*,고저기간(0)*/
,LENGTH1(2) ,LENGTH2(20),과열(10),되돌림(0),tsfPeriod(14);
Var : va(0);
Var : va1(0);
Var : va2(0);
Var : va3(0);
Var : va4(0);
Var : va11(0);
Var : va12(0);
Var : va15(0);
Var : va33(0);
Var : va20(0);
Var : va38(0);
Var : va77(0);
Var : va87(0);
Var : va88(0);
Var : va90(0);
Var : va91(0);
var : va94(0);
var : va95(0);
Var : value(0);
Var : vp(0),II(0),AA(0),BB(0);
var : N(0),T(0),EP1(0),EP2(0);
var : ema11(0),ema12(0),ema13(0);
var : ema21(0),ema22(0),ema23(0),cnt1(0),cnt2(0);
var : vmin(0),vmax(0);
var : TSF(0);
EP1 = 2/(LENGTH1+1);
EP2 = 2/(LENGTH2+1);
if Bdate != Bdate[1] Then{
II = 0;
BB = 0;
AA = 0;
}
II = II+1;
BB = BB+Bids;
AA = AA+Asks;
if II < Period5 Then{
va = (BB/II)-(AA/II)+8000;
}
else{
va = ma(bids,period5)-ma(asks,period5)+8000;
}
if II < Period1 Then{
va1 = (BB/II)-(AA/II)+8000;
va2 = (BB/II)-(AA/II)+8000;
va3 = (BB/II)-(AA/II)+8000;
va4 = (BB/II)-(AA/II)+8000;
}
//순매수에 8000 더해 양의값만들기----------------------------
else{
va1 = ma(bids,period1)-ma(asks,period1)+8000;
va2 = ma(bids,period1)-ma(asks,period1)+8000;
va3 = ma(bids,period1)-ma(asks,period1)+8000;
va4 = ma(bids,period5)-ma(asks,period5)+8000;
}
//순매수5이평의 급등락축소시작----------------------------
if ii > 1 and va >va[1]+장기급등락 then va = ((va -va[1])/장기급증)+va[1];
if ii > 1 and va <va[1]-장기급등락 then va = va[1]-((va[1] -va)/장기급감);
If ii >= 2
Then
{
//순매수 일정차 이상의급등락축소시작----------------------------
//if va1 >va1[1]+급등락 then va1 = va1 -급등락;
if va1 >va1[1]+단기급등락 then va1 = ((va1 -va1[1])/단기급증)+va1[1];
//if va1 >va1[1]+소등락 then va1 = va1 - 소등락;
if va1 <va1[1]-단기급등락 then va1 = va1[1]-((va1[1] -va1)/단기급감);
//if va1 <va1[1]-급등락 then va1 = va1 + 급등락;
//if va1 <va1[1]-소등락 then va1 = va1 + 소등락;
//급등락축소시작----------------------------
//순매수 일정차 이하의급등락축소시작----------------------------
if va2 >va2[1]+순매수보정한계 then va2 = ((va2 -va2[1])*순매수급증보정)+va2[1];
if va2 <va2[1]-순매수보정한계 then va2 = va2[1]-((va2[1] -va2)*순매수급감보정);
if va2 >va2[1]+20 then va2 = ((va2 -va2[1])*0.22)+va2[1];
if va2 <va2[1]-20 then va2 = va2[1]-((va2[1] -va2)*0.22);
if va2 >va2[1]+220 then va2 = ((va2 -va2[1])*0.3)+va2[1];
if va2 <va2[1]-220 then va2 = va2[1]-((va2[1] -va2)*0.3);
//1이평 막대표시 -----------------------------------------------
If va1 > va1[1] Then
{
Plot10(va1, "매수잔량 우위");
Plot11(0, "매도잔량 우위");
}
Else{
Plot10(0, "매수잔량 우위");
Plot11(va3, "매도잔량 우위");
}
//5이평 막대표시 -----------------------------------------------
If va > va[1] Then
{
Plot3(va, "5매수총잔량 우위");
Plot4(0, "5매도총잔량 우위");
}
Else{
Plot3(0, "5매수총잔량 우위");
Plot4(va, "5매도총잔량 우위");
}
PlotBaseLine1(12000,"기준선12");
PlotBaseLine2(11000,"기준선11");
//테마합 일정 수량차이상의 급등락 표시
if va4 > va4[1]+ 급변 Then{plot55(vp-100,"급등");}
if va4 < va4[1]- 급변 Then{plot46(vp-100,"급락");}
}
// if Highest(va1,고저기간 )==0 then{
// va11=Lowest(va1,고저기간 );
if ii >= 2 and va2 > va2[1]+ 단기급변 Then{plot66(va2,"단기");}
if ii >= 2 and va2 < va2[1]- 단기급변 Then{plot66(va2,"단기");}
Plot99(va2, "순매수1차보정",iff(va2>va2[1]-00,red,iff(va2<va2[1]+00,BLUE,BLACK)));
Plot9(va4, "순매수");
if va2 >va2[1]+25 then va15 = ((va2 -va2[1])*01.1)+va2[1];
if va2 <va2[1]-25 then va15 = va2[1]-((va2[1] -va2)*1.1);
if va15 >va15[1]+30 then va15 = ((va15 -va15[1])*1.1)+va15[1];
if va15 <va15[1]-30 then va15 = va15[1]-((va15[1] -va15)*1.1);
//--------------------------------------------
if va15 < va2 then {vp=((va2-va15)/2)+va15;}
if va2 < va15 then {vp=((va15-va2)/2)+va2;}
if va2 > va15 then va33 = (va2 - va15) / 2 + va15;
if va15 > va2 then va33 = (va15 - va2) / 2 + va2;
plot47(va33,"반반",iff(vp>vp[1]+00,red,iff(vp<vp[1]-00,BLUE,BLACK)));
//*********************************************************
if vp >vp[1]+570 then vp = ((vp -vp[1])*0.25)+vp[1];
if vp <vp[1]-570 then vp = vp[1]-((vp[1] -vp)*0.25);
//**********************************************************
// vp = (2 * Ema(vp,LENGTH1)) - (2 * Ema(Ema(vp,LENGTH1),LENGTH1)) +
// (Ema(Ema(Ema(vp,LENGTH1),LENGTH1),LENGTH1));
//Plot20(vp, "반");
plot20(vp+100, "반",iff(vp>vp[1]+00,red,iff(vp<vp[1]-00,BLUE,BLACK)));
/*TSF = LRL(va4,tsfPeriod)+LRS(va4,tsfPeriod);
if TSF >TSF[1]+220 then TSF = ((TSF -TSF[1])*0.6)+TSF[1];
if TSF <TSF[1]-220 then TSF = TSF[1]-((TSF[1] -TSF)*0.6);
Plot60(TSF,"TSF",iff(TSF>TSF[1]+00,red,iff(TSF<TSF[1]-00,BLUE,BLACK)));
*/
Plot60(va15, "순매수1",iff(va15>va15[1]+00,RED,iff(va15<va15[1]-00,BLUE,BLACK)));
if ii == 1 Then
ema11 = va3;
else
ema11 = va3 * EP1 +ema11 * (1-EP1);
if ii <= 2 Then
ema12 = ema11;
else
ema12 = ema11 * EP1 +ema12 * (1-EP1);
if ii <= 3 Then
ema13 = ema12;
else
ema13 = ema12 * EP1 +ema13 * (1-EP1);
//순매수를 테마로
if ii >= 3 then
va77 = (2.6 * ema11) - (2.6 * ema12) + (ema13);
Plot58(va77, "테마");
va88 = va77;
if va2 < va77 and va3 > va77 Then
{ va88 = va3;
}
if va2 > va77 and va3 < va77 Then
{ va88 = va3;
if va88 >va88[1]+220 then va88 = ((va88 -va88[1])*0.3)+va88[1];
if va88 <va88[1]-220 then va88 = va88[1]-((va88[1] -va88)*0.3);
}
Plot95(va88, "테마합");
if ii == 1 Then
ema21 = va88;
Else
ema21 = va88 * EP2 +ema21 * (1-EP2);
if ii <= 2 Then
ema22 = ema21;
Else
ema22 = ema21 * EP2 +ema22 * (1-EP2);
if ii <= 3 Then
ema23 = ema22;
else
ema23 = ema22 * EP2 +ema23 * (1-EP2);
if ii >= 3 then
va87 = (3 * ema21) - (3 * ema22) + (ema23);
//Plot78(va87, "테마합테마");
plot78(va87+000, "테마합테마",iff(va87>va87[1]+00,red,iff(va87<va87[1]-00,BLUE,BLACK)));
if ii >= 2 then{
//TSF 막대표시 -----------------------------------------------
If va87 < va77 Then
{
Plot45(vmin-100, "테마상승 우위");
Plot44(0, "테마하락 우위");
}
If va87 > va77 Then{
Plot45(0, "테마상승 우위");
Plot44(vmin-100, "테마하락 우위");
}
//매수매도신호-------------------------------------------------------
/* If va4[1]+300 < va4 Then{
Plot96(va4+200, "매/수");
}
If va4[1]-300 > va4 Then{
Plot97(va4+200, "매/도");
}
*/
//-------------------------------------------------------------------------
/* if CrossUp(va2,vp) Then
{
Plot85(va2-200, "buy");
PlaySound("C:₩예스트레이더₩data₩Sound₩bubbles");
}
if CrossDown(va2,vp) Then
{
Plot86(va2+300, "sall");
PlaySound("C:₩예스트레이더₩data₩Sound₩accept.wav");
}
*/
//---------------------------------------------------------------------------
if va4[2] > va4[1] and va4[1]+00 < va4 Then{
plot85(va4-230,"y매수");
// PlaySound("C:₩예스트레이더₩data₩Sound₩reject.wav");
}
if va4[2] < va4[1] and va4[1]-00 > va4 Then{
plot86(va4+250,"y매도");
// PlaySound("C:₩예스트레이더₩data₩Sound₩reject.wav");
}
vmin = min(va87,va77);
vmax = max(va87,va77);
if va2 > va15 then va33 = (va2 - va15) / 2 + va15;
if va15 > va2 then va33 = (va15 - va2) / 2 + va2;
plot47(va33,"반반");
va20 = (vp+va15+va2+va33)/4;
plot98(va20, "4평균",iff(va20>va20[1]+00,red,iff(va20<va20[1]-00,BLUE,BLACK)));
input: 봉완성(0);
var : SS(0),TS(0),second(0);
#봉시작
var1 = TimeToMinutes(stime)*60;
var2 = FracPortion(stime/100)*100;//시작시간 초
SS = var1+var2;
#봉끝
value1 = TimeToMinutes(time)*60;
value2 = FracPortion(time/100)*100;//긑시간 초
TS = value1+value2;
Second = TS-SS;
if second < 봉완성 Then
plot27(vmin-200,"체결단");
Else
plot28(vmin-200,"체결장");
}
var : gap1(0),gapVa77(0);
var : gap2(0),gapVa4(0);
var : gap3(0),gapVa87(0);
if Bdate != Bdate[1] Then{
gap1 = gap1+(va77-va77[1]);
gap2 = gap2+(va4-va4[1]);
gap3 = gap3+(va87-va87[1]);
}
GapVa77 = Va77-Gap1;
GapVa4 = Va4-Gap2;
GapVa87 = Va87-Gap3;
plot91(GapVa77,"테마합갭보정");
plot92(GapVa4);
plot93(GapVa87,"테마합테마갭보정",iff(GapVa87>GapVa87[1]+00,rgb(255,0,0),iff(GapVa87<GapVa87[1]-00,BLUE,BLACK)));
if GapVa87[2]>GapVa87[1] and GapVa87[1]<GapVa87 Then{
plot71(GapVa87-200,"테마매수유리");
PlaySound("C:₩예스트레이더₩data₩Sound₩Bell2.wav");
}
if GapVa87[2]<GapVa87[1] and GapVa87[1]>GapVa87 Then{
plot72(GapVa87+200,"테마매도유리");
PlaySound("C:₩예스트레이더₩data₩Sound₩Bell2.wav");
}
//====================================================================
va90=((c-c[1])/c[1]*100)*20000;
plot74(va90,"지수변폭");
va91=((GapVa77-GapVa77[1])/GapVa77[1]*100)*140;
plot75(va91,"테마변폭");
//=====================================================================
2017-01-01
282
글번호 105465
답변완료
박스권 돌파 수식 질문입니다.
1. 종가기준 30개봉 동안 최고가 최저가가 차이가 10틱 이내
2. 현재봉 종가기준 3틱이상 돌파시 다음봉 시가에 매수
3. 익절 8틱, 손절 8틱
감사합니다.
2017-01-01
188
글번호 105464
답변완료
디버깅 창에서 동일 시간의 반복
30분봉 차트의 경우는 정상적으로 표시가 되나
5분봉 차트에서 디버깅 시 첨부와 같이
09:05분 시간대가 날짜별 계속 반복됩니다.
원인이 뭘까요?
2016-12-30
150
글번호 105463
답변완료
문의드립니다.
수고하십니다. 항상 도움 주셔서 조금씩 재미가 붙고 있습니다. 감사합니다.
<MACD매매>
1.매수조건
MACDV 가 기준선을 골든크로스한 다음 2번째 봉(크로스 교차점에서 2번째 봉) 에서 시장가 매수진입
이때 5일선과 아래 20일선 과의 수직교차 거리가 3틱 이상
2.매도조건
매수조건과 반대
3.청산조건
매수청산: 전고점 보다 고점이 낮아지면 청산
매도청산: 전저점 보다 저점이 높아지면 청산
하고 a.wav 실행
4.손절 : 15틱 손절후 b.wav 실행
5.본절 : 수익이 10틱 이상 12틱 이하 일때 진입가+1틱 으로 손절가를 이동시키고 c.wav 실행
<스토캐스틱매매>
1.매수조건
스토캐스틱 침체 이고 캔들 저점이 (연속 3봉이상 또는 5봉 중에 3봉이상) 동일한 값을 유지하며 아래를 뚫지 못할때 다음 봉에서 시장가 매수진입
2.매도조건
스토캐스틱 과열 이고 캔들 고점이 (연속 3봉이상 또는 5봉 중에 3봉이상) 동일한 값을 유지하며 위를 뚫지 못할때 다음 봉에서 시장가 매도진입
3.청산,손절
청산: 매수진입했다면 (과열 이고 스토캐스틱 데드크로스) or MACD 데드크로스 즉시 청산
매도진입했다면 (침체 이고 스토캐스틱 골든크로스) or MACD 골든크로스 즉시 청산
하고 a.wav 실행
손절: 12틱 손절후 b.wav 실행
본절: 수익이 8틱 이상 10틱 이하 일때 진입가+1틱 으로 손절가를 이동시키고 c.wav 실행
이상과 같이 2개의 수식 부탁드립니다. 2개의 수식을 1개의 시스템 파일에 넣고 매매시간을 오전,오후로 다르게 설정하여 운영하려 합니다.
그런데 청산,손절,본절 값이 각각 다릅니다. 이럴땐 각각 따로 청산,손절,본절 수식을 설정해주는지 궁금합니다.
그리고 아래와 같이 1개의 시스템 파일에 2개 이상의 매매기법을 사용하였는데 A매매 가 청산 되지 않았는데도 B매매 가 매수신호가 나옵니다. 어떤때는 빼곡히 몇개가 나오기도 하구요. 청산,손절 수식도 뒤에 있는데 말이죠...A매매 가 청산,손절 등으로 포지션이 없어지기 전에는 다른 매수,매도 신호가 안나오게 하려면 어떻게 하면 되나요? 가르침 바랍니다.
if MarketPosition <= 0 and 조건문
Then {
buy("A매매");
}
if MarketPosition <= 0 and 조건문
Then {
buy("B매매");
}
새해 복 많이 받으세요 ^^
2017-01-02
142
글번호 105462
답변완료
수식 변환
안녕하세요?
제가 적합이동평균을 사용자 함수를 정의하였습니다
Inputs : Price(Numeric),Period(Numeric);
Vars : Noise(0),Signal(0),Diff(0),efRatio(0),
Smooth(1),Fastest(0.6667),Slowest(0.0645),
AdaptMA(0);
Diff = AbsValue(Price - Price[1]);
IF CurrentBar <= Period Then
AdaptMA = Price;
IF CurrentBar > Period Then Begin
Signal = AbsValue(Price - Price[Period]);
Noise = accumN(Diff, Period);
efRatio = Signal / Noise;
Smooth = Power(efRatio * (Fastest -
Slowest) +Slowest, 2);
AdaptMA = AdaptMA[1] + Smooth * (Price
- AdaptMA[1]);
End;
ama = AdaptMA;
위식은 검증하니 이상이 없엇읍니다
그런데 이 ama를 지표를 적용할려고 예전에 시그널메이커에 문의한 수식을 대입하니 에러가 나네요
제가 알고 있는 것이 이것 밖에 없어서 그렇게 섰습니다
에스트레이더에서 쓸수 있게 아래식을 변환 부탁 드립니다.
Params : Period(5);
Vars : value(0);
value=ama(c,Period);
plot1(value,"적합5일");
첨부파일은 이렇게 입력한 에러 메세지입니다
2016-12-30
209
글번호 105461