커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
8208
글번호 230811
답변완료
죄송합니다
공부를하다가 Heiken Ashi 캔들인데요 이것을 예스로 변환가능한지요
가능하시면 수정 부탁드립니다 수고하십시요
###Heiken Ashi Smoothed ###
xClose=(open+high+Low+Close)/4;
xopen=(open[Previous]+Close[Previous]/2;
xhigh=Max(high,xopen,xclose);
xlow=Min(low,xopen,xclose);
if agv(Xclose,period)> agv(xopen,period)
Then{
Plot1(Xhigh-xclose)+agv(xopen,period));
Plot2(agv(xclose,period));
plot3(agv(xopen,period));
plot4(agv(xopen,period));
plot5(agv(xopen,period)-(xopen-xlow));
plot6(agv(xopen,period)-(xopen-xLow));
}
eles if agv((xclose,period)< agv((xopen,period)
then{
plot1((xhigh-xopen)+agv((xopen,period));
Plot2(agv(xopen,period));
plot3(agv(xclose,period));
plot4(agv(xclose,period));
plot5(agv(xclose,period)-(xclose-xlow));
plot6(agv(xclose,period)-(xclose-xLow));
}
Else{
NoPlot(1);
NoPlot(2);
NoPlot(3);
NoPlot(4);
NoPlot(5);
NoPlot(6);
}
if(agv(xclose,period)> agv((xopen,period) && C < agv((close,period))
(agv((xclose,period) < agv((xopen,period) && C > agv((xclose,period))
then if agv((xclose,period) >agv((xopen,period)
Then{
plot7((xhigh-xclose)+agv((xclose,period));
Plot8(agv(xclose,period));
plot9(agv(xopen,period));
plot11(agv(xopn,period)-(xopen-xlow));
plot12(agv(xopen,period)-(xopen-xLow));
}
Else{
plot7((xhigh-xopen)+agv((xopen,period));
Plot8(agv(xopen,period));
plot9(agv(xclose,period));
plot10(agv(xclose,period));
plot11(agv(xclose,period)-(xclose-xlow));
plot12(agv(xclose,period)-(xclose-xlow));
}
Else{
NoPlot(7);
NoPlot(8);
NoPlot(9);
NoPlot(10);
NoPlot(11);
NoPlot(12);
}
2013-11-22
256
글번호 69745
답변완료
문의 드립니다.
수고가 많으십니다.
다름이 아니고 매수후 3개봉 이후에 바로직전봉보다 큰 음봉 발생시 매도식 부탁드립니다.
추운날씨에 감기 조심하시기 바랍니다
2013-11-22
257
글번호 69738
답변완료
시스템
참조 지표중 시그널만 이용해서 상하단 매수매도 사인 넣고 싶은데요
1차라인 터치후 반전시 매수매도 신호
이때 1차라인 터치후 2차라인까지 터치 할때는 2차라인에서 반전시 신호
진입후 반대 사인 나오기전 청산이 안되고 중심값(0)을 깨면 청산사인
감사합니다 ^^
2013-11-25
306
글번호 69735
답변완료
지표문의
1) 여러개의 지지저항값중 현재가에 가장 가까운 지지저항값을 선택해서 현재가와 그 지지저항값의 차이(이격)를 수치로 표시하고 싶습니다.
2)
var :Adate(0);
if data2(c) == p1 Then
{
Adate=sdate;
r1=(o+c)/2;
}
if Adate == sdate Then
plot1(r1,"r1");
==> 오늘 발생한 사건에 대해서만 (과거는 제외) 선을그어주는 것인데 제대로 된건지 확인 부탁드립니다
==> 그리고 "p1"이 한개가 아니고 50여개 되는데 이경우 각각의 p1 ~ p50에대서 수식을 적용해야하는지 아니면 함수식으로 간편화할수있는지 도움 부탁드립니다
==> 또한 각각의 p1 ~ p50에 대하여 "Adate(0)"를 가각 다르게 잡아야하는가요?
2013-11-22
285
글번호 69732
답변완료
문의드립니다
항상 친절한 답변 감사드립니다.
분봉 시스템을 운영하는 중 장마감 동시호가시간(오후2시50분부터 2시59분)에 매수매도 신호가 발생하는 경우 오후3시에 주문에러가 발생합니다.
마감 동시호가시간에 발생하는 매수매도신호를 오후3시에 종가체결되도록 하는 방법이 있습니까?
2013-11-22
252
글번호 69731
답변완료
문의 (Pre-D)
1. 아래식 검증부탁드립니다.
장시작후 10분이내의 조건과 10분이후의 조건을 다르게 해줘야 하는데,
10분 이후인데도 불구하고 (MTA < M2인 상태이든 아니든 상관없이) Plot1이 계속 찍히고 있습니다.
그런데 조건식 내부에서 Plot을 했을 경우는 제대로 나오는듯 합니다.
첫번째와 같이 조건식 외부에서 가져다써야 하는데 왜 서로다른 결과를 보여주는지 궁금합니다.
///////////////////////////////////////////////////////////////////////////////
// 첫번째 (조건식 외부에서 플로팅): 오작동
///////////////////////////////////////////////////////////////////////////////
VARS: PreD.TM(0, DATA1), PreD.TMLA(FALSE, DATA1), PreD.TML(FALSE, DATA1);
VARS: PreD.TFBT3G.AQ1(FALSE, DATA1);
VARS: PreD.TFBT3G.BQ1(FALSE, DATA1);
if ( DATA1(Date <> Date[1]) ) then
{
PreD.TM = DATA1(TimeToMinutes(stime));
PreD.TMLA = FALSE;
PreD.TML = FALSE;
PreD.TFBT3G.AQ1 = FALSE;
PreD.TFBT3G.BQ1 = FALSE;
}
if ( (TimeToMinutes(stime) < PreD.TM + 10) ) then { PreD.TMLA = TRUE; }
else { PreD.TMLA = FALSE; }
if ( (TimeToMinutes(stime) >= PreD.TM + 10) ) then { PreD.TML = TRUE; }
else { PreD.TML = FALSE; }
if ( (PreD.TMLA == TRUE) ) then
{
if ( (MTA < M2) ) then { PreD.TFBT3G.AQ1 = TRUE; }
else { PreD.TFBT3G.AQ1 = FALSE; }
}
if ( (PreD.TML == TRUE) ) then
{
if ( (MTA > M2) AND (M1 > M2) ) then { PreD.TFBT3G.BQ1 = TRUE; }
else { PreD.TFBT3G.BQ1 = FALSE; }
}
if PreD.TFBT3G.AQ1 == TRUE then Plot1(H, "AQ1", RGB(0,255,0));
if PreD.TFBT3G.BQ1 == TRUE then Plot2(H, "BQ1", RGB(255,100,150));
///////////////////////////////////////////////////////////////////////////////
// 두번째 (조건식 내부에서 플로팅): 정상작동하는 듯 함
///////////////////////////////////////////////////////////////////////////////
VARS: PreD.TM(0, DATA1), PreD.TMLA(FALSE, DATA1), PreD.TML(FALSE, DATA1);
VARS: PreD.TFBT3G.AQ1(FALSE, DATA1);
VARS: PreD.TFBT3G.BQ1(FALSE, DATA1);
if ( DATA1(Date <> Date[1]) ) then
{
PreD.TM = DATA1(TimeToMinutes(stime));
PreD.TMLA = FALSE;
PreD.TML = FALSE;
PreD.TFBT3G.AQ1 = FALSE;
PreD.TFBT3G.BQ1 = FALSE;
}
if ( (TimeToMinutes(stime) < PreD.TM + 10) ) then { PreD.TMLA = TRUE; }
else { PreD.TMLA = FALSE; }
if ( (TimeToMinutes(stime) >= PreD.TM + 10) ) then { PreD.TML = TRUE; }
else { PreD.TML = FALSE; }
if ( (PreD.TMLA == TRUE) ) then
{
if ( (MTA < M2) ) then { PreD.TFBT3G.AQ1 = TRUE; Plot1(H, "AQ1", RGB(0,255,0)); }
else { PreD.TFBT3G.AQ1 = FALSE; Plot1(H, "AQ1", RGB(0,0,255)); }
}
if ( (PreD.TML == TRUE) ) then
{
if ( (MTA > M2) AND (M1 > M2) ) then { PreD.TFBT3G.BQ1 = TRUE; Plot2(H, "BQ1", RGB(255,100,150));}
else { PreD.TFBT3G.BQ1 = FALSE; Plot2(H, "BQ1", RGB(255,0,80));}
}
//if PreD.TFBT3G.AQ1 == TRUE then Plot1(H, "AQ1", RGB(0,255,0));
//if PreD.TFBT3G.BQ1 == TRUE then Plot2(H, "BQ1", RGB(255,100,150));
2013-11-22
242
글번호 69730
답변완료
문의드릴께요~
매수청산식에서 매수가 대비 7% 이상 수익시에 2% 하락하면 추적청산을 하려고 합니다.
예를 들어 1분봉으로 매매할 경우
1분봉 전의 고가가 수익률이 5%인 상태에서 1분내에 수급이 몰려와 13%까지 올라간후에
6%까지 내려왔습니다.
1분내에 쭉올라왔다가 내려온 경우인데 분챠트에서 틱챠트에서 처럼
11%에서 수익실현하는 방법을 알고 싶습니다.
exitlong으로 아래 수식을 만들었는데
1분봉 전에는 5% 이하였고, 그 다음봉에서 13%까지 올라와서 6%까지 내려온후에 아래 수식이 실행되는것 같습니다.
그래서 실제로 11%에서 청산이 안되는 것 같은데요.
if highest(H,barssinceentry) > EntryPrice*1.07 then
exitlong("청산",Atstop,highest(H,barssinceentry)*0.98);
위의 수식을 아래의 수식으로 사용하면 분봉 챠트에 상관없이 11%에 청산이 가능한지 궁금합니다.
/*최소 7% 수익 이후에 최고 가격대비 2% 하락하면 청산*/
SetStopTrailing(2,7,PercentStop,1);
아니면 시스템트레이딩 설정의 강제청산 탭에 있는 최대수익대비하락 기능을
이용하고 청산시점을 조건만족시 즉시로 해야 되는지 궁금합니다.
만약 강제청산 탭을 사용해야 된다면 셋팅을 정확히 어떻게 해야 되는지
알려주세요.
감사합니다~
2013-11-22
255
글번호 69729
답변완료
문의드립니다.
PlotPaintBar등으로 차트에 표시를 하게되게 된다면 이후에 5000바가 지나면 기록들은 다 사라지게 되는 건가요. 답변과 부탁드립니다.
2013-11-22
252
글번호 69728
답변완료
재문의
안녕하세요 답변에감사드립니다 오늘수정해주신 식으로 적용해보니 앞전식과 똑같이 5분씩빨리 신호가나옵니다 설정창에서 시간시작에 체크하고 청산은 15:00에됩니다 담당자님께서 시뮬차트에한번 돌려보시면 좋겠읍니다 제가보기엔 간단한문제같은데 까다로운문제인가요 C.T 를 사용하다가 Y.T 로 옮길려고 하는데 처음부터 난관에 부딫혀서 순탄치가않네요 그리고 예스트레이더 시뮬차트에 돌려보면 아무런 신호가 않나와서 우리트레이더로 시뮬했읍니다 혹시 우리트레이더에 돌려서 이런결과가 나오는지요 제가알기로는 동일한시스템으로 알고있는데요 근데 왜 에스트레이더는 아무런 신호가 않뜰까요 제가잘못가동한 부분이있는지 알려주십시요 제가 문의드린식에서 이문제를 꼭 해결하고 넘어가야되는 사정이라서요 바쁘시더라도 신경좀써주십시요 죄송합니다 감사합니다
( 11월 20일 )
Y.T
1신호 -355.000 ( - 0.71pt )
2신호 -280.000 ( - 0.56 pt )
3신호 +220.000 ( + 0.44 pt )
총손익 , -415.000 원
( 11월 총손익 ) , -2.830.000원
*********************************************************
C.T
1신호 -140.000 ( - 0.28 pt )
2신호 -120.000 ( - 0.24 pt )
3신호 +170.000 ( + 0.34 pt )
총손익 , -110.000 원
( 11월 총손익 ) , -255.000원
수수료 0.0015 %
슬리피지 0.05 pt
********************************************************************************
안녕하세요
예스스탁입니다.
수식에서 시간지정에서 차이가 있는것 같습니다.
예스랭귀지에서 첫봉은 90000이라는 시간을 가지므로
stime > 090000은 두번째 봉부터를 의미하는데
atstop이 if조건만족하고 다음봉에 신호가 발생하므로 세번째 봉부터 신호가 발생할수 있습니다.
해당 부분 두번째 봉에서 신호가 발생할수 있게 변경했습니다.
If stime < 150000 Then{
if stime >= 090000 then{
If MarketPosition==0 then{
buy("매수",Atstop,DayOpen+0.8);
sell("매도",Atstop,DayOpen-0.8);
}
if MarketPosition == -1 Then
buy("역매수",Atstop,lowest(low,BarsSinceEntry+1)+0.9);
if MarketPosition == 1 Then
sell("역매도",Atstop,highest(high,BarsSinceEntry+1)-0.9);
}
}
위식으로 차트에 적용하면
시초가에서 0.8 움직이면 "매수"나 "매도"가 진입하고
역매수와 역매도도 진입이후의 최고가나 최저가를 기준으로 0.9 움직일때 정확히 리버션진입합니다.
당일청산의 경우 실전에서는 해당 시간이 되면 즉시 주문이 집행됩니다.
리포트에는 강제청산으로 지정된 시간이 포함된 봉의 시간을 표시하게 되고
당일청산이 봉미완성시에 나오므로 그때의 가격을 알수 없어
리포트에는 해당봉의 종가로 표시됩니다.
예스트레이더의 수식은 모두 봉을 시작시간으로 시간을 사용합니다.
예스트레이더 상단 관리메뉴의 종합환경설정창으세
봉의 X축표시를 시작시간기준으로 하시고 보시기 바랍니다.
즐거운 하루되세요
> 민선생1 님이 쓴 글입니다.
> 제목 : 재문의
> 답변감사합니다 수정해주신 식으로 적용해보니 진입시간과가격은 동일한데요 결과가다릅니다 그리고 당일청산에서 2개다 15:00에 적용했는데 C.T 는 15:00에 청산인데 Y.T는 15:05분에 청산이되네요 그래서 02:55분으로 바꿔보니 15:00에 청산이됩니다 수수료 와 슬리피지는 2개다 동일하게했는데 왜다른결과가 나오나요 ? 다시좀 살펴주십시요 감사합니다
************************************************************
안녕하세요
예스스탁입니다.
역매수와 역매도 수식의 매개변수 지정이 잘못되어 있었습니다.
아래식으로 다시 적용하시면 됩니다.
If stime < 150000 Then{
if stime > 090000 then{
If MarketPosition==0 then{
buy("매수",Atstop,DayOpen+0.8);
sell("매도",Atstop,DayOpen-0.8);
}
if MarketPosition == -1 Then
buy("역매수",Atstop,lowest(low,BarsSinceEntry+1)+0.9);
if MarketPosition == 1 Then
sell("역매도",Atstop,highest(high,BarsSinceEntry+1)-0.9);
}
}
******************************************************************
If ttime<1500 Then
If ttime>0900 Then
If position=0 Then
Call buy("매수",Atstop,Def,opend+0.8)
Call sell("매도",Atstop,Def,opend-0.8)
Else
Call buy("역매수",Atstop,Def,llv(1,low,barnumsinceentry+1)+0.9)
Call sell("역매도",Atstop,Def,hhv(1,high,barnumsinceentry+1)-0.9)
End If
End if
End if
2013-11-22
313
글번호 69727