커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4451
글번호 230811
답변완료
수식 수정 의뢰 합니다!
안녕하세요!
아래는 지난번에 만들어 주신 수식 입니다!
이평 기울기를 적용하여 하락시는 파랑색, 상승시에는 빨강색으로 선의 색을 바꿔 주세요!
감사합니다!
Input : Period1(3),Period2(7),Period3(14),Period4(28),Period5(40),Period6(56),Period7(112),Period8(224);
var : Xma1(0),Xma2(0),Xma3(0),Xma4(0),Xma5(0),Xma6(0),Xma7(0),Xma8(0);
Xma1 = ema(C,Period1);
Xma2 = ema(C,Period2);
Xma3 = ema(C,Period3);
Xma4 = ema(C,Period4);
Xma5 = ema(C,Period5);
Xma6 = ema(C,Period6);
Xma7 = ema(C,Period7);
Xma8 = ema(C,Period8);
Plot1(Xma1, "지수이동평균1");
Plot2(Xma2, "지수이동평균2");
Plot3(Xma3, "지수이동평균3");
Plot4(Xma4, "지수이동평균4");
Plot5(Xma5, "지수이동평균5");
Plot6(Xma6, "지수이동평균6");
Plot7(Xma7, "지수이동평균7");
Plot8(Xma8, "지수이동평균8");
--------------------------------------------------------------------
아래 수식은 지난번에 만들어 주신 수식 입니다!
월고와 월저를 콜과 풋으로 구분하고 싶습니다!
즉, 풋월고, 콜월고 , 풋월저, 콜월저,월물첫날 풋저가, 콜저가 이렇게 나누어 주시길 부탁드립니다!
그리고 라인이 생성되면 라인끝에 이름(예:풋월고)등 이름도 같이 표기해주시길 부탁드려요!
var : nday(0),week(0),Exdate(false);
var : HH(0),LL(0);
nday = date - int(date/100)*100;
week = DayOfWeek(date);
if nday >= 8 and nday <= 14 and
week == 4 then
Exdate = true;
Else
Exdate = false;
if bdate != bdate[1] and Exdate == false and Exdate[1] == true Then
{
var1 = sdate;
HH = H;
LL = L;
}
if sdate == var1 Then
value1 = daylow;
if H > HH Then
HH = H;
if L < LL Then
LL = L;
plot1(DayHigh(1),"전일고가");
plot2(daylow(1),"전일저가");
plot3(DayOpen(0),"전일시가");
if HH > 0 and LL > 0 then
{
plot4(HH,"월고");
plot5(LL,"월저");
}
plot6(value1,"월물첫날저가");
-------------------------------------------------------------------------
옵션의 당일콜풋 교차챠트를 만들고 싶습니다!
행사가별로 전일 콜고가와 콜저가, 풋고가와 풋저가가 선4개로 표시되게 만들어 주세요!
부탁드립니다
2018-11-12
201
글번호 123551
답변완료
질문 드립니다
안녕하세요 ^^*
매번 수고해주심에 진심으로 감사드립니다!!!
아래수식은 어느 회원님의 질문에 관리자님이 답변해주신 수식인데요
이수식을 아래내용만 조금 수정 보완해주시면 고맙겠습니다
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
153
글번호 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
177
글번호 123548
haha1122 님에 의해서 삭제되었습니다.
2018-11-12
10
글번호 123547
답변완료
부탁 좀 드립니다.
안녕하세요 늘 감사합니다.
현재 시스템 신호를 만들어서 사용하고 있습니다.
차트에 매수 신호 나오고 매수 신호에 가격을 나오게 만들고 싶습니다.
예를 들어
화살표 나오고 매수라고 나올 경우 그 옆에 국선의 경우 "269.40" 이런 식으로 나왔으면 좋겠습니다.
작성 해주는 식의 주석 좀 부탁드립니다.
2018-11-09
140
글번호 123546
답변완료
수식 작성좀 부탁드려요.
해외 선물 진입후 일정시간이 지나면 청산하는 수식을 작성하려고 합니다.
오전 10시00분~오후16시00분 까지는 진입후 12분 후에 청산
오후 16시00분~오후22시30분 까지는 진입후 6분 후에 청산
오후22시30분~익일 오전 02시00분 까지는 진입후 3분 후에 청산
위와 같이 청산하는 수식 작성좀 부탁드립니다.
2018-11-09
151
글번호 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
142
글번호 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
143
글번호 123539