커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
2663
글번호 230811
답변완료
성능보고서 관련
수고 많으십니다.
아래 첨부된 성능보고서를 보면 전략분석 탭에서 표시한
조정총손익과 특이치제거총손익이 나옵니다.
이건 어떤 방법으로 계산이 되는지와 실제 손익과 차이가 큰 이유를 알고 싶습니다.
봉가정 오류를 감안하여 트레일링스탑도 10~20틱으로 감시설정했으며, 슬리피지도 왕복 4틱을 준 상태입니다.
답변 부탁드립니다.
2020-09-24
1689
글번호 142630
답변완료
문의 드립니다
시그널메이커 수식을 기준으로
예스트레이더에서 만들어주신 수식입니다
신호가 뜨는 자리가 다릅니다.(수치가 같을 경우)
어떤게 다른지 알려주세요
시그널메이커 수식
//////////////////////////////////////////////////////////////////////////
// 매수진입 [BuyA : CCI[50,5] CCI가 0값을 상향돌파, BuyB : ADX[60] 상승추세이고 1봉 연속, BuyC : ADX[60] ADX>25, BuyD : ADX[60] ADX>25, BuyE : ADX[60] ADX>11, ]
param : BuyA_CCILeng(50) // CCI 기간
, BuyA_SignalLeng(5) // 시그날 기간
, BuyA_CCILine(0) // CCI 기준값
, BuyA_ChoiceType(0) // CCI 또는 Signal 선택
;
param : BuyB_SLeng(60) // ADX 기간
, BuyB_Trend(1) // 연속 봉 갯수
;
param : BuyC_SLeng(60) // ADX 기간
, BuyC_CompValue(25) // 기준값
;
param : BuyD_SLeng(60) // ADX 기간
, BuyD_CompValue(25) // 기준값
;
param : BuyE_SLeng(60) // ADX 기간
, BuyE_CompValue(11) // 기준값
;
var : BuyA_V(0), BuyA_V1(0), BuyA_V2(0), BuyA_Result(FALSE);
var : BuyB_Price3(0), BuyB_nVal(0), BuyB_SumDay(0), BuyB_Result(FALSE);
var : BuyC_Price3(0), BuyC_Result(FALSE);
var : BuyD_Price3(0), BuyD_Result(FALSE);
var : BuyE_Price3(0), BuyE_Result(FALSE);
BuyA_V1 = CCI2(Close, BuyA_CCILeng);
BuyA_V2 = EMA(BuyA_V1, BuyA_SignalLeng);
If BuyA_ChoiceType = 0 Then // CCI 선택
Begin
BuyA_V = BuyA_V1;
End
Else // Signal 선택
Begin
BuyA_V = BuyA_V2;
End;
BuyA_Result = Crosses_Above(BuyA_V, BuyA_CCILine);
BuyB_Price3 = ADX (BuyB_SLeng);
IF BuyB_Price3 > BuyB_Price3[1] Then
BuyB_nVal = 1
Else
BuyB_nVal = (-1);
BuyB_SumDay = ACCUMN(BuyB_nVal, BuyB_Trend);
BuyB_Result = (BuyB_SumDay = BuyB_Trend);
BuyC_Price3 = ADX (BuyC_SLeng);
BuyC_Result = FALSE;
IF BuyC_Price3 > BuyC_CompValue Then
BuyC_Result = TRUE;
BuyD_Price3 = ADX (BuyD_SLeng);
BuyD_Result = FALSE;
IF BuyD_Price3 > BuyD_CompValue Then
BuyD_Result = TRUE;
BuyE_Price3 = ADX (BuyE_SLeng);
BuyE_Result = FALSE;
IF BuyE_Price3 > BuyE_CompValue Then
BuyE_Result = TRUE;
if ( BuyA_Result And BuyB_Result And !BuyC_Result And !BuyD_Result And BuyE_Result )
Then
Begin
Buy();
End;
//////////////////////////////////////////////////////////////////////////
// 매수청산 [ExitLongA : CCI[53,5] CCI가 하락추세이고 5봉 연속, ]
param : ExitLongA_CCILeng(53) // CCI 기간
, ExitLongA_SignalLeng(5) // 시그날 기간
, ExitLongA_Trend(5) // 최소 추세 연속 봉 갯수
, ExitLongA_ChoiceType(0) // CCI 또는 Signal 선택
;
var : ExitLongA_V(0), ExitLongA_V1(0), ExitLongA_V2(0), ExitLongA_nVal(0), ExitLongA_SumDay(0), ExitLongA_Result(FALSE);
ExitLongA_V1 = CCI2(Close, ExitLongA_CCILeng);
ExitLongA_V2 = EMA(ExitLongA_V1, ExitLongA_SignalLeng);
If ExitLongA_ChoiceType = 0 Then // CCI 선택
Begin
ExitLongA_V = ExitLongA_V1;
End
Else // Signal 선택
Begin
ExitLongA_V = ExitLongA_V2;
End;
IF ExitLongA_V < ExitLongA_V[1] Then
ExitLongA_nVal = 1
Else
ExitLongA_nVal = (-1);
ExitLongA_SumDay = AccumN(ExitLongA_nVal, ExitLongA_Trend);
ExitLongA_Result = (ExitLongA_SumDay = ExitLongA_Trend);
if ( ExitLongA_Result )
Then
Begin
ExitLong();
End;
SetStopEndOfday(152000);
////////////////////////////////////////////////////////////////////////////////////////
Inputs: MyStoplossPoint(1);
SetStopPosition; // 포지션 전체
SetStopLoss( MyStoplossPoint );
////////////////////////////////////////////////////////////////////////////////////////
Inputs: MyProfitTargetPoint(3);
SetStopPosition; // 포지션 전체
SetProfitTarget( MyProfitTargetPoint );
////////////////////////////////////////////////////////////////////////////////////////
Inputs: MyPointTrailingBefore(.65), MyPercentTrailingAfter(.66);
SetStopPosition; // 포지션 전체
SetPercentTrailing(MyPointTrailingBefore, MyPercentTrailingAfter);
SetStopPosition; // 포지션 전체
SetExitOnClose;
예스트레이더 수식
var : CCI1(0),CCI2(0);
var : ADX1(0),ADX2(0),ADX3(0),ADX4(0);
CCI1 = cci(9);
CCI2 = cci(45);
ADX1 = adx(14);
ADX2 = ADX(14);
ADX3 = adx(18);
ADX4 = adx(16);
if sTime >= 90010 and sTime < 151900 and
CrossUp(CCI1,0) and
countif(ADX1 > ADX1[1],2) == 2 and
!(ADX2 > 25) and
!(ADX3 > 30) and
ADX4 > 11 Then
Sell();
if MarketPosition == -1 Then
{
if CountIf(CCI2 < CCI2[1],6) == 6 Then
ExitShort("sx");
if lowest(L,BarsSinceEntry) <= EntryPrice-2.2 Then
ExitShort("str",AtStop,lowest(L,BarsSinceEntry)+(EntryPrice-Lowest(L,BarsSinceEntry))*0.65);
}
SetStopLoss(2.5,PointStop);
2020-09-24
978
글번호 142629
답변완료
진입수량 문의
안녕하세요. 수고가 많으십니다.
하나의 시스템의 복수의 전략을 구사하는 경우에 대한 질문입니다.
아래와 같이 5개전략을 구사중인 경우 각각 전략당 1개만 진입하고 최대진입수량은 3개로 제한하는 수식을 만들고 싶습니다.
아래 조건은 약식으로 했습니다.
if 5이평선 > 20이평선 then
buy("매수1);
if 20이평선 > 60이평선 then
buy("매수2);
if 60이평선 > 90이평선 then
buy("매수3);
if 90이평선 > 120이평선 then
buy("매수4);
if 120이평선 > 150이평선 then
buy("매수5);
같은 자리 동시 진입은 가능하고 위에 말씀드린것처럼 각각 매수신호당 1개만 진입하되, 최대진입수량은 3개로 제한하고 싶습니다.
수식 부탁드립니다.
2020-09-24
783
글번호 142628
답변완료
수식문의
안녕하세요
수식을 작성하려고 하는데 너무 초보라서 질문드립니다..
일봉상 40캔들중에 거래대금 1천억이상이 한번이상 발생하고
당일 1분봉 380캔들중에 매수잔량>매도잔량 인 캔들이
25개 이하인 종목을 검색하려고 하면 수식을 어떻게 작성하면될까요..
2020-09-24
743
글번호 142627
답변완료
시스템 부탁드려요
안녕하세요^^
1. 분봉으로 시작해서
2. 초기 5번의 분봉 중 3개이상이 양봉일때 마지막 양봉 종가에 매수 진입
예를 들면 첫번째 양봉, 두번째 음봉 , 세번째 양봉, 네번째 양봉이면 네번째 종가에 진입
또는 첫번째 음봉, 두번째 양봉, 세번째 음봉, 네번째 양봉, 다섯번째 양봉이면 다석번째 종가에 진입
3. 5번의 분봉중 가장 저점에 매수청산
4. 또는 직전봉의 저가를 이번봉의 저가가 뚫고 음(-)로 마감할때
5. 15시 15분 마지막 분봉 종가에 청산
==============================================================
1. 장 초반 5개 봉중 3개 봉이 양(+)일때
2. 5개 이후부터 만들어지는 캔들봉이 직전봉의 고점을 이번봉의 고점이 뚫고 양으로 마감할때
3. 종가에 매수 진입
4. 진입 직전봉의 저가에 돌파시 매수 청산
5. 직전봉의 저가를 이번봉의 저가가 뚫고 음(-)로 마감할때
6. 마감 종가에 매수 청산
7. 또는 시장 13:15분에 매수 청산
==============================================================
1. 진입은 당일 두번째 봉부터 시작
항상 감사합니다^^
2020-09-24
789
글번호 142626
답변완료
부탁좀 드리겠습니다.
1)
- 시가와 중심가 라인(기존무시 7시 시가 기준)
- 오후 7시 개장 세로줄을 시작으로 익일 새벽 2시 까지만 나오고
- 새벽 2시 이후에는 나오지 않는 지표수식 이수식을 아래의 3)번 수식에 추가 부탁드립니다.
2)
아래의 수식에 나스닥 기준 개장세로 라인 추가 부탁드립니다.
3)
var1 = DayOpen(1);
var2 = DayHigh(1);
var3 = DayLow(1);
var4 = DayClose(1);
var5 = (DayHigh(1)+DayLow(1))/2;
var6 = DayOpen(0);
var7 = (DayHigh(0)+DayLow(0))/2;
Plot1(var1);
Plot2(var2);
Plot3(var3);
Plot4(var4);
Plot5(var5);
Plot6(var6);
Plot7(var7);
2020-09-24
770
글번호 142625
답변완료
지표값을 월물 단위로 리세팅하기
항상 신속하고 상세하게 답변 주셔서 많은 도움을 받고 있습니다.
감사합니다.
옵션 콜ATM(data2) 과 풋ATM(data3) 두 종목을 전략차트(3분봉)에 넣고
(data1은 연결선물)
각각 전일 종가 대비 증감율을 누적하는 지표를 만들어서 차트에 출력하고자 합니다.
이때 만기 익일(새월물 첫날)부터 증감율을 누적시키기 위해 아래와 같은 지표를 만들어 보았는데 결과값이 부정확하군요.
특히 새월물 첫날 누적치 초기화가 안되네요.
Var : 콜현재가(0), 풋현재가(0);
Var : 콜증감율(0), 풋증감율(0);
Var : 콜증감누적치(0), 풋증감누적치(0);
콜현재가 = data2(C);
풋현재가 = data3(C);
콜증감율 = (콜현재가 - 콜현재가[1])/콜현재가[1] *100;
풋증감율 = (풋현재가 - 풋현재가[1])/풋현재가[1] *100;
콜증감누적치 = 콜증감누적치 + 콜증감율;
풋증감누적치 = 풋증감누적치 + 풋증감율;
If 만기일 == Sdate and stime == 090000 then {
콜증감누적치 = 0;
풋증감누적치 = 0;
}
※ 간소화하기 위하여 만기일 산출식은 생략하였습니다.
어디에 문제가 있는지 살펴보시고 도와주시기 바랍니다.
그리고 사용자가 INPUT문으로 날자를 지정할 경우
만기일 대신 지정일 이후 누적하는 방법도 부탁드립니다.
감사합니다.
2020-09-23
921
글번호 142624
답변완료
문의드립니다.
60분봉에서
1. 수익 트레일링 스탑 식 구현방법 도움부탁드립니다.
매수진입 후 수익중이면,
이전 봉 저점 깨지면 손절하는 트레일링 스탑 식 가능한가요?
반대로 매도진입 후 수익중이면,
이전 봉 고점 깨지면 손절하는 트레일링 스탑 식 부탁드립니다.
추가로,
진입 후 40틱 이상 수익권이면,
40틱 이상 도달 후 고점대비 20틱 하락시 익절처리
매도시에는 저점 대비 20틱 상승시 익절처리되는 트레일링 스탑 식 부탁드립니다.
2. 손절 처리관련,
60분봉에서
매수 진입 후,
진입 봉 이전 봉 저가 를 깨면 손절,
매도진입 후
진입 봉 이전 봉 고가를 갱신하면 손절되는 수식 부탁드립니다.
감사합니다.
2020-09-23
722
글번호 142623
답변완료
부탁드립니다
#,보내주식 수식 진심으로 고맙습니다,
추가로 아래식을 적용해보니 선이 너무 많아서 아래 조건으로 수정하면 좋겠습니다.
1,캔들 윗꼬리는 몸통 위에서 +3틱까지만 허용(3틱이상은 제외)한다
2,캔들 아래꼬리는 몸통아래에서 아래꼬리 크기로만 몸통보다 2/3이상
클때의 조건에 충족하는 캔들만 라인 출력한다,(단,도지는 제외한다)
3,위 두조건에 충족되는 캔들만 음봉은 종가에서,양봉은 시가에서 우측라인 그리기
와 경보음출력하면 좋겠습니다.
##,미리 감사드립니다
if min(C,O)-L > abs(C-O)*(2/3) Then
{
var1 = min(C,O);
Var2 = Index;
}
if Var2 > 0 and Index <= Var2+4 Then
Plot1(var1);
Else
NoPlot(1);
if H-max(C,O) > abs(C-O)*(2/3) Then
{
var3 = max(C,O);
Var4 = Index;
}
if Var4 > 0 and Index <= Var4+4 Then
Plot2(var3);
Else
NoPlot(2);
2020-09-24
728
글번호 142622