커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7680
글번호 230811
답변완료
수식재문의
수식 재문의 1 :
BPDL Trend Filter - Raw 지표 수식을 바탕으로
아래의 수식을 문의한 바 있습니다.
BPDL Trend Filter - Raw 지표의 값이 직전값 대비 n값 이상 상승하면 **색을
n값 이상 하락하면 %%색을
n값 이내로 횡보하면 직전 봉 색깔을 유지 하는 지표를 얻고 싶습니다.
또, 그 지표에 대한 이동평균선 n1, n2, n3을 구하여 추가로 삽입하고 싶습니다.
그리하여 받은 수식이 아래와 같은데, 강조식이더군요.
제가 얻고 싶은 수식은 강조식이 아니라
BPDL Trend Filter - Raw 지표의 색깔이 위의 조건에 따라 바뀌고
그 지표에 추가로 이평을 더 삽입하고 싶다는 뜻이었습니다.
제, 설명이 충분치 못하였나 봅니다.
다시 한번 부탁드리겠습니다.
아래 :
Inputs: Length(14),n(1);
value1 = C - C[1];
value2 = Power(Ma(Power(value1,2), Length)+1, 0.5);
value3 = Power(Power(value1,2)+1, 0.5);
value4 = Iff(Ma(value1, Length) > 0,1 * value2,-1 * value2);
value5 = IFF(value1 > 0 ,1 * value3,-1 * value3);
var1 = accum(value4 + value5);#BPDL Trend Filter - Raw
if var1 >= var1[1]+n Then
var2 = 1;
if var1 <= var1[1]-n Then
var2 = -1;
if var2 == 1 Then
PlotPaintBar(c,O,"1",RED);
if var2 == -1 Then
PlotPaintBar(c,O,"1",blue);
\\\\\\\\\\\\\\\\\\\\\\\\
수식 재문의 2 :
쿠프먼필터와 지수이동평균의 골드데드를 이용한 신호와
BPDL Trend Filter - Raw지표의 상승하락을 이용한 신호를 합친 시스템을
아래와 같이 요청드린 바 있습니다.
ㅁ. 쿠프먼필터 시스템 수식 ㄱ 과 BPDL Trend Filter - Raw지표 시스템 수식 ㄹ을 하나로 합치고 싶습니다. 즉, ㄱ의 조건과 ㄹ의 조건을 동시에 만족할 때에만 매수,매도 신호를 뿌려주는 것입니다.
그리하여 아래2의 지표를 얻었으나,
ㄱ의 조건과 ㄹ의 조건을 같은 봉에서 동시에 만족하는 봉에서만 신호가 나오네요.
제가 말씀 얻고 싶은 수식은, 가령,
ㄱ의 조건과 ㄹ의 조건이 동시에 (같은 봉에서) 만족되지 않더라도
ㄱ(또는 ㄹ)의 조건이 만족된 상태에서 시간이 경과하여 이후의 다른 봉에서라도
ㄹ(또는 ㄱ)의 조건이 만족된다면 거기에 신호를 뿌려주고 싶다는 뜻입니다.
제, 설명이 충분치 못하였나 봅니다.
다시 한번 부탁드리겠습니다.
아래 2 :
Inputs: Length(14),n(1);
input: period(10),nn(20);
var: efratio(0), smooth(1), fastend(0.666), slowend(0.0645), AMA(0), diff(0), signal(0), noise(0);
value1 = C - C[1];
value2 = Power(Ma(Power(value1,2), Length)+1, 0.5);
value3 = Power(Power(value1,2)+1, 0.5);
value4 = Iff(Ma(value1, Length) > 0,1 * value2,-1 * value2);
value5 = IFF(value1 > 0 ,1 * value3,-1 * value3);
var1 = accum(value4 + value5);#BPDL Trend Filter - Raw
efratio = 1;
diff = absvalue(C - C[1]);
if currentbar > period then {
signal = absvalue(C - C[period]);
noise = accumN(diff,period);
if noise <> 0 then efratio = signal / noise;
smooth = power(efratio*(fastend - slowend) + slowend,2);
AMA = AMA[1] + smooth*(C - AMA[1]);
}
else
AMA = C;
var11 = ema(c,nn);
if crossup(var11,ama) and var1 >= var1[1]+n Then
buy();
if CrossDown(var11,ama) and var1 <= var1[1]-n Then
sell();
2012-02-13
622
글번호 47632
답변완료
문의드립니다.
안녕하세요.
종목 일봉차트에서
var1 = accumN(upvol-downvol,10); // 최근10일간의 업다운을 합산한 값
var2 == lowest(var1,7); // 최근 7일간의 최저 var1값
if var2[15] == lowest(var1[15],100) Then
find(1);
위 식으로 검색하면 결과값이 좀 이상하게 나옵니다.
위 식이 잘못되었다면 그 이유를 알려 주시면 고맙겠습니다.
수고하세요.
2012-02-11
370
글번호 47631
답변완료
첫봉이 양봉일때 조건진행
밑에 수식에 조건 하나를 추가 하고 싶습니다.
당일 5분봉 첫봉이 양봉이면 buy 만 하고,
당일 5분봉 첫봉이 음봉이면 sell 만 하는 식을 만들고 싶습니다.
var: avgval1(0) ;
avgval1 = ma(c,5);
If Highest(High,10) < avgval1
Then
Sell("p");
if CrossUp(c, avgval1) then
ExitShort("pu");
if lowest(low,10) > avgval1
Then
buy("c");
if crossdown(c, avgval1) the
ExitLong("ca");
메일로 부탁드립니다.
ddaseo@naver.com
2012-02-11
446
글번호 47630
aaace 님에 의해서 삭제되었습니다.
2012-02-11
122
글번호 47629
답변완료
시스템식 질문입니다
1분봉으로
데이타1 (유동성 풍부해서 090000,090100,090200....다 나타남 )
데이타2 (유동성 풍부해서 090000,090100,090200....다 나타남 )
데이타3 (유동성 부족해서 첫봉이 090000이 안나타 날 수있음 )
이 있고
하루에 한번 매매 입니다
데이타3의
첫봉 종가에 따라
+ 면 매수
- 면 매도 입니다
여기서 데이타3의 첫봉이 90000,90100,90200....... 언제 나타날지 모릅니다
즉 9시 장 시작과 첫봉이 나오면 바로 매수/매도 신호가 나오지만
데이타3의 첫봉이 2분에 나올수 있습니다.
감사합니다
2012-02-11
350
글번호 47628
답변완료
수식부탁합니다
일목균형표 전환선, 기준선,선행스펜1.2를 (외부변수로작성해주세요.)
구름대 = (선행스펜1,선행스펜2)는 25일전이아니라 현주가에표시)
1)
선행스팬1이 선행스펜2를 상향돌파하면 매수
선행스팬1이 선행스펜2를 하향돌파하면 매수 청산
2)
선행스팬1이 선행스펜2를 상향돌파하면 매수
선행스팬1이 선행스펜2를 하향돌파하면 매수 청산
선행스팬1이 선행스펜2를 하향돌파하면 매도
선행스팬1이 선행스펜2를 상향돌파하면 매도 청산
2012-02-10
351
글번호 47627
답변완료
시스템식 부탁드립니다.
이격도 Period 20, LPercent(99.5) 일때(첫번째 봉)
다음봉이(두번째 봉) 종가가 양봉이면 매수이고요
다음봉(세번째 봉)에 종가매도입니다. 손절은 -15pip입니다.
그리고 하루에 1회거래만 제한두고싶습니다.
2012-02-10
356
글번호 47626
답변완료
수식 문의 드립니다.
아래 수식을 야간선물에서 사용할 수 있도록 수정부탁드립니다.
밤 12시가 되면서 아래 수식이 제대로 반영이 안되는 것 같습니다.
var : cond1(false),cond2(false);
Var1=dayhigh(1)-daylow(1);
Cond1= sdate==exitdate(1) And MarketPosition(1)==1;
Cond2= sdate==exitdate(1) And marketposition(1)==-1;
2012-02-10
367
글번호 47620
답변완료
이상합니다------
//Input:length1(65),높이조절(0.05),N(15),변동율(0.06),이평(4);
//input :최소익틱(2),손절틱(9), 익절틱(10),눌림틱(3),장기전봉차(0.006);
Input:length1(65),높이조절(0.05),N(15),변동율(0.06),이평(4);
input :최소익틱(2),손절틱(9), 익절틱(10),눌림틱(3),장기전봉차(0.006);
Var:당일손익(1000000);
var : PLR(0),XCommission(0),XSlippage(0),OpenPL(0),dayPL(0),count(0);
var:TEMA71(0),TEMA81(0),Ep(0),T1(0),T2(0),T3(0),TEMA82(0);
var:장기봉기간(1),단기봉기간(4);
Var:추2(1),추4(1.01),추10(0.8),추20(0.5),추26(0.23),추30(0.2),추35(0.2)
,추45(0.2),추55(0.2),추65(0.2),추75(0.2),추90(0.2);
var : cnt(0),가격(0),매수매도(0);
//최고저테마값 시작********
if dayindex+1 < 단기봉기간 Then{
var71 = DayHigh;
var72 = DayLow;
}
Else{
var71 = highest(H,단기봉기간);
var72 = Lowest(L,단기봉기간);
}
value71 = (var71 - var72)/2+var72;
if dayindex+1 < 장기봉기간 Then{
var81 = DayHigh;
var82 = DayLow;
}
Else{
var81 = highest(H,장기봉기간);
var82 = Lowest(L,장기봉기간);
}
value81 = (var81 - var82)/2+var82;
TEMA71 = (3 * Ema(value71,LENGTH1)) - (3 * Ema(Ema(value71,LENGTH1),LENGTH1)) +
(Ema(Ema(Ema(value71,LENGTH1),LENGTH1),LENGTH1));
Ep = 2/(LENGTH1+1);
if dayindex == 0 Then
T1 = value81;
Else
T1 = value81*EP + T1[1] * (1-EP);
if dayindex <= 1 Then
T2 = T1;
Else
T2 = T1*EP + T2[1] * (1-EP);
if dayindex <= 2 Then
T3 = T2;
Else
T3 = T2*EP + T3[1] * (1-EP);
TEMA82 = (3 * T1) - (3 * T2) + (T3);
//최고저테마값 끝*********************************************
if sdate != sdate[1] Then
Condition1 = false;
//진입라인설정시작---------------------------------------------------
if ( highest(H,N)-lowest(L,N)) <= C*변동율
Then{
Condition1 = true;
var8=DayIndex;
if TEMA82 > TEMA82[1] Then{ var1 = highest(H-높이조절,N);
var2 = lowest(L-높이조절,N); }
If TEMA82 < TEMA82[1] Then{ var1 = highest(H+높이조절,N);
var2 = lowest(L+높이조절,N); }
}
/*if Condition1 == False Then{
value1 = max(var65,var66);
value2 = min(var65,var66);
}
*/
/* If Condition1 == true Then{
value1 = var1;
value2 = var2;
}*/
//------------연결문
if TEMA82 > TEMA82[1]+장기전봉차 Then 가격 = var1;
if TEMA82 < TEMA82[1]-장기전봉차 Then 가격 = var2;
if TEMA82 < TEMA82[1]-장기전봉차 Then 매수매도 = -1;
if TEMA82 > TEMA82[1]+장기전봉차 Then 매수매도 = 1;
//------------연결문
if(countif(C >=var1,1) == 1) and (countif (TEMA82 > TEMA82[1]+장기전봉차,1) == 1) Then
plot1(H+0.05);
if(countif(C <=var2,1) == 1) and (countif (TEMA82 < TEMA82[1]-장기전봉차,1) == 1) Then
plot2(l-0.05);
plot4(TEMA82,"장기테마등락",iff(tema82>tema82[1]+장기전봉차,red,iff(tema82<tema82[1]-장기전봉차,BLUE,WHITE)));
/*
var : Dir(0);
if(countif(C >=var1,1) == 1) and (countif (TEMA82 > TEMA82[1]+장기전봉차,1) == 1) Then
dir = 1;
if(countif(C <=var2,1) == 1) and (countif (TEMA82 < TEMA82[1]-장기전봉차,1) == 1) Then
Dir = -1;
if dir == 1 and dir[1] != 1 Then
plot1(H+0.05);
if dir == -1 and dir[1] != -1 Then
plot2(l-0.05);
*/
/*
var : Dir(0),D1(0),D2(0);
if(countif(C >=var1,1) == 1) and (countif (TEMA82 > TEMA82[1]+장기전봉차,1) == 1) Then
dir = 1;
if(countif(C <=var2,1) == 1) and (countif (TEMA82 < TEMA82[1]-장기전봉차,1) == 1) Then
Dir = -1;
if dir == 1 and dir[1] != 1 Then{
plot1(H+0.05);
D1 = 0;
}
if Dir == 1 and Dir[1] == 1 Then{
D1 = D1+1;
if (D1)%10 == 0 Then
plot1(H+0.05);
}
if dir == -1 and dir[1] != -1 Then{
plot2(l-0.05);
D2 = 0;
}
if Dir == -1 and Dir[1] == -1 Then{
D2 = D2+1;
if (D2)%10 == 0 Then
plot2(l-0.05);
}
plot4(TEMA82,"장기테마등락",iff(tema82>tema82[1]+장기전봉차,red,iff(tema82<tema82[1]-장기전봉차,BLUE,WHITE)));
*/
=========================점이 다나오는식 끝==========================
=========================점이 10봉마다 다나오는식 ===================
//Input:length1(65),높이조절(0.05),N(15),변동율(0.06),이평(4);
//input :최소익틱(2),손절틱(9), 익절틱(10),눌림틱(3),장기전봉차(0.006);
Input:length1(65),높이조절(0.05),N(15),변동율(0.06),이평(4);
input :최소익틱(2),손절틱(9), 익절틱(10),눌림틱(3),장기전봉차(0.006);
Var:당일손익(1000000);
var : PLR(0),XCommission(0),XSlippage(0),OpenPL(0),dayPL(0),count(0);
var:TEMA71(0),TEMA81(0),Ep(0),T1(0),T2(0),T3(0),TEMA82(0);
var:장기봉기간(1),단기봉기간(4);
Var:추2(1),추4(1.01),추10(0.8),추20(0.5),추26(0.23),추30(0.2),추35(0.2)
,추45(0.2),추55(0.2),추65(0.2),추75(0.2),추90(0.2);
var : cnt(0),가격(0),매수매도(0);
//최고저테마값 시작********
if dayindex+1 < 단기봉기간 Then{
var71 = DayHigh;
var72 = DayLow;
}
Else{
var71 = highest(H,단기봉기간);
var72 = Lowest(L,단기봉기간);
}
value71 = (var71 - var72)/2+var72;
if dayindex+1 < 장기봉기간 Then{
var81 = DayHigh;
var82 = DayLow;
}
Else{
var81 = highest(H,장기봉기간);
var82 = Lowest(L,장기봉기간);
}
value81 = (var81 - var82)/2+var82;
TEMA71 = (3 * Ema(value71,LENGTH1)) - (3 * Ema(Ema(value71,LENGTH1),LENGTH1)) +
(Ema(Ema(Ema(value71,LENGTH1),LENGTH1),LENGTH1));
Ep = 2/(LENGTH1+1);
if dayindex == 0 Then
T1 = value81;
Else
T1 = value81*EP + T1[1] * (1-EP);
if dayindex <= 1 Then
T2 = T1;
Else
T2 = T1*EP + T2[1] * (1-EP);
if dayindex <= 2 Then
T3 = T2;
Else
T3 = T2*EP + T3[1] * (1-EP);
TEMA82 = (3 * T1) - (3 * T2) + (T3);
//최고저테마값 끝*********************************************
if sdate != sdate[1] Then
Condition1 = false;
//진입라인설정시작---------------------------------------------------
if ( highest(H,N)-lowest(L,N)) <= C*변동율
Then{
Condition1 = true;
var8=DayIndex;
if TEMA82 > TEMA82[1] Then{ var1 = highest(H-높이조절,N);
var2 = lowest(L-높이조절,N); }
If TEMA82 < TEMA82[1] Then{ var1 = highest(H+높이조절,N);
var2 = lowest(L+높이조절,N); }
}
/*if Condition1 == False Then{
value1 = max(var65,var66);
value2 = min(var65,var66);
}
*/
/* If Condition1 == true Then{
value1 = var1;
value2 = var2;
}*/
//------------연결문
if TEMA82 > TEMA82[1]+장기전봉차 Then 가격 = var1;
if TEMA82 < TEMA82[1]-장기전봉차 Then 가격 = var2;
if TEMA82 < TEMA82[1]-장기전봉차 Then 매수매도 = -1;
if TEMA82 > TEMA82[1]+장기전봉차 Then 매수매도 = 1;
//------------연결문
/*
if(countif(C >=var1,1) == 1) and (countif (TEMA82 > TEMA82[1]+장기전봉차,1) == 1) Then
plot1(H+0.05);
if(countif(C <=var2,1) == 1) and (countif (TEMA82 < TEMA82[1]-장기전봉차,1) == 1) Then
plot2(l-0.05);
plot4(TEMA82,"장기테마등락",iff(tema82>tema82[1]+장기전봉차,red,iff(tema82<tema82[1]-장기전봉차,BLUE,WHITE)));
*/
/*
var : Dir(0);
if(countif(C >=var1,1) == 1) and (countif (TEMA82 > TEMA82[1]+장기전봉차,1) == 1) Then
dir = 1;
if(countif(C <=var2,1) == 1) and (countif (TEMA82 < TEMA82[1]-장기전봉차,1) == 1) Then
Dir = -1;
if dir == 1 and dir[1] != 1 Then
plot1(H+0.05);
if dir == -1 and dir[1] != -1 Then
plot2(l-0.05);
*/
var : Dir(0),D1(0),D2(0);
if(countif(C >=var1,1) == 1) and (countif (TEMA82 > TEMA82[1]+장기전봉차,1) == 1) Then
dir = 1;
if(countif(C <=var2,1) == 1) and (countif (TEMA82 < TEMA82[1]-장기전봉차,1) == 1) Then
Dir = -1;
if dir == 1 and dir[1] != 1 Then{
plot1(H+0.05);
D1 = 0;
}
if Dir == 1 and Dir[1] == 1 Then{
D1 = D1+1;
if (D1)%10 == 0 Then
plot1(H+0.05);
}
if dir == -1 and dir[1] != -1 Then{
plot2(l-0.05);
D2 = 0;
}
if Dir == -1 and Dir[1] == -1 Then{
D2 = D2+1;
if (D2)%10 == 0 Then
plot2(l-0.05);
}
plot4(TEMA82,"장기테마등락",iff(tema82>tema82[1]+장기전봉차,red,iff(tema82<tema82[1]-장기전봉차,BLUE,WHITE)));
위식 위에것은 점을 모두 찍었구요
아래식은 10봉에 한번 찍었는데 dir이
+1,-1 이 아닌자리에 점찍은것 같아요
첨부햿읍니다 부탁드립니다
2012-02-10
503
글번호 47619