커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1689
글번호 230811
답변완료
문의 드립니다.
처음 수식에서 추가 하다보니 차트상 달라진 것이 있습니다.
이전 수식차트와 현재 수식 차트를 올려드리니 확인 부탁드립니다.
감사합니다.
아래는
현재 시스템 차트 수식입니다.
input : StartTime(101500),EndTime(114000);
input : Length(20), D1(2);
input : 익절1(30),손절1(30),청산구분시간(103000),익절2(50),손절2(30),익절연속횟수(3),손절연속횟수(2);
var : Tcond(false),profit(0),loss(0);
if (sdate != sdate[1] and stime >= EndTime) or
(sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then
Tcond = False;
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
{
Tcond = true;
profit = 0;
loss = 0;
}
if TotalTrades > TotalTrades[1] Then
{
if IsExitName("bp1.",1) or IsExitName("bp2.",21) or IsExitName("bp1",1) or IsExitName("bp2",21) or
IsExitName("sp1.",1) or IsExitName("sp2.",1) or IsExitName("sp1",1) or IsExitName("sp2",1) Then
profit = profit+1;
Else
profit = 0;
if IsExitName("bl1.",1) or IsExitName("bl2.",1) or IsExitName("bl1",1) or IsExitName("bl2",1) or
IsExitName("sl1.",1) or IsExitName("sl2.",1) or IsExitName("sl1",1) or IsExitName("sl2",1) Then
loss = loss+1;
Else
loss = 0;
}
var1 = BollBandUp(Length,D1);
var2 = BollBandDown(Length,D1);
if Tcond == true Then
{
If CrossUP(H,var1) and c > o and profit < 익절연속횟수 and loss < 손절연속횟수 then
{
Buy("b",OnClose,DEF,1);
if sTime >= StartTime and sTime < 청산구분시간 Then
{
ExitLong("bp1.",AtLimit,C+PriceScale*익절1,"",1,1);
ExitLong("bl1.",AtStop,C-PriceScale*손절1,"",1,1);
}
if sTime >= 청산구분시간 and sTime < Endtime Then
{
ExitLong("bp2.",AtLimit,C+PriceScale*익절2,"",1,1);
ExitLong("bl2.",AtStop,C-PriceScale*손절2,"",1,1);
}
}
If CrossDown(L,Var2) and C < O and profit < 익절연속횟수 and loss < 손절연속횟수 then
{
Sell("s",OnClose,DEF,1);
if sTime >= StartTime and sTime < 103000 Then
{
ExitShort("sp1.",AtLimit,C-PriceScale*익절1,"",1,1);
ExitShort("sl1.",AtStop,C+PriceScale*손절1,"",1,1);
}
if sTime >= 103000 and sTime < Endtime Then
{
ExitShort("sp2.",AtLimit,C-PriceScale*익절2,"",1,1);
ExitShort("sl2.",AtStop,C+PriceScale*손절2,"",1,1);
}
}
}
if MarketPosition == 1 Then
{
if sTime >= StartTime and sTime < 청산구분시간 Then
{
ExitLong("bp1",AtLimit,EntryPrice+PriceScale*익절1,"",1,1);
ExitLong("bl1",AtStop,EntryPrice-PriceScale*손절1,"",1,1);
}
if sTime >= 청산구분시간 and sTime < Endtime Then
{
ExitLong("bp2",AtLimit,EntryPrice+PriceScale*익절2,"",1,1);
ExitLong("bl2",AtStop,EntryPrice-PriceScale*손절2,"",1,1);
}
}
if MarketPosition == -1 Then
{
if sTime >= StartTime and sTime < 103000 Then
{
ExitShort("sp1",AtLimit,EntryPrice-PriceScale*익절1,"",1,1);
ExitShort("sl1",AtStop,EntryPrice+PriceScale*손절1,"",1,1);
}
if sTime >= 103000 and sTime < Endtime Then
{
ExitShort("sp2",AtLimit,EntryPrice-PriceScale*익절2,"",1,1);
ExitShort("sl2",AtStop,EntryPrice+PriceScale*손절2,"",1,1);
}
}
IF Endtime > starttime Then
SetStopEndofday(Endtime);
Else
{
if sDate != sDate[1] Then
SetStopEndofday(Endtime);
}
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
{
IF Endtime <= starttime Then
{
SetStopEndofday(0);
}
}
2021-10-19
866
글번호 153003
답변완료
매주 월요일(만기주 월요일 제외)2
수요일 ,목요일은 아래처럼 하면 되는지요?
1)수요일
Var : ndate(0),cnt(0),count(0),XJD(0);
ndate = Floor(bDate/100)*100;
count = 0;
For cnt = 1 to 15
{
if DayOfWeek(ndate+cnt) == 4 Then
{
count = count+1;
if count == 2 Then
XJD = ndate+cnt;
}
}
if DayOfWeek(Bdate) == 3 and Bdate != XJD-1 Then
{
진입수식
}
2)목요일
Var : ndate(0),cnt(0),count(0),XJD(0);
ndate = Floor(bDate/100)*100;
count = 0;
For cnt = 1 to 15
{
if DayOfWeek(ndate+cnt) == 4 Then
{
count = count+1;
if count == 2 Then
XJD = ndate+cnt;
}
}
if DayOfWeek(Bdate) == 4 and Bdate != XJD-0 Then
{
진입수식
}
***********************************************************************
안녕하세요
예스스탁입니다.
1
Var : ndate(0),cnt(0),count(0),XJD(0);
ndate = Floor(bDate/100)*100;
count = 0;
For cnt = 1 to 15
{
if DayOfWeek(ndate+cnt) == 4 Then
{
count = count+1;
if count == 2 Then
XJD = ndate+cnt;
}
}
if DayOfWeek(Bdate) == 1 and Bdate != XJD-3 Then
{
진입수식
}
2
Var : ndate(0),cnt(0),count(0),XJD(0);
ndate = Floor(bDate/100)*100;
count = 0;
For cnt = 1 to 15
{
if DayOfWeek(ndate+cnt) == 4 Then
{
count = count+1;
if count == 2 Then
XJD = ndate+cnt;
}
}
if DayOfWeek(Bdate) == 1 and Bdate != XJD-2 Then
{
진입수식
}
즐거운 하루되세요
> 목마와숙녀 님이 쓴 글입니다.
> 제목 : 문의
> 아래 수식 1)은 매주 월요일만 거래하는 수식입니다.
옵션 만기주 월요일은 제외하는 수식으로 완성바랍니다.
아래 수식 2)은 매주 화요일만 거래하는 수식입니다.
옵션 만기주 화요일은 제외하는 수식으로 완성바랍니다.
2021-12-16
1061
글번호 152996
답변완료
안녕하세요
이전에 74320 글 관련 문의드렸는데 답변 주셔서 너무 감사드립니다.
다름이 아니오라 74320 글의 3번의 종목 검색식
"최고점과 중간값의 이격이 10% 미만인 종목을 검색할 수 있는 종목검색식" 에서
1. 과거 3봉전 캔들 "이내"로 최고점을 돌파한 종목을 검색할 수 있는 검색식 /
2. 3봉전 캔들이 최고점을 돌파한 종목을 검색할 수 있는 검색식 /
2가지 문의드리겠습니다. 너무 감사드립니다.
2021-10-19
749
글번호 152991
답변완료
가격수식
캔들의 시가 고가 저가 종가가 아닌 그냥 가격에 대한 수식이 잇나요
2021-10-19
911
글번호 152988
답변완료
setstoptrailing 함수 문의
보내주신 답변 감사드립니다.
하지만, 초기화한 후 시스템 성적은 형편없는 것으로 확인됨에 따라
첨부 시스템을 보내드립니다.
1. 30분봉 기준으로 거래하는 시스템으로서
이평선 기울기에 따라 수익후퍼센트(ssth)를 변경하면서 스탑트레일링하고자 합니다.
시뮬레이션에서 동작할 때와 실거래시에 다르게 동작함을 확인하였습니다.
이를 해결할 수 있는 시스템식 변경을 요청드립니다.
2. 외부에서 설정하는 방식 즉 수익후 손실 설정하여 하는 방식은 실거래에서
잘 동작하는 것을 확인하였으나, 수익후퍼센트값을 일정값으로 할 수 밖에 없습니다.
3. 제가 이 문제로 인해 많은 손실을 입고 이제 정확히 동작하도록 하는 문제를
해결해야하는 상황이오니 관심어린 지도편달 부탁드립니다.
Vars : val_ssth(0);
///////////////////////////////////////////////////////////////////
if ma(c,25)>ma(c,25)[1] and ma(c,3)>ma(c,40)and sTime < 150000 Then Buy("***");
IF sTimE == 150000 then ExitLong();
/////////////////////////////////////////////////////////////////////////////////////
if ma(c,2)-ma(c,2)[1] >= 0.9 Then val_ssth = 0.3;
if ma(c,2)-ma(c,2)[1] >= 0.6 and ma(c,2)-ma(c,2)[1] < 0.9 Then val_ssth = 0.25;
if ma(c,2)-ma(c,2)[1] >= 0.3 and ma(c,2)-ma(c,2)[1] < 0.6 Then val_ssth = 0.2;
if ma(c,2)-ma(c,2)[1] < 0.3 and ma(c,2)-ma(c,2)[1] >0 Then val_ssth = 0.09;
if ma(c,2)-ma(c,2)[1] <= 0 Then val_ssth = 0.03;
if MarketPosition() == 1 then SetStopTrailing(3,val_ssth,PercentStop,0);
//////////////////////////////////////////////////////////////////////////////
감사합니다.
필요시 전화로 하셔도 좋습니다.(010-5476-4093 위 작성자 오동엽 드림)
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : setstoptrailing 함수 문의
> 안녕하세요
예스스탁입니다.
강제청산 함수는 한번값이 셋팅되면 그 세팅이 다음까지 유지가 됩니다.
그러므로 초기화 하는 내용이 필요로 하게 됩니다.
아래와 같이 매수진입전에는 강제청산함수가 해제되게 추가하셔야 합니다.
if marketposition() == 1 then
{
if 조건1 Then setstoptrailing(b1,a1,percentstop,0);
if 조건2 then setstoptrailing(b2,a2,percentstop,0);
}
Else
SetStopTrailing(0,0);#해제
즐거운 하루되세요
> phoebus 님이 쓴 글입니다.
> 제목 : setstoptrailing 함수 문의
> 수고많으십니다.
조건에 따라 스탑트레일링 설정이 가능한지요?
예를들면,
if c > ma(c,5) then buy();
// 조건1이 만족하면 a1 수익후 b1 손실발생하면 스탑트레일링하고
// 조건2이 만족하면 a2 수익후 b2 손실발생하면 스탑트레일링한다고 할 경우,
if marketposition() ==1 and 조건1 then setstoptrailing(b1,a1,percentstop,0);
if marketposition() ==1 and 조건2 then setstoptrailing(b2,a2,percentstop,0);
// 위와 같이 작성하면 제대로 동작하는 지요?
2021-10-19
686
글번호 152987
답변완료
지표식 부탁드립니다.
항상 도움 주셔서 감사합니다.
아래 조건에 맞는 지표식 부탁드립니다.
종목 : 해외선물
지표조건1 : 오전 07시부터 새벽 1시까지 최고가와 최저가를
새벽 1시부터 익일 새벽 1시까지 차트에 라인으로 표시하고 싶습니다.
이런식으로 계속 반복하여 표시하고 싶습니다.
지표조건2 : 오후 14시를 기준으로 14시봉 이전 100개의 봉의 최고가와 최저가를
오후 14시이후부터 익일 14시까지 라인으로 표시하고 싶습니다.
지표조건3: 오전 7시부터 오후 16시까지의 최고가와 최저가를 16시 이후부터 차트에 라인으로 표시
오후 16시부터 오후 23시까지 최고가와 최저가를 23시 이후부터 차트에 라인으로 표시
오후 23시부터 새벽 06시까지 최고가와 최저가를 07시부터 오후 16시까지 차트에 라인으로 표시하고 싶습니다.
지표식 부탁드립니다.
감사합니다.
2021-10-19
601
글번호 152985
답변완료
양봉과 상승거래량, 음봉과 하락거래량
1.다음 수식을 전환부탁드립니다.
수식1
양봉=C>O;
음봉=C<O;
상승V=V>V(1);
하락V=V<V(1);
valuewhen(1,양봉 && 상승V,0)
수식2
양봉=C>O;
음봉=C<O;
상승V=V>V(1);
하락V=V<V(1);
valuewhen(1,양봉 && 상승V,C)
수식3
양봉=C>O;
음봉=C<O;
상승V=V>V(1);
하락V=V<V(1);
valuewhen(1,음봉 && 하락V,0)
수식4
양봉=C>O;
음봉=C<O;
상승V=V>V(1);
하락V=V<V(1);
valuewhen(1,음봉 && 하락V,C)
2.위1에서 수식1의 조건에 해당하면 매수, 수식3의 조건에 해당하면 매도
2021-10-19
765
글번호 152981
답변완료
틱챠트에서 분단위의 시간 설정하기
안녕하세요
틱챠트로 만들어진 시스템에서 진입을 9시 5분 이후에 하려면 어떻게 해야하는지 궁금합니다.
기존에는 아래와 같은 함수를 사용해 왔는데, 이것은 신호가 발생하는 봉이 시작하는 시간(혹은 이전 봉이 끝나는 시간)을 규정하는 거라 신호가 발생하는 봉이 끝나는 시간(즉, 진입이 이루어지는 순간)을 알 수 없습니다
var : T2(0);
if Bdate != Bdate[1] Then
T2 = TimeToMinutes(sTime);
항상 감사합니다
2021-10-19
466
글번호 152979
2wnwn 님에 의해서 삭제되었습니다.
2021-10-19
23
글번호 152978