커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
8128
글번호 230811
답변완료
문의드립니다
아래지표식을 시스템식으로 만들어주시면 감사하겠습니다
Input:length(12);
Var:j(0),lastHiVal(0),lastLoVal(0),turnPntBit(""),TL1(0);
Array:valArr[10](0),barArr[10](0),turnPntArr[10]("");
For j = 0 To 9
{
barArr[j] = barArr[j] + 1;
}
Condition1 = Highest(H,length) == H and lastHiVal <> H;
Condition2 = Lowest(L,length) == L and lastLoVal <> L;
If Condition1 Then lastHiVal = H;
If Condition2 Then lastLoVal = L;
turnPntBit = "";
If Condition1 and Condition2 Then
{
If Max(valArr[1],valArr[2]) < H and Min(valArr[1],valArr[2]) > L Then
turnPntBit = "HiLo";
Else If Max(valArr[1],valArr[2]) < H Then turnPntBit = "Hi";
Else If Min(valArr[1],valArr[2]) > L Then turnPntBit = "Lo";
}
Else If Condition1 Then turnPntBit = "Hi";
Else If Condition2 Then turnPntBit = "Lo";
If turnPntBit <> "" Then
{
If turnPntBit == "HiLo" Then
{
valArr[1] = IFF(turnPntArr[1] == "Hi",H,L);
barArr[1] = 0;
TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
If turnPntArr[1] == "Hi" Then
turnPntBit = "Lo";
Else
turnPntBit = "Hi";
}
If turnPntBit <> turnPntArr[1] Then
{
for j = 8 downto 1
{
valArr[j+1] = valArr[j];
barArr[j+1] = barArr[j];
turnPntArr[j+1] = turnPntArr[j];
}
}
If turnPntBit <> turnPntArr[1] or
(turnPntBit == turnPntArr[1] and
((turnPntBit == "Hi" and valArr[1] < H) or
(turnPntBit == "Lo" and valArr[1] > L))) Then
{
valArr[1] = IFF(turnPntBit == "Hi",H,L);
barArr[1] = 0;
turnPntArr[1] = turnPntBit;
If turnPntArr[1][1] <> turnPntArr[1][0] Then
TL1 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],
sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
Else
TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
}
}
TL_SetSize(TL1,4);
TL_SetColor(TL1,GREEN);
Plot1(Highest(H,length));
Plot2(Lowest(L,length));
2017-01-16
179
글번호 105926
답변완료
질문드립니다.
dayindex~ 에서 조건 then으로하면
10캔들이내~ 와같이 캔들의 갯수에 제한을 두지안잖아요?
그렇다면 dayindex에서 상승후 하락한다.
혹은 상승하다가 하락한다. 이것을 로직으로는 어떻게 짤수있을까요? 물론 특정 캔들의 갯수 제한을 두지않고 dayindex값을 주듯이 유연하게요
2017-01-16
164
글번호 105925
답변완료
간단한 필터 수식 질문입니다.
안녕하세요~~
if data1(DayOfWeek(sdate)) == 1 and data2(DayOfWeek(date)) == 6 Then
T = 1;
else if data1(DayOfWeek(sdate)) >= 2 and data1(DayOfWeek(sdate)) == data2(DayOfWeek(date)) Then
T = 1;
Else
T = 0;
위의 수식은 현재 시점 기준 전일 다우가 열렷으면 T=1, 안열리면 T=0으로 저장하는 수식입니다. (여기서 알려주신 것입니다.)
그런데 여기서 현재 시점이 아니라, 전일 시점 기준으로 전일 다우가 열렸으면 T=1, 아니면 T=0으로 저장하는 수식을 만들려면 어떻게 해야할까요?
단순히 sdate와 date 옆에 [1]을 붙여서 해결하면 될거라 생각했는데,
data1은 1분봉이고, data2는 일봉 기준이다 보니.. 단순히 이렇게 한다고해서 해결이 안되더라고요.
위의 수식에서
data1에서 sdate[1]로 하면 1분봉 기준으로 한봉전이되고,
data2에서 date[1]로 하면 일봉 기준으로 한봉전이 되는것은 맞는 것인가요?
답변 부탁드리겠습니다.
감사합니다~
2017-01-16
186
글번호 105924
답변완료
수식 문의드립니다.
안녕하세요... 관리자님...
매수/매도 신호가 발생되면, 즉시 청산 주문이 나가게 하고 싶습니다.
예를들어,
매수 260.00 신호 발생하면(봉완성 기준으로)
신호 발생과 동시에,
청산 261.00 (매수가격보다 1포인트 높게 설정해서)
주문이 나가게 하고 싶습니다.
즉, 기다렸다가 조건이 만족되면 주문을 진입 하는 것이 아닌,
매수/매도 신호 발생후 바로 상기의 조건으로 청산 주문이 나가게 하고 싶습니다.
감사합니다.
2017-01-15
172
글번호 105923
운동좋아 님에 의해서 삭제되었습니다.
2017-01-15
0
글번호 105922
답변완료
3분봉에서...
사용자 함수 Ma7은 0~100사이의 진폭을 가지고 움직이는 지표입니다
Ma7을 3분봉에서 30분봉의 값으로 구현코자 합니다
단순하게 3분봉의 10배라고 생각하고 Ma(Ma7,10)으로 했더니
실제 30분봉차트의 Ma7값과는 다른값이 나옵니다
물론 data2를 사용하면 제대로 나오지만
산식으로 해결코자 합니다
어떻게 해야 할까요?
2017-01-16
169
글번호 105921
답변완료
거래량지표 캔들에표시
1,이전5개봉의 거래량의 합보다 현재봉의 거래량이 200%이상일때 양봉일경우 양봉중심에 빨강색줄긋기,
2,이전5개봉의 거래량의 합보다 현재봉의 거래량이 200%이상일때 음봉일경우 음봉중심에 검정색줄긋기를 부탁드림니다
2017-01-15
225
글번호 105920
답변완료
안녕하세요?
안녕하세요?
저번엔 전화까지 해주시면서 자세한 설명 해주신 부분에 대해 진심으로 감사드립니다.
1.
추가진입(b2)가 발생하지 않아 게시판을 우연히 검색하다 설정->파라미딩에서 다른진입신호만 허용 하니까
추가진입이 되는데요 (그림참조)
검정박스 보시면 b1이 두계약이 진입이 되면 추가진입(b2)가 발생하지 않게 수정 부탁드립니다.
(최대 잔고가 2계약)
2.청산식을 아래와 같이 수정 부탁드립니다.
익절:20
손절:10
본청:+21틱 수익후 진입가의 +1틱
예를들어 (그림의 빨간박스참조)
1) 추가진입이 발생하지 않을때 예시.
진입 : b1 두계약진입 50.00 (그림의 A)
익절 : 50.20 이면 1 계약만 익절(dl1)
손절 : 49.90 이면 손절이 2 계약.
본청 : 50.01 이면 1 계약 본청.
2) 추가진입이 발생할경우의 예시
b2 50.50 의 한계약 추가진입 총 두계약.(그림의 B)
진입단가
b1 : 50.00
b2 : 50.50
익절 : 50.70 이면 두계약청산.(그림의 B)
손절 : 50.30 이면 두계약청산.(그림의 C)
b2의 진입가의 기준으로 b1의 진입한 1 계약도 함께 청산되어야 합니다.(올청산)
3) 최대진입횟수 3으로 지정이 되도 2번 조건이 유지.
감사합니다.
----------------------------------------------------------------------------------------------------
input : 최대진입횟수(2);#첫진입포함 최대 횟수로 지정
var : Xcond(false),HH(0);
var1 = ma(c,5);
var2 = ma(c,20);
if TotalTrades > TotalTrades[1] Then{
if (IsExitName("dl1",1) == true or IsExitName("dl2",1) == true or IsExitName("bl1",1) or IsExitName("bl2",1)) Then
Xcond = True;
Else
Xcond = false;
}
if MarketPosition == 0 and (Xcond == false or (MarketPosition == 1 and MaxEntries == 1) or (Xcond == true and BarsSinceExit(1) >= 1)) then {
If CrossUP(var1, Var2) Then {
buy("b1",AtStop,NextBarOpen+PriceScale*1,2);
}
}
if MarketPosition == 1 then{
if MaxEntries >= 1 and MaxEntries < 최대진입횟수 and CrossUP(var1, Var2) Then {
buy("b2",AtStop,NextBarOpen+PriceScale*3,1);
}
if CurrentContracts > CurrentContracts[1] Then
HH = H;
if H > HH Then
HH = H;
if MaxEntries == 1 Then{
MessageLog("%.2f",LatestEntryPrice(0));
ExitLong("dl1",atlimit,LatestEntryPrice(0)+PriceScale*20,"",1,1);
}
if MaxEntries == 2 Then
ExitLong("bp2",atlimit,LatestEntryPrice(0)+PriceScale*20);
if HH < LatestEntryPrice(0)+PriceScale*13 Then
ExitLong("bl1",AtStop,LatestEntryPrice(0)-PriceScale*10);
if HH >= LatestEntryPrice(0)+PriceScale*13 Then
ExitLong("bl2",AtStop,LatestEntryPrice(0)+PriceScale*1);
}
2017-01-15
205
글번호 105919
yes 님에 의해서 삭제되었습니다.
2017-01-15
3
글번호 105918