커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7212
글번호 230811
회원 님에 의해서 삭제되었습니다.
2019-03-08
32
글번호 126888
답변완료
문의 드립니다.
20이평을 상향 돌파하면 매수 진입하고 청산은 볼린져 밴드 20. 2 상단선 닿으면 할 것.
손절은 반대로 20이평 이탈 시 매도 청산.
20이평선 하향 돌파하면 매도 진입하고 청산은 볼린져 밴드 20. 2 하단선 닿으면 할 것.
손절은 반대로 20이평 이탈 시 매도 창산.
부탁드립니다.
2019-03-08
157
글번호 126887
답변완료
문의
안녕하세요.
지표로 전월의 시가, 전전월의 시가 전전전월의 시가를 나타내는 지표를 부탁드립니다.
즉, 지금 2019년 3월달인데,
2월달과 1월달과 2018년 12월달의 시가를 나타내는 식을 부탁드립니다..
2019-03-08
210
글번호 126886
답변완료
수식 확인 부탁 드립니다
아래 수식중 확인 부탁 드립니다.
1) var2 = data1(ma(ma(ma(C, Period2),Period2),Period2));
삼각 가중 이평 수식이 맞습니까?
2) ADXV > ADXS and ADXV > ADXB 작성된 부분이
data2 ADX가 시그널 상향 and ADX가 기준선 30이상일때 매수 진입 조건이
맞게 작성된 것입니까?
3) If CurrentContracts == entryVol And (False == ExBlockCOND) And (H < EntryPrice +
(10 * TickSize)) Then
ExitLong("청산1", Atlimit, EntryPrice + (10 * TickSize),"", 1,2);
매수진입 가격에서 10틱 고가에 도달 할시 1계약이 청산되도록 작성 한것인데
작동 되지를 않습니다 확인 부탁 드립니다.
아래수식의 변경을 부탁 드렸던 것입니다.
If CurrentContracts = entryVol And (False = ExBlockCOND) And (H < EntryPrice + (10 * TickSize)) Then
ExitLong("ExL", Atlimit, EntryPrice + (10 * TickSize), "청산1", 1);
4) data2에 TRIX가 상승시 매수진입 조건을 추가 하고 싶습니다 확인 부탁 드립니다.
input : Period20(14);
var : TRIXV(0,data3);
TRIXV = data3(ADX(Period20));
매수 진입 조건 TRIXV[1] < TRIXV
5) data3에 highestsince가 상승시 매수진입 조건을 추가할때 수식 작성 부탁 드립니다.
input : Period1(5), Period2(20);
Vars : entryVol(0), ExBlockCOND(False), blockCond(True);
Vars : TickSize(0);
Ticksize = pricescale;
var1 = data1(wma(C, Period1));
var2 = data1(ma(ma(ma(C, Period2),Period2),Period2));
condition1 = CrossuP(var1, var2);
input : Period10(14), Sig(9), BaseLine(30);
var : ADXV(0,data2),ADXS(0,data3),ADXB(0,data2);
ADXV = data2(ADX(Period10));
ADXS = data2(ema(ADXv,sig));
ADXB = data2(BaseLine);
If condition1 and ADXV > ADXS and ADXV > ADXB Then
Buy("B");
If CurrentContracts == entryVol And (False == ExBlockCOND) And (H < EntryPrice + (5 * TickSize)) Then
ExitLong("청산1", Atlimit, EntryPrice + (5 * TickSize),"", 1,2);
2019-03-08
208
글번호 126884
답변완료
문의합니다
시스템 수식
input : ntime1(6),P(32);
var : S1(0),D1(0),TM(0),TF(0);
var : cnt(0),sum1(0),tmav1(0),tmav11(0),tmav12(0),tmav13(0);
Array : C1[500](0);
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
}
if D1 > 0 then
{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TF = TM%ntime1;
if Bdate != Bdate[1] or (Bdate == Bdate[1] and TF < TF[1]) Then
{
for cnt = 1 to 499
{
C1[cnt] = C1[cnt-1][1];
}
tmav11 = tmav1[1];
tmav12 = tmav11[1];
tmav13 = tmav12[1];
}
C1[0] = C;
if C1[P] > 0 then{
sum1 = 0;
for cnt = 0 to P-1{
sum1 = sum1+C1[cnt];
}
tmav1 = sum1/P;
if tmav13 < tmav12 and tmav12 < tmav11 and tmav11 < tmav1 and tmav13 > 0 Then
buy();
if tmav13 > tmav12 and tmav12 > tmav11 and tmav11 > tmav1 and tmav13 > 0 Then
sell();
}
}
지표수식
input : ntime1(20),P(20);
var : S1(0),D1(0),TM(0),TF(0);
var : cnt(0),sum1(0),mav1(0),mav11(0),mav12(0),mav13(0);
Array : C1[500](0);
if Bdate != Bdate[1] Then{
S1 = TimeToMinutes(stime);
D1 = sdate;
}
if D1 > 0 then{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TF = TM%ntime1;
if Bdate != Bdate[1] or (Bdate == Bdate[1] and TF < TF[1]) Then
{
for cnt = 1 to 499
{
C1[cnt] = C1[cnt-1][1];
}
mav11 = mav1[1];
mav12 = mav11[1];
mav13 = mav12[1];
}
C1[0] = C;
if C1[P] > 0 then{
sum1 = 0;
for cnt = 0 to P-1{
sum1 = sum1+C1[cnt];
}
mav1 = sum1/P;
plot1(mav1,"이평",iff(mav1 > mav11 and mav11 > mav12 and mav12 > mav13,red,BLUE));
}
}
1번 == 위 시스템 수식입니다
위 시스템 수식을 이용하여 6개 이평선을 이용할 수 있도록 시스템수식(매수매도)을 부탁합니다
예) input : ntime1(6),P(8),P(16),P(32),P(64),P(128),P(256);
예) 일반적으로 이평선 구하는 수식입니다
input : Period15(13),Period20(36),Period30(30),Period120(120),Period180(180),Period240(240);
var : mav15(0),mav20(0),mav30(0),mav120(0),mav180(0),mav240(0);
mav15 = ma(c, Period15);
mav20 = ma(c, Period20);
mav30 = ma(c, Period30);
mav120 = ma(c, Period120);
mav180 = ma(c, Period180);
mav240 = ma(c, Period240);
각 모든 이평선이 전봉 3개가 상승할 때 매수 진입하는 수식은 아래와 같이 표현합니다
mav15[3] < av15[2] and mav15[2] < mav15[1] and mav15[1] < mav15 and
mav20[3] < av20[2] and mav20[2] < mav20[1] and mav201] < mav20 and
mav30[3] < av30[2] and mav15[2] < mav15[1] and mav15[1] < mav15 and
mav120[3] < av120[2] and mav120[2] < mav120[1] and mav120[1] < mav120 and
mav180[3] < av180[2] and mav180[2] < mav180[1] and mav180[1] < mav180 and
mav240[3] < av240[2] and mav240[2] < mav240[1] and mav240[1] < mav240
---- 분봉 이평선을 틱봉에 적용하려면 어떤 수식이 필요하나요
(전봉 3개가 상승할 때 매수진입, 전봉 3개가 하락할 때 매도진입)
2번 == 위 지표수식을 이용하여 6개 이평선을 이용할 수 있도록 지료수식을 부탁합니다
예) input : ntime1(6),P(8),P(16),P(32),P(64),P(128),P(256);
감사합니다
2019-03-09
202
글번호 126882
남산 님에 의해서 삭제되었습니다.
2019-03-08
0
글번호 126881
겐지 님에 의해서 삭제되었습니다.
2019-03-08
0
글번호 126880
답변완료
수식요청드립니다.
안녕하세요.
연결선물 오버형 분봉 틱봉 스윙 시스템에서 매월 1일 장시작부터 말일까지
적용 수익청산은 제외하고 손실청산만 합산 5P 달성시 매수 매도 모든포지션
일괄 청산하는 월 손실제한 수식 요청 드립니다.
감사합니다.
2019-03-08
184
글번호 126879
답변완료
수식보완요청드립니다
아래는 작성해주신 시스템식입니다.
신호발생이 뜻하는 바와 다른점이 있어 재문의 드립니다.
아래식에서는
강제청산조건을 설정하면 한번 강제청산 후에 (고점갱신,저점갱신이 없는 조건에서도) 두번째 왔을 때에도 신호가 발생합니다.
[원래 요청 사항]
방향 = 1 에서 채널고점갱신이후 첫번째 var3의 값에 왔을 때 매수
방향 = -1 에서 채널저점갱신이후 첫번째 var3의 값에 왔을 때 매도
추가1]
매수,매도 주문가격을 var3의 값으로 요청드립니다
추가2]
방향이 전환되면 손절처리되도록 부탁드립니다.
추가3] 강제청산조건 추가
input : sl(30), sp(100);
SetStopLoss(sl*PriceScale,PointStop);
SetStopProfittarget(sp*PriceScale,PointStop);
감사합니다
===========
Input:전환비율(0.382);
Var:j(0),jj(0),HH(0),LL(0),hiBar(0),loBar(0),최종꼭지점(""),처리구분(""),
TL1(0),Text1(0),T(0),지지(0),저항(0);
Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime
#==========================================#
HH = H;
LL = L;
If Index == 0 Then
{
고[1,1] = HH;
고[1,2] = 0;
저[1,1] = LL;
저[1,2] = 0;
}
If Index > 0 Then // Index가 0일때는 이전 봉이 없으므로 Index가 1일때부터 1씩 증가
{
hiBar = hiBar + 1; // 최고점을 찍은 고[저]가의 위치를 저장 해놓기 위해 봉번호를 카운트한다.
loBar = loBar + 1;
}
If HH[hiBar] < HH Then hiBar = 0; // 현재 봉이 최고가이면 봉번호를 0으로 초기화
If LL[loBar] > LL Then loBar = 0;
Condition1 = 저[1,1] * (1 + (전환비율/100)) < HH and hiBar == 0;
// 전저점에서 최소변동률만큼 더한 값보다 고가가 크다면 추세가 변한 것으로 보고 신규 고점으로 인식
Condition2 = 고[1,1] * (1 - (전환비율/100)) > LL and loBar == 0;
// 전고점에서 최소변동률만큼 뺀 값보다 저가가 작다면 추세가 변한 것으로 보고 신규 저점으로 인식
처리구분 = "";
If Condition1 and Condition2 Then // 고점과 저점 조건 동시 만족
{
If 최종꼭지점 == "저점" Then
{
If 저[1,1] > LL Then 처리구분 = "저점처리";
Else 처리구분 = "고점처리";
}
Else If 최종꼭지점 == "고점" Then
{
If 고[1,1] < HH Then 처리구분 = "고점처리";
Else 처리구분 = "저점처리";
}
}
Else If Condition1 Then 처리구분 = "고점처리";
Else If Condition2 Then 처리구분 = "저점처리";
#==========================================#
If 처리구분 == "고점처리" Then
{
If 최종꼭지점 == "저점" Then
{
For j = 10 DownTo 2
{
For jj = 1 To 4
{
고[j,jj] = 고[j-1,jj];
}
}
고[1,1] = HH[hiBar];
hiBar = -1;
// 다음 봉의 고가가 기준 고가로 인식되려면 hiBar 값이 0이 되어야 한다.
// 봉이 바뀔 때마다 hiBar의 값을 1씩 증가시키므로 다음 봉의 hiBar 값은 0이 된다.
loBar = -1;
}
Else If 고[1,1] < HH[hiBar] Then // 1번 고점보다 높은 고가 출현
{
고[1,1] = HH[hiBar];
hiBar = -1;
loBar = -1;
// 시작점은 변동없고 끝점의 위치가 현재 봉으로 연장된 것임
}
최종꼭지점 = "고점";
T = 1;
if T == 1 and T != T[1] then
지지 = 저[1,1] ;
}
#==========================================#
If 처리구분 == "저점처리" Then
{
If 최종꼭지점 == "고점" Then
{
For j = 10 DownTo 2
{
For jj = 1 To 4
{
저[j,jj] = 저[j-1,jj];
}
}
저[1,1] = LL[loBar];
hiBar = -1;
loBar = -1;
}
Else If 저[1,1] > LL[loBar] Then
{
저[1,1] = LL[loBar];
hiBar = -1;
loBar = -1;
}
최종꼭지점 = "저점";
T = -1;
if T == -1 and T != T[1] then
저항 = 고[1,1] ;
}
//========================================//
//
//
//
var : 방향(0),HV(0),LV(0);
if crossdown(c,지지) then
{
방향 = -1;
Condition1 = false;
}
if crossup(c,저항) then
{
방향 = 1 ;
Condition2 = false;
}
if 방향 == 1 and 방향 != 방향[1] Then
Hv = H;
if 방향 == 1 and H > HV Then
Hv = H;
if 방향 == -1 and 방향 != 방향[1] Then
Lv = H;
if 방향 == -1 and L < LV Then
Lv = L;
input : Per1(23.6),Per2(38.2),Per3(50.0),Per4(61.8),Per5(76.4),Per6(123.6),Per7(161.8),Per8(200);
var1 = Hv - (Hv - Lv)*Per1/100 ;
var2 = Hv - (Hv - Lv)*Per2/100 ;
var3 = Hv - (Hv - Lv)*Per3/100 ;
var4 = Hv - (Hv - Lv)*Per4/100 ;
var5 = Hv - (Hv - Lv)*Per5/100 ;
if MarketPosition <= 0 and
방향 == 1 and
Condition1 == false and
CrossDown(c,var3) Then
{
buy();
Condition1 = true;
}
if MarketPosition == 1 and
var3 > var3[BarsSinceEntry] and
crossup(c,var3) Then
ExitLong();
if MarketPosition >= 0 and
방향 == -1 and
Condition2 == false and
crossup(c,var3) Then
{
Sell();
Condition2 = true;
}
if MarketPosition == -1 and
var3 < var3[BarsSinceEntry] and
CrossDown(c,var3) Then
ExitShort();
2019-03-09
292
글번호 126878