커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4575
글번호 230811
답변완료
수식문의드립니다.
분봉상에서
2봉전,1봉전,0봉(현재봉) 현재봉포함한 3개의 캔들을 비교하려고하는데요
조건은 아래와 같습니다.
2봉전,1봉전,0봉 모두 볼린져밴드 상단선보다 종가가 높고
2봉전고가보다 1봉전고가가 같거나크고
1봉전 고가보다 0봉(현재봉)의 고가가 크거나 같을때
시그널띄우고싶습니다. 답변바랍니다.
2016-07-22
171
글번호 100313
답변완료
수식 수정
안녕하세요.. 내용 수정 부탁드립니다.
아래 수식에서 매수 매도 신호가
- 매수신호는 ML이 30 이하였을 때만
- 매도신호는 MH가 70 이상이었을 때만 뜨도록 하고자 합니다.
---------------------------------------------------------------------
Input : P(9),Period(60),Highperiod(30);
Var : RSIV(0),LL(0),HH(0),ML(0),MH(0);
RSIV = RSI(P);
ML = lowest(RSIV,Period);
MH = highest(RSIV,Period);
LL = Lowest(L,Period);
HH = highest(H,Period);
#매수진입/매도청산
if RSIV > RSIV[1] and RSIV[1] <= RSIV[2] and ML[2] < RSIV[1] and
(L < LL[1] or L[1] < LL[2] or L[2] < LL[3]) Then
buy();
#매도진입/매수청산
if RSIV < RSIV[1]and RSIV[1] >= RSIV[2] and MH[2] > RSIV[1]and
(H > HH[1] or H[1] > HH[2] or H[2] > HH[3]) Then
sell();
2016-07-22
159
글번호 100309
답변완료
진입후 c값이 entryPrice를 중심으로 오르내리락거릴때.......
진입후 entryPrice를 중심으로 오르내리락거릴때 이걸 어떻게 표현하나요?
즉 현재 BarsSinceEntry>13이고
BarsSinceEntry==5일때 CountIF(C<EntryPrice,5)==0 이고
5<BarsSinceEntry<=10일때 CountIF(C<EntryPrice,5)>=2 이고
현재 C>entryPrice이고 음봉일때 청산하는걸 어떻게 해야하나요?
2016-07-22
170
글번호 100299
답변완료
다시한번만부탁합니다
input : HP(5),LP(5);
var : cnt(0),HH(0),LL(0);
HH = dayhigh(1);
for cnt = 1 to HP{
if dayhigh(cnt) > HH Then
HH = dayhigh(cnt);
}
LL = dayLow(1);
for cnt = 1 to LP{
if daylow(cnt) < LL Then
LL = dayLow(cnt);
}
if crossup(c,HH) then
buy("b");
if CrossDown(c,LL) Then
sell("s");
input : AtrMult(5), AtrPeriod(5);
var : AtrVal(0), posHigh(0), posLow(0);
ATRVal = ATR(AtrPeriod) * AtrMult;
PosHigh = Highest(H,BarssinceEntry+2);
PosLow = Lowest(L,BarsSinceEntry+2);
#5일고가와 5일저가사이 추격상하 매매 금지
If MarketPosition == -1 and PosLow + ATRVal > HH Then
buy("ATR6", AtStop, PosLow + ATRVal);
If MarketPosition == 1 and PosHigh - ATRVal < LL Then
sell("ATR5", AtStop, PosHigh - ATRVal);
If MarketPosition == 0 and Lowest(L,BarsSinceExit(1)+1) + ATRVal > HH Then
buy("ATR8", AtStop, Lowest(L,BarsSinceExit(1)+1) + ATRVal);
If MarketPosition == 0 and Highest(H,BarsSinceExit(1)+1) - ATRVal < LL Then
sell("ATR7", AtStop, Highest(H,BarsSinceExit(1)+1) - ATRVal);
수정 한식입니다
그래도 5일 고가와저가사이에서 추격매매신호가나오네요
혹다른방법은 없는지요 부탁드림니다
죄송합니다
2016-07-22
146
글번호 100294
답변완료
RSI
안녕하세요.
RSI 하단기준선을 28~30, 상방기준선을 70~72로 넙혀서 신호가 뜨게 하고 싶습니다.
수식 변환 도와주십시오.
Input : Period(14), LPercent(30), SPercent(70);
Var : value(0);
value = RSI(Period);
# 매수/매도청산
If CrossUP(value, LPercent) Then
{
Buy();
}
# 매도/매수청산
If CrossDown(value, SPercent) Then
{
Sell();
}
감사합니다.
2016-07-22
173
글번호 100293
답변완료
문의
안녕하세요
프로그램에서 전체마이너스면 선물매도진입 플러스이면 선물매수진입 수식부탁합니다
감사합니다
2016-07-22
154
글번호 100292
답변완료
수식문의
안녕하세요
하기와 같이 이평선 매매를 하고 있습니다.
input : short(5),mid(20),long(60);
var1 = ma(c,short);
var2 = ma(c,mid);
var3 = ma(c,long);
Condition1 = var1 > var2 and var2 > var3;#정배열이면 true 아니면 false
Condition2 = var1 < var2 and var2 < var3;#역배열이면 true 아니면 false
#정배열이 아니었다가 정배열이 되면 매수진입
if Condition1 == true and Condition1[1] == false Then
buy();
#역배열이 아니었다가 역배열이 되면 매도진입
if Condition2 == true and Condition2[1] == false Then
sell();
상기 식에 볼린져 밴드를 추가 하고 싶습니다.
매수 : 볼린져 벤드 상단에 해당 봉이 접촉을 했거나 접촉하고 있으면 매수 금지
매도 : 볼린져 벤드 하단에 해당 봉이 접촉을 했거나 접촉하고 매도 금지..
상기 두가지를 추가 할 수 있는지 확인 부탁드립니다.
감사합니다.
2016-07-22
146
글번호 100289
답변완료
배열변수 재진입 제한
안녕하세요. 더운 날씨에 항상 고생이 많으십니다.
배열변수를 활용하여 패턴을 만들어 매매를 해보려하고 있습니다.
최초 진입후 정해진 값에 손절이 나갈경우 손절 난 시점에서부터 새롭게 시스템이 진입 패턴을 탐지했으면 좋겠는데요. 실제로 해보니 손절이 나더라도 손절 시점과 관련없이 배열패턴이 포칙되면 바로 진입을 해버리는 단점이 있었습니다. 그러다보니 연속 손절나고 그러고 있습니다.
일단 진입후 손절이 나면 손절난 직후 배열변수부터 다시 패턴을 탐지하는 조건을 만들어놓고 싶은데요.
예를들어
valarr[5]valarr[4]valarr[3]valarr[2]valarr[1]
이러한 배열상태에서 1,2,3으로 특정 패턴을 제가 설정해놓고 시스템이 포착 손절났을경우 손절난 캔들이후 부터 시스템이 다시 패턴을 포착하게끔 하고 싶습니다. 기존의 경우 손절이나면 2번이든3번이든 그앞쪽이든 진입된 시점과 손절난 시점 관계없이 패턴이 포착되면 바로 재진입을 해버립니다.
도움 부탁드립니다. 감사합니다.
2016-07-22
158
글번호 100287
답변완료
문의
안녕하세요
노고에 항상 감사드립니다
우선 해외선물에서 snp와 골드나 오일이 틱수 계산이 좀 다른가요?
아래 수식으로 s&p 선물은 틱의 계산이 잘못되어 청산자리가 엉망인데 어떻게 적용하면 되는건지 설명 부탁드리겠습니다
중요한건 지금부터 말씀드리는 내용으로 아래 수식을 변경 부탁드립니다
아래 수식은 이평선이 크로스하면 진입하여 장의 시간에 따라 묙표틱 P1이나 혹은 P2에 청산하거나 반대신호에 청산하는 수식이고, 최초 진입하여 손실이 나면 한 계약씩 추가하여 최대 n계약까지 진입하는 수식입니다
여기서 모든 조건은 그대로하고, 첫 진입의 조건만을 바꾸려합니다
우선 이평 크로스 후 목표 틱수 P1, P2가 도달하지 않으면 실패로 간주하고
처음 이평이 크로스 되면 바로 진입하는게 아니라 이전에 두번의 실패가 확인되면 세번째 이평 크로스부터 첫진입을 하는 수식이 가능할까요?
예를들어 직전 신호에서 목표가 청산이 되었다면,
이제 기다리는 신호는 첫 이평크로스가 나오는게 목표가를 도달하지 못하고
두번째로 반대 신호가 나옵니다.
그리고 나서 역시 목표가를 도달하지 못하고
세번째로 반대 신호가 나오는 시점을 첫 진입의 조건이 되는것입니다
이렇게 해서 첫진입이 된 이후는 목표가 청산이 되기 전까지는 N계약의 추가진입이 적용되어야 합니다
그리고 위에서 언급한 시간별로 다른 목표가와 실패시는 그대로 모두 적용되어야 합니다
좀 복잡한것 같은데 잘 부탁드리겠습니다
감사합니다^^
---------------------------------------------------------------------------------------
input : L1(15),P1(15),L2(20),P2(20),N(5);
Var : vol(0);
var1 = ma(c,5);
var2 = ma(c,20);
if MarketPosition != 0 Then{
if PositionProfit < 0 Then
Vol = MaxContracts*2;
Else
vol = 1;
}
if MarketPosition == 0 Then{
if PositionProfit(1) < 0 Then
Vol = MaxContracts(1)*2;
Else
vol = 1;
}
if MarketPosition <= 0 and crossup(var1,var2) Then
buy("b1");
if MarketPosition == 1 Then{
if stime >= 80000 and stime < 153000 Then{
exitlong("BL1",AtStop,EntryPrice-PriceScale*L1);
exitlong("BP1",AtStop,EntryPrice+PriceScale*P1);
}
Else{
exitlong("BL2",AtStop,EntryPrice-PriceScale*L2);
exitlong("BP2",AtStop,EntryPrice+PriceScale*P2);
}
}
if MarketPosition >= 0 and CrossDown(var1,var2) Then
sell("s1");
if MarketPosition == -1 Then{
if stime >= 80000 and stime < 153000 Then{
ExitShort("SL1",AtStop,EntryPrice+PriceScale*L1);
ExitShort("SP1",AtStop,EntryPrice-PriceScale*P1);
}
Else{
ExitShort("SL2",AtStop,EntryPrice+PriceScale*L2);
ExitShort("SP2",AtStop,EntryPrice-PriceScale*P2);
}
}
2016-07-22
175
글번호 100285