커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7751
글번호 230811
답변완료
이메일로 문의드렸습니다.
이메일로 문의드렸습니다.
2010-08-04
899
글번호 31332
답변완료
수식 문제 해결 부탁드립니다.
15063의 문제와 관련해서 나름의 해결방법을 생각해봤습니다.
즉, 제가 의도하는 시스템 식은
[ 진입과 관련해서는
당일 최저가와 최고가의 차이가 30% 이상이고, 현재가가가 당일 최저가 보다 20% 이상 상승시에 최초 매수진입하는 것입니다.
이후 최초 진입가 보다 0.10 포인트 상승할 때 마다 추가로 매입합니다. 피라미드지요.
청산과 관련해서는
추가 진입 후에 "평균매입단가(AvgEntryPrice) + 0.02" 까지 떨어졌을 때, 최초 진입 분만 남겨두고 모두 청산하는 것입니다.
당일 일괄 청산은 2시 30분에 하고요. ] ----> "A"
발생하는 문제는 앞서의 질문(15063)에서와 같이 추가진입시 0.10 포인트 상승시마다 한 번 씩만 진입해야 하는데 조건 만족시 마다 계속 재진입이 일어나는 것입니다.
제 나름대로 생각해 본 해결책은 아래의 식과 같이 최초진입 후 0.10 포인트 마다 수식을 새롭게 정의 해 주는 것입니다. 그리고 피라미드에서 "모든 진입신호 허용"이 아닌, "다른 진입신호만 허용"으로 바꿔 주는 겁니다. 이렇게 하면 "BB" 나 "CC" 는 한번 씩만 발생을 할 듯 합니다.
다만 이렇게 해도 "BB" 신호가 발생 후 "bx" 의 청산신호가 나와서 청산이 되면 다시 "BB" 신호가 발생해서 진입한다는 것입니다.
이걸 해결하기 위해서 "bx", "cx", "dx" 등의 청산신호가 한 번 이라도 발생했다면 추가진입을 허용하지 않으면 될 듯합니다.
이렇게 하면, 추가진입 후 청산이 됐다면 그 이후에는 진입을 하지 않고, 청산이 안 됐다면 "다른 진입신호만 허용" 이니까 "CC" 나 "DD" 등의 다른 신호에만 반응 할 것으로 보입니다.
근데 청산신호가 한 번 이라도 발생했다면 추가진입을 허용하지 않는 것을 수식으로 구현하기가 어렵네요. 가능하게 수식 수정 좀 부탁드립니다.
P.S. 만약 위의 내용이 맞지 않는다면 위의 [ ] 로 묶인 "A"의 의도와 맞는 식으로 가능한 식을 좀 부탁드리겠습니다. (꼭 atstop 으로 구현하지 않더라도 상관없을 듯 합니다.)
긴글에 다소 산만한 듯 해서 죄송합니다. 그럼 부탁드리겠습니다.
#최초진입
if MarketPosition == 0 and daylow*1.3 < H and stime < 150000 Then{
buy("b",AtStop,daylow*1.2);
}
#추가진입
if MarketPosition == 1 and C > EntryPrice+0.1 Then
buy("BB");
if MarketPosition == 1 and C > EntryPrice+0.2 Then
buy("CC");
if MarketPosition == 1 and C > EntryPrice+0.3 Then
buy("DD");
if MarketPosition == 1 Then
exitlong("bx",AtStop,AvgEntryPrice+0.02,"BB");
if MarketPosition == 1 Then
exitlong("cx",AtStop,AvgEntryPrice+0.02,"CC");
if MarketPosition == 1 Then
exitlong("dx",AtStop,AvgEntryPrice+0.02,"DD");
SetStopEndofday(143000);
2010-08-03
722
글번호 31330
답변완료
Data2의 평균값
Data1은 연결선물 5분봉
Data2는 연결선물 일봉이라면
오늘이 8월 4일이라면
8월 1일, 2일, 3일 종가와 시가차의 평균 값을 가지고
5분봉 첫봉 종가에 주문이 나가게 하려면 어떻게 하면 되죠?
우선 제가 코딩한건
Inputs : LenChk(3);
If Date != Date[1] Then
{
Value2 = AverageFC(Data3(CloseD) - Data3(OpenD), LenChk);
}
If OpenD(0) > Value2+CloseD(1) and DayIndex() == 0 Then
{
Buy();
}
2010-08-04
655
글번호 31325
1포만 님에 의해서 삭제되었습니다.
2010-08-03
28
글번호 31324
답변완료
15058 재문의 드립니다.
답변감사드립니다.
그런게 해결책이 제 의도와는 조금 다른 듯 합니다.
예를 들어 원래식은 최초 신호 발생이 0.71 에서 나타났다면 0.81, 0.91 이렇게 순차적으로 0.10 포인트씩 상승할 때 매수하는 것입니다.
그런데 문제가 된 건 꼭 급격한 상승이 아니어도, 0.71에 진입한 후 0.81 에 도달해서 매수하고 0.85 까지 오른 뒤, 0.75까지 떨어졌다가 다시 0.81에 도달하면 또 매수하는 것입니다.
그래서 최초에 0.71에 진입한 뒤 0.81에 도달해서 매수한 후 가격이 0.81 이하로 떨어졌다가 다시 올라서 0.81에 도달해도 이후부터는 0.81에서는 매수하지 않게끔 했으면 합니다. 즉, 특정 가격대에서는 한 번씩만 매수하는 거죠.
결국 특정 가격대에서 한 번 씩만 거래하게끔 수식을 수정했으면 합니다.
p.s. 그리고 추가매수후 가격이 떨어져서 청산 한 후에는 다시 재진입 하지 않게끔 하는 설정도 같이 했으면 합니다.
그럼 부탁드립니다. 감사합니다.
> 안녕하세요? 예스스탁입니다.
> 가격이 급격하게 상승하여 지정한 상승률 보다 높게 상승하였다가 하락할 경우 atstop조건에는 해당하므로 지정한 상승률 보다 낮은 가격에서 신호가 발생되는 경우인데, 다음과 같이 수정해 보면 어떨까 합니다. 급격히 상승하는 경우에 범위를 초과한 상승에서는 진입을 하지 않도록 한것입니다.
> #최초진입
if MarketPosition == 0 and daylow*1.2 < H and stime < 150000 Then{
buy("b",AtStop,daylow*1.1);
}
#추가진입
if MarketPosition == 1 and CurrentEntries < 6 and countif(CurrentEntries < CurrentEntries[1],BarsSinceEntry+1)
< 1
And C < EntryPrice+(CurrentEntries*0.01) Then
buy("BB",AtStop,EntryPrice+(CurrentEntries*0.1));
if MarketPosition == 1 Then
exitlong("bx",AtStop,AvgEntryPrice+0.02,"BB");
SetStopEndofday(143000);
>> WT_mbloc 님이 쓴 글입니다.
>> 제목 : 수식 수정 문의드립니다.
>> #최초진입
if MarketPosition == 0 and daylow*1.2 < H and stime < 150000 Then{
buy("b",AtStop,daylow*1.1);
}
#추가진입
if MarketPosition == 1 and CurrentEntries < 6 and countif(CurrentEntries < CurrentEntries[1],BarsSinceEntry+1) < 1 Then
buy("BB",AtStop,EntryPrice+(CurrentEntries*0.1));
if MarketPosition == 1 Then
exitlong("bx",AtStop,AvgEntryPrice+0.02,"BB");
SetStopEndofday(143000);
옵션매수식이고요. 당일고가와 저가차이가 20%이상이고, 현재가가 당일저가보다 10% 이상 높으면 진입하는 식입니다. 추가는 피라미드로 최대 6회까지 진입하는 거고요.
위 식을 사용하면 최초매수가가 0.8이면 그 다음 매수가는 0.9, 그 다음은 1.0 이런 식으로 매수를 하게 됩니다.
그런데 최초 0.8 매수후 가격이 올라서 0.9에 매수한 후 가격이 약간 떨어졌다가 다시 0.9가 되면 또 0.9에서 매수를 하게 됩니다.
이렇게 같은 가격대에서 반복적으로 매수하지 않고, 한 가격대에서는 한 번만 매수하고, 그 이후에는 그 가격보다 0.1 포인트 올랐을 때만 매수하게끔 수식 수정 좀 부탁드립니다.
2010-08-03
598
글번호 31323
답변완료
수식문의
안녕하세요
수식 문의합니다.
1.파라볼릭[0.02 0.2] 상승반전시 매수 하락반전시 매도
2.CCI [변수 cci20 signal5] 상승추세시 매수 하락추세시 매도
3.CCI [변수 cci20 signal5]이고 10 <= CCI <= 200구간일때 매수
CCI [변수 cci20 signal5]이고 -200 <= CCI <=-10 구간일때 매도
4.스톡캐스틱슬로우오실레이터지표[5.5.5]을 작성해 주시면 감사하겠습니다.
수고하세요
2010-08-03
727
글번호 31319
답변완료
연산하지 못하는 구간???
제가 전에 물어본 질문에 대하여 아래부분이 그쪽 관리자께서 작성해 주신 부분인데요
전과 결과치는 똑같습니다.
여기 아래 카피된 프로그램 두번째 줄에 하라는 데로
if sdate >= 20100611 and CurrentBar > 100 then
했는데, 결과가 안나오기는 마찬가지 입니다.
어디에 저 코드를 넣으라는 말씀인지요? 그리고 왜 난데없이 100 이라는 숫자가
나왔는지요? 분봉 여러개 나오는거 생각해 어림잡아 100 이라고 한것인가요?
감사합니다. (이번에 답변 하실땐 힘드시더라도 컴파일해서 결과 제대로 나오는지 보시고 답변주시면 정말 감사하겠습니다.
----------------------------------------------------------------------
안녕하세요? 예스스탁입니다.
차트 앞구간에서 연산하지 못하는 부분이 발생되기 때문인데, currentbar함수를 사용해서 해결할 수 있습니다.
작성하신 식에 다음 내용을 추가해 보시기 바랍니다.
if sdate >= 20100611 and CurrentBar > 100 then ~
즐거운 날 되세요
> kimura 님이 쓴 글입니다.
> 제목 : 예스 랭귀지에 문제가 있는거 같아요
> 안녕하세요, 제가 data2에 외인 선물 수량 (분봉으로) 띄우고 그게 분봉상 누적해서 계속 오르락 내리락 나오게끔 프로그램을 만들었습니다만, 이상하게 안됩니다. (아래쪽에 코멘트쪽에 안되는 부분 표시했음)
로직은 문제가 없는거 같은데, 제가 별짓을 다해도 안되더군요. 뭐때문에 그럴까요?
메세지로그로 수치조회를 해보면 저 아래 코멘트 되있는 부분이 이상합니다.
var : Accumulator(0), Variation(0);
if sdate >= 20100611 then
{
if( sdate == 20100611 and stime == 090000 ) Then // 근월물 시작일 초기화
{
Accumulator = data2( c );
}
Else
{
if( sdate != sdate[1] ) Then // 다음날로 바뀐경우
{
Accumulator = Accumulator + data2( c ); // !!!!이부분이 안됨!!
// 누적값 = 전날 누적값 + 바뀐날 값 (09:00 값)
// 전날 누적치를 그대로 들고 와야 하는데 엉뚱한 숫자가
// Accumulator 변수에 들어옴 (messagelog 로 조회해봤음)
// 첫째날 (6월11일) 동안은 잘 작동하나, 6월12일부터는 오류남..
}
Else
{
//같은날 계속 분봉값 연속되고 있는 경우, 뒷봉과 차이만큼만 가감
Variation = data2( c ) - data2( c[1] );
Accumulator = Accumulator + Variation;
}
}
plot1( Accumulator, "누적라인" );
}
2010-08-03
724
글번호 31318
답변완료
윈도우 서버..
idc 서버로 시스템을 돌릴려고 하는데여...사용하는 운영체제가 window server 2003 이라네여..
예스트레이더가 문제없이 돌아가는지 알려주세여...
감사합니다.~...
2010-08-03
885
글번호 31312
답변완료
시스템식 부탁드립니다.
안녕하세요 더운 날씨에 수고하십니다.
분봉에서 사용할겁니다.
매수
일봉상 전일종가 대비 7%이상 상승 양봉 이고
거래량은 10일평균의 2배 이상이면 매수준비
다음날부터 매수준비일의 몸통 3/2 지점에서 한번
3/1 지점에서 한번 이렇게 2번 매수.
진입은 매수준비 나온날부터 일간기준으로
3일이내만 매수 이후 매수금지
매도
일 기존 음봉 오늘거래량이 10일 최고 거래량을 넘어서면 종가매도
손절1
매수준비 신호 나온날의 시가를 하락돌파시 즉시청산
손절2
일봉기준 20일 최저 몸통 가격보다(양봉이면 시가, 음봉이면, 종가) 낮은
일봉기준 20일 첫번째 저가를 종가상 하락돌파시 종가매도(일봉 20일 최저가 아님)
감사합니다 수고하세요,
2010-08-03
701
글번호 31311