커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
6293
글번호 230811
답변완료
부탁합니다
input : 시작시간(101500),종료시간(172500);
input : Period3(3),Period6(6),Period9(5),Period10(10),Period11(20),Period12(40),Period13(80),Period14(120),Period15(160),Period16(300),Period17(600),Period18(10),익절틱수(20),손절틱수(10);
Input : Period(12),sigPeriod(9);
Input : Period50(50), maPeriod51(51);
input : Period33(12),sigPeriod34(9),Period55(50), maPeriod56(51);
var : mav3(0),mav6(0),mav9(0),mav10(0),mav11(0),mav12(0),mav13(0),mav14(0),mav15(0),mav16(0),mav17(0),mav18(0),SROC(0),SROCsig(0),SROC2(0),SROCsig2(0),Bxcond(false),Sxcond(false);
var : Tcond(false);
mav11 = ma(c, Period11);
mav17 = ma(c, Period17);
mav18 = ma(c, Period18);
value1 = TRIX(Period);
value2 = ema(value1, sigPeriod);
value50 = SONAR(Period50);
value51 = ema(value50, maPeriod51);
value3 = TRIX(Period33);
value4 = ema(value3, sigPeriod34);
value52 = SONAR(Period55);
value53 = ema(value52, maPeriod56);
if Bdate != Bdate[1] then
{
Tcond = True;
BXcond = false;
SXcond = false;
}
if stime == 종료시간 or (stime > 종료시간 and stime[1] < 종료시간) Then{
Tcond = false;
if MarketPosition == 1 Then
ExitLong();
if MarketPosition == -1 Then
ExitShort();
}
if TotalTrades > TotalTrades[1] then{
BXcond = false;
SXcond = false;
if (IsExitName("bl",1) == true or IsExitName("bp",1) == true or IsExitName("bx",1) == true) Then
BXcond = true;
if (IsExitName("sl",1) == true or IsExitName("sp",1) == true or IsExitName("sx",1) == true) Then
SXcond = true;
}
if Tcond == true then{
if MarketPosition <= 0 and
Bxcond == false and
(value50 > value51 and mav17[1] < mav17) Then
buy("b",OnClose,def,1);
if MarketPosition == 1 Then{
if mav17[1] < mav17 and mav18[1] < mav18 and CurrentContracts < 2 Then
buy("bb1",OnClose,def,1);
if mav17[1] < mav17 and mav18[3] >= mav18[2] and mav18[2] <= mav18[1] and mav18[1] < mav18 and CurrentContracts < 3 Then
buy("bb2",OnClose,def,1);
if (CrossDown(value1,value2)) or (CrossDown(value50, value51)) or(CrossDown(value3,value4)) or (CrossDown(value52, value53)) Then
ExitLong("bx");
ExitLong("bp",atlimit,AvgEntryPrice+PriceScale*익절틱수);
ExitLong("bl",AtStop,AvgEntryPrice-PriceScale*손절틱수);
}
if MarketPosition >= 0 and
Sxcond == false and
(value50 < value51 and mav17[1] > mav17) Then
sell("s",OnClose,def,1);
if MarketPosition == -1 then{
if mav17[1] > mav17 and mav18[1] > mav18 and CurrentContracts < 2 Then
sell("ss1",OnClose,def,1);
if mav17[1] > mav17 and mav18[3] <= mav18[2] and mav18[2] >= mav18[1] and mav18[1] > mav18 and CurrentContracts < 3 Then
sell("ss2",OnClose,def,1);
if (crossup(value1,value2)) or (CrossUP(value50, value51)) or (crossup(value3,value4)) or (crossup(value52,value53)) Then
ExitShort("sx");
ExitShort("sp",atlimit,AvgEntryPrice-PriceScale*익절틱수);
ExitShort("sl",AtStop,AvgEntryPrice+PriceScale*손절틱수);
}
}
위 수식을 선물(항생)에 적용하면 17시 25분 이후에도 수식이 적용하여 동작합니다
17시 25분(일괄청산) 후 매매중지하고자 합니다
수식을 수정하여 주시기 바랍니다 감사합니다
2017-06-21
174
글번호 110633
답변완료
부탁드립니다
전일의 고점과 당일 고점을 연결하는 추세선(오른쪽연장)
전일의 저점과 당일 저점을 연결하는 추세선(오른쪽연장)
두께는 조절가능하도록 부탁드립니다
2017-06-21
180
글번호 110632
답변완료
수식 부탁드립니다
현재 봉의 50봉이내의
봉의 고점이 전 봉의 고점보다 낮고
저점이 다음봉의 저점보다 낮은 봉을 찾아 저가 를 저가1에 저장 후 선 플롯
봉의 고점이 전 봉의 고점보다 높고,
저점이 다음봉의 저점보다 높은 봉을 찾아 고가를 고가1에 저장후 선 플롯
2017-06-21
179
글번호 110631
답변완료
다시 질문입니다.
답변감사합니다.
if var4 < var4[1] and var5 < var5[1] Then{
if crossup(var1,var2) Then
sell("s1",AtMarket);
if crossup(var1,var3) Then
sell("s2",AtMarket);
if crossdown(var1,var2) Then
sell("s3",AtMarket);
if crossdown(var1,var3) Then
sell("s4",AtMarket);
}
이경우는 1,2,3,4신호가 발생순서는 관계없이 진입이 되는건가요?
#진입별 13틱에서 청산
SetStopProfittarget(PriceScale*13,PointStop);
이경우는 식의 제일 아래에 한번만 써놓으면 진입신호각각에 적용되는건가요?
감사합니다.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : Re : Re : 부탁합니다.
>
안녕하세요
예스스탁입니다.
1
수식에 오류가 있었습니다.
MarketPosition == -1이 되어야 합니다.
if MarketPosition == -1 and MaxEntries == 1 and crossup(var1,var3) Then
sell("s2",AtMarket);
MaxEntries는 진입최대누적횟수입니다.
첫진입후 하고 두번째진입을 의미합니다.
즉 두번째로만 진입이 가능합니다.
2
아래와 같이 작성하신 후에
피라미딩을 다른진입신호만 허용으로 설정하시면 됩니다.
각 진입명로 한번씩만 진입합니다.
즐거운 하루되세요
2017-06-21
163
글번호 110630
답변완료
수식조정부탁드립니다.
200틱차트기준 20일 이동평균선 사용
- 진입수량 1~2개...조정 가능하게요.
- 진입조건 : 매수는 시가보다 현재가가 높을때만 진입(양봉)
: 매도는 시가보다 현재가가 낮을때만 진입(음봉)
**** 시가 또는 제가 정하는 임의의 값도 가능한지요??? 해외선물같은경우도 나중에 해볼려구요****
매수진입(양봉일때만) - 전 2개봉의 종가가 이동평균선(20)과 같거나 크고 AND 현재봉에서 (현재가-이동평균선가격) < 10틱 이내일때 매수신호발생
매수청산 - 1. 전2개봉의 종가가 이평선보다 작고 (현재가 < 이평선 가격) 이면 청산
2. 또는 현재봉에서 (이평선가격-현재가) > 10틱이면 청산
매도진입(음봉일때만) - 전 2개봉의 종가가 이동평균선(20)과 같거나 작고 AND 현재봉에서 (이동평균선가격-현재가) < 10틱 이내일때 매도신호발생
매도청산 - 1. 전2개봉의 종가가 이평선보다 크고 (현재가 > 이평선 가격) 이면 청산
2. 또는 현재봉에서 (현재가-이평선가격) > 10틱이면 청산
-------------------------
당일 양봉에서는 매수만...음봉에서는 매도만 나오게 해야하는데......보니간 양봉자리에서도 매도신호가 막 나오는데 .. 어찌 고쳐야 하나요.. ㅜㅜ
c 값하고 dayopen 하고 비교해서 넣어야할거 같은데......추가좀 부탁드립니다.
아 그리고...전 2개봉을 비교할때....그전봉가격하고 이평선을 비교해야 하는데...보니간...모두 현재가하고 전2개봉을 비교하는거 같은데..ㅜㅜ 전2개봉은 그때가격(종가)하고 이평선을 비교하게 해주세요..
--------------------------------------------------
countif(C(0)>=mav,0) == 2 and
countif(C(1)>=mav,1) == 2 and
countif(C(2)>=mav,2) == 2 and
--------------------------------------------------
이런식으로 하면 맞는거나요? 근데 == 2 는 무슨의미인지요?
input : P(20);
var : mav(0);
mav = ma(c,P);
if C > O and
countif(C>=mav,2) == 2 and
C <= mav+PriceScale*10 then
buy("b");
if MarketPosition == 1 then
{
if countif(C<mav,3) == 3 Then
exitlong("bx1");
if C >= mav+PriceScale*10 Then
exitlong("bx2");
}
if C < O and
countif(C<=mav,2) == 2 and
C >= mav-PriceScale*10 then
sell("s");
if MarketPosition == -1 then
{
if countif(C>mav,3) == 3 Then
ExitShort("sx1");
if C <= mav-PriceScale*10 Then
ExitShort("sx2");
}
2017-06-21
166
글번호 110625
답변완료
수식작성 부탁합니다.
유로fx 통화선물 1계약 MACD 골드크로스 그리고 RSI 30이하에서 30이상상승시 시매수, MACD데드크로스 그리고 RSI 70이상에서 70이하시 매도, 수익청산10틱 손실청산10틱 한캔들에서, 기존포지션이 청산 될경우만 진입
2017-06-21
178
글번호 110624
답변완료
수식 부탁드립니다.
처음 접하는거라 잘 몰라서... 부탁좀 드립니다.
- 200틱차트기준 20일 이동평균선 사용
- 진입수량 1~2개...조정 가능하게요.
- 진입조건 : 매수는 시가보다 현재가가 높을때만 진입(양봉)
: 매도는 시가보다 현재가가 낮을때만 진입(음봉)
**** 시가 또는 제가 정하는 임의의 값도 가능한지요??? 해외선물같은경우도 나중에 해볼려구요****
매수진입(양봉일때만) - 전 2개봉의 종가가 이동평균선(20)과 같거나 크고 AND 현재봉에서 (현재가-이동평균선가격) < 10틱 이내일때 매수신호발생
매수청산 - 1. 전2개봉의 종가가 이평선보다 작고 (현재가 < 이평선 가격) 이면 청산
2. 또는 현재봉에서 (이평선가격-현재가) > 10틱이면 청산
매도진입(음봉일때만) - 전 2개봉의 종가가 이동평균선(20)과 같거나 작고 AND 현재봉에서 (이동평균선가격-현재가) < 10틱 이내일때 매도신호발생
매도청산 - 1. 전2개봉의 종가가 이평선보다 크고 (현재가 > 이평선 가격) 이면 청산
2. 또는 현재봉에서 (현재가-이평선가격) > 10틱이면 청산
------------------------- 부탁드립니다.
2017-06-21
164
글번호 110618
답변완료
수식요청 드립니다.
* 09~ 10시 까지 고가와 저가를 가지고 피보나치 수열 Per5 에서 매수 식좀 부탁 드립니다.
Per5 = 0.764
if stime >= 090000 and stime < 100000 Then {var21 = dayhigh; var22 = daylow; }
input : Per1(23.6),Per2(38.2),Per3(50.0),Per4(61.8),Per5(76.4);
var : HH(0),LL(0);
HH = dayhigh(0);
LL = daylow(0);
var1 = 10^(LOG10(HH)-(LOG10(HH)-LOG10(LL))*(Per1/100));
var2 = 10^(LOG10(HH)-(LOG10(HH)-LOG10(LL))*(Per2/100));
var3 = 10^(LOG10(HH)-(LOG10(HH)-LOG10(LL))*(Per3/100));
var4 = 10^(LOG10(HH)-(LOG10(HH)-LOG10(LL))*(Per4/100));
var5 = 10^(LOG10(HH)-(LOG10(HH)-LOG10(LL))*(Per5/100));
여기까지는 하겠는데 연결이 안되네요...
이렇게 하면 맞나요?
2017-06-21
177
글번호 110615
답변완료
System 수식 부탁드립니다
처음 배우고 입문하고 싶어 수식을 문의드립니다.
() 진입 조건 : 2시간(120분)봉에서 5일 이평선이 20일 이평선을 상향돌파(CrossUP) 한 후
-. 매수: 20분봉에서 5일 이평선이 20일 이평선을 CrossUp하면 1주 매수
다시 상기 진입조건을 깨지 않은(2시간봉 CrossUP) 상태에서 20분봉 CrossUP되면 추가 1주를 매수하며 10 계약까지 반복하고 10회가 되면 Holding(추가 매수없음)
* 2시간봉 CrossUP 상태에서는 20분봉에서의 CrossDown은 무시(추가 Action 없음)
-. 매도: 진입조건이 깨지만(2시간봉 CrossDown)시 반복 매수(현재까지 매수)된 수량을 1주씩 분할 매도
대단히 감사드립니다.
2017-06-21
182
글번호 110606