커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
6067
글번호 230811
답변완료
질문 드립니다
안녕하세요 ^^*
매번 수고해주심에 진심으로 감사드립니다!!!
아래수식은 어느 회원님의 질문에 관리자님이 답변해주신 수식인데요
이수식을 아래내용만 조금 수정 보완해주시면 고맙겠습니다
1, 파동의 고점 혹은 저점이 발생시 "수평선"이 바로그 고점 저점자리에서 발생되었으면합니다
(* 기존의 수평선은 제거후)
* 이후 이 수평선은 몇개의 봉이 완성되든 상관없이 다음 새로운 고점 저점이 발생시까지 계속 이어져야하며
* 동시에 이 새로운 고점 혹은 저점이 발생시 이전 수평선은 모두 사라졌으면합니다
<<* 파동선이 같은방향으로 연장이되든 아님 반대방향으로 전환이되든
어떤 경우든 새로운 고점 저점이 발생시는 항상 위조건이 모두 만족되었으면 합니다>>
2, 이 "수평선"의 "두께"와 "색상"은 수정가능하도록 부탁드립니다
저에겐 이 기능이 매우 중요할것같아서요
기본적으로는 제일 두꺼운 흰색으로 설정 부탁드립니다
항상 감사합니다 ^^
====================================================================================
Input:전환비율(0.5),종가사용여부(0),파동선두께(2),수치표시(1);
Var:j(0),jj(0),HH(0),LL(0),hiBar(0),loBar(0),최종꼭지점(""),처리구분(""),
TL1(0),Text1(0),TL11(0),TL12(0),TL13(0);
Array:고[10,4](0),저[10,4](0);
HH = IFF(종가사용여부 == 1,C,H);
LL = IFF(종가사용여부 == 1,C,L);
If Index == 0 Then
{
고[1,1] = HH;
고[1,2] = 0;
고[1,3] = sDate;
고[1,4] = sTime;
저[1,1] = LL;
저[1,2] = 0;
저[1,3] = sDate;
저[1,4] = sTime;
}
If Index > 0 Then
{
hiBar = hiBar + 1;
loBar = loBar + 1;
}
If HH[hiBar] < HH Then hiBar = 0;
If LL[loBar] > LL Then loBar = 0;
Condition1 = 저[1,1] * (1 + (전환비율/100)) < HH and hiBar == 0;
Condition2 = 고[1,1] * (1 - (전환비율/100)) > LL and loBar == 0;
처리구분 = "";
If Condition1 and Condition2 Then
{
If 최종꼭지점 == "저점" Then
{
If 저[1,1] > LL Then 처리구분 = "저점처리";
Else 처리구분 = "고점처리";
}
Else If 최종꼭지점 == "고점" Then
{
If 고[1,1] < HH Then 처리구분 = "고점처리";
Else 처리구분 = "저점처리";
}
}
Else If Condition1 Then 처리구분 = "고점처리";
Else If Condition2 Then 처리구분 = "저점처리";
If 처리구분 == "고점처리" Then
{
If 최종꼭지점 == "저점" Then
{
For j = 10 DownTo 2
{
For jj = 1 To 4
{
고[j,jj] = 고[j-1,jj];
}
}
고[1,1] = HH[hiBar];
고[1,2] = Index - hiBar;
고[1,3] = sDate[hiBar];
고[1,4] = sTime[hiBar];
hiBar = -1;
loBar = -1;
TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]);
TL_Delete(TL11);
TL_Delete(TL12);
TL_Delete(TL13);
TL11 = TL_New(저[1,3],저[1,4],999999999,저[1,3],저[1,4],0);
TL12 = TL_New(고[2,3],고[2,4],저[1,1],고[1,3],고[1,4],저[1,1]);
TL13 = TL_New(고[2,3],고[2,4],저[1,1]* (1 + (전환비율/100)) ,고[1,3],고[1,4],저[1,1]* (1 + (전환비율/100)) );
TL_SetExtRight(TL12,true);
TL_SetExtRight(TL13,true);
If 수치표시 == 1 Then
{
Text1 = Text_New(고[1,3],고[1,4],고[1,1],NumToStr(고[1,1],2));
Text_SetStyle(Text1, 2, 1);
}
TL_SetSize(TL1,파동선두께);
TL_SetColor(TL1,red);
}
Else If 고[1,1] < HH[hiBar] Then
{
고[1,1] = HH[hiBar];
고[1,2] = Index - hiBar;
고[1,3] = sDate[hiBar];
고[1,4] = sTime[hiBar];
hiBar = -1;
loBar = -1;
TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]);
If 수치표시 == 1 Then
{
Text_SetLocation(Text1,고[1,3],고[1,4],고[1,1]);
Text_SetString(Text1,NumToStr(고[1,1],2));
}
}
최종꼭지점 = "고점";
}
If 처리구분 == "저점처리" Then
{
If 최종꼭지점 == "고점" Then
{
For j = 10 DownTo 2
{
For jj = 1 To 4
{
저[j,jj] = 저[j-1,jj];
}
}
저[1,1] = LL[loBar];
저[1,2] = Index - loBar;
저[1,3] = sDate[loBar];
저[1,4] = sTime[loBar];
hiBar = -1;
loBar = -1;
TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]);
TL_Delete(TL11);
TL_Delete(TL12);
TL_Delete(TL13);
TL11 = TL_New(고[1,3],고[1,4],999999999,고[1,3],고[1,4],0);
TL12 = TL_New(저[2,3],저[2,4],고[1,1],저[1,3],저[1,4],고[1,1]);
TL13 = TL_New(저[2,3],저[2,4],고[1,1]* (1 - (전환비율/100)) ,저[1,3],저[1,4],고[1,1]* (1 - (전환비율/100)) );
TL_SetExtRight(TL12,true);
TL_SetExtRight(TL13,true);
If 수치표시 == 1 Then
{
Text1 = Text_New(저[1,3],저[1,4],저[1,1],NumToStr(저[1,1],2));
Text_SetStyle(Text1, 2, 0);
}
TL_SetSize(TL1,파동선두께);
TL_SetColor(TL1,blue);
}
Else If 저[1,1] > LL[loBar] Then
{
저[1,1] = LL[loBar];
저[1,2] = Index - loBar;
저[1,3] = sDate[loBar];
저[1,4] = sTime[loBar];
hiBar = -1;
loBar = -1;
TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]);
If 수치표시 == 1 Then
{
Text_SetLocation(Text1,저[1,3],저[1,4],저[1,1]);
Text_SetString(Text1,NumToStr(저[1,1],2));
}
}
최종꼭지점 = "저점";
}
2018-11-12
182
글번호 123550
stockric 님에 의해서 삭제되었습니다.
2018-11-10
0
글번호 123549
답변완료
수식 작성 도움 부탁 드립니다.
안녕하세요.
시스템 매매 시작해 보고자 하는데, 수식 작성 도움 부탁 드리겠습니다.
투입금액 비중 같은 부분은 작성이 가능한지 잘 모르겠는데, 확인 한번 부탁 드려요.
감사합니다.
- 매수 : 당일 실시간 가격 > 당일 시가 + (전일 고가 - 전일 저가) * 13일 평균 노이즈 비율
단, 1일 1회만 진입
※ 노이즈 비율 = 1-abs(시가-종가)/(고가-저가)
- 매수 시 투입금액 : 총 자산 * 0.02/전일 변동성 * 1~13일 이동평균선스코어
※ 전일 변동성 = (전일 고가 - 전일 저가)/현재가
※ 이동평균선스코어
3~13일의 11개 이동평균선 후 현재가가 각 일별 이동평균선을 넘으면 1/11점씩 부여
예) 3일 이동평균선을 넘으면 1/11점,
3, 4일 이동평균선을 넘으면 2/11점
즉, 현재가가 모든 이동평균선을 넘으면 이동평균선스코어는 1점,
현재가가 모든 이동평균선을 넘지 못하면 이동평균선스코어는 0점 부여
- 매도 : 다음날 시가
2018-11-10
199
글번호 123548
haha1122 님에 의해서 삭제되었습니다.
2018-11-12
10
글번호 123547
답변완료
부탁 좀 드립니다.
안녕하세요 늘 감사합니다.
현재 시스템 신호를 만들어서 사용하고 있습니다.
차트에 매수 신호 나오고 매수 신호에 가격을 나오게 만들고 싶습니다.
예를 들어
화살표 나오고 매수라고 나올 경우 그 옆에 국선의 경우 "269.40" 이런 식으로 나왔으면 좋겠습니다.
작성 해주는 식의 주석 좀 부탁드립니다.
2018-11-09
153
글번호 123546
답변완료
수식 작성좀 부탁드려요.
해외 선물 진입후 일정시간이 지나면 청산하는 수식을 작성하려고 합니다.
오전 10시00분~오후16시00분 까지는 진입후 12분 후에 청산
오후 16시00분~오후22시30분 까지는 진입후 6분 후에 청산
오후22시30분~익일 오전 02시00분 까지는 진입후 3분 후에 청산
위와 같이 청산하는 수식 작성좀 부탁드립니다.
2018-11-09
165
글번호 123545
답변완료
추가 식좀 부탁합니다
value1 = ????????
value2 = ????????????
If crossup(value1,value2) Then
{
Buy ("매수") ;
}
If crossdown(value1,value2) Then
{
Sell ("매도");
}
안녕하세요
전 위 식을 이용해서 매매를 합니다
이곳에 손절 라인을 만들고 싶습니다
예를 들어 국선기준 신호봉의 저가 271.95 고가 272.10 이라면 틱수로는 위로3틱입니다
그럼 손절가는 배수인 6틱를 주고 싶네요
----- 차후에 틱수를 늘릴수 있습니다(꼭 배수가 아니라도요)
예를 하나 더 들면 신호봉의 저가 271.70 고가가 272.00 이라면 틱수로는 위로6틱입니다
그럼 손절가는 배수인 12틱 입니다
매도의 손절가도 같습니다
지표식
그리고 차트에 ------"손절" 이런 지표로 나왔으면 합니다
단 예를 들어 매수시 손절표시 나오고 다음에 매도시 손절가 나오때 매수시 손절가는
없어저야 합니다
다시 말씀 드리면 차트에는 늘 손절가 표시는 하나만 나와있다는 말입니다
예외의 수
매수해서 손절가 나오기도 전에 반대신호가 나오면 청산하고 반대신호 나오게 합니다
모든 식에는 주석도 같이 달아주세요
익절 식
고점 봉의 저가 고가의 수칫의 배가 내로오면 "익절"
손절식의 의미와 같습니다
----- 차후에 틱수를 늘릴수 있습니다(꼭 배수가 아니라도요)
2018-11-09
158
글번호 123544
답변완료
진입조건 하나더 추가 부탁드리겠습니다.
진입조건에 하나 더 추가하고 싶습니다.
if MarketPosition == 0 and CountIF(C>O,Y) == Y Then
buy("정배매수");
if MarketPosition == 0 and CountIF(C<O,X) == X Then
sell("정배매도");
여기에 연속-양봉시 매수진입 연속-음봉시 매도 진입입니다.
거기에 매수진입시 최초양봉과 진입시의 봉간 틱수가 일정틱이상이 되어야 진입할수 있게 해주세요
예를들면 조건1(5회연속 양봉) + 조건2(5회연속 양봉의 차이가 10tick이상) 일때 진입
매도 진입의 경우 그 반대일때 진입하게 끔 수식 부탁드리겠습니다.
======================================================================
input : p1(5),p2(20),p3(60),X(8),Y(7),XX(8),YY(7),XXX(5),YYY(9);
input : 익절틱수(70),손절틱수(56);
var : Tcond(false);
var1 = ma(c,P1);
var2 = ma(c,P2);
var3 = ma(c,P3);
if var1 > var2 and var2 > var3 then
{
if MarketPosition == 0 and CountIF(C>O,Y) == Y Then
buy("정배매수");
if MarketPosition == 0 and CountIF(C<O,X) == X Then
sell("정배매도");
}
else if var1 < var2 and var2 < var3 then
{
if MarketPosition == 0 and CountIF(C>O,YY) == YY Then
buy("역배매수");
if MarketPosition == 0 and CountIF(C<O,XX) == XX Then
sell("역배매도");
}
else
{
if MarketPosition == 0 and CountIF(C>O,YYY) == YYY Then
buy("혼재매수");
if MarketPosition == 0 and CountIF(C<O,XXX) == XXX Then
sell("혼재매도");
}
SetStopProfittarget(PriceScale*익절틱수, PointStop);
SetStopLoss(PriceScale*손절틱수, PointStop);
2018-11-10
161
글번호 123539
답변완료
시스템 식좀 부탁드립니다
30분봉 하나의 봉에서
시작시점에서
양봉과 음봉이번갈아 나올때 양봉에서 음봉으로 변할때 음봉1번
음봉에서 양봉으로 변할때 양봉1번 이런식으로 수를 세서
양봉이 3번나오면 매수
음봉이 3번나오면 매도 식좀 부탁드립니다.
30분봉 하나의 봉에서 양봉음봉이 반복될때를 말하는 것입니다.
만약에 3번 나오지 않으면 이전에 매수상태이면 다음봉 시작에서 양봉이면 매수 음봉이면 매도이고 이전에 매도상태이면 위에것하고 반대로 하며 됩니다.
감사합니다.
2018-11-12
179
글번호 123534