커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
6526
글번호 230811
답변완료
부탁드림니다
수식전환 부탁함니다
수식:a1=highest(c,21,1);
a2=ma(c,21)*p11;
b1=Lowest(c,21,1);
b2=ma(c,21)*(2-p11);
수식1:a1
수식2:a2
수식3:b1
수식4:b2
p:변수(11)
2015-10-27
146
글번호 91733
답변완료
수식문의
아래수식에서 20틱 30틱 익절부분에서 자동으로 수평선을 만들어주세요
그리고20 30틱에서 익절을 못하고 내려올때 손절부분에서 2개를 처리하는 수식부탁합니다
그런데 애매한개 있읍니다 20틱에서 익절하나하고 한개는 못할때는 어떻게 처리해야되나요 2개를 진입할때 말한것입니다
if MarketPosition == 1 Then{
ExitLong("bx1",atlimit,EntryPrice+PriceScale*20,"",1,1);
ExitLong("bx2",atlimit,EntryPrice+PriceScale*30,"",1,1);
ExitLong("수손절",AtStop,EntryPrice-PriceScale*10,"",1,1);
}
if MarketPosition == -1 Then{
ExitShort("sx1",atlimit,EntryPrice-PriceScale*20,"",1,1);
ExitShort("sx2",atlimit,EntryPrice-PriceScale*30,"",1,1);
ExitShort("도손절",AtStop,EntryPrice+PriceScale*10,"",1,1);
}
2015-10-27
141
글번호 91732
답변완료
재질문
답변감사합니다.
내용설명이 자세하지 못햇던것 같습니다.
비연속적 비특정일 일봉에서
예를들어 100일만 본다하면
100일중 시고저종가 값중 일치하는 횟수가 5회이상인 경우 입니다.
시가만 같거나가 아닌,
100일전 종가 78일전 시가 60일전 고가 10일전 고가 2일전 시가
뭐 이런식으로 겹친다면 수평선을 긋고 싶은것 입니다~~
부탁드립니다.
안녕하세요
예스스탁입니다.
1.
시고저종가가 전봉에 연속으로 5회이상 값이 같은 것을 의미하시면 1번
5봉연속 시고저종가가 같은 값인 것을 의미하시면 2번식 이용하시면 됩니다.
1.
if countif(O==O[1] and C == C[1] and H == H[1] and L == L[1],5) == 5 Then
var1 = C;
plot1(var1);
2.
if countif(O==C and H == C and L == c,5) == 5 Then
var1 = C;
plot1(var1);
> 있지예 님이 쓴 글입니다.
> 제목 : 수식문의드립니다.
> 지표상 시가, 종가, 고가, 저가 가 5회(변수) 이상 일치하는 부분에 수평선을 긋고 가격을 표시하고 싶습니다.
2015-10-27
130
글번호 91731
답변완료
시스템정정 rsi로부탁드림니다,
input : P(20),N(20),Short(12),long(26),sig(9);
var : HH(0),LL(0),MACDV(0),MACDS(0);
var : Hi(0),Li(0),TT(0),Vol(0);
HH = highest(H,P);
LL = highest(H,L);
MACDV = MACD(Short,long);
MACDS = ema(MACDV,Sig);
if TT <= 0 and crossup(C,HH[1]) Then{
TT = 1;
Hi = index;
}
if TT >= 0 and CrossDown(C,LL[1]) Then{
TT = -1;
Li = index;
}
if TT == 1 and index <= Hi+N and crossup(MACDV,MACDS) Then{
if (MarketPosition == 0 and PositionProfit(1) < 0) then
Vol = MaxContracts(1)*2;
else if (MarketPosition != 0 and PositionProfit < 0) Then
Vol = MaxContracts*2;
Else
Vol = 1;
if (MarketPosition == 0 and MarketPosition(1) != 1) or
MarketPosition == -1 Then
buy("b",OnClose,def,vol);
}
if TT == -1 and index <= Li+N and CrossDown(MACDV,MACDS) Then{
if (MarketPosition == 0 and PositionProfit(1) < 0) then
Vol = MaxContracts(1)*2;
else if (MarketPosition != 0 and PositionProfit < 0) Then
Vol = MaxContracts*2;
Else
Vol = 1;
if (MarketPosition == 0 and MarketPosition(1) != -1) or
MarketPosition == 1 Then
sell("s",OnClose,def,Vol);
}
---------------------------------------------------------------------------------
전에 문의드린 작성해주신수신인데요
macd 를 rsi 로바꾸고 싶습니다
20개봉중에 최고최저점을 종가로 이탈하고나서 20개봉안에 rsi 과열 과매도 입니다
사용자지정 손절매나 목표수익시 다음반대신호에 진입만허용입니다,
익손절을 해놓으면 무작위진입하는것같아여 그림보내드림니다,
수고하세요
2015-10-27
230
글번호 91730
답변완료
질문드립니다
44677에서 답변 받은 시스템이 검증은 정상적으로 되나 전략실행차트로 돌렸더니
신호가 발생하지 않고 종목변경시 오류가 나면서 트레이더가 종료되는 현상이 발생합니다
1. 수정된 시스템 검토 부탁드리며
2. 전에 답변주신 시스템에서 당일 매매횟수제한을 Input N(1)로 제한하고
var4 = ma(V,100);
var5 = Disparity(20);
로 거래량 및 거래대금, 이격도
DayOpen >= DayClose(1)
을 추가하여 사용중이었는데
혹시나 새롭게 답변받은 시스템에 충돌이 일어날까 재문의 드립니다
요약하면
1)최초 답변받은 시스템에서 특정캔들을 제외하고 매매가 되도록 수정요청
2)수정된 시스템으로 전략실행차트실행시 트레이더 오류 및 다운현상
3)수정된 시스템에서 당일매매 회ㅅ수제한, 100캔들 평균 거래량과 거래대금, 이격도, 당일 시가가 전일 종가 이상의 조건을 추가(전일 종가 조건 불가시 마지막 캔들의 종가<당일 시가)
번거로우실거 같아서 최초 답변과 수정답변을 아래에 첨부합니다
최초답변받은 시스템
----------------------
input : aa(100),bb(2),CC(100),dd(2),금액(1000000);
var : Ov(0),TT(0),Xvol(0),Xcnt(0);
Ov = OBV;
var1 = ma(V,aa);
var2 = abs(Ov-Ov[1]);
var3 = ma(var2,CC);
if MarketPosition == 0 and
!(CurrentContracts < CurrentContracts[1]) and
V >= var1[1]*bb and
var2 >= var3[1]*dd and
Ov-Ov[1] > 0 Then
buy("b1",OnClose,def,floor(금액*0.3/C));
if MarketPosition == 1 Then{
if BarsSinceEntry == 1 then
buy("b2",OnClose,def,floor(금액*0.4/C));
if BarsSinceEntry == 2 then
buy("b3",OnClose,def,floor(금액*0.3/C));
if CurrentContracts > CurrentContracts[1] and MaxEntries == 3 Then
TT = TimeToMinutes(stime);
if CurrentContracts < CurrentContracts Then
Xcnt = Xcnt+1;
if MaxEntries == 3 and TimeToMinutes(stime) >= TT+30 then{
if countif(LatestExitName(0) == "BP1",BarsSinceEntry) < 1 then{
if Xcnt < 2 Then
Xvol = floor(MaxContracts*0.3);
Else
Xvol = CurrentContracts;
ExitLong("BP1",atlimit,LatestEntryPrice(0)*1.01,"",Xvol,1);
}
if countif(LatestExitName(0) == "BP2",BarsSinceEntry) < 1 then{
if Xcnt < 2 Then
Xvol = floor(MaxContracts*0.4);
Else
Xvol = CurrentContracts;
ExitLong("BP2",atlimit,LatestEntryPrice(0)*1.02,"",Xvol,1);
}
if countif(LatestExitName(0) == "BL1",BarsSinceEntry) < 1 then{
if Xcnt < 2 Then
Xvol = floor(MaxContracts*0.3);
Else
Xvol = CurrentContracts;
ExitLong("BL1",AtStop,LatestEntryPrice(0)*0.99,"",Xvol,1);
}
if countif(LatestExitName(0) == "BL2",BarsSinceEntry) < 1 then{
if Xcnt < 2 Then
Xvol = floor(MaxContracts*0.4);
Else
Xvol = CurrentContracts;
ExitLong("BL2",AtStop,LatestEntryPrice(0)*0.98,"",Xvol,1);
}
exitlong("bp3",atlimit,LatestEntryPrice(0)*1.03);
exitlong("bl3",AtStop,LatestEntryPrice(0)*0.97);
}
}
if MarketPosition != 1 Then
Xcnt = 0;
수정된 시스템
--------------------
input : aa(100),bb(2),CC(100),dd(2),금액(1000000);
var : TT(0),Xvol(0),Xcnt(0),sum1(0),cnt(0);
var : Prc(0),Prc1(0),OBVv(0),sum2(0),idx(0);
Array : VV[101](0),Ov[101](0);
if stime < 145000 Then{
idx = idx+1;
If Prc > Prc1 Then
OBVv = OBVv + Volume;
Else If Prc < Prc1 Then
OBVv = OBVv - Volume;
Else
OBVv = OBVv;
VV[0] = V;
Ov[0] = OBVv;
for cnt = 0 to 100{
VV[cnt] = VV[cnt-1][1];
OV[cnt] = OV[cnt-1][1];
}
Prc = C;
Prc1 = CC[1];
}
sum1 = 0;
for cnt = 0 to aa-1{
sum1 = VV[cnt];
}
var1 = sum1/aa;
var2 = abs(OV[0]-OV[1]);
sum2 = 0;
for cnt = 0 to cc-1{
sum2 = sum2+abs(OV[cnt]-OV[cnt+1]);
}
var3 = sum2/cc;
if MarketPosition == 0 and idx >= aa and idx >= cc and
!(CurrentContracts < CurrentContracts[1]) and
V >= var1[1]*bb and
var2 >= var3[1]*dd and
Ov-Ov[1] > 0 and idx >= aa and idx >= cc Then
buy("b1",OnClose,def,floor(금액*0.3/C));
if MarketPosition == 1 Then{
if BarsSinceEntry == 1 then
buy("b2",OnClose,def,floor(금액*0.4/C));
if BarsSinceEntry == 2 then
buy("b3",OnClose,def,floor(금액*0.3/C));
if CurrentContracts > CurrentContracts[1] and MaxEntries == 3 Then
TT = TimeToMinutes(stime);
if CurrentContracts < CurrentContracts Then
Xcnt = Xcnt+1;
if MaxEntries == 3 and TimeToMinutes(stime) >= TT+30 then{
if countif(LatestExitName(0) == "BP1",BarsSinceEntry) < 1 then{
if Xcnt < 2 Then
Xvol = floor(MaxContracts*0.3);
Else
Xvol = CurrentContracts;
ExitLong("BP1",atlimit,LatestEntryPrice(0)*1.01,"",Xvol,1);
}
if countif(LatestExitName(0) == "BP2",BarsSinceEntry) < 1 then{
if Xcnt < 2 Then
Xvol = floor(MaxContracts*0.4);
Else
Xvol = CurrentContracts;
ExitLong("BP2",atlimit,LatestEntryPrice(0)*1.02,"",Xvol,1);
}
if countif(LatestExitName(0) == "BL1",BarsSinceEntry) < 1 then{
if Xcnt < 2 Then
Xvol = floor(MaxContracts*0.3);
Else
Xvol = CurrentContracts;
ExitLong("BL1",AtStop,LatestEntryPrice(0)*0.99,"",Xvol,1);
}
if countif(LatestExitName(0) == "BL2",BarsSinceEntry) < 1 then{
if Xcnt < 2 Then
Xvol = floor(MaxContracts*0.4);
Else
Xvol = CurrentContracts;
ExitLong("BL2",AtStop,LatestEntryPrice(0)*0.98,"",Xvol,1);
}
exitlong("bp3",atlimit,LatestEntryPrice(0)*1.03);
exitlong("bl3",AtStop,LatestEntryPrice(0)*0.97);
}
}
if MarketPosition != 1 Then
Xcnt = 0;
2015-10-27
166
글번호 91729
답변완료
재질문드립니다~~
이해를 못하셨다니 예를들어 다시설명드리자면~~~
10일이평>20일이평 and 5일이평>20일이평~~~이 3조건이 맞을때 (매수)신호를 구현한다라면~~~~
두가지상황이 있을수있는바
1.~하나는~~
10일이평>20일이평 (10일이평)이 큰상태에서 5일이평>20일이평이 되어
(3조건맞아) 신호가 날수있고
2.~또하나는
5일이평>20일이평 (5일이평)이 큰상태에서 10일이평>20일이평이 되어
(3조건맞아) 신호가 날수있는데~~~
제가 원하는 수식은 2번 입니다~
~즉~ 10일이평 > 20일이평~~~~으로 이미 (10일이평)이 큰것은 무시하고 있다가
5일이평 > 20일이평 된후에~~~10일이평 > 20일이평 되는것만 신호출현!!
부탁드립니다~~~
2015-10-27
135
글번호 91728
답변완료
감사합니다. 추가 질문입니다.
아래 수식는 종전에 문의 드린 결과로 얻은 수식 입니다. 감사합니다.
그런데 하루에 거래가 여러번 발생하더라구요.
아래 언어에서 하루 한 번만 거래 하려면 어떻게 해야 하나요?
(코스피200선물 1분봉 차트를 이용합니다.)
if crossup(c,dayhigh(1)) Then
buy();
if CrossDown(c,DayLow(1)) Then
sell();
SetStopProfittarget(0.5,PointStop);
SetStopLoss(0.5,PointStop);
SetStopEndofday(150000);
2015-10-27
135
글번호 91727
답변완료
지표식 문의 드립니다.
안녕하세요.
아래 내용은 (44658번)저의 질문에 주신 답변입니다.
답변주신데 대하여 심심한 감사를 드립니다.
당일고가=전일고가로 고처야 할것같것 같았는데 실행하여보니
수정하지 않아도 수평선은 정상적의로 전일고가로 나타나는군요.
***부탁드릴내용은 ***
맨 아래에있는 내용으로
전고 전저 수평선 왼쪽에,
(전고점, 전저점)의 수치(2.12, 3.25 등)를
숫자로도 나타나게 하여 주시면 감사 하겠습니다.
줄만 그어져있으니깐 전저 전고 수치가 정확히 얼마인지 한눈에 알아보기가
좀 어려워서 그러 하옵니다.
부탁 드립니다.
미리 감사드립니다.
예스스탁입니다.
if CodeCategoryEx == 31 then{
var1 = daylow*1.2125;
var2 = daylow*1.3212;
var3 = daylow*1.5596;
var4 = daylow*1.7214;
var5 = daylow*2.2354;
plot1(var1,"콜1차",RED);
plot2(var2,"콜2차",RED);
plot3(var3,"콜3차",RED);
plot4(var4,"콜4차",RED);
plot5(var5,"콜5차",RED);
}
if CodeCategoryEx == 32 then{
var1 = dayhigh*0.6185;
var2 = dayhigh*0.4326;
var3 = dayhigh*0.3254;
plot6(var1,"풋1차",blue);
plot7(var2,"콜2차",blue);
plot8(var3,"콜3차",blue);
}
plot9(dayhigh(1),"당일고가",MAGENTA);
plot10(daylow(1),"전일저점",GREEN);
즐거운 하루되세요
2015-10-26
154
글번호 91726
답변완료
함수 부탁드립니다.
Input : Period(12), sigPeriod(9);
value1 = TRIX(Period);
value2 = ema(value1, sigPeriod);
# 매수/매도청산
If CrossUP(value1, value2) Then
{
Buy();
}
# 매도/매수청산
If CrossDown(value1, value2) Then
{
Sell();
}
트릭스 시스템 기본함수입니다.
트릭스를 시스템 매매로 사용합니다.
그러나 크로스가 첫봉이 시작되도 전일 흐름에 이어져 크로스가됩니다.
이수식에서 제가 구하고 싶은것은 전일흐름에 이어지는게 아니라
오늘 첫봉부터 시작해서 새로운 크로스부터 시스템이 시작되는것을 구하고 싶습니다.
감사합니다.
2015-10-26
143
글번호 91725