커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
8092
글번호 230811
답변완료
부탁드립니다.
항상 감사드립니다.
매구 가능 조건 후 (BuyEntry == true)
mav1 > mav2 and mav3[1] < mav3 상태이면서
U2 == 1 and U2!=U2[1] 이면 매수하는 식으로 해보았습니다.
매구 가능 조건 후 (BuyEntry == true)
mav1 > mav2 and mav3[1] < mav3 상태가 풀리면
U2 == 1 and U2!=U2[1] 이어도 매수하지 않고 싶습니다.
아래식은 매수 가능 조건후 mav1 > mav2 and mav3[1] < mav3 상태가 풀리더라도
한참뒤어 mav1 > mav2 and mav3[1] < mav3 와 U2 == 1 and U2!=U2[1] 가 만족되면
매수가 들어갑니다.
부탁드립니다.
1식은 제가 구성해 본 식이며, 2식은 작성해 주신 식입니다.
두개 모두 동일합니다.
1.
Input : Period(5), Period1(5);
Input : P1(30), P2(60), P3(300);
var : FstK(0),FstD(0);
var : mav1(0), mav2(0), mav3(0);
var : t(0), t1(0), tx(0), U2(0);
var : BH(0),SL(0),HE(0),LE(0);
var : BuyEntry(false);
FstK = FastK(Period);
FstD = FastD(Period,Period1);
mav1 = wma(C, P1);
mav2 = wma(C, P2);
mav3 = wma(c, P3);
if FstK[1] < FstK Then #FstK 상승
U2 = 1;
if FstK[1] > FstK Then #FstK 하강
U2 = -1;
if mav1 > mav2 and mav3[1] < mav3 then
{
t = 1; #t는1 mav1>mav2 & mav3 상향구간 t값은 t1에 저장
t1 = t[1];
}
# t가 1인 상태에서 Fstk가 80을 CrossDown 하면 t = 2로 변경 ● 출력
if t == 1 and Crossdown(FstD, 80) Then
{
t = 2; #t는 2로 변경
#●출력
tx = Text_New(sdate,stime,H+PriceScale,"●"+NumToStr(C,2));
Text_SetStyle(tx,2,2);
Text_SetColor(tx,RED);
BuyEntry = true; //매수가능
}
# mav1>mav2 & mav3 상향구간
# Crossdown(Fastk, 80) t는 2까지 기록했고
# mav1>mav2 & mav3 상향구간 인 상태이고 FastK가 다시 상승하면 매수
if BuyEntry == true
and mav1 > mav2 and mav3[1] < mav3
and U2 == 1 and U2!=U2[1] then
BuyEntry = false; # false로 초기화
buy("B3");
}
if MarketPosition == 1 Then
{
BH = highest(H,BarsSinceEntry);
if MaxEntries == 1 Then
HE = LatestEntryPrice(0);
if MaxEntries >= 2 and LatestEntryPrice(0) > HE Then
HE = LatestEntryPrice(0);
SetStopProfittarget(0.4);
ExitLong("B손절",AtStop,HE-PriceScale*80);
}
2.
Input : Period(5), Period1(5);
Input : P1(30), P2(60), P3(300);
var : FstK(0),FstD(0);
var : mav1(0), mav2(0), mav3(0);
var : t(0), t1(0), tx(0), U2(0);
var : BH(0),SL(0),HE(0),LE(0);
var : BuyEntry(false);
FstK = FastK(Period);
FstD = FastD(Period,Period1);
mav1 = wma(C, P1);
mav2 = wma(C, P2);
mav3 = wma(c, P3);
if FstK[1] < FstK Then #FstK 상승
U2 = 1;
if FstK[1] > FstK Then #FstK 하강
U2 = -1;
if mav1 > mav2 and mav3[1] < mav3 then
{
t = 1; #t는1 mav1>mav2 & mav3 상향구간 t값은 t1에 저장
t1 = t[1];
}
# t가 1인 상태에서 Fstk가 80을 CrossDown 하면 t = 2로 변경 ● 출력
if t == 1 and Crossdown(FstD, 80) Then
{
t = 2; #t는 2로 변경
#●출력
tx = Text_New(sdate,stime,H+PriceScale,"●"+NumToStr(C,2));
Text_SetStyle(tx,2,2);
Text_SetColor(tx,RED);
BuyEntry = true; //매수가능
}
# mav1>mav2 & mav3 상향구간
# Crossdown(Fastk, 80) t는 2까지 기록했고
# mav1>mav2 & mav3 상향구간 인 상태이고 FastK가 다시 상승하면 매수
if t > 0 and t1 >= 2
and U2 == 1 and U2!=U2[1] and
BuyEntry == true Then 매수가능일때만 매수
{
BuyEntry = false;# false로 초기화
buy("B3");
}
if MarketPosition == 1 Then
{
BH = highest(H,BarsSinceEntry);
if MaxEntries == 1 Then
HE = LatestEntryPrice(0);
if MaxEntries >= 2 and LatestEntryPrice(0) > HE Then
HE = LatestEntryPrice(0);
SetStopProfittarget(0.4);
ExitLong("B손절",AtStop,HE-PriceScale*80);
}
2018-12-04
245
글번호 124143
답변완료
수식 부탁드립니다.
5분봉에서 전일거래량 10%발생하면서
5분봉에서 2%이상으로 일봉에서 60일 이동평균선 뚫고
1,2,3,4,5일전 종가위에 있으면서
전일대비 3%이상 상승한 종목에서 매수
수식 부탁드립니다.
2018-12-04
245
글번호 124139
답변완료
함수요청
안녕하세요?
아래 글번호 60311번 재질문 드립니다.
함수요청드립니다.
해외선물 크루드오일 30분봉으로 거래를 하고자 합니다.
써머타임 적용시에는 1번으로, 써머타임 해지시에는 2번전략으로 거래를 하고자 합니다.
하나의 스크립트로 요청드립니다.
1. 써머타임 적용시
-매수: 23시 30분 시점에 현재가 > 00시 30분 시점에 현재가 이면, 익일 1시 시초가 진입
-매도: 23시 30분 시점에 현재가 < 00시 30분 시점에 현재가 이면, 익일 1시 시초가 진입
-청산: SetStopEndOfday(043000);
-당일 진입, 당일 청산으로 1번 왕복 거래입니다.
2. 써머타임 해지시
-매수: 22시 30분 시점에 현재가 > 23시 30분 시점에 현재가 이면, 익일 0시 시초가 진입
-매도: 22시 30분 시점에 현재가 < 23시 30분 시점에 현재가 이면, 익일 0시 시초가 진입
-청산: SetStopEndOfday(033000);
-당일 진입, 당일 청산으로 1번 왕복 거래입니다.
두 시점의 현재가를 비교하여 특정 시각에 진입한다는 컨셉입니다.
그런데 작성주신 스크립트는 두 시점의 현재값을 비교하여 atmarket하는 걸로 주셨습니다.
바쁘시겠지만 검토 부탁드립니다.
2018-12-04
277
글번호 124136
답변완료
참조데이터 8개 활용 매매문의
5분봉 매매를 한다고 가정시.
주차트를 선물차트로 설정하고
참조데이터 8개를 옵션차트로 설정후
A라는 조건을 8개 옵션차트에 적용시킨 상태에서
8개 옵션차트중 6개 이상이 조건에 동시 만족하면
이전봉 종가에 매수주문 하는 식은 어떻게 하나요
2018-12-04
269
글번호 124132
답변완료
atlimit 주문 오류 문의
안녕하세요, 유진에서 원유해외선물을 거래하고 있습니다.
atlimit으로 주문을 내보내고 있는데, atlimit 주문이 채결 안된상태에서 profittarget주문이 먼저 나가게 되어 문의드립니다.
crossup(fast, slow) then sell("",atlimit, close + 1 pricescale) 으로 진입하여
0.1 tick 이익 또는 0.1tick 손실일때 profittarget이나 stoploss로 청산하는 전략이 있다고 할때, 방금 crossup(fast, slow) 조건을 만족하여 아래 가격으로 주문을 체결하려 합니다.
(시스템 매매설정에서 매매가격은 종가로 설정하였습니다.)
- 현재봉 종가 : 50.11
- atlimit 매도 주문가 : 50.12 atlimit
- profittarget 주문가 : 50.02 atstop
- stoploss 주문가 : 50.22 atstop
이때 다음봉의 고가가 50.12 였고 (atlimit 주문상 체결이 안될 수도 있다는 사항을 인지하고 있습니다.) 가격이 하락하여 50.00 까지 하락하였다고 가정하겠습니다.
여기서 제가 판단하는 시나리오는 두가지 인데
1) 50.12에서 체결이 되어 50.02에서 청산
2) 50.12에서 거래가 체결되지 못해 아무런 거래가 없음
예상하지 못한 3)의 상황이 발생하여 문의드립니다.
3) 50.12에서 체결이 되지 않고, 50.02에서 매수포지션 체결
3)의 상황과 같이 최초 50.12 최초 매도 주문 포지션의 실체결 여부를 파악하여 이후 청산 주문을 내보내는 방법은 없는지, 혹시 3)의 상황이 발생하면 별도의 청산 조건을 부여할 수는 없는지 문의 드립니다.
감사합니다.
2018-12-04
258
글번호 124125
답변완료
문의드립니다
아래 지표에 우측 끝까지 나타나는 수평라인을,
지표가 새로 갱신되는 지점까지만 나타나게 부탁드립니다
====================================================
Input : af(0.02), maxAF(0.2);
var : T(0),HH(0),LL(0),HD(0),HT(0),LD(0),LT(0),TL1(0),TL2(0),cnt(0),count(0);
Array : TL11[50](0),TL22[50](0);
var1 = CSar(af,maxAF);
if bdate != bdate[1] then
{
value1 = 0;
value2 = 0;
for cnt = 1 to 49
{
TL_Delete(TL11[cnt]);
TL_Delete(TL22[cnt]);
}
}
if crossup(c,var1) Then
{
T = 1;
HH = H;
HD = sdate;
HT = stime;
if LL > 0 Then
{
TL1 = TL_new(LD[1],LT[1],LL[1],HD,HT,HH);
}
if LD == sdate then
{
if value1 == 0 then
{
value1 = value1+1;
value11 = LL[1];
TL11[value1] = TL_New(LD[1],LT[1],LL[1],sdate,stime,LL);
TL_SetExtRight(TL11[value1],true);
}
if value1 > 0 and LL[1] < value11 then
{
value1 = value1+1;
value11 = LL[1];
TL11[value1] = TL_New(LD[1],LT[1],LL[1],sdate,stime,LL);
TL_SetExtRight(TL11[value1],true);
}
}
}
if CrossDown(c,var1) Then
{
T = -1;
LL = L;
LD = sdate;
LT = stime;
if HH > 0 Then
{
TL2 = TL_new(HD[1],HT[1],HH[1],LD,LT,LL);
}
if HD[1] == sdate then
{
if value2 == 0 then
{
value2 = value2+1;
value22 = HH[1];
TL22[value2] = TL_New(HD[1],HT[1],HH[1],sdate,stime,HH);
TL_SetExtRight(TL22[value2],true);
}
if value2 > 0 and HH[1] > value22 then
{
value2 = value2+1;
value22 = HH[1];
TL22[value2] = TL_New(HD[1],HT[1],HH[1],sdate,stime,HH);
TL_SetExtRight(TL22[value2],true);
}
}
}
if T == 1 then
{
if H > HH Then
{
HH = H;
HD = sdate;
HT = stime;
TL_SetEnd(TL1,HD,HT,HH);
}
}
if T == -1 then
{
if L < LL Then
{
LL = L;
LD = sdate;
LT = stime;
TL_SetEnd(TL2,LD,LT,LL);
}
}
2018-12-04
264
글번호 124119
답변완료
3단선 수식부탁 드립니다.
<요청1>
① 상단선이 이전 3개 상단선 보더 크면 매수, 작으면 매도 로직 좀 부탁 드립니다.
② 선 완성시 소리로 나오게 표현좀 부탁 드립니다.
PlaySound("C:₩예스트레이더₩data₩Sound₩stop"); 소리문장어디에 삽입하죠?
### 아래 수식
input : N(5);
var : idx(0),hh(0),d1(0),t1(0),TL(0),TF(0);
var : LL(0),TL2(0), mid(0), TL3(0);
if bdate != bdate[1] Then
idx = 0;
Else
idx = idx+1;
TF = idx%N;
if bdate != bdate[1] or (bdate == bdate[1] and TF < TF[1]) Then
{
hh = h;
LL = L;
mid = (hh+LL)/2;
d1 = sdate;
t1 = stime;
TL = TL_New(d1,t1,hh,sdate,stime,hh);
TL_SetColor(TL,RED);
TL2 = TL_New(d1,t1,LL,sdate,stime,LL);
TL_SetColor(TL2,blue);
TL3 = TL_New(d1,t1,mid,sdate,stime,mid);
TL_SetColor(TL3,gray);
}
else
{
if H > hh Then
hh = h;
if L < LL Then
LL = L;
mid = (hh+LL)/2;
TL_SetBegin(TL,d1,t1,hh);
TL_SetEnd(TL,sdate,stime,hh);
TL_SetBegin(TL2,d1,t1,LL);
TL_SetEnd(TL2,sdate,stime,LL);
TL_SetBegin(TL3,d1,t1,mid);
TL_SetEnd(TL3,sdate,stime,mid);
}
* 고맙 습니다.
2018-12-04
223
글번호 124118
답변완료
부탁 드립니다.
항상 맙습니다.
Williams'R 에사용되는 함수식 WILLR 입니다.
이것을 타주기 분용에 사용토록 부탁 드릴까 합니다.
/* Description : (Will)iams' (R)
*
* Provided By : YesStock Inc. (c) Copyright 2006
* E-Mail : webmaster@yesstock.com
*/
Input : Period(Numeric);
Var : value1(0), value2(0);
value1 = Highest(H, Period);
value2 = Lowest(L, period);
WILLR = (value1 - Close) / (value1 - value2) * (-100);
참고식)
input : 타주기분(30);
var : S1(0),D1(0),TM(0),TF(0),cnt(0),TH(0),TL(0);
var : value(0),pre(0),WAD(0);
Array : CC[10](0),HH[10](0),LL[10](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%타주기분;
if Bdate != Bdate[1] or (Bdate == Bdate[1] and TF < TF[1]) Then{
2018-12-04
393
글번호 124114
답변완료
시스템 구현 부탁드려요~
만약에 아래와 같은 수식을 한다면 양봉에서 사고 음봉에서 매도되나요"
아니면 서로 충돌이 일어나나요>?
매수 청산은 exitlong이자나요
if c<c[1] Then
Buy("매수");
if c>c[1] Then
Sell("매도");
=======================================================================
그리고 궁금한게 하나 더 있는데요...
아래 수식으로 하면 매수는 되는데 매도진입이 되지 않아여...
청산은 설정에서 "이익실현"으로 구현했구요
뭐가 잘못되었는지 알려주세요~~
input : Period(5);
input : P1(100),P2(1);
var : DParity(0);
DParity = Disparity(Period);
if CrossDown(DParity,P1) Then
Buy("매수");
if CrossUp(DParity,P2) Then
Sell("매도");
2018-12-04
276
글번호 124113