커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7529
글번호 230811
답변완료
문의 (DATA1)
1. 맨 아래내용은 어제 답변주신 내용입니다. 모든 부분을 이해한 것이 아니기에 확인차원에서 재질문 드립니다.
제가 이해한 부분입니다.
* DATA1을 기입하지 않으면 디폴트로 DATA1을 가리키는 것은 아니라는 점...
* DATA1에서의 데이타(이평선, 봉 등)만을 이용할 경우에는 DATA1을 모두 기입해주는 것이 명확하고 처리하는 속도?에서 이점을 얻을 수 있다는 점
* DATA1에서 DATA2의 참조데이타를 이용할 경우에는 반드시 참조할 데이타를 명시해야함
VARS: A(0);
A = DATA2(AA) + DATA3(M1 / M2 * 100);
위와 같이 해줘야함.
여기서
VARS: A(0); 인지 VARS: A(0, DATA1); 인지는 헷갈립니다.
제가 이해한 부분이 정확한지 다시한번 봐주시고 조언주시면 감사드리겠습니다.
2. 3분봉에서 일봉을 표시하기 위해 사용했던것인데 DATA1인 1분봉에서 표시하게끔해주고 싶습니다. 변환부탁드립니다.
VARS: M5DP(5), M13DP(13), M20DP(20);
VARS: M5D(0, DATA2), M13D(0, DATA2), M20D(0, DATA2);
VARS: M5D.SUM(0, DATA2), M13D.SUM(0, DATA2), M20D.SUM(0, DATA2), CNT(0);
ARRAY: CC[100](0, DATA2);
//----------------------------------------------------------------------------------------------------------------------------------------------------------
if ( DATA2(Date <> Date[1]) ) Then
{
for CNT = 0 to 99
{
CC[CNT] = CC[CNT - 1][1];
}
}
CC[0] = DATA2(C);
M5D.SUM = 0; M13D.SUM = 0; M20D.SUM = 0;
for CNT = 0 to M20DP - 1
{
if ( (CNT < M5DP) AND (CC[M5DP - 1] > 0) ) Then M5D.SUM = M5D.SUM + CC[CNT];
if ( (CNT < M13DP) AND (CC[M13DP - 1] > 0) ) Then M13D.SUM = M13D.SUM + CC[CNT];
if ( (CNT < M20DP) AND (CC[M20DP - 1] > 0) ) Then M20D.SUM = M20D.SUM + CC[CNT];
}
M5D = (M5D.SUM / M5DP);
M13D = (M13D.SUM / M13DP);
M20D = (M20D.SUM / M20DP);
Plot21(M5D, "M5D", RGB(0,255,0), DEF, 1);
Plot22(M13D, "M13D", RGB(0,255,255), DEF, 1);
Plot23(M20D, "M20D", RGB(255,102,204), DEF, 1);
3. 10분후에만 작동하게 끔 해주려고 합니다. 아래식 맞는건지요??
장시작후 10분후에도 M1과 M2가 역배열되었는데도 Buy 진입이 되는 것을 확인할 수 있었습니다.
VARS: PreD.TM(0, DATA1);
VARS: PreD.Q1(FALSE, DATA1);
if DATA1(Date <> Date[1]) then
{
PreD.TM = DATA1(TimeToMinutes(stime));
PreD.Q1 = FALSE;
}
if ( (TimeToMinutes(stime) >= PreD.TM + 10) AND (M1 > M2) ) then
{ PreD.Q1 = TRUE; }
............
if (PreD.Q1 == TRUE) then buy();
아래 문장에서 DATA1을 삭제시 어떻게 달라지나요?
PreD.TM = DATA1(TimeToMinutes(stime));
금일도 질문이 다소 많은데 부탁드리겠습니다.
늘 감사드립니다.
-------------------------------------------------------------------------
답변주신 내용
-------------------------------------------------------------------------
수식에서 참조데이터를 사용하는 경우
if DATA1(Date <> Date[1]) then
{
실행문
}
은 data1로 지정을 했으므로 if문이 data1봉만 기준으로 계산이 되는데
if Date <> Date[1] then
위와 같이 작성하시면 차트의 있는 봉이 완성이 될때마다
if문이 구동이 되어 조건만족여부를 따져 만족하면
하위의 실행문들이 수행되므로 중복으로 계산이 됩니다.
마찬가지로
DATA1(TMA(gCLOSE, MP1));
와 같이 작성하시면 해당 함수를 계산하는 봉을 data1의봉수로만 따지게 되는데
TMA(gCLOSE, MP1);
와 같이 있으면 참조데이터를 포함해서 봉수를 산정하게 됩니다.
참조데이터를 이용하는 식을 만드실때는 해당 조건문 혹은 함수가
따라가야 하는 데이터가 어떤데이터인지 명시해 주셔야 합니다.
2013-11-21
248
글번호 69681
답변완료
화면색
3.1에서는 강조기능을 통하여 차트화면색 변경기능이 없었습니다.
이번 4.0 버전에서는 가능한지 궁금합니다.
예를 들어 분봉상에서 현재 주가가 전일 종가(dayclose(C))대비
+1.2%이상 지역은 빨강색
0%~+1.2% 지역은 주황색
-1.2%~0% 지역은 노랑색
-1.2%이하 지역은 초록색
이와 같이 나타낼 수 있는지 궁금합니다.
(화면을 시루떡처럼 세로로 색깔을 달리할 수 있는지에 대한 질문)
만일 이번 버전에서도 화면색 변화기능이 없다면
이와 유사하게라도 처리할 수 있는 좋은 방법이 없을까요?
감사합니다.
2013-11-21
234
글번호 69680
답변완료
감사합니다.
감사합니다.
or 이하(트리일링 스탑 부분)을 추가하니 검증이 되지 않습니다. 검토를 부탁드립니다.
if MarketPosition == 1 and (Isentryname("b")==true or Isentryname("P")==true) Then{
if highest(H,BarsSinceEntry) >= EntryPrice*1.30 Then
(ExitLong("bx2",atstop,var2*0.985) or SetStopTrailing(30,20,PercentStop,0);)
else
SetStopTrailing(0,0);//해제
}
감사합니ㅏㄷ.
2013-11-21
218
글번호 69679
답변완료
수고하십니다
항상 친절하게 답변을 해주심에 감사드립니다
1) 20 이평을 상할돌파시 매수진입조건이되어도 다음봉이 조건봉의 하단을 지지하면 매수
진입하고 손절은 0.2포 상승시 계속 따라가다가 최고점에서
0.5포 떨어지면 청산
20 이평을 하락시 매도진입 조건이되어도 다음봉이 조건봉의고점을 넘지못하면
매도진입하고 손절은 0.2포 계속하락시 따라가다가 최저점에서 0.5포 상승하면 청산
3시에 일괄 청산
선물 틱봉에 사용할것입니다
2) 20 이평을 상할돌파시 매수진입 조건이되어도 다음봉이 조건봉의 하단을 지지하면
매수진입하고 손절은 0.2포 상승시 계속 따라가다가
앞의몇번째봉 저점을 깨면 바로청산
20 이평을 하락시 매도진입 조건이되어도 다음봉이 조건봉의고점을 넘지못하면
매도진입하고 손절은 0.2포 계속하락시 따라가다가 몇번째 앞봉의 고점을
돌파하면 바로청산 3시에 일괄 청산
선물 틱봉에 사용할것입니다
두가지식을 부가 설명과같이 부탁 드립니다
감사합니다
2013-11-21
201
글번호 69678
답변완료
지표식 질문입니다
10분차트에서
MA(c,10) 의 변곡점 마다
(변곡점은 이동평균선 값이 증가하다가 감소하는 점과
감소하다가 증가하는 점)
하루 10분 마다
카운터하는 지표식을 만들고 싶습니다
예를들면
9시10분봉은 몇번이나 변곡점이 일정기간 동안 나왓나?
9시 20분봉은
9시 30분 봉은..
2013-11-21
217
글번호 69677
답변완료
문의드립니다..
시스템 공부하고 있는 초보입니다.
위의 식은 매뉴얼에서 예스랭귀지 활용 - 실전매매와 시뮬레이션의 차이 - SetStopTrailing에 있는 예제를 가져온 것입니다.
위의 식설명에서는 "진입이후 전봉까지의 최고가격"라는 것이 있는데 이것은 제가 보기에
Highest(H, BarsSinceEntry+1)로 보입니다.
제가 초보라 이부분이 이해가 안갑니다.
매뉴얼의 BarsSinceEntry함수에서 설명한
Highest(H, BarsSinceEntry)는 진입 이후 최고가라는 것이 이해가 갑니다. 그런데
Highest(H, BarsSinceEntry+1)는 진입이후 전봉까지의 최고가라는데 이해가 가질 않습니다.
제 생각에는 단지 진입봉을 포함하지 않는 것과 포함하는 것의 차이인 것같은데 진입이후 전봉까지의 최고가라고 하니 이해가 안가네요..
질문입니다.
1. Highest(H, BarsSinceEntry+1)이 어떻게 진입 이후 전봉까지의 최고가가 되는지 자세한
설명부탁드립니다.
2. "진입이후 전봉까지의 최고가"를 다른 방식으로 표현할 수는 없는지요. 수식 부탁드립니다.
2013-11-21
245
글번호 69676
답변완료
재문의
답변감사합니다 수정해주신 식으로 적용해보니 진입시간과가격은 동일한데요 결과가다릅니다 그리고 당일청산에서 2개다 15:00에 적용했는데 C.T 는 15:00에 청산인데 Y.T는 15:05분에 청산이되네요 그래서 02:55분으로 바꿔보니 15:00에 청산이됩니다 수수료 와 슬리피지는 2개다 동일하게했는데 왜다른결과가 나오나요 ? 다시좀 살펴주십시요 감사합니다
( 11월 20일 )
Y.T
1신호 -355.000 ( - 0.71pt )
2신호 -280.000 ( - 0.56 pt )
3신호 +445.000 ( + 0.89 pt )
총손익 , -190.000 원
*********************************************************
C.T
1신호 -110.000 ( - 0.22 pt )
2신호 -85.000 ( - 0.17 pt )
3신호 +185.000 ( + 0.37 pt )
총손익 , -37.000 원
수수료 0.0015 %
슬리피지 0.05 pt
************************************************************
안녕하세요
예스스탁입니다.
역매수와 역매도 수식의 매개변수 지정이 잘못되어 있었습니다.
아래식으로 다시 적용하시면 됩니다.
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-21
223
글번호 69675
답변완료
수식부탁드립니다.
1)[ex.201HC265 옵션초봉이 2%상승]시 and 2)[동 시각 ex.101HC000 선물 초봉 1%상승]시 매수주문 수식 부탁드립니다. 결국 동시각대의 초봉에서 특정옵션초봉과 특정선물초봉이 동시에 조건을 만족하면 매수주문 발생하는 수식입니다. 감사합니다.
2013-11-21
200
글번호 69674
답변완료
문의 드립니다
어떤 A조건 청산 매매식이 있습니다
1.청산식에서
첫번째 진입에서 청산을 할때 수익이거나 0.5포 손실 볼때까지는
청산 A조건 매매식이 안되게 하여 주시고
2.청산식에서
첫번째 진입에서 2.5포인트 이상 수익이고 2시간 30분이 지난다음
수익대비 1.1포인트 빠진다면 청산 A조건에서 강제청산만 하고 다시는 진입은 없는 매매식
부탁드립니다
3.청산식에서
0.55포 이상 손실 볼때는 청산 A조건 매매식이 청산되게 하여주시고요
즉 청산만 되고 2번째 진입이 없애야 되는 식 부탁드립니다
4.청산식에서
0.55포 이상 손실보고 A조건 매매식이 청산되고,
새로운 A조건 매매식이 진입 될수 있도록 하여 주시고(딱 1번만 진입되는)
3시 4분에 강제청산되는 식 부탁드립니다
2013-11-20
217
글번호 69673