커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
5459
글번호 230811
답변완료
부탁드립니다.
3분봉에서 5평선과 20평선이 골든크로스가 날 때 1계약으로 매수진입하고,
데드 크로스가 나면 매수 진입을 청산하고 1계약 매도진입 (총 2계약 매도진입)
다음에 골든 크로스가 나면 매도 진입을 청산하고 1계약 매수진입 (총 2계약 매수진입)
이렇게 진입할 수 있게 만들어주실 수 있을까요?
2020-06-19
2159
글번호 139962
답변완료
함수요청 드립니다
코스피200 선물 매매 테스트를 위한 함수 요청드립니다
전일 고가 - 전일 저가==Range1
전일 저가 - 전일 고가==Range2
금일 시가 + (Range1)= A
금일 시가 + (Range2)= B
매수 = 당일 장중가격 A 상향 돌파
매수 청산= 3:00
매도 = 당일 장중가격 B 하향 돌파
매도 청산= 3:00
손절= -1% 설정
말이 되는지 모르겠네요 ^^;;
2020-06-19
2079
글번호 139961
답변완료
부탁드립니다.
$,안녕하세요
1,아래식에서 파동추세선이 그려진 직후 파동추세선이 그려진 완성봉에 Text가 즉시
출력되도록 수정부탁드립니다.
2,최근 2개파동의 각각중심선을 다음파동전까지 오른쪽그리기 하고싶습니다.
도움부탁드립니다.
input: period1(60),period2(20),period3(5), 선두께(5),상승색(YELLOW),하락색(cyan);
Var:j1(0),J2(0),J3(0),T1(0),T2(0),T3(0);
Var: date11(0),time11(0),date12(0),time12(0);
Var: TL1(0), TL2(0),TL3(0),Tx(0),Tx1(0);
Array:HiVal1[20](0),LoVal1[20](0),HiBar1[20](0),LoBar1[20](0);
Array:HiVal2[20](0),LoVal2[20](0),HiBar2[20](0),LoBar2[20](0);
Array:HiVal3[20](0),LoVal3[20](0),HiBar3[20](0),LoBar3[20](0);
Array:r[7](0),fr[7](0);
For j1 = 0 To 19
{
HiBar1[j1] = HiBar1[j1] + 1;
LoBar1[j1] = LoBar1[j1] + 1;
}
if crossup(c,highest(c,Period1)[1]) Then
T1 = 1;
if CrossDown(c,Lowest(c,Period1)[1]) Then
T1 = -1;
If T1 == -1 Then
{
If T1[1] != -1 Then
{
For j1 = 18 DownTo 0
{
LoVal1[j1+1] = LoVal1[j1];
LoBar1[j1+1] = LoBar1[j1];
}
LoVal1[0] = close;
LoBar1[0] = 0;
date11 = date[HiBar1[0]];
time11 = stime[HiBar1[0]];
Value11 = HiVal1[0];
date12 = date[LoBar1[0]];
time12 = stime[LoBar1[0]];
Value12 = LoVal1[0];
TL1 = TL_New(date11,time11,Value11,date12,time12,Value12);
TL_SetColor(TL1,하락색);
Tx = Text_New(date11,time11,Value11,"▼");
Text_SetColor(Tx,blue);
Text_SetStyle(Tx,2,1);
Text_SetSize(tx,11);
tx = Text_New(date11,time11,Value11,NumToStr(value11,2)+NewLine);
Text_SetStyle(tx,2,1);
Text_SetSize(tx,11);
}
If LoVal1[0] > close Then
{
LoVal1[0] = close;
LoBar1[0] = 0;
date12 = date[LoBar1[0]];
time12 = stime[LoBar1[0]];
Value12 = LoVal1[0];
TL_SetEnd(TL1, date12,time12,Value12);
}
}
If T1 == 1 Then
{
If T1[1] != 1 Then
{
For j1 = 18 DownTo 0
{
HiVal1[j1+1] = HiVal1[j1];
HiBar1[j1+1] = HiBar1[j1];
}
HiVal1[0] = close;
HiBar1[0] = 0;
date11 = date[LoBar1[0]];
time11 = stime[LoBar1[0]];
Value11 = LoVal1[0];
date12 = date[HiBar1[0]];
time12 = stime[HiBar1[0]];
Value12 = HiVal1[0];
TL1 = TL_New(date11,time11,Value11,date12,time12,Value12);
TL_SetColor(TL1,상승색);
Tx1 = Text_New(date11,time11,Value11,"▲");
Text_SetColor(Tx1,red);
Text_SetStyle(Tx1,2,5);
Text_SetSize(tx1,11);
tx = Text_New(date11,time11,Value11,NewLine+NumToStr(value11,2));
Text_SetStyle(tx,2,0);
Text_SetSize(tx,11);
}
If HiVal1[0] < close Then
{
HiVal1[0] = close;
HiBar1[0] = 0;
date12 = date[HiBar1[0]];
time12 = stime[HiBar1[0]];
Value12 = HiVal1[0];
TL_SetEnd(TL1, date12,time12,Value12);
}
}
TL_SetSize(tL1,선두께);
2020-06-19
2117
글번호 139960
답변완료
68005 관련 추가 문의드립니다.
안녕하세요
항상 친절한 도움에 감사한 마음입니다.
68005 관련 추가 문의드립니다.
(5봉경과 수식 외에) 추가로, 진입후 시간이 5분경과 해도 청산 안되는 경우에도
익절/손절틱수를 변경하는 수식을 부탁드리겠습니다.
===========================================================
아래의 샘플 수식을 300틱봉에서 돌리고 있습니다.
아래의 식에,
진입한 후, 진입봉이후 5봉이내 또는 5분이내 에서 수익 청산이 안되는 경우
익절값과 손절값을 아래처럼 변경하고 싶은데요...
각 각 수식 가능할런지요 ?
1) 5봉 경과
2) 5분 경과
익절 : 10틱 --> 6틱
손절 : 13틱 --> 7틱
// --------------------------------------------
input : Period(20), 익절(10), 손절(13);
var1 = highest(H,Period)[1];
var2 = Lowest(L,Period)[1];
if CrossUp(C, var1) Then
buy();
if CrossDown(C, var2) Then
sell();
SetStopLoss(PriceScale*손절,PointStop);
SetStopProfittarget(PriceScale*익절,PointStop);
// --------------------------------------------
감사합니다.
2020-06-18
2062
글번호 139955
답변완료
함수요청
안녕하세요?
아래 전략에 대해 스크립트 작성 요청드립니다.
나스닥 선물지수 60분봉, 20ma로 거래를 하고자 합니다.
1. 매수 진입(가and나and다)
가. 직전 5개 봉의 20ma의 기울기가 연속적으로 상승 중
나. 직전 5개 봉이 20ma 아래 위치
나. 현재봉이 20ma 상향돌파 완성시 익봉에 시가 진입
2. 매도 진입(가and나and다)
가. 직전 5개 봉의 20ma의 기울기가 연속적으로 하락 중
나. 직전 5개 봉이 20ma 위에 위치
나. 현재봉이 20ma 하향이탈 완성시 익봉에 시가 진입
2020-06-18
1926
글번호 139948
답변완료
어제의 가격들과 오늘의 종가 비교하는 for, if문
주가의 움직임 영역을 아래처럼 6가지로 나누고,
1/2번, 2/3번, 4/5번, 5/6번 영역 사이의 경계를 Pivot Point라고 해서 뒤에 PP를 붙였습니다.
State No 1.상승추세(Uptrend)
---------------------------- UptrendPP (종가가 이 위로 가면 그 종가는 상승추세에 기입)
State No 2.진짜반등(RealRally)
---------------------------- RealRallyPP (종가가 이 위로 가면 그 종가는 진짜반등에 기입)
State No 3.가짜반등(FakeRally)
---------------------------- (종가가 3번/4번 영역에 있으면 그 종가는 가짜반등/가짜조정에 기입)
State No 4.가짜조정(FakeReact)
---------------------------- RealReactPP (종가가 이 아래로 가면 그 종가를 진짜조정에 기입)
State No 5.진짜조정(RealReact)
---------------------------- DntrendPP (종가가 이 아래로 가면 그 종가를 하락추세에 기입)
State No 6.하락추세(Dntrend)
제가 만들고자 하는 수식은 설정된 기간동안 매일 종가를 추적하여,
아래의 내용을 비교해서 오늘의 종가가 6개 영역중 어디에 해당되는지 판단하는 것입니다.
- 어제의 종가가 어느 영역에 머물렀는가
- 오늘의 종가 vs 어제의 종가 크기 비교
- 오늘의 종가 vs 어제의 Pivot Point들과 비교
-
어제의 종가가 1번 영역(상승추세) 일때만 좀 봐주신다면 나머지 2/3/4/5/6번 영역일떄의 if문은 제가 작성해보도록 하겠습니다.
제가 우선 다른 프로그램에서 쓰는 수식 변형해서 만들어봤는데 F4 눌러서 검증은 마쳤습니다만,
오늘의 종가가 어느 영역에 있는지 결과값은 나오지 않는 상황입니다.
----------------------------------------------------------------------------------
var : i(0),stateno(0),
uptrend(0),realrally(0),fakerally(0),fakereact(0),realreact(0),dntrend(0),
UpTrendPP(0),NatRallyPP(0),NatReactPP(0),DnTrendPP(0);
For i = index-1 downto 0 // 어제 종가가 어느 영역에 머물렀는지 기준으로 반복해야하므로 for문 사용
{
if i==index-1 then // 시작날짜의 경우 전날에 대한 데이터가 없으므로 1번영역 라고 가정하고 모든 변수에 우선 첫날 종가입력
{
StateNo[i]==1;
UpTrend[i]== C[i];
RealRally[i]== C[i];
FakeRally[i]== C[i];
FakeReact[i]== C[i];
RealReact[i]== c[i];
DnTrend[i]==C[i];
UpTrendPP[i]==C[i];
RealRallyPP[i]==C[i];
RealReactPP[i]==C[i];
DnTrendPP[i]==C[i];
}
else // 시작날짜가 아닌경우 전날의 종가가 어느 영역이었는지 기준으로 if문 반복
{
if(StateNo[i+1]==1) then // 전날의 종가가 1번 영역이었다면 이걸 실행. 2/3/4/5/6번 영역이었을때의 조건문은 각각 있음. 여기선 예시로 1번 영역일때만 사용.
{
if(C[i]>=C[i+1]) then // 오늘의 종가가 어제 종가보다 크거나 같은가?
{
if(C[i]>UpTrend[i+1]) then // 그렇다면 오늘의 종가가 어제의 상승추세에 입력된 가격보다 큰가?
{
StateNo[i]==1; // 그렇다면 오늘의 종가는 1번 영역에 있다고 판단
UpTrend[i]==C[i]; // 오늘의 종가를 상승추세 영역에 기입
}
그 다음날은 또 어제의 종가가 어느 영역에 있는지 판단하는것부터 시작 반복...
2020-06-18
2183
글번호 139941
답변완료
시스템신호를 파워종목검색 수식 변경
다음은 시스템 수식입니다
이것을 파워종목검색에 적용하여 해당 값에 만족한 종목들을 찾고 싶습니다.
시스템수식에는 매수신호 하락신호 모두 나와있지만
양쪽모두가 불가능하다면
매수신호가 충족하는 종목만 검색해도 됩니다.
시스템수식을 변경하여 파워종목검색에 적용할수 있을까요?
input : sto1(10),sto2(6),sto3(6);
var : stok(0),stod(0),T(0),cnt(0);
Array : HH[10](-1),LL[10](-1);
stok = StochasticsK(sto1,sto2);
stod = StochasticsD(sto1,sto2,sto3);
if crossup(stok,stod) Then
{
T = 1;
HH[0] = stok;
for cnt = 1 to 9
{
HH[cnt] = HH[cnt-1][1];
}
if LL[0] < LL[1] and HH[1] > HH[2] and LL[1] >= 0 and HH[2] >= 0 Then
sell();
}
if CrossDown(stok,stod) Then
{
T = -1;
LL[0] = stok;
for cnt = 1 to 9
{
LL[cnt] = LL[cnt-1][1];
}
if HH[0] > HH[1] and LL[1] > LL[2] and HH[1] >= 0 and LL[2] >= 0 Then
buy();
}
if T == 1 then
{
if stok > HH[0] Then
HH[0] = stok;
}
if T == -1 then
{
if stok < LL[0] Then
LL[0] = stok;
}
2020-06-18
2302
글번호 139940
답변완료
시스템 수식전환 부탁
다음 수식을 예스수식으로 전환부탁드립니다.
<1> 수식1
a=highestsince(1,Crossup(macd(1,60),0),avg(c,60));
B=avg(c,60);
if(a>b,a,b)
수식2
a=lowestsince(1,Crossdown(macd(1,60),0),avg(c,60));
B=avg(c,60);
if(a<b,a,b)
<2>수식1
avg(c,60)/(jas=avg(c,10)/100)
수식2
avg(c,10)/(jas=avg(c,60)/100)
<3>수식1
A=avg(c, MA1);
B=avg(c, MA2);
if(A >= B,ValueWhen(1, Crossup(A ,B), A),B)
수식2
if(A < B,ValueWhen(1, Crossdown(A ,B), A),B)
지표조건설정
MA1 20
MA2 60
2020-06-18
2137
글번호 139939
답변완료
변경 수식부탁드립니다.
안녕하세요
항상 많은 도움에 깊은 감사를 드립니다.
아래의 샘플 수식을 300틱봉에서 돌리고 있습니다.
아래의 식에,
진입한 후, 진입봉이후 5봉이내 또는 5분이내 에서 수익 청산이 안되는 경우
익절값과 손절값을 아래처럼 변경하고 싶은데요...
각 각 수식 가능할런지요 ?
1) 5봉 경과
2) 5분 경과
익절 : 10틱 --> 6틱
손절 : 13틱 --> 7틱
// --------------------------------------------
input : Period(20), 익절(10), 손절(13);
var1 = highest(H,Period)[1];
var2 = Lowest(L,Period)[1];
if CrossUp(C, var1) Then
buy();
if CrossDown(C, var2) Then
sell();
SetStopLoss(PriceScale*손절,PointStop);
SetStopProfittarget(PriceScale*익절,PointStop);
// --------------------------------------------
감사합니다.
2020-06-18
1912
글번호 139938