커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7680
글번호 230811
답변완료
수식 수정부탁드립니다.
1.
안녕하세요.
수식 수정좀 부탁드립니다.
아래 진입금지 수식을 기존 수식에 넣어달라고 햇는데
여기서 0.42% 수익은 단순히 진입후 0.42% 의 단순 목표수익이 아니라 진입후
최저가나 최고가 대비
0.42% 상승 하락을 말씀드렸는데요.
다시 수정 부탁드립니다. 기존 수식이 하나더 추가되었습니다.
만약에 수식이 복잡하면 강제청산 설정에서 <최대수익대비 하락>에서 두번째칸에
~%수익하락 부분에 0.42%로 설정하고 아래 조건을 만족하도록 수식 작성해주셔도
됩니다. 이방법이 가능하다면요....
1. 매수진입후
최저가격대비
0.42% 이상 상승시 스탑으로 청산히되 이때 청산후는
선물이 60이평 아래면 그 이후 추가로 신규 매수주문은 진입금지.
2. 매도진입후
최고가격대비
0.42% 이하 하락시 스탑으로 청산하되 이때 청산후는
선물이 60이평 위이면 그 이후 추가로 신규 매도주문은 진입금지.
if
data1(dayindex+1 >= 1 and dayindex+1 <=
20) then{
if C
> Max(mav1,mav2,mav3)
Then{
if
data2(iff(C>O or (C==O and C>=C[1]),1,0))+
data3(iff(C>O
or (C==O and C>=C[1]),1,0))+
data4(iff(C>O
or (C==O and C>=C[1]),1,0)) >= 2 Then
buy("b3_1");
}
if C
< Min(mav1,mav2,mav3)
Then{
if
data2(iff(C<O or (C==O and C<C[1]),1,0))+
data3(iff(C<O
or (C==O and C<C[1]),1,0))+
data4(iff(C<O
or (C==O and C<C[1]),1,0)) >= 2 Then
Sell("s3_1");
}
}
if data1(dayindex+1 >=5 and dayindex+1 <= 30) then{
if C <=dayopen and data3(C>OpenD(0))) and data1(C> ma(c,15))
then{
buy("b1-1");
}
if C >=dayopen And
data3(C<OpenD(0))
and data1(C< ma(c,15))
then{
Sell("s1-1");
}
}
답변을 아래와 같이 주셨는데
식 내용중 !(IsExitName("stopprofittarget",1) and C < ma(C,60)) 부분은 직전 청산이 목표수익으로 청산되고 현재가가 60이평보다 작은 상태 이외의 경우의 의미입니다. 즉, 직전 청산이 목표수익 이외의 방법으로 청산되었거나 종가가 60이평보다 큰 경우가 이에 해당됩니다.
[시스템식]
if data1(dayindex+1 >= 1 and dayindex+1 <= 20) and then{
if C > Max(mav1,mav2,mav3) !(IsExitName("stopprofittarget",1) and C < ma(C,60)) Then{
if data2(iff(C>O or (C==O and C>=C[1]),1,0))+
data3(iff(C>O or (C==O and C>=C[1]),1,0))+
data4(iff(C>O or (C==O and C>=C[1]),1,0)) >= 2 Then
buy("b3_1");
}
if C < Min(mav1,mav2,mav3) !(IsExitName("stopprofittarget",1) and C > ma(C,60)) Then{
if data2(iff(C<O or (C==O and C<C[1]),1,0))+
data3(iff(C<O or (C==O and C<C[1]),1,0))+
data4(iff(C<O or (C==O and C<C[1]),1,0)) >= 2 Then
Sell("s3_1");
}
}
SetStopProfittarget(0.42);
2012-02-08
435
글번호 47498
답변완료
두가지 조건성립에 대한 지표설정
조건A와 B가 있는데 조건A가 먼저 만족된 후에 조건B가 만족되면 신호가 발생하는 방법을 알고 싶습니다. 감사합니다.
2012-02-07
385
글번호 47497
답변완료
당일 이전 거래
IsEntryName(“진입명”,N)
이전의 거래의 이름에 따라 조건을 주는 것을 써보려고 하는데요
이 함수가 전일의 진입명까지 인식하는 것 같아 쓰기가 불편하더라구요.
오늘의 이전 거래를 표현하려면 어떻게 해야 할까요?
2012-02-07
385
글번호 47485
답변완료
수정해주세요---------
input :가격(260),매수매도(1),최소익틱(2),손절틱(10), 익절틱(10),눌림틱(3);
var : cnt(0),count(0);
count = 0;
for cnt = 0 to 10{
if sdate == EntryDate(cnt) Then
count = count+1;
}
if 매수매도 == 1 Then{
if (count == 0 ) or (count >= 1 and IsExitName("b본",1) == true and lowest(L,BarsSinceExit(1)) <= 가격-PriceScale*눌림틱) Then {
if L > 가격 Then
buy("b1",atlimit,가격);
if H < 가격 Then
buy("b2",AtStop,가격);
}
}
if MarketPosition == 1 Then{
ExitLong("BP",atlimit,가격+PriceScale*익절틱);
if highest(H,BarsSinceEntry) < EntryPrice+PriceScale*최소익틱 Then
ExitLong("BL",AtStop,가격-PriceScale*손절틱);
if highest(H,BarsSinceEntry) >= EntryPrice+PriceScale*최소익틱 Then
ExitLong("B본",AtStop,가격);
}
if 매수매도 == -1 Then{
if (count == 0 ) or (count >= 1 and IsExitName("S본",1) == true and lowest(L,BarsSinceExit(1)) <= 가격-PriceScale*눌림틱) Then {
if H < 가격 Then
Sell("s1",AtLimit,가격);
if L > 가격 Then
Sell("s2",AtStop,가격);
}
}
if MarketPosition == -1 Then{
ExitShort("SP",AtLimit,가격-PriceScale*익절틱);
if Lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*최소익틱 Then
ExitShort("SL",AtStop,가격+PriceScale*손절틱);
if Lowest(L,BarsSinceEntry) <= EntryPrice+PriceScale*최소익틱 Then
ExitShort("S본",AtStop,가격);
}
위식은 2틱이상이익 나면 진입가에 청산하게 되있는데요
이를
4틱이상 수익나면 진입가+1틱 이익나게 청산
5틱이상 수익나면 진입가+2틱 이익나게 청산
6틱이상 수익나면 진입가+2틱 이익나게 청산
7틱이상 수익나면 진입가+2틱 이익나게 청산
8틱이상 수익나면 진입가+3틱 이익나게 청산
수고하세요
2012-02-07
429
글번호 47482
답변완료
DMI를 사용하려고 하는데 잘 crossup이 안됩니다
DMI를 사용해서
PDI가 MDI를 상향 돌파할때
MDI가 PDI를 하향 돌파할때
를 찾아내려고 하는데요 crossup과 crossdown을 쓰는데 잘 안잡힙니다.
crossup이 안잡혀서 이를 풀어서(yes language 도움말 참조) if문에 적용도 해보았는데
역시나 안되네요
하지만 리딩스타에서 DMI지표를 적용시키면 상향돌파와 하향돌파하는 구간이 있거든요..답변 부탁드립니다.
아래는 코드입니다.
Input : Period(14);
value1 = DIPlus(Period);
value2 = DIMinus(Period);
//if CrossUp(plusDI, minusDI) Then
if (value1 > value2) and (value1[1] <= value2[1]) Then
{
Alert("adx");
ADX_sig = 1; // plusDI가 minusDI를 상향돌파하면 ADX_sig 매수 신호
}
Else
{
ADX_sig = 0;
}
if (value1 < value2) and (value1[1] >= value2[1]) Then
{
Alert("adx");
ADX_sig = -1; // plusDI가 minusDI를 하향돌파하면 ADX_sig 매도 신호
}
Else
{
ADX_sig = 0;
}
2012-02-07
507
글번호 47480
답변완료
바쁘신데 정말 죄송합니다...
매번 감사드립니다.
아래 수식은 저번에 해주신 로직입니다.
다름이 아니오라 저 수식에서 매수매도가 반복적으로 이뤄지지 않고 매수신호는 제한없이 진입하고 매도포지션 잡지않고 저점지지선을 손절선으로 바꿔 주시면 대단이 고맙겠습니다.
if dayindex+1 == 10 Then{
var1 = H;
var2 = L;
}
if crossup(c,var1) Then
buy("b",OnClose,def,4);
if CrossDown(c,var2) Then
sell("s",OnClose,def,4);
SetStopEndofday(150000);
즐거운 하루되세요
> 마켓마스터 님이 쓴 글입니다.
> 제목 : 수식부탁 드립니다.
> 연결선물분봉차트에서 10번째켄들의 고점 저점을 기준으로 고점 돌파시 매수 저점 돌파시 매도. 매매횟수 제한 없고 계약수4계약동일진입 3시00분청산. 수식 부탁 드립니다.
2012-02-07
412
글번호 47478
답변완료
죄송한데 질문좀요ㅠㅠ
볼린저밴드 하단선에 닿을때 매수주문 넣는건 식이 어케 되나요ㅠㅠ?
아래에서 뚫고 올라오든
위에서 떨어지다가 닿든 상관없이요..ㅡㅡㅋ
그리고 매수하는거 보니까 뚫는 순간 사는게 아니라 뚫고나서 그 봉이 끝날때 사는거 같던데
뚫는순간 살수는 없나요??
2012-02-07
367
글번호 47477
lims114 님에 의해서 삭제되었습니다.
2012-02-07
8
글번호 47473
답변완료
부탁드립니다---------
3연속 양봉이나,음봉이면서 5이평이 3연속 전봉과 차이가 0.3이상 나면
다음봉에 "점" 찍어주세요
2012-02-07
343
글번호 47470