커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4601
글번호 230811
렉쳐 님에 의해서 삭제되었습니다.
2016-06-16
16
글번호 99188
답변완료
바탕색
20 이평,60 이평이 골든크로스이면 바탕색갈 전체가 빨강, 데드크로스이면 파랑 색갈이 나오게하는 방법 좀 알려주세요?(이평 채우기로 이평 사이 색갈 채우기 말구요)
2016-06-16
111
글번호 99187
답변완료
문의 하나 더 드립니다~
/*
In "Whet's The Difference?" in this issue 2005, John Ehlers
*/
Input: L39(39), TS(0.002);
VAR: MP(0), SMOOTH(0), ALPHA(0),AvgLen(39),FILT(0),LEN(0);
MP=(H+L)/2;
Smooth=(MP+2*MP[1]+2*MP[2]+MP[3])/6;
IF L39>3 THEN LEN=L39-2;
alpha=2/(Len+1);
Value1=Median(Smooth,Len);
Value2=AMA(Smooth,alpha);
Value3=abs(Value1-value2)/value1;
AvgLen=IFF(value3>TS,Len,AvgLen);
Alpha=2/(AvgLen+1);
Filt=AMA(Smooth,alpha);
Plot1(Filt, "M Filt");
Plot2(C, "가격");
위 수식을 이용한 신호발생
기준은 M Filt 선을 뚫는 봉을 기준으로 신호발생조건
위 동그라미친 부분이 매수,매도 신호 발생 지역~
2016-06-16
212
글번호 99186
답변완료
재문의드립니다~
Input:length(10);
Var:j(0),lastHiVal(0),lastLoVal(0),turnPntBit(""),TL1(0),tx(0);
Array:valArr[10](0),barArr[10](0),turnPntArr[10]("");
// 봉이 새로 생겼으므로 봉개수 관리하는 변수들의 봉개수 값 1씩 증가
For j = 0 To 9
{
barArr[j] = barArr[j] + 1;
}
// 고점조건 = 현재 봉의 고가가 기간최고가이면서 최고가 갱신되었을 때;
// 저점조건 = 현재 봉의 저가가 기간최저가이면서 최저가 갱신되었을 때;
// 고점,저점조건 만족시 현재 봉의 고[저]가를 변수에 저장
Condition1 = Highest(H,length) == H and lastHiVal <> H;
Condition2 = Lowest(L,length) == L and lastLoVal <> L;
If Condition1 Then lastHiVal = H;
If Condition2 Then lastLoVal = L;
// 전환점구분 null값으로 초기화;
turnPntBit = "";
// if 고점조건, 저점조건 동시 만족시 then
// if 이전 고점,저점 범위를 모두 벗어났을 때
// 전환점구분 = 고저점;
// else if 이전 고점을 갱신했다면 전환점구분 = 고점;
// else if 이전 저점을 갱신했다면 전환점구분 = 저점;
// else if 고점조건 만족하면 전환점구분 = 고점;
// else if 저점조건 만족하면 전환점구분 = 저점;
If Condition1 and Condition2 Then
{
If Max(valArr[1],valArr[2]) < H and Min(valArr[1],valArr[2]) > L Then
turnPntBit = "HiLo";
Else If Max(valArr[1],valArr[2]) < H Then turnPntBit = "Hi";
Else If Min(valArr[1],valArr[2]) > L Then turnPntBit = "Lo";
}
Else If Condition1 Then turnPntBit = "Hi";
Else If Condition2 Then turnPntBit = "Lo";
// if 전환점구분에 값이 있을 때만 then 아래 실행, 없으면 통과
If turnPntBit <> "" Then
{
// if 전환점구분이 고저점이면 then
// 이전 파동은 연장시키고 아래에서 새로이 파동선을 추가토록 한다.
If turnPntBit == "HiLo" Then
{
valArr[1] = IFF(turnPntArr[1] == "Hi",H,L);
barArr[1] = 0;
TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
If turnPntArr[1] == "Hi" Then
turnPntBit = "Lo";
Else
turnPntBit = "Hi";
}
// if 신규 전환점구분이 현재(전환점배열 1번째)와 다르면 then
// 배열값들을 이전값으로 Move;
If turnPntBit <> turnPntArr[1] Then
{
for j = 8 downto 1
{
valArr[j+1] = valArr[j];
barArr[j+1] = barArr[j];
turnPntArr[j+1] = turnPntArr[j];
}
}
// if 전환점구분이 바뀌었거나 또는
// (전환점구분은 안바뀌었는데
// (이전 고점보다 높은 고점이 발생했거나 또는
// 이전 저점보다 낮은 저점이 발생했으면)) then
If turnPntBit <> turnPntArr[1] or
(turnPntBit == turnPntArr[1] and
((turnPntBit == "Hi" and valArr[1] < H) or
(turnPntBit == "Lo" and valArr[1] > L))) Then
{
// 값 배열에는 고점 또는 저점을 대입;
// 봉개수 배열에는 0값 대입;
// 전환점 배열에 전환점구분값을 대입;
valArr[1] = IFF(turnPntBit == "Hi",H,L);
barArr[1] = 0;
turnPntArr[1] = turnPntBit;
// if 이전봉대비 전환점구분이 바뀌었다면 추세선 새로 그리고;
// else 전환점구분이 안바뀌었으면 값만 바뀐거므로 추세선 연장;
If turnPntArr[1][1] <> turnPntArr[1][0] Then{
if turnPntArr[1][0] == "Hi" then
tx = Text_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1],"고점");
else
tx = Text_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1],"저점");
Text_SetStyle(tx,2,2);
TL1 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],
sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
}
Else
TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
}
}
TL_SetSize(TL1,4);
TL_SetColor(TL1,GREEN);
Plot1(Highest(H,length));
Plot2(Lowest(L,length));
밑에 글에 고점,저점 표시 입니다
1. 고점 저점에 매수,매도 신호를 도입하고싶습니다
고점=매도 저점=매수 (청산신호는 패스 그냥 매수,매도 신호만 나오게) 화살표는 하나만
2. 예시: 120틱을 2가지 차트를 켜놓고 하나의 차트에는 Input:length(5);
또 다른 하나의 차트에는 Input:length(10); 그리고난후
두가지가 같이 1번처럼 고점=매도 저점=매수 가 일치할경우 신호발생
2차트가 동시에 고점 이 나올경우 매도로 신호발생
2차트가 동시에 저점 이 나올경우 매수로 신호발생
3.번 위 2번에서 다른 밑에 청산 수식하나 더 부탁드립니다~
청산은 고점이 나와서 매도 신호가 나왔는데 매도 신호가 나온 봉을 기준으로 고점을
뚫으경우
청산은 저점이 나와서 매수 신호가 나왔는데 그 매수신호 나온 봉의 기준으로 고점을
뚫을경우
2016-06-16
149
글번호 99185
답변완료
보내주신 수식 살짝수정하고십습니다.
보내주신 수식 잘 사용하고 있습니다.
살짝 수정해보려고 하는데요
다음 신호 이후
상승일 경우에는 스토K선이 바로 이전 고점보다 크거나 같을때 상승신호가 찍히도록(아래수식의 상승신호는 없앱니다.)
하락일 경우에는 스토K선이 바로 이전 저점보다 작거나 같을때 하락신호가 찍히도록(아래수식의 하락신호는 없앱니다.)
Input : Period(5), Period1(3), Period2(3);
var : StoK(0),StoD(0),T(0);
var : Hi1(0),Hi2(0),HH1(0),HH2(0);
var : Li1(0),Li2(0),LL1(0),LL2(0);
StoK = StochasticsK(Period,Period1);
StoD = StochasticsD(Period,Period1,Period2);
if crossup(stok,stod) Then{
T = 1;
Hi1 = stok;
Hi2 = Hi1[1];
HH1 = H;
HH2 = HH1[1];
if Li1 < Li2 and LL1 < LL2 and LL2 > 0 Then and
Hi1 < Hi2 and HH1 < HH2 and HH2 > 0 Then
buy();
}
if T == 1 Then{
if stok > Hi1 Then
Hi1 = stok;
if H > HH1 Then
HH1 = H;
}
if CrossDown(stok,stod) Then{
T = -1;
Li1 = stok;
Li2 = Li1[1];
LL1 = L;
LL2 = LL1[1];
if Li1 > Li2 and LL1 > LL2 and LL2 > 0 Then and
Hi1 > Hi2 and HH1 > HH2 and HH2 > 0 Then
sell();
}
if T == -1 Then{
if stok < Li1 Then
Li1 = stok;
if L < LL1 Then
LL1 = L;
}
2016-06-16
108
글번호 99184
답변완료
부탁드립니다.
도움 주심에 한량없는 감사를 드립니다.
1)이번주 시작가선
지난주 종가선
고저선간의 61.8%,38.2%선
2)이번달 시작가선
지난달 종가선
고저선간의 61.8%,38.2%선
부탁 드립니다.
참고수식1)
var : WH(0),WL(0),WH1(0),WL1(0);
#주변경
if dayofweek(date) < dayofweek(date[1]) Then{
WH = H;
WL = L;
WH1 = WH[1];
WL1 = WL[1];
}
if H > WH Then
WH = h;
if L < WL Then
WL = L;
plot5(WH,"이번주최고가");
plot6(WL,"이번주최저가");
plot7(WH1,"전주최고가");
plot8(WL1,"전주최저가");
참고수식2)
var : MH(0),ML(0),MH1(0),ML1(0);
#월변경
if date > date[1]+30 Then{
MH = H;
ML = L;
MH1 = MH[1];
ML1 = ML[1];
}
if H > MH Then
MH = h;
if L < ML Then
ML = L;
plot1(MH,"당월최고가");
plot2(ML,"당월최저가");
plot3(MH1,"전월최고가");
plot4(ML1,"전월최저가");
2016-06-17
99
글번호 99183
답변완료
두 종목 주문
안녕하세요,
Pair Trading을 하려고 하는데
두 종목을 어떻게 해야 주문을 낼 수 있나요?
하나의 차트에서 가능한가요?
예시를 주시면 감사하겠습니다.
2016-06-16
108
글번호 99181
답변완료
시스템식 부탁합니다.
안녕하세요.
48215 재질문은 DEMA 지표식을 제가 잘못 만들어서 드린질문 죄송하게생각합니다.
아래식은 DEMA 지표식을 이용한 시스템식입니다.
기존식을 조금 보완해주십시요.
20틱 익절이나 손절시 그다음봉에서 정배열이면 매수신호 역배열이면 매도신호가
나오게 해주시고요.
장시작시간 07시00분 장마감시간 다음날 05시50분 그리고 05시50분이전에 진입된 포지션은
장시작하기전까지 청산이 되게끔 해주십시요.
감사합니다.
INPUTS: LENGTH1(5),LENGTH2(20),LENGTH3(60),LENGTH4(100),수익틱수(20),손실틱수(20);
VARS : DEMA1(0),DEMA2(0),DEMA3(0),DEMA4(0);
var1= EMA(C,LENGTH1);
value1= EMA(EMa(C,LENGTH1),LENGTH1);
var2= EMA(C,LENGTH2);
value2= EMA(EMa(C,LENGTH2),LENGTH2);
var3= EMA(C,LENGTH3);
value3= EMA(EMa(C,LENGTH3),LENGTH3);
var4= EMA(C,LENGTH4);
value4= EMA(EMa(C,LENGTH4),LENGTH4);
DEMA1 = var1 * 2 - value1;
DEMA2 = var2 * 2 - value2;
DEMA3 = var3 * 2 - value3;
DEMA4 = var4 * 2 - value4;
Condition1 = DEMA1 > DEMA2 and DEMA2 > DEMA3 and DEMA3 > DEMA4;
Condition2 = DEMA1 < DEMA2 and DEMA2 < DEMA3 and DEMA3 < DEMA4;
if stime >= 070000 or stime < 055000 Then{
if Condition1 == true and Condition1[1] == false Then
buy();
if Condition2 == true and Condition2[1] == false Then
sell();
}
SetStopProfittarget(PriceScale*수익틱수,PointStop);
SetStoploss(PriceScale*손실틱수,PointStop);
2016-06-17
99
글번호 99180
답변완료
시스템 부탁 드립니다!!!
#옵션 시스템;수평선 신호 16개(각각 매수 16개,매도16개)
#조건;수평선 매수 가격 16개,매수청산(매도) 가격 16개
--->매수만 거래하고 매도는 청산만 합니다.(3분 종가 기준)
--->매수 가격대 상향시 매수.매도 가격대 하락시 모든 잔량 청산만 합니다.
#(예1) 매수 가격대 Line1(3.50) 상향시 매수,Line1(3.20) 하락시 청산만,
다음 Line2부터 Line16까지 Line1과 마찬가지 입니다.
#(예2) Line1이 Line3 통과하면 매수 계속 유지함.
#거래시간;09;00~14;50까지 입니다.
#부탁드립니다
2016-06-16
105
글번호 99179