커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
5398
글번호 230811
답변완료
시스템 횟수 조정
항상 감사합니다
아래 시스템은 서로의 조건이 30개봉이내일때 발현하는 시스템입니다
30개봉이내에서 조건을 만족하는 신호가 나온다음 손절후 다시 같은방향으로 신호가 나오고 있습니다.
30개봉이내에서는 같은방향신호가 한번만 나올수 있도록 수정부탁드립니다.
### 동일방향 재진입금지/전일 마지막신호와 무관하게 진입 ###
var : entrycnt(0);
if stime == 170000 or (stime > 170000 and stime[1] < 170000) Then # 현지시간_뉴욕 17:00 장시작 #
Entrycnt = 0;
if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then
Entrycnt = Entrycnt+1;
##############################
##### 1_ Rsi 매매식 #####
##############################
if /*((entrycnt == 0) or (entrycnt >= 1 and MarketPosition == 0 and MarketPosition(1) != 1) or (MarketPosition == -1)) and #동일방향 재진입금지# */
rsi7030_직선라인 == 1 and rsi8020_직선라인 == 1 /*and rsi7525_직선라인 == 1*/ and c>선행스팬48 and t60==1 and c>var97 and
countif(rsi7030_직선라인 != rsi7030_직선라인[1],30) >= 1 and
countif(rsi8020_직선라인 != rsi8020_직선라인[1],30) >= 1 and
/*countif(rsi7525_직선라인 != rsi7525_직선라인[1],30) >= 1 and*/
t50==1 Then
buy("B1_2중");
if /*((entrycnt == 0) or (entrycnt >= 1 and MarketPosition == 0 and MarketPosition(1) != 1) or (MarketPosition == -1)) and #동일방향 재진입금지#*/
rsi7030_직선라인 == -1 and rsi8020_직선라인 == -1 /*and rsi7525_직선라인 == -1 */and c<선행스팬48 and t60==-1 and c<var95 and
countif(rsi7030_직선라인 != rsi7030_직선라인[1],30) >= 1 and
countif(rsi8020_직선라인 != rsi8020_직선라인[1],30) >= 1 and
/* countif(rsi7525_직선라인 != rsi7525_직선라인[1],30) >= 1 and*/
t50==-1 Then
sell("S1_2중");
감사합니다
2019-09-10
190
글번호 131882
답변완료
분봉 함수
키움증권에서 1분봉 3분봉 말고 [0분봉] 으로 설정하면 1/2분봉으로 볼 수 있었는데
여기도 가능한가요??
1분봉으로 반으로 한번 더 쪼개는거에요 만약에 안되면 기능에 추가하는것좀 해주시면 안되나요?
아니면 분봉에 나타내는 방법은 없나요??
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
틱차트가 연결선물만 되다보니 1/2분봉같이 좀 더 쪼개서 확인하고 싶네요
2019-09-10
243
글번호 131881
답변완료
문의요~
안녕하세요~ 질문좀 드릴께요~
키움에서 기술적지표에서 만들어진 하나의 선입니다(이동평균선 같은것)
이걸 예스챠트에서 똑같이 구현해 보고 싶습니다. 가능합니까?
참고로 '요번주일''HL'함수는 만들어져 있습니다.
감사합니다 수고하십쇼~
[키움 기술적지표]
수식1 *수식이름:12중심
m=(요번주일()+
HL(1)+HL(2)+HL(3)+HL(4)+HL(5)+HL(6)
+HL(7)+HL(8)+HL(9)+HL(10)+HL(11))/12
수식2 *수식이름:상단
편차합=(pow(요번주일()-m,2)+
pow(HL(1)-m,2)+pow(HL(2)-m,2)+pow(HL(3)-m,2)+pow(HL(4)-m,2)+pow(HL(5)-m,2)+pow(HL(6)-
m,2)+pow(HL(7)-m,2)
+pow(HL(8)-m,2)+pow(HL(9)-m,2)+pow(HL(10)-m,2)+pow(HL(11)-m,2));
m+d1*sqrt(편차합/12)
수식3 *수식이름:하단
편차합=(pow(요번주일()-m,2)+
pow(HL(1)-m,2)+pow(HL(2)-m,2)+pow(HL(3)-m,2)+pow(HL(4)-m,2)+pow(HL(5)-m,2)+pow(HL(6)-
m,2)+pow(HL(7)-m,2)
+pow(HL(8)-m,2)+pow(HL(9)-m,2)+pow(HL(10)-m,2)+pow(HL(11)-m,2));
m-d1*sqrt(편차합/12)
지표조건설정 D1:2.0
라인색은 아무색이나 가능..
2019-09-09
191
글번호 131879
답변완료
수식부탁드립니다.
안녕하세요?
노고에 감사드립니다.
<1번지표>
input : P1(5),P2(10);
var1 = obv;
var2 = ma(var1,P1);
var3 = ma(var1,P2);
<2번지표>
input : P1(10),P2(20);
var1 = obv;
var2 = ma(var1,P1);
var3 = ma(var1,P2);
위의 obv지표 1번지표와 2번지표 두개를 겹치기 해서 하나의 지표로 만들어
1번지표 var3 > 2번지표 var3 보다 큰종목을 검색하는 수식부탁드립니다.
지표두개를 겹치기했을때와 같은 수치가 나오도록 부탁드립니다.
감사합니다.
2019-09-09
213
글번호 131878
답변완료
수정 부탁드립니다.
안녕하세요?
어제 아래와 같은 답변 잘 받았습니다.
수정할 부분이 있어 요청 드립니다.
진입할때 양봉과 음봉의 몸통틱수가 매수진입할때 양봉틱수/음봉틱수 와 매도진입할때 양봉틱수/음봉틱수 로 각각 구분되었으면 합니다.
현재 변수에 양봉과 음봉 몸통틱수 지정하는것이 한가지밖에 없어서 일괄적으로 밖에 되지않아서요.
부탁드립니다.
----------------------------------------------------------------------------------------
안녕하세요
예스스탁입니다.
input : 양봉틱(5),음봉틱(5),진입횟수(3);
input : 익절틱수(50),손절틱수(50);
var : cnt(0);
if bdate != bdate[1] Then
cnt = 0;
if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then
cnt = cnt+1;
if MarketPosition == 0 and
cnt < 진입횟수 and
C == O+PriceScale*양봉틱 and
C[1] == O[1]-PriceScale*음봉틱 Then
buy();
if MarketPosition == 0 and
cnt < 진입횟수 and
C == O-PriceScale*음봉틱 and
C[1] == O[1]+PriceScale*양봉틱 Then
sell();
SetStopProfittarget(PriceScale*익절틱수,PointStop);
SetStopLoss(PriceScale*손절틱수,PointStop);
즐거운 하루되세요
> 대구어린울프 님이 쓴 글입니다.
> 제목 : 수식 부탁드립니다.
> 안녕하세요?
수식작성 부탁드립니다.
*진입
1)매수진입
음봉 몸통길이가 (외부변수)틱 나온후 곧바로 양봉 몸통길이가 (외부변수)틱 인경우 매수진입
2)매도진입
양봉 몸통길이가 (외부변수)틱 나온후 곧바로 음봉 몸통길이가 (외부변수)틱 인경우 매도진입
*손절/익절
손절(외부변수)틱
익절(외부변수)틱
*하루매매횟수 (외부변수)틱
*포지션 보유시에는 신호나와도 진입금지, 무포지션일때 신호발생시 진입.
감사합니다.
2019-09-09
158
글번호 131877
답변완료
부탁드립니다
수고하십니다.
아래수식 잘안돼내요.*우측에 숫자표시 부탁드립니다
PlotBaseLine5(30.000, "기준선 30");PlotBaseLine13(39.000, "기준선 39");
PlotBaseLine6(50.000, "기준선 50");PlotBaseLine14(55.000, "기준선 55");
PlotBaseLine7(70.000, "기준선 70");PlotBaseLine15(40.000, "기준선 40");
PlotBaseLine10(63.000, "기준선 63");PlotBaseLine16(55.600, "기준선 55");
PlotBaseLine11(42.000, "기준선 42");PlotBaseLine17(35.000, "기준선 35");
PlotBaseLine18(65.000, "기준선 65");
Text_Delete(TX);TX = Text_New(sdate,stime,39.000," 39");
Text_Delete(TX1);TX1 = Text_New(sdate,stime,63.000," 63");
Text_Delete(TX2);TX2 = Text_New(sdate,stime,35.000," 35");
Text_Delete(TX3);TX3 = Text_New(sdate,stime,65.000," 65");
Text_Delete(TX4);TX4 = Text_New(sdate,stime,55.000," 55");
2019-09-09
171
글번호 131876
요타 님에 의해서 삭제되었습니다.
2019-09-09
1
글번호 131875
로꼬로꼬 님에 의해서 삭제되었습니다.
2019-09-09
21
글번호 131874
답변완료
부탁드립니다.
수식 감사드드립니다.
1번식 추가해 주셨는데 단발성 매매가 아닌 당일 누적 수익 조건입니다. 수정 부탁드립니다.
당일 누적수익이 목표틱 80틱 이상이면 당일목표 달성 만족이고 최고가 대비 -20%일때 청산되어 목표달성 매매 종료입니다.
누적수익 120틱 목표 달성 매매종료 또는
누적수익 80틱 이상 조건 만족시 최고가 대비 -20하락 하면 목표달성 매매 종료 입니다.
부탁드립니다.
1. 당일 누적 수익이 목표틱 80틱 이상이면 최고가 대비 -20% 하락시 목표달성 매매 종료 (수식 요청)
예1) 100틱 --> 80틱(-20%하락) : 목표달성, 당일 매매 종료
예2) 150틱 --> 120틱(-20%하락) : 목표달성, 당일 매매 종료
2. 당일 누적 수익 목표틱 120틱 목표달성 매매 종료 (수식 존재)
Input : 당일목표수익1(80), 당일목표수익2(120),손절(50),익절(100),익절하락(2);
input : P1(30), P2(100);
### 목표수익 시간
var : N1(0),daypl(0),Xcond(false);
N1 = NetProfit;
Xcond = false;
if TotalTrades > TotalTrades[1] and
(IsExitName("BB목표1",1) == true or IsExitName("SS목표1",1) == true or
IsExitName("BB목표2",1) == true or IsExitName("SS목표2",1) == true ) then
Xcond = true;
daypl = NetProfit-N1;
var1 = ma(C, P1);
var2 = ma(C, P2);
## 진입
if Xcond == false then {
if marketposition == 0 then {
if crossup(var1,var2) Then {
buy("B");
}
}
if marketposition == 0 then{
if crossdown(var1,var2) Then {
sell("S");
}
}
}
var : BH(0),SL(0),HE(0),LE(0);
if MarketPosition == 1 then
{
SetStopTrailing(익절하락,익절,PointStop);
SetStopLoss(손절,PointStop);
ExitLong("BB목표2",atlimit,EntryPrice+((PriceScale*당일목표수익2-daypl)/CurrentContracts));
if highest(H,BarsSinceEntry) >= EntryPrice+PriceScale*당일목표수익1 Then
ExitLong("BB목표1",AtStop,highest(H,BarsSinceEntry)-(highest(H,BarsSinceEntry)-EntryPrice)*0.2);
}
if MarketPosition == -1 Then
{
SetStopTrailing(익절하락,익절,PointStop);
SetStopLoss(손절,PointStop);
ExitShort("SS목표2",atlimit,EntryPrice-((PriceScale*당일목표수익2-daypl)/CurrentContracts));
if Lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*당일목표수익1 Then
ExitShort("SS목표1",AtStop,Lowest(L,BarsSinceEntry)-(EntryPrice-Lowest(L,BarsSinceEntry))*0.2);
}
2019-09-09
150
글번호 131873