커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7086
글번호 230811
답변완료
시스템 질문입니다
지수선물 적용예정 입니다
1.N봉 전의 주가 보다 현재 주가가 더 높으면 매수
N봉 전의 주가 보다 현재 주가가 더 낮으면 매도
2. N일 전의 주가 보다 현재 주가가 더 높으면 매수
N일 전의 주가 보다 현재 주가가 더 낮으면 매도
신속한 답변 바랍니다
2021-06-22
1872
글번호 150167
답변완료
수식 질문드립니다.
예를들어서 현재 buy 포지션 유지중인데,
익절이 20 pt 입니다.
그런데 익절 나오기전에 또 buy 신호가 뜬다면
여기서 추가로 한개 더 진입하게할수없나요?
사진에서 피라미딩하용하면 하루에 몰아서 다 때려넣는데,
이렇게 말고
신호뜨면 하루 1개만 추가진입하게하고 싶습니다.
반대신호 뜨면 다 청산하고 다시 한개만 진입하고,,
data
---------------------
#
input : StartTime(90500),EndTime(151000);
Input : s1(120), s2(200);
//input : s11(28),s12(265);
input : 손절(5.6);
input : 익절(30.2);
//input : way(9),road(-8),road2(-8);
//input : 최소이익(2),손실범위(0.1);
input : bf11(0.2),sf11(-0.85),bf12(0.85),sf12(-0.5);
input : bf13(0.8),sf13(-0.8),bf14(0.5),sf14(-0.32);
//var : condi(0);
var : Tcond(false,Data1);
var : C2(0,Data2);
var : C3(0,Data3);
var : C4(0,Data4);
var : C5(0,Data5);
var : C6(0,Data6);
var : C7(0,Data7);
value1 = ma(c2,s1);
value2 = ma(c2,s2);
//value12 = Ma(c2,600);
//value13 = Ma(c3,600);
//value14 = Ma(c4,600);
//value15 = Ma(c5,600);
value12 = Average(c2,600);
value13 = Average(c3,600);
value14 = Average(c4,600)*4;
value15 = Average(c5,600)*4;
if (sdate != sdate[1] and stime >= EndTime) or
(sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then
Tcond = False;
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
Tcond = true;
C2 = Data2(c);
C3 = Data3(c);
C4 = Data4(c);
C5 = Data5(c);
C6 = Data6(c);
C7 = Data7(c);
if Tcond == true Then
{
If #CrossUp(Value3,0)
value13 < -0.32 and (value14 < -0.32 or value14>0.32)
//and c6+c7>road #39.62
//and c2<bf11
//and c3<bf12 #47.86
//and c4<bf13
//and c5<bf14
Then
{
Buy();
}
If #CrossDown(Value3,0)
value13 > 0.32 and (value14 < -0.32 or value14 > 0.32)
//and c6+c7<-road
//and c2>sf11
//and c3>sf12
//and c4>sf13
//and c5>sf14
Then
{
Sell();
}
}
#
#SetStopEndofday(EndTime);
SetStoploss(손절,PointStop);
SetStopProfittarget(익절,PointStop);
#SetStopContract();#생략가능
#SetStopTrailing(손실범위 , 최소이익 , PointStop);
2021-06-22
1679
글번호 150161
답변완료
수식작성
input : StartTime(70000),EndTime(55000),Xtime(55500);
var : Tcond(false),entry(0);
var : B1(0),B2(0),BX1(0),BX2(0);
var : S1(0),S2(0),SX1(0),SX2(0);
if sdate != sDate[1] Then
SetStopEndofday(Xtime);
if (sdate != sdate[1] and stime >= EndTime) or
(sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then
Tcond = False;
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
{
Tcond = true;
SetStopEndofday(0);
entry = 0;
}
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
B1 = DayLow(1)+(DayHigh(1)-DayLow(1))*5.638;
B2 = DayLow(1)+(DayHigh(1)-DayLow(1))*5.939;
BX1 = DayLow(1)+(DayHigh(1)-DayLow(1))*1.400;
BX2 = DayHigh(1);
S1 = DayHigh(1)+(DayHigh(1)-DayLow(1))*-0.118;
S2 = DayHigh(1)+(DayHigh(1)-DayLow(1))*-0.230;
SX1 = DayLow(1)+(DayHigh(1)-DayLow(1))*-0.236;
SX2 = DayLow(1)+(DayHigh(1)-DayLow(1))*-0.764;
if Tcond == true and entry < 1 Then
{
if (MarketPosition == 0 or (MarketPosition == 1 and MaxEntries == 1)) Then
{
if L > B1 Then
Buy("b1",AtLimit,B1);
if L > B2 Then
Buy("b2",AtLimit,B2);
}
if MarketPosition == 1 Then
{
ExitLong("bx1",AtLimit,BX1,"B1");
ExitLong("bx2",AtLimit,BX2,"B2");
}
if (MarketPosition == 0 or (MarketPosition == -1 and MaxEntries == 1)) Then
{
if H < S1 Then
Sell("S1",AtLimit,S1);
if H < S2 Then
Sell("s2",AtLimit,S2);
}
if MarketPosition == -1 Then
{
ExitShort("sx1",AtLimit,SX1,"S1");
ExitShort("sx2",AtLimit,SX2,"S2");
}
}
SetStopProfittarget(PriceScale*300,PointStop);
SetStopLoss(PriceScale*30,PointStop);
--------------------------------
늘 감사드립니다.
s1 (-0.118) 진입후 전일 피보나치 전체 수열의 0.236로 청산되는
수식 작성에 어려움이 있네요
수정 부탁드립니다.
2021-06-22
1868
글번호 150160
답변완료
월봉의 켈트너 채널, 볼린저 밴드
안녕하세요?
월봉의 켈트너 채널, 볼린저 밴드를 일봉에서 사용하고 싶은데요.
공식 도움 부탁드립니다.
너무 오래걸리시는 건이면 패스해주세요...
감사합니다~
2021-06-22
1939
글번호 150159
답변완료
시스템식 문의 드립니다.
예전에 요청드렸던 시스템 식입니다.
여기에 추가적인 조건을 넣고 싶은데 계속 실패해서 이렇게 요청드리게 되었습니다.
위 그림에도 적혀있다 시피
1차 매수 타점은 당일 시가 X 0.97 (-3%)하락했을 경우 인데
전일 상한가를 쳤을 경우 또는 당일 오후 1시 이후 에는
1차 매수 타점이 당일 시가 X 0.94 (-6 %)
이 되록 바꾸고 싶습니다.
지난번에 요청드린 시스템식도 같이 올려드리오니 부탁드리겠습니다.
항상 감사드리고 있습니다.
----------------------------------------------
var : entry(0),AP(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 MarketPosition == 0 Then
{
if entry == 0 or
(entry >= 1 and (sTime < 115000 or Highest(H,BarsSinceExit(1)) < AP*1.06) and IsExitName("Bp1",1) == true) Then
Buy("b1",AtLimit,DayOpen*0.97);
}
if (MarketPosition == 1 and MaxEntries == 1 and IsEntryName("b1") == true) or
(MarketPosition == 0 and entry >= 1 and IsExitName("Bp2",1) == true and (sTime < 115000 or Highest(H,BarsSinceExit(1)) < AP*1.06)) Then
Buy("b2",AtLimit,DayOpen*0.94);
if (MarketPosition == 1 and MaxEntries == 2 and IsEntryName("b1") == true) or
(MarketPosition == 1 and MaxEntries == 1 and IsEntryName("b2") == true) Then
Buy("b3",AtLimit,DayOpen*0.91);
if MarketPosition == 1 Then
{
AP = AvgEntryPrice;
if MaxEntries == 1 and IsEntryName("b1") == true Then
{
ExitLong("bp1",AtLimit,AP*1.02);
if TimeToMinutes(sTime) >= TimeToMinutes(EntryTime)+60 Then
ExitLong("bx1");
}
if (MaxEntries == 2 and IsEntryName("b1") == true) or
(MaxEntries == 1 and IsEntryName("b2") == true) Then
{
ExitLong("bp2",AtLimit,AP*1.01);
if TimeToMinutes(sTime) >= TimeToMinutes(EntryTime)+60 Then
ExitLong("bx2");
}
if (MaxEntries == 3 and IsEntryName("b1") == true) or
(MaxEntries == 2 and IsEntryName("b2") == true) Then
{
ExitLong("bp3",AtLimit,AP*1.005);
if TimeToMinutes(sTime) >= TimeToMinutes(EntryTime)+60 Then
ExitLong("bx3");
}
ExitLong("bl",AtStop,DayOpen*0.88);
}
SetStopEndofday(151800);
-----------------------------------------------------------------------------
2022-02-27
2202
글번호 150158
답변완료
종목 검색 후 특정 조건 연동 관련 질문
안녕하세요,
1) 3분봉으로 A 조건에 부합하는지 검색
2) 당일 일봉 B 조건에도 부합 (예. 현재가가 일봉 5일선 위에 있는지 확인 if(Close > ma(c,50))
1) 2) 조건 둘다 해당하는 경우에만 대응을 하려고 하는데요,
예스스팟으로 다음과 같이 구현이 될까요?
1. 1) 조건으로 검색
2. 검색결과로 나온 종목들에 2)를 시스템으로 적용하여 조건부합시 매수신호 발생
3. 매수신호 받아서 대응 처리
이런식으로 테스트로 만들어봤는데
일봉으로 시스템을 적용하면 적용시점에 바로 조건부합해서 매수신호가 들어가도
예스스팟에서 매수신호를 받지 못하는것 같아서요..
분봉은 해당분이 끝나면 봉이 완성되는데 일봉은 그날 장마감이 되어야 완성되는것 같아서..
이런 경우 어떻게 풀면 좋을지 조언 부탁드립니다.
2021-06-22
1969
글번호 150157
답변완료
당일 종가의 바로 직전 호가를 구하는 식을 알고 싶습니다.
당일종가 : C[0]
직전호가 : 동시호가가 시작되기 직전의 호가
직전호가로 미리 의사결정을 하고 당일종가로 매매주문을 내려는 의도입니다.
2021-06-21
1638
글번호 150156
답변완료
72976번 재문의 합니다
항상감사합니다
72976호
2번수식 확인 부탁드립니다
시그널에 나오지 않네요?
수식 요약하면
스토캐스틱 과열구간에서 10일 이평선과 60이평선 골든시 매수시그널
스토캐스틱 침체구간에서 10일 이평선과 60이평선 데드시 매도시그널입니다
그리고 지표식 삼각표시로도 부탁드립니다
2021-06-21
1850
글번호 150155
답변완료
문의
외부변수 Period1 ,p1,period3
수식1
LT=lowest(L,P1);
HT=highest(H,P1);
NewH=valuewhen(1,H>HT(1),H);
NewL=valuewhen(1,L<LT(1),L);
T=ma(c,period3);
Z=(NewL==low(1)&&NewL<low) or (NewH== high(1) && NewH>high);
SL=valuewhen(1,Z,T);
valuewhen(1,SL!=SL(1),ma(c,period3))
수식2
t1=ma(c,period1);
x=valuewhen(1,crossdown(c,t1),
highestsince(1,crossup(c,t1),t1));
수식3
t1=ma(c,period1);
x=valuewhen(1,crossup(c,t1),
lowestsince(1,crossdown(c,t1),t1));
부탁드립니다
2021-06-21
2012
글번호 150154