커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
8118
글번호 230811
답변완료
수정부탁드립니다
식 확인 및 수정 부탁드립니다.
(매수로만 설명드립니다 매도는 반대 동일조건으로 해주세요)
1. 아래식의 경우 매수진입하여 익절이 되면 바로 다시 매수로 재진입 되는 경우가 있습니다.(그림1) 익절 후에도 매수 조건이라서 재진입이 되는거 같은데, 바로 같은 포지션으로 재진입이 되지 않도록 해주세요.
(시뮬레이션에는 재진입이 없습니다. 실 매매에서만 재진입이 이루어 집니다.)
2. 매수 진입하여 손절되면 매도 조건시 진입 (단, 매도 진입은 Data2의 20일선이 100일선 위에 있고 80일선이 상방일때만)
3. 포지션 진입 후 익절이되면 당일 매매 끝
4. 진입회수를 2로 하면 1번과같은 조건이든 매수(청산), 매도(청산) 조건 진입이든 2번만 거래가 이루어 집니다. 진입은 2번항목 조건에 의해서 두번까지만 되게 해주시고, 첫번째 매매에서 익절이 되면 당일 매매는 종료하게 해주세요.
input : short(12),long(26),sig(9),P1(3),P2(20),P3(100);
input : 시작시간(102000), 종료시간(172000);
input : 진입회수(2);
var : mav1(0,data1),mav2(0,data1),mav3(0,data1);
var : Tcond(False,data1),Bcount(0,data1),Scount(0,data1);
var : MACDO2(0,data2), MACDO1(0,data1);
var : BH(0,data1),SL(0,data1);
MACDO2 = data2(MACD_OSC(short,long,sig));
MACDO1 = data1(MACD_OSC(short,long,sig));
mav1 = data1(ma(c,P1));
mav2 = data1(ma(c,P2));
mav3 = data1(ma(c,P3));
if stime == 시작시간 or (stime >시작시간 and stime[1] < 시작시간) Then{
Tcond = true;
Bcount = 0;
Scount = 0;
}
if stime == 종료시간 or (stime > 종료시간 and stime[1] < 종료시간) Then{
Tcond = false;
}
//진입회수
if MarketPosition != MarketPosition[1] and MarketPosition == 1 Then
Bcount = Bcount+1;
if MarketPosition != MarketPosition[1] and MarketPosition == -1 Then
Scount = Scount+1;
//진입
if Tcond == true Then{
if Bcount < 진입회수 and MACDO2 > MACDO2[1] and crossup(mav2,mav3) Then buy("Buy");
if Scount < 진입회수 and MACDO2 < MACDO2[1] and CrossDown(mav2,mav3) Then sell("Sell");
}
//청산1
if MarketPosition == 1 Then{
BH = highest(H,BarsSinceEntry);
if BH >= EntryPrice+PriceScale*60 and BH < EntryPrice+PriceScale*80 Then
ExitLong("B익절1",AtStop,BH-PriceScale*30);
if BH >= EntryPrice+PriceScale*80 Then
ExitLong("B익절2",AtStop,BH-PriceScale*20);
ExitLong("B손절",AtStop,EntryPrice-PriceScale*40);
}
if MarketPosition == -1 Then{
SL = Lowest(L,BarsSinceEntry);
if SL <= EntryPrice-PriceScale*60 and SL > EntryPrice-PriceScale*80 Then
ExitShort("S익절1",AtStop,SL+PriceScale*30);
if SL <= EntryPrice-PriceScale*80 Then
ExitShort("S익절2",AtStop,sL+PriceScale*20);
ExitShort("S손절",AtStop,EntryPrice+PriceScale*40);
}
if 종료시간 <= sTime or sTime < 시작시간 then {
if MarketPosition == 1 then{
ExitLong("B장종료");
}
if MarketPosition == -1 then{
ExitShort("S장종료");
}
}
2017-09-28
262
글번호 113184
답변완료
수식작성
안녕하세요.
아래내용에 대해 다시한번 질문 드립니다.
sooundplay 가 복수구동이 안된다 하셨는데 예스스팟에서도 똑같이 복수 구동이 안되나요?
감사합니다,
-------------------- *** -------------------------------- *** -----------------
안녕하세요
예스스탁입니다.
PlaySound는 최종지정된 wav파일만 구동됩니다.
한번에 복수로 구동이 가능하지 않습니다.
도움을 드리지 못해 죄송합니다.
즐거운 하루되세요
> 패랭이야 님이 쓴 글입니다.
> 제목 : 수식문의
> 안녕하세요!
다음과같이 조건만족시 sound출력 실행문을 두개 연속으로 실행 시켰을때 마지막 실행문의
소리만 출력 됩니다.
PlaySound("C:₩eFriend Globa YesTrader₩efriendglobalyestrader₩data₩Sound₩alert.wav") ;
PlaySound("C:₩eFriend Global YesTrader₩efriendglobalyestrader₩data₩Sound₩음성₩c비비업.wav") ;
1. 이유를 알고 싶습니다.
2. 두실행문의 소리가 다 출력 되도록 하는 방법을 알고 싶습니다.
감사합니다
2017-09-28
257
글번호 113183
답변완료
문의 사항
안녕하세요
하기 수식에 추가적인 옵션 부탁드립니다.
1.
if bbup <= bbdn+PriceScale*50 then{
if MarketPosition <= 0 and h > bbup Then
sell("s11",AtStop,bbup);
if MarketPosition >= 0 and l < bbdn Then
buy("b11",AtStop,bbdn);
}
- 매수 진입시 진입가격이 볼린져 밴드 중앙이평 상단에 있으면 진입하지 않게 부탁드립니다.
매도 진입시 진입가격이 볼린져 밴드 중앙이편 하단에 있으면 진입하지 않게 부탁드립니다.
2.
Input : shortPeriod(12), longPeriod(26), Period(9);
value1 = MACD(shortPeriod, longPeriod);
value2 = ema(value1, Period);
# 매수/매도청산
If CrossUP(value1, value2) Then
{
buy("bMACD");
}
# 매도/매수청산
If CrossDown(value1, value2) Then
{
sell("sMACD");
}
상기 수식에 의거해서 진입하여 익절을 내 다음 가격의 위치가
매수의 경우 볼린져 이평과 상단 사이에 있을경우 익절 후 다음봉 시작에
재진입 하는 수식 부탁드립니다.
매도의 경우 볼린져 이평과 하단 사이에 있을경우 익절 후 다음봉 시작에
재진입 하는 수식 부탁드립니다.
감사합니다.
2017-09-28
205
글번호 113182
답변완료
수정 잘부탁드립니다
수정부탁드립니다
55018 라인선에한글로표시해주세요
2017-09-28
229
글번호 113181
답변완료
문의드립니다.
항상 친절한 답변감사합니다. 풍성한 한가위 되시길바랍니다.
현물입니다.
매수1 : 주가가 일봉기준 0930분 현재 20이평선 위에 있을때 1차매수 (조건: 주가와 이평선의 이격이 10%이내)
> 5% 하락시 매도. > 매도후 주가가 상승하여 1차 매수가격 오면 재매수
매수2 : RSI (14)기준 종가가 과매도 신호(30) 발생시 다음봉 시초가에 매수(봉완성형)
선물.
매수1 : RSI 가 0에서 30상향 돌파시 매수진입
매도1 : RSi가 100에서 70하향 돌파시 매도진입
2017-09-28
225
글번호 113180
답변완료
수정부탁드립니다.
적용해본 결과
제가원한것이아니라서ㅎ
목표틱수 를 다했을경우
매매 신호 금지 를 원합니다
예시: 익절틱수 30틱 을 설정 했으면
수익이 30틱이다 그러면
더이상 신호발생 금지(청산)
다시 한번 부탁드립니다
현제 밑에 수식은
익절틱수만 설정이되서
원하는 수익을 얻었을경우
또 신호가 나오기때문입니다
input : P(10),익절틱수(10);
Input : 시작시간(103000),종료시간(170000);
Var : Xcond(false),MM(0),T(0),Tcond(false),idx(0);
if (sdate != sdate[1] and stime >= 시작시간) or
(sdate == sdate[1] and stime >= 시작시간 and stime[1] < 시작시간) Then{
Tcond = true;
Xcond = false;
idx = 0;
}
if (sdate != sdate[1] and stime >= 종료시간) or
(sdate == sdate[1] and stime >= 종료시간 and stime[1] < 종료시간) Then{
Tcond = false;
if MarketPosition == 1 Then
ExitLong();
if MarketPosition == -1 Then
ExitShort();
}
if TotalTrades > TotalTrades[1] and IsExitName("StopProfitTarget",1) == true then
Xcond = true;
MM = (highest(H,P)+lowest(L,P))/2;
if Tcond == true then{
idx = idx+1;
if T == 0 and C > MM Then
T = 1;
if T == 0 and C < MM Then
T = -1;
if T == 1 and CrossDown(C,lowest(L,P)[1]) Then
T = 0;
if T == -1 and CrossUp(C,highest(H,P)[1]) Then
T = 0;
if idx == 1 and T == 1 then
buy();
if idx == 1 and T == -1 then
sell();
if idx > 1 then{
if T == 1 and T[1] != 1 Then
buy();
if T == 0 and T[1] == 1 Then
sell();
}
if T == -1 and T[1] != -1 Then
sell();
if T == 0 and T[1] == -1 Then
buy();
}
SetStopProfittarget(PriceScale*익절틱수,PointStop);
2017-09-28
224
글번호 113179
답변완료
highest 문의
input : p(20),showavg(true),P1(1),P2(1),N(240);
var : S1(0),D1(0),TM(0),TF(0),HH(0),LL(0),RR(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%N;
if bdate != bdate[1] or (bdate == bdate[1] and TF < TF[1]) then{
HH = H;
LL = L;
}
if H > HH Then
HH = H;
if L < LL Then
LL = L;
RR = (HH+LL)/2;
plot24(HH,"고");
plot25(LL,"저");
plot26(RR,"중");
}
var1 = (highest(c,TF));
var2 = (lowest(c,TF));
var3 = (highest(c,TF))-(lowest(c,TF));
돈키안 채널 지표는 봉의 수량에 의한 채널로 만들어지는 지표로 알고 있는데 위와 같이 시간(240분) 기준으로 채널지표가 만들어 질 수 없는지요?
(highest(c,p)); 가 맞으나 p(봉의수량) 대신 TF(240분)로 대체시 이상한 결과나 나와서요?
감사합니다.
2017-09-28
266
글번호 113177
답변완료
수식문의
안녕하세요!
다음과같이 조건만족시 sound출력 실행문을 두개 연속으로 실행 시켰을때 마지막 실행문의
소리만 출력 됩니다.
PlaySound("C:₩eFriend Globa YesTrader₩efriendglobalyestrader₩data₩Sound₩alert.wav") ;
PlaySound("C:₩eFriend Global YesTrader₩efriendglobalyestrader₩data₩Sound₩음성₩c비비업.wav") ;
1. 이유를 알고 싶습니다.
2. 두실행문의 소리가 다 출력 되도록 하는 방법을 알고 싶습니다.
감사합니다.
2017-09-28
245
글번호 113171
답변완료
수식부탁드립니다
1.
당일 천정 포함 좌측 3번째 양 캔들 저가를 표시한다
당일 바닥 포함 좌측 3번째 음 캔들 고가를 표시한다
당일 천정 포함 좌측 3번째 양 캔들 저가와 당일 천정 하방 대칭을 표시한다
당일 바닥 포함 좌측 3번째 음 캔들 고가와 당일 바닥 상방 대칭을 표시한다
당일 천정 포함 우측 5번째 음 캔들 저가를 표시한다
당일 바닥 포함 우측 5번째 양 캔들 고가를 표시한다
당일 천정 포함 우측 5번째 음 캔들 저가와 당일 천정 하방 대칭을 표시한다
당일 바닥 포함 우측 5번째 양 캔들 고가와 당일 바닥 상방 대칭을 표시한다
2.
당일 천정 포함 좌측 3번째 양 캔들 저가를 붕괴하는 음 캔들 매도
당일 바닥 포함 좌측 3번째 음 캔들 고가를 돌파하는 양 캔들 매수
감사합니다
2017-09-28
238
글번호 113165