커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4326
글번호 230811
답변완료
수식작성 부탁드립니다.
안녕하세요.
이번에 요청드릴 수식은
매수진입 : 일목균형표 구름대가 양운 and
TurnLen 5 일때 전환선과 TurnLen 9 일때 기준선이 정배열
20 과 120선이 상승 and
DI+ > DI-
매도진입 : 일목균형표 구름대가 음운 and
TurnLen 5 일때 전환선과 TurnLen 9 일때 기준선이 역배열
20 과 120선이 하락 and
DI+ < DI-
감사합니다.
수고하세요
2017-12-05
130
글번호 114750
답변완료
수식 문의
안녕하세요
하기 수식에서 수정사항이 있어서 요청드립니다.
검토 부탁드립니다.
Input : shortPeriod(12), longPeriod(26), Period(9);
var : MACDV1(0,data1),MACDS1(0,data1);
var : MACDV2(0,data2),MACDS2(0,data2);
var : BBup(0),BBdn(0);
MACDV1 = data1(MACD(shortPeriod, longPeriod));
MACDS1 = data1(ema(MACDV1, Period));
MACDV2 = data2(MACD(shortPeriod, longPeriod));
MACDS2 = data2(ema(MACDV2, Period));
If CrossUP(MACDV1, MACDS1) Then
{
buy("bMACD1");
}
If CrossDown(MACDV1, MACDS1) Then
{
sell("sMACD1");
}
If CrossUP(MACDV2, MACDS2) Then
{
buy("bMACD2");
}
If CrossDown(MACDV2, MACDS2) Then
{
sell("sMACD2");
}
모든 매수는 볼린져 밴드 중앙이평 10틱 아래에서 시작하는 것만 적용되도록 부탁드립니다.
모든 매도는 볼린져 밴드 중앙이평 10틱 위에서 시작하는 것만 적용되도록 부탁드립니다.
각각의 data 볼린져 중앙이평을 기준으로 합니다.
감사합니다.
2017-12-05
119
글번호 114749
답변완료
수식문의요
안녕하세요 키움수식
M=(H+L)/2;
M1=(H(1)+L(1))/2;
sum(if(M>M1,V,if(M<M(1),-V,0)))
변경가능한가요 궁금합니다
2017-12-05
150
글번호 114748
답변완료
수식 문의
안녕하세요
하기 보내주신 답변 잘 받았습니다.
죄송하지만, 다시 질문 드립니다.
1. 말씀하신대로 가능하지 않다는 것을 알겠습니다.
하기 방법은 성립되는지 확인 부탁드립니다.
- 가격이 볼린져 밴드 상단에 닿을때, 밴드 하단 가격만 보고 같거나 높아지면,
즉 하단밴드가 상승하면 매도 진입하는 수식이 가능한지요?
상단 밴드는 고려하지 않고 하단밴드만 고려합니다.
매수도 마찬가지로 가격이 볼린져 밴드 하단에 닿을때,
밴드 상단 가격만 보고 같거나 낮아지면,
즉 상단밴드가 하락하면 매수 진입하는 수식이 가능한지요?
2. 하기 2번 만들어주신 수식에서, 이평선의 가격이 고려되어 있지 않는 것 같습니다.
말씀드린대로 2번 수식은 data1 이평선의 가격이 (전봉대비) 낮아질 때 매수진입 적용
이평선의 가격이 높아질 때 매도진입 적용이 되어야 하는데
data 1/2 의 조건만 고려된 것 같습니다. 재고 부탁드립니다.
검토 부탁드립니다.
안녕하세요
예스스탁입니다.
1.
추가하신 내용으로는 가능하지 않습니다
input : BBP(20),dv(2);
var : bbup(0),bbdn(0),diff(0);
bbup = BollBandup(BBP,dv);
bbdn = BollBandDown(BBP,dv);
diff = bbup-bbdn;
if diff < diff[1] Then{
sell("s",Atlimit,bbup);
buy("b",AtLimit,bbdn);
}
if MarketPosition == 1 Then
exitlong("bx",atlimit,bbup);
if MarketPosition == -1 Then
ExitShort("sx",Atlimit,bbdn);
2
수식은 항상 data1기준입니다.
data1봉 완성시 data2의 조건이 만족하면 신호가 발생합니다.
input : BBP(20),dv(2);
var : bbup1(0,data1),bbdn1(0,data1),bbmd1(0,data1);
var : bbup2(0,data2),bbdn2(0,data2),bbmd2(0,data2);
var : T1(0,data1);
bbmd1 = data1(ma(c,BBP));
bbup1 = data1(BollBandup(BBP,dv));
bbdn1 = data1(BollBandDown(BBP,dv));
bbmd2 = data2(ma(c,BBP));
bbup2 = data2(BollBandup(BBP,dv));
bbdn2 = data2(BollBandDown(BBP,dv));
if data1(crossup(C,bbmd1)) Then
T1 = 1;
if data1(CrossDown(C,bbmd1)) Then
T1 = -1;
if T1 == 1 and data2(crossuP(c,bbup2)) Then
sell();
if T1 == -1 and data2(CrossDown(c,bbdn2)) Then
buy();
짧은 주기를 data1로 하고 긴주기를 data2로 하시면 아래식으로 사용하시면 됩니다.
input : BBP(20),dv(2);
var : bbup1(0,data1),bbdn1(0,data1),bbmd1(0,data1);
var : bbup2(0,data2),bbdn2(0,data2),bbmd2(0,data2);
var : T2(0,data2);
bbmd1 = data1(ma(c,BBP));
bbup1 = data1(BollBandup(BBP,dv));
bbdn1 = data1(BollBandDown(BBP,dv));
bbmd2 = data2(ma(c,BBP));
bbup2 = data2(BollBandup(BBP,dv));
bbdn2 = data2(BollBandDown(BBP,dv));
if data2(crossup(C,bbmd2)) Then
T2 = 1;
if data2(CrossDown(C,bbmd2)) Then
T2 = -1;
if T2 == 1 and data1(crossuP(c,bbup1)) Then
sell();
if T2 == -1 and data1(CrossDown(c,bbdn1)) Then
buy();
즐거운 하루되세요
> softtoug 님이 쓴 글입니다.
> 제목 : 수식 문의
> 안녕하세요
하기 수식문의 드립니다. 검토 부탁드립니다.
1. 전봉대비 볼린져 밴드 폭이 작아지고, 가격이 볼린져 상단 밴드에 닿으면 바로 매도 진입 .
추가로, 가격이 볼린져 상단 밴드에는 닿았는데 볼린져 밴드 가격이 커지고 있으면, 매도 대기하다가,
작아지면 진입할 수 있는 수식이 가능한지 확인 부탁드립니다.
청산은 볼린져 밴드 하단에 닿으면 청산합니다.
전봉대비 볼린져 밴드 폭이 작아지고, 가격이 볼린져 밴드 하단에 닿으면 바로 매수 진입.
추가로, 가격이 볼린져 하단 밴드에 닿았는데, 볼린져 밴드 가격이 커지고 있으면 매수 대기하다가,
작아지면 진입할 수 있는 수식이 가능한지 확인 부탁드립니다.
청산은 볼린져 밴드 상단에 닿으면 청산 합니다.
2. data2 를 더 작은 분봉으로 사용할 예정입니다.
data 1의 볼린져 밴드 이평선이 전봉보다 낮아지고 있고,
data 1의 가격이 볼린져 밴드 이평을 crossover 했으며,data2 의 볼린져 상단을 crossover하면
바로 매도 진입
data 1의 볼린져 밴드 이평선이 전봉보다 높아지고 있고,
data 1의 가격이 볼린져 밴드 이평을 crossdown 했으며, data2의 볼린져 하단을 crossdown하면
바로 매수 진입
상기 수식 부탁드립니다.
2017-12-06
131
글번호 114747
예그리나 님에 의해서 삭제되었습니다.
2017-12-05
0
글번호 114746
답변완료
수식 부탁드립니다.
청산수식 부탁드립니다.
a. 현포지션이 1계약 매수 진입해 있는 경우,
1. 진입과 동시에 m틱 수익가격으로 지정가 청산 주문.
2. 1.의 주문이 체결되지 않은 상태에서, 진입시점부터 최고가보다 n틱 하락시 1.의 주문을 취소하고
시장가 청산 주문 ( 즉, 1이 체결되지 않는 경우 이를 취소하고 트레일링스탑 주문 )
b. 현포지션이 1계약 매도 진입해 있는 경우,( a와 반대의 경우입니다. )
1. 진입과 동시에 m틱 수익가격으로 지정가 청산 주문.
2. 1.의 주문이 체결되지 않은 상태에서, 진입시점부터 최저가보다 n틱 상승시 1.의 주문을 취소하고
시장가 청산 주문 (즉, 1이 체결되지 않는 경우 이를 취소하고 트레일링스탑 주문 )
.................
c. 현재 1계약 진입해 있는 경우 청산시까지 추가진입이 안되게 하려면 어떻게 해야 합니까?
감사합니다.
2017-12-05
125
글번호 114745
부동여산 님에 의해서 삭제되었습니다.
2017-12-05
1
글번호 114744
답변완료
재문의 드립니다.
항상 도움의 수식에 감사드립니다.
다름 아니오라 55715번 답변으로 올려주신 수식으로 실행하였을때 이해가 잘 안되는 부분이 있어서 질문 드리고 수식 수정도 부탁드립니다.
1.당일누적수익 계산값
당일누적수익의 계산된 시간범위를 정확히 알고 싶습니다.
매매시간제한을 10시 ~ 04시까지로 설정하였는데 당일누적수익을 계산한 시간도 날짜 관계없이 이 시간범위(10시 ~ 04시까지)인지 아니면 10시 ~ 00시 이전 까지만 당일이고 00시 ~ 04시까지는 익일로 넘어가서 누적되는건지 궁금합니다.
왜냐면 10시 ~ 04시까지의 수익을 계산기로 계산해보면 합계는 손실이 없는 것으로 나오는 날도 04시 기준으로 캔들위에 실시간 표시되는 값이 손실이 누적된 것으로 나오고 00시 ~ 23시 59분까지를 계산해봐도 합계가 손실이 없는 날에 손실이 누적된 것으로 캔들 위에 실시간으로 출력이 되고 있어서요.
그리고 00시 ~ 오전중에만 간단히 계산했을때도 몇번 안되는 신호횟수이고 분명히 수익중인데도 캔들위에 실시간 누적수익표시에는 마이너스로 손실틱수가 표시되고 있어서 이해가 되지를 않습니다. 차트는 200틱차트를 사용하고 있습니다.
그리고 아래 수식에서 당초에는 캔들 위에 실시간으로 표시된다음 지나가면 계산값이 삭제되고 실시간으로 매번 캔들마다 표시되던 것을 수정하여 매매종료 시간인 04시에만 또는 당일로 계산된 시간범위의 끝이 자정이라면 자정에만 캔들 위에 당일누적수익 틱수를 출력하고 지나가도 삭제되지 않고 남아있도록 하려면 어떻게 수정되어야 하는지 부탁드립니다.
2.매매종료시간 및 조건수식 수정
-매매종료시간을 10시 ~ 04시까지로 설정하였는데 04시 전에 진입신호가 나온 상태로 10시 이전까지 신호가 정지되었다가 10시 이후에야 04시 이전에 나와있던 신호가 마무리되고 다음 신호가 나오고 있습니다.
이것을 현재 포지션의 익절,손실 유무에 관계없이 04시에는 매매를 무조건 강제종료하여 신호를 끝내고 10시부터는 새롭게 진입신호를 발생시키고 싶습니다.
04 ~ 10시 사이에 급변동이 생기면 안돼서요.
-매매시간 중이라도 현재누적손익이 +100틱에 도달했거나 또는 반대로 손실로 -50틱에 도달하면 당일 매매 강제종료하도록 수식 수정바랍니다.
감사합니다.^^
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 문의드립니다.
> 안녕하세요
예스스탁입니다.
Input : 당일수익틱수(50);
Var : N1(0),dayPl(0),당일수익(0),Xcond(false);
var : Tcond(false),mav1(0),mav2(0),Hpl(0),tx(0),t(0),t1(0),t2(0);
당일수익 = PriceScale*당일수익틱수;
if stime == 100000 or (stime > 100000 and stime[1] < 100000) Then{
Tcond = true;
Xcond = false;
N1 = NetProfit;
Hpl = 0;
}
if stime == 40000 or (stime > 40000 and stime[1] < 40000) Then
Tcond = false;
mav1 = ma(C,5);
mav2 = ma(C,20);
daypl = NetProfit-N1;
if crossup(c,mav2) Then{
t = 1;
t1 = t[1];
t2 = t1[1];
if C > O Then
t = 2;
}
if CrossDown(c,mav2) Then{
t = -1;
t1 = t[1];
t2 = t1[1];
if C < O Then
t = -2;
}
if daypl > hpl Then
hpl = daypl;
if TotalTrades > TotalTrades[1] and
(IsExitName("dbp",1) == true or IsExitName("dsp",1) == true) then{
Xcond = true;
PlaySound("a.wav");
}
if Tcond == true and Xcond == false then{
if T >= 1 and T != T[1] and T[1] != T[2] and
T1 == -2 and T2 == 2 Then
buy("b",OnClose,def,1);
if T <= -1 and T != T[1] and T[1] != T[2] and
T1 == 2 and T2 == -2 Then
sell("s",OnClose,def,1);
if MarketPosition == 1 then{
Text_Delete(tx);
tx = Text_New(sdate,stime,H+PriceScale*5,NumToStr(daypl+PositionProfit,2));
var1 = highest(h,BarsSinceEntry);
ExitLong("bx1",atlimit,EntryPrice+PriceScale*20);
if var1 >= EntryPrice+PriceScale*15 then
ExitLong("bx2",AtStop,EntryPrice+PriceScale*10);
if var1 >= EntryPrice+PriceScale*10 then
ExitLong("bx3",AtStop,EntryPrice+PriceScale*5);
if var1 < EntryPrice+PriceScale*10 then
ExitLong("bx4",AtStop,EntryPrice-PriceScale*30);
if var1 < EntryPrice+PriceScale*10 and CrossDown(mav1,mav2) then
ExitLong("bx5");
}
if MarketPosition == -1 then{
Text_Delete(tx);
tx = Text_New(sdate,stime,H+PriceScale*5,NumToStr(daypl+PositionProfit,2));
var1 = Lowest(L,BarsSinceEntry);
ExitShort("sx1",atlimit,EntryPrice-PriceScale*20);
if var1 <= EntryPrice-PriceScale*15 then
ExitShort("sx2",AtStop,EntryPrice-PriceScale*10);
if var1 <= EntryPrice-PriceScale*10 then
ExitShort("sx3",AtStop,EntryPrice-PriceScale*5);
if var1 > EntryPrice-PriceScale*10 then
ExitShort("sx4",AtStop,EntryPrice+PriceScale*30);
if var1 > EntryPrice-PriceScale*10 and CrossUp(mav1,mav2) then
ExitShort("sx5");
}
if MarketPosition == 1 and hpl >= 당일수익 then{
ExitLong("dbp",AtStop,EntryPrice-((hpl-daypl)*0.6)/CurrentContracts);
}
if MarketPosition == -1 and hpl >= 당일수익 then{
ExitShort("dsp",AtStop,EntryPrice+((hpl-daypl)*0.6)/CurrentContracts);
}
}
즐거운 하루되세요
> 웹피 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 어제보다 더 춥습니다. 건강 잘 챙기시구요.
아래와 같은 수식을 부탁드립니다.
1.매매시간
10시 ~ 04시까지 매매후 종료
2.진입조건(1계약 진입)
매수 : 양봉 종가가 20일선 아래에서 위로 골든크로스 한후 다시 음봉 종가가 20일선 아래로 데드크로스 하고 다음 봉의 종가가 다시 20일선 위로 골든크로스 할때 매수(매도는 반대)
3.청산/손절
-청산: 3가지
20틱수익 도달시 청산
10틱이상 15틱미만 수익시 5틱수익까지 후퇴하면 5틱수익 청산
15틱이상 수익시 10틱수익까지 후퇴하면 10틱수익 청산
-손절: 둘중에 먼저 도달하는 조건을 실행
수익이 10틱 미만일때 -30틱에서 손절 되거나
수익이 10틱 미만일때 매수의 경우 5일선이 20일선을 데드크로스하면 손절(매도는 반대)
4.매매종료
매매시간 이내에(10시 ~ 04시까지) 당일 누적수익을 50틱이상 달성한 순간부터 당일 누적수익에서 60% 손실이 발생하기 전에는 매매시간 종료까지 매매를 계속함.
누적 총수익에서 60% 손실이 발생하면 즉시 당일 매매종료하고 a.wav 파일 실행
5.당일 누적수익 표시
실시간 현재의 캔들 고점+5틱 위에 확정된 당일 실시간 현재의 누적수익을 계속 표시
수고하세요^^
2017-12-05
164
글번호 114738
답변완료
글번호 55737번 재질문
안녕하세요?
글번호 55737번 재질문 드립니다.
답변주신 스크립트 검증 부탁드립니다.
input : n1(5),n2(10);
var : sum1(0),sum2(0),mav1(0),mav2(0),cnt(0);
sum1 = 0;
sum2 = 0;
for cnt = 0 to max(n1,n2){
if cnt < n1 then
sum1 = sum1 + (DayClose(cnt)-dayopen(cnt));
if cnt < n2 then
sum2 = sum2 + (DayClose(cnt)-dayopen(cnt));
}
mav1 = sum1/n1;
mav2 = sum2/n2;
if NextBarSdate > Sdate then{
if mav1 > 0 and mav2 > 0 and mav1-mav2 > 0 Then
buy("b",AtMarket);
if mav1 < 0 and mav2 < 0 and mav1-mav2 < 0 Then
sell("s",AtMarket);
}
2017-12-05
121
글번호 114737