커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4398
글번호 230811
답변완료
문의드립니다
항상 친절하신 답변 고맙습니다.
아래조건의 선물매매시스템 문의드립니다.
매매진입시간은 09시부터 14시까지이고
청산시간은 09시부터 15시30분까지 일때
1일 진입횟수는 2번까지이고,
누적손익 손익이 3pt이상 수익이 나거나 3pt이상 손실발생시 즉시 청산후 당일 매매중단
기준분봉 30분봉 10000ㅅ봉
매매조건
5이평선이 20이평 상향돌파시 매수
5이평선이 20이평 하향돌파시 매도
청산조건
매수 매도진입후 2pt수익시 청산
매수 매도진입후 2pt손실시 청산
매수진입후 5이평선이 당일 시가기준선 아래로 하락시 청산
매도진입후 5이평선이 당일 시가기준선 위로 상승시 청산
매수진입후 최고가 대비 1pt하락시 청산
매도진입후 최저가 대비 1pt상승시 청산
수고하세요
2018-06-14
172
글번호 119716
답변완료
수식 부탁드립니다.
안녕하세요. ETF로 아래 2개 전략을 자동매매해보려고 하는데요.
누적자산기준진입으로 하려면 각각 어떤 code를 더 추가해야하나요 ?
=================================================================================
전략1
if MarketPosition <= 0 and dayhigh >= dayopen+(dayhigh(1)-daylow(1))*0.5 Then
buy("b",AtStop,dayopen+(dayhigh(1)-daylow(1))*0.5);
if MarketPosition == 1 Then{
if NextBarSdate > sdate Then
exitlong("bx2",AtMarket);
}
전략2
if stime == 151800 then
buy("b",OnClose);
if stime == 090000 then
ExitLong("bx",OnClose);
2018-06-14
211
글번호 119715
답변완료
시스템식 수정 부탁 드립니다.
체결누적순매수(value3) >0 일때, 한 번 진입은 당일에 한한 조건이고 싶습니다.
즉,
작성해주신 시스템식에
+
'전일'체결누적순매수 >0이고 '당일'체결누적순매수가 >0일때 신호가 발생하면 진입하는 식을
추가하고 싶습니다.
========
안녕하세요
예스스탁입니다.
var : count1(0),count2(0),T(0);
if date != date[1] Then
{
value1 = 0;
value2 = 0;
}
value1 = value1+(Upvol);
value2 = value2+(downvol);
value3 = value1-value2;
var1 = ma(C,5);
var2 = ma(C,20);
if value3 > 0 Then
T = 1;
if value3 < 0 Then
T = -1;
if T == 1 and T != T[1] Then
count1 = 0;
if T == -1 and T != T[1] Then
count2 = 0;
if T == 1 and crossup(var1,var2) Then
{
count1 = count1+1;
if count1 == 1 Then
buy();
}
if T == -1 and CrossDown(var1,var2) Then
{
count2 = count2+1;
if count2 == 1 Then
sell();
}
if MarketPosition == 1 and CrossDown(var1,var2) Then
ExitLong();
if MarketPosition == -1 and CrossUp(var1,var2) Then
ExitShort();
즐거운 하루되세요
> 수급돌파 님이 쓴 글입니다.
> 제목 : 시스템식 문의
> if date != date[1] Then
value1 = 0;
value1 = value1+(Upvol);
plot2(value1,"upvol누적");
if date != date[1] Then
value2 = 0;
value2 = value2+(downvol);
plot3(value2,"downvol누적");
plot4(value1-value2,"체결누적순매수");
위 식을 이용하여 시스템식을 만들고 싶습니다.
매수진입 :5,20 이평 골든크로스 and 체결누적순매수>0
(체결누적순매수>0일때 골든크로스가 여러번 발생하는데 처음 한번 진입후 다음 신호들 무시)
(체결누적순매수<0 되었다가 >0이 되어 골든크로스가 발생하면 진입)
(전일 체결누적순매수>0이 된 상태로 끝나고 당일 체결누적순매수>0일 때 골든크로스 발생하면 진입)
매수청산 : 5,20 이평 데드크로스
매도진입 : 5,20 이평 데드크로스 and 체결량누적순매수<0
매도청산 : 5,20 이평 골든크로스
매도진입도 매수진입과 같은 논리로 식을 만들고 싶습니다.(단, 체결량누적순매수>0을 <0으로)
2018-06-14
177
글번호 119714
답변완료
매도 수식 확인 좀 부탁 드립니다.
* 수식이 안되는데 수정 좀 부탁 드립니다.
매수후 이익 구간이 3~5% 면 2프로 이하 매도 5~10%면 8프로 이하매도
10~15% 는 12프로 이하 매도 15~30은 14매도 입니다.
if MarketPosition == 1 Then {
if highest(H,BarsSinceEntry) >= EntryPrice*1.03 and highest(H,BarsSinceEntry) < EntryPrice*1.05 Then ExitLong("3%" ,AtStop, EntryPrice*1.02, "" , Floor(CurrentContracts),1);
if highest(H,BarsSinceEntry) >= EntryPrice*1.05 and highest(H,BarsSinceEntry) < EntryPrice*1.10 Then ExitLong("9%" ,AtStop, EntryPrice*1.08, "" , Floor(CurrentContracts),1);
if highest(H,BarsSinceEntry) >= EntryPrice*1.10 and highest(H,BarsSinceEntry) < EntryPrice*1.15 Then ExitLong("12%" ,AtStop, EntryPrice*1.12, "" , Floor(CurrentContracts),1);
if highest(H,BarsSinceEntry) >= EntryPrice*1.15 and highest(H,BarsSinceEntry) < EntryPrice*1.30 Then ExitLong("15%" ,AtStop, EntryPrice*1.14, "" , Floor(CurrentContracts),1);
if highest(H,BarsSinceEntry) < EntryPrice*1.03 and Lowest(H,BarsSinceEntry) < EntryPrice*0.97 Then ExitLong("손해1",AtLimit, EntryPrice*0.99, "" , Floor(CurrentContracts),1); }
2018-06-13
169
글번호 119713
답변완료
수식문의
안녕하세요
하기 답변 잘 받았습니다. 감사합니다.
그런데, 신호가 잘 작동되지 않습니다.
data 2 종가가 볼린져 상단을 돌파했는데, 신호는 변경되지 않습니다.
하단도 마찬가지 입니다.
검토 부탁드립니다.
감사합니다.
---------------------------------------
안녕하세요
예스스탁입니다.
data2의 조건을 data2종가가 크로스 하는 것으로 변경했습니다.
수식의 동작은 기본차트 기준입니다.
기본차트봉이 완성될때 그때 참조데이터(data2)의 완성봉 기준으로
조건체크해서 신호가 발생합니다.
Input : Period(20), MultiD(2);
var : BBmd1(0,data1),BBup1(0,data1),BBdn1(0,data1);
var : BBmd2(0,data2),BBup2(0,data2),BBdn2(0,data2);
BBmd1 = data1(ma(C,Period));
BBup1 = data1(BollBandUp(Period,MultiD));
BBdn1 = data1(BollBandDown(Period,MultiD));
BBmd2 = data2(ma(C,Period));
BBup2 = data2(BollBandUp(Period,MultiD));
BBdn2 = data2(BollBandDown(Period,MultiD));
IF MarketPosition == 1 and bbmd1 < bbmd1[1] and bbmd2 < bbmd2[1] then
{
if data1(CrossDown(c,bbmd1)) or data2(crossup(c,bbup2)) Then
sell("bs");
}
IF MarketPosition == -1 and bbmd1 > bbmd1[1] and bbmd2 > bbmd2[1] then
{
if data1(Crossup(c,bbmd1)) or data2(CrossDown(c,bbdn2)) Then
buy("sb");
}
즐거운 하루되세요
> softtoug 님이 쓴 글입니다.
> 제목 : 수식문의
>
안녕하세요
하기 답변 주신 수식에서 않되는 부분이 있어서 문의 드립니다.
매수의 경우 data 2 의 볼린져 밴드 상단을 cross over했을경우 청산이 되지 않습니다.
매도의 경우 data 2 의 볼린져 밴드 하단을 cross down했을경우 청산이 되지 않습니다.
data 1 이 큰 시간봉이고 (60분) data 2 가 작은 시간봉입니다.(30분)
봉완성 진입 문제로 적용이 되지 않는지요?
검토 부탁드립니다.
감사합니다.
안녕하세요
예스스탁입니다.
Input : Period(20), MultiD(2);
var : BBmd1(0,data1),BBup1(0,data1),BBdn1(0,data1);
var : BBmd2(0,data2),BBup2(0,data2),BBdn2(0,data2);
BBmd1 = data1(ma(C,Period));
BBup1 = data1(BollBandUp(Period,MultiD));
BBdn1 = data1(BollBandDown(Period,MultiD));
BBmd2 = data2(ma(C,Period));
BBup2 = data2(BollBandUp(Period,MultiD));
BBdn2 = data2(BollBandDown(Period,MultiD));
IF MarketPosition == 1 and bbmd1 < bbmd1[1] and bbmd2 < bbmd2[1] then
{
if CrossDown(c,bbmd1) or crossup(c,bbup2) Then
sell("bs");
}
IF MarketPosition == -1 and bbmd1 > bbmd1[1] and bbmd2 > bbmd2[1] then
{
if Crossup(c,bbmd1) or CrossDown(c,bbdn2) Then
sell("bs");
}
즐거운 하루되세요
> softtoug 님이 쓴 글입니다.
> 제목 : 수식문의
> 안녕하세요
하기 수식 부탁드립니다.
1.
현재 매수 상태입니다.
data 1 과 data 2 의 볼린져 이평이 전봉대비 하락하고 있으며,
data1 의 볼린져 이평을 터치하거나, data 2 의 볼린져 상단을 터치하면
- 두가지중 한가지라도 성립이 되면-
매도로 스위칭하여 진입하는 수식 부탁드립니다.
data 2 의 볼린져 이평이 전봉대비 상승하고 있으면, 진입하지 않습니다.
2.
현재 매도 상태입니다.
data 1 과 data 2 의 볼린져 이평이 전봉대비 상승하고 있으며,
data 1 의 볼린져 이평을 터치하거나, data 2 의 볼린져 하단을 터치하면
- 두가지중 한가지라도 성립이 되면-
매수로 스위칭하여 진입하는 수식 부탁드립니다.
data 2 의 볼린져 이평이 전봉대비 하락하고 있으면, 진입하지 않습니다.
감사합니다.
2018-06-13
184
글번호 119712
답변완료
4등분선
국내선물(해외선물)에서 당일 고가와저가 생성시 마다 실시간으로 4등분선으로 챠트에 나타내고 싶은데요 부탁드립니다,감사합니다
2018-06-13
210
글번호 119711
답변완료
문의드립니다.
50봉이내 최고점을 돌파하면 매수진입
50봉이내 최저점을 깨면 매도진입
감사합니다.
2018-06-13
188
글번호 119710
답변완료
안녕하세요.
다음식을 양선 음선 교차시 시스템식(화살표)으로 만들어 주세요.
input : Period(10);
var : Counter(0), Lowval(0), Highval(0), DownVel(0),UpVel(0), DnAroon(0),UpAroon(0) ;
Lowval= Lowest(Low, Period+1);
Highval = Highest(High, Period+1);
For counter= 0 To Period {
If Low[counter] == Lowval Then
DownVel = counter;
If High[counter] == highval Then
UpVel = counter;
}
DnAroon = 100*(Period-DownVel)/Period;
UpAroon = 100*(Period-UpVel)/Period;
Plot1(DnAroon, "Aroon Dn");
Plot2(UpAroon, "Aroon Up");
plotbaseline1(100,"강세 100");
plotbaseline2(0,"약세 0");
2018-06-13
162
글번호 119709
답변완료
주간 일봉 SMI를 분봉에 표시
주간 일봉의 SMI를 복합 분봉에서 표시하려고 아래와 같은 식을 만들었습니다.
그러나 그래프가 일봉 그래프와 많이 다르게 나옵니다.
어디가 잘못 된 것인지 모르겠습니다.
한번 봐 주시기 부탁드립니다.
감사합니다.
# ===<<< 분봉 차트에서 일봉 시고저종 계산 >>>===========================================
Arrays : 일봉_시가[100](0), 일봉_고가[100](0), 일봉_저가[100](0), 일봉_종가[100](0);
Variables : cnt(0);
# ===<<< 주간장 시작 (09:00) >>>===
If (sDate[1] != sDate And 080000 <= sTime) Or
(sDate[1] == sDate And sTime[1] < 080000 And 080000 <= sTime) Then Begin
# ---< 일봉_시고저종[1] 이동 >---
For cnt = 99 DownTo 1 Begin
일봉_시가[cnt] = 일봉_시가[cnt-1]; 일봉_고가[cnt] = 일봉_고가[cnt-1];
일봉_저가[cnt] = 일봉_저가[cnt-1]; 일봉_종가[cnt] = 일봉_종가[cnt-1];
End;
# ---< 일봉_시고저종[0] 초기값 입력 >---
일봉_시가[0] = Open; 일봉_고가[0] = High;
일봉_저가[0] = Low; 일봉_종가[0] = Close;
End;
# ===<<< 주간장 (09:00-15:45) >>>>===
If 080000 <= sTime And sTime < 180000 then Begin
If 일봉_고가[0] < High Then 일봉_고가[0] = High;
If 일봉_저가[0] > Low Then 일봉_저가[0] = Low;
일봉_종가[0] = Close;
End;
# ===<<< 분봉 차트에서 일봉 SMI 계산 >>>=========================================
Arrays : SMI_Var1[50](0), SMI_Var2[50](0), SMI_Var3[50](0), SMI_Var4[50](0), SMI_Var5[50](0), SMI_Var6[50](0), SMI_Var7[50](0);
Variables : 기간1(13), 기간2(25), 기간3(2);
Variables : 기간_고가(0), 기간_저가(0);
Variables : ep1(0), ep2(0), ep3(0);
# ===<<< 주간장 시작 (09:00) >>>===
If (sDate[1] != sDate And 080000 <= sTime) Or
(sDate[1] == sDate And sTime[1] < 080000 And 080000 <= sTime) Then Begin
# ---< 스토케스틱[1] 이동 >---
For cnt = 49 DownTo 1 Begin
SMI_Var1[cnt] = SMI_Var1[cnt-1];
SMI_Var2[cnt] = SMI_Var2[cnt-1];
SMI_Var3[cnt] = SMI_Var3[cnt-1];
SMI_Var4[cnt] = SMI_Var4[cnt-1];
SMI_Var5[cnt] = SMI_Var5[cnt-1];
SMI_Var6[cnt] = SMI_Var6[cnt-1];
SMI_Var7[cnt] = SMI_Var7[cnt-1];
End;
# ---< 기간중고저가 초기값 입력 >---
기간_고가 = 일봉_고가[0];
기간_저가 = 일봉_저가[0];
End;
# ===<<< 주간장 (09:00-15:45) >>>===
If 080000 <= sTime And sTime < 180000 then Begin
For cnt = 1 to 기간1-1 Begin
If 기간_고가 < 일봉_고가[cnt] Then 기간_고가 = 일봉_고가[cnt];
If 기간_저가 > 일봉_저가[cnt] Then 기간_저가 = 일봉_저가[cnt];
End;
# ---<<< SMI 계산 >>>---
ep1 = 2/(기간1+1);
ep2 = 2/(기간2+1);
ep3 = 2/(기간3+1);
SMI_Var1[0] = Close - (기간_고가+기간_저가)/2;
SMI_Var2[0] = SMI_Var1[0] * ep2 + SMI_Var2[1] * (1-ep2);
SMI_Var3[0] = SMI_Var2[0] * ep3 + SMI_Var3[1] * (1-ep3);
SMI_Var4[0] = 기간_고가-기간_저가;
SMI_Var5[0] = SMI_Var4[0] * ep2 + SMI_Var5[1] * (1-ep2);
SMI_Var6[0] = (SMI_Var5[0] * ep3 + SMI_Var6[1] * (1-ep3))/2;
SMI_Var7[0] = SMI_Var3[0] / SMI_Var6[0] * 100;
End;
If SMI_Var7[1] < SMI_Var7[0] Then Plot1(SMI_Var7[0],"SMI_Var7", RED);
Else If SMI_Var7[1] > SMI_Var7[0] Then Plot1(SMI_Var7[0],"SMI_Var7", BLUE);
Else Plot1(SMI_Var7[0],"SMI_Var7",BLACK);
PlotBaseLine1( 40,"과열", Red);
PlotBaseLine2( 0," 0",GRAY);
PlotBaseLine3(-40,"침체",Blue);
2018-06-13
173
글번호 119708