커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
3731
글번호 230811
답변완료
67408 재문의 드립니다.
정말 감사드립니다!
T1 = data2(stime); 이부분에서
'값을 대입할수 있는 변수나 배열의 요소 , 입력변수 배열의 요소가 와야합니다.'
이렇게 오류가 났습니다.
좀해보고 다시 문의드리는데 해결책좀 부탁드립니다^^
번거롭게해서 죄송합니다.
=================================================
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : Re : 문의드립니다
> 안녕하세요
예스스탁입니다.
cond1은 단지 최근 0봉~40봉 사이에 한번이상 지정한 조건이 만족하면 true가 됩니다.
시간구간이 어떤식으로 지정되는지 모르겠습니다.
cond1이 true일때 시간을 지정해서 해당 시간이후에
만족할때만 cond2와 cond3이 true가 되게 수정해 드립니다.
var : 몸통상단1(0,Data2),Maxdata1(0,data2);
Var : 몸통상단2(0,Data3),Maxdata2(0,data3);
Var : 몸통상단3(0,Data4),Maxdata3(0,data4);
var : Arr(0,data1),cond1(false,data1),cond2(false,data1),cond3(false,data1);
몸통상단1 = Data2(max(C,O)); #data2몸통상단
Maxdata1 = data2(Highest(몸통상단1, 3)); #data2 몸통상단의 3개봉 최고값
몸통상단2 = Data3(max(C,O)); #data2몸통상단
Maxdata2 = Data3(Highest(몸통상단2, 4)); #data2 몸통상단의 5개봉 최고값
몸통상단3 = Data4(max(C,O)); #data2몸통상단
Maxdata3 = Data4(Highest(몸통상단3, 5)); #data2 몸통상단의 5개봉 최고값
cond1 = false;
For ARR = 0 TO 40
{
If data1(H) >= Maxdata1[arr] Then
{
cond1 = true;
T1 = data2(stime);
}
}
cond2 = false;
For ARR = 0 TO 50
{
If data2(H) >= Maxdata2[arr] and cond1 == true and data2(stime) >= T1 Then
cond2 = true;
}
cond3 = false;
For ARR = 0 TO 60
{
If data3(H) >= Maxdata3[arr] and cond1 == true and data2(stime) >= T1 Then
cond3 = true;
}
if cond1 == true && cond2 == true && cond3 == true then
buy();
2020-05-11
1633
글번호 138759
답변완료
수정부탁드립니다.
안녕하세요? 아래수식에서 진입식에서 매도갭상승봉틱수와 매수갭하락봉틱수는 변수에입력한대로 고정값으로 나와야하는데 다른상황이 생기네요.
에를들어,
매도갭상승봉틱수에 외부변수를 1틱으로넣었다고 가정하면, 갭상승한 1틱짜리 캔들 바로다음 진입봉이 충족하면 진입
매수갭하락봉틱수에 0틱으로넣었다고 가정하면, 갭하락한 도지 바로다음 진입봉 충족하면 진입.
이렇게 되었으면좋겠습니다.
주로 기준이되는 갭상승캔들은 도지를 사용하고싶고, 수정하려고 하였으나 잘안되네요...도움부탁드립니다.
input : 매도음봉틱수(10),매수양봉틱수(10);
input : 매도갭상승봉틱수(10),매수갭하락봉틱수(10);
input : 익절틱수(50),손절틱수(50),진입횟수(5);
var : entry(0);
if bdate != bdate[1] Then
entry = 0;
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
if entry < 진입횟수 and
MarketPosition == 0 and
C <= O-PriceScale*매도음봉틱수 and
max(C[1],O[1]) >= min(C[1],O[1])+PriceScale*매도갭상승봉틱수 and O[1] > C[2] Then
sell();
if entry < 진입횟수 and
MarketPosition == 0 and
C >= O+PriceScale*매수양봉틱수 and
max(C[1],O[1]) >= min(C[1],O[1])+PriceScale*매도갭상승봉틱수 and O[1] < C[2] Then
buy();
SetStopProfittarget(PriceScale*익절틱수,PointStop);
SetStopLoss(PriceScale*손절틱수,PointStop);
***진입
갭상승한 캔들(몸통길이 외부변수) 바로다음 음봉에 매도(음봉진입봉의 몸통길이 외부변수, 단진입봉의 몸통길이는 입력한 변수값 이상일시 진입하게해주세요)
갭하락한 캔들(몸통길이 외부변수) 바로다음 양봉에 매수(양봉진입봉의 몸통길이 외부변수, 단진입봉의 몸통길이는 입력한 변수값 이상일시 진입하게해주세요)
***청산 및 재진입
익절/손절 (외부변수)
진입후 익절 또는 손절이 되기전까지 재진입 금지.
***매매횟수
하루매매횟수 (외부변수)
2020-05-11
1632
글번호 138755
답변완료
질문 올립니다.
안녕하세요. 늘 감사드립니다.
항셍의 경우, 아침 10:14에 일단 기준가 같은 것이 나오고, 10:15에 거래가 시작됩니다.
(오늘의 경우, 10:14 가격은 24350포인트. 개장 직후 잠깐 내려 갔다[24316포인트까지...] 원웨이로 300틱 이상 24700포인트까지 수직상승함...)
전체적으로 가격이 상승 추세일 상황이라면, 개장 직후에 아주 잠깐 가격이 내렸다가 올라가는 경우가 종종 있는데 ((아마도 HeadFake의 일종인 듯...))
그래서,
10:14 가격에서
아래로 30틱 내려 가면 매수,
위로 30틱 올라 가면 매도가 되는 시트를 부탁 드리고 싶습니다.
그래서 이 시트를 홍콩장 개장 전인, 가령 오전 10시 10분 정도에 켜 놓으면,
10:14분이 되면, 자동으로 10:14의 가격을 시스템이 읽어서,
거기서
30틱 아래 가격을 CrossUp하면 매수,
30틱 위 가격을 CrossDown하면 매도
하게 해 주는 시스템 식 부탁 드립니다.
감사합니다!
2020-05-11
1777
글번호 138747
답변완료
67406 재문의
내용전달이 제대로 되지 않은것 같아 한번 더 질문드립니다.
input : N(5);
var : T(0),S(0);
if T <= 0 and SwingHigh(1,h,N,N,N*2+1) != -1 Then
{
T = 1;
S = H[N];
plot1(H[N],"지표01",RED);
}
if T >= 0 and SwingLow(1,L,N,N,N*2+1) != -1 Then
{
T = -1;
S = L[N];
plot1(L[N],"지표01",blue);
}
plot2(S,"지표03",iff(T == 1,blue,red));
만들어 주신 위 수식을
차트표시탭에서 지표03을 일자그래프로 할경우 그림1
차트표시탭에서 지표03을 선그래프로 할 경우 그림2 와 같이 나옵니다.
그런데 제가 원하는 방식은
그림3, 그림4와 같이 표현되었으면 합니다.
(새로운 스윙하이 값이 나오기 전까지 기존의 스윙하이 값을 그대로 유지하는 방식)
수식으로 구현이 가능하다면 부탁드립니다.
2020-05-11
1878
글번호 138740
답변완료
부탁드립니다.
//---settings
//Viscosity=7
//Sedimentation=50
//Thresholdlevel=1.1
//lagsupressor=1 //boolean value (default=true)
//MAtype=2 //MA type variable (2=Weighted average)
//---end of settings
if barindex>Sedimentation then
lagsK=0.5
sa = averagetruerange[Viscosity]
s1 = indc[1]
s3 = indc[3]
if lagsupressor then
vol=sa/averagetruerange[Sedimentation]+lagsK*(s1-s3)
else
vol=sa/averagetruerange[Sedimentation]
endif
MA1=average[Viscosity,MAtype](typicalprice)
D1=0
Sum1=0
for x1=0 to Viscosity-1 do
D1=square(typicalprice[x1]-MA1)
Sum1=Sum1+D1
anti=sqrt(Sum1/(x1+1))
next
MA2=average[Sedimentation,MAtype](typicalprice)
D2=0
Sum2=0
for x2=0 to Sedimentation-1 do
D2=square(typicalprice[x2]-MA2)
Sum2=Sum2+D2
Sedi=sqrt(Sum2/(x2+1))
next
antithres=anti/Sedi
t = Thresholdlevel
t=t-antithres
if(vol>t) then
volt=vol
else
volt=vol
endif
indc=vol
endif
return volt coloured(0,200,0) style(line,2) as "vmeter",t style(dottedline) as "threshold level"
변환 문의드립니다. 감사합니다.
2020-05-11
1810
글번호 138732
답변완료
수식 부탁드립니다.
지표 수식 부탁드립니다.
아래 조건에 따른 점수를 누적했을 때의 값을 오실레이터로 표현하고 싶습니다.
조건
1) 현재가가 각 이동평균선 76, 119, 190, 380선보다 높을 때마다 각 +1점씩, 낮을 때면 –1점씩.
2) 현재가가 각 이동평균선 9, 26선보다 높으면 각 +2점씩, 낮으면 –2점씩.
3) 각 이동평균선 76, 119, 190, 380선이 상승추세선이면 각 +1점, 하락추세면 각 –1점.
4) 각 이동평균선 9선, 26선이 상승추세선이면 각 +2점, 하락추세면 각 –2점.
3) 현재가가 일목균형표 선행스팬 구름층보다 위에 있으면 +2점, 아래에 있으면 –2점
4) 일목균형표 선행스팬이 양운이면 +2점, 음운이면 –2점
5) 일목균형표 후행스팬이 26캔들 전 가격보다 높으면 +2점, 낮으면-2점
6) 일목균형표 전환선>기준선이면 +1점, 전환선<기준선 –1점
7) 일목균형표 기준선>선행스팬1,2이면 +1점, 기준선<선행스팬이면 –1점
감사합니다.
2020-05-10
1895
글번호 138731
답변완료
변동성 돌파전략 식
1) 진입조건
현재가가 (전일고가 - 전일저가)*k + 당일시가 값을 돌파할 경우
2) 청산조건
익일 시가
INPUT : K(0.3);
VAR : ENTRY(0);
ENTRY = DAYOPEN + (DAYHIGH(1) - DAYLOW(1))*K;
IF CROSSUP(C, ENTRY) Then
BUY("ENTRY",ATSTOP,ENTRY);
IF MarketPosition == 1 Then
EXITLONG("EL",ATMARKET);
상기 식을 입력하면 진입가격이 당일시가 + (전일고가 - 전일저가)*k 가 아닌 당일시가로 나옵니다.
어떻게 수정해야 할까요??
2020-05-10
2167
글번호 138730
답변완료
조건 검색식 문의2
안녕하세요.
Yes trader를 처음 접해봐서, 수식을 잘 모르겠습니다. 하여 아래와 같이 조건 검색식 문의 드립니다. 수식 부탁드립니다.
다음 부터는 제가 공부를 많이 해서 수식을 제가 표현 하도록 하겠습니다,
이번만 부탁드립니다.
매수 조건 (주식)
1. 30틱 기준, 거래량이 1봉전(30틱) 보다 현 30틱에서 거래량 300%이상 발생.
2. 30틱 기준, 주가등락률이 1봉전(30틱) 보다 현 30틱에서 주가가 1.5%이상 상승.
3. 30틱 기준 거래대금은 아래 조건 참조.
시가총액 800억 이하 종목은 30틱 거래대금 4억 이상
시가총액 801억~1500억 종목은 30틱 거래대금 5억 이상
시가총액 1501억 이상 종목은 30틱 거래대금 6억 이상
감사합니다.
2020-05-10
1772
글번호 138729
답변완료
디버깅 문의
안녕하세요?
1)
Buy("A", AtMarket);
시장가 진입로직으로 짜고 있는데요.
6102 차트로는 표기는 되는데 제가 어느 가격에 진입하는건지 디버깅으로 찍어보고 싶습니다.
괜찮은 방법 있으면 공유 부탁드립니다.
2)
분봉에서 하루 마지막 봉에서 신호가 뜨더라도 진입을 안하고 싶은데요.
Buy("A", AtMarket);
이 로직을 쓰면 마지막 봉 다음인 그 다음날 시가에 진입을 하게 됩니다.
필터링 로직 추천 부탁드립니다.
2020-05-10
1612
글번호 138728