커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
6526
글번호 230811
9회말2아웃 님에 의해서 삭제되었습니다.
2015-10-21
1
글번호 91566
답변완료
부탁드립니다.
아래 내용을 2분봉 챠트에서 4분봉의 것으로 볼수 있게 부탁드립니다.
Input:Period(20),Percent(50);
Var:arr(0),j(0),cnt(0),HH(0),LL(0),Tick(0),TickVol(0),
TotVol(0),SubTotVol(0),MaxArr(0),UpArr(0),DnArr(0),MaxPrc(0),
UpPrc(0),DwnPrc(0),Vol1(0),Vol2(0);
Array:Prc[100](0),Vol[100](0);
HH = Highest(H,Period);
LL = Lowest(L,Period);
Tick = Ceiling((HH-LL)/100/PriceScale)*PriceScale;
Prc[0] = HH;
Vol[0] = 0;
for arr = 1 to 99 {
Prc[arr] = Prc[arr-1] - Tick;
Vol[arr] = 0;
}
for j = 0 to Period-1 {
cnt = 0;
for arr = 0 to 99 {
if L[j] <= Prc[arr] and Prc[arr] <= H[j] then
cnt = cnt + 1;
}
TickVol = V[j]/cnt;
for arr = 0 to 99 {
if L[j] <= Prc[arr] and Prc[arr] <= H[j] then {
Vol[arr] = Vol[arr] + TickVol;
}
}
}
TotVol = 0;
MaxArr = 2;
for arr = 0 to 99 {
TotVol = TotVol + Vol[arr];
if arr >= 2 and arr <= 97 then {
if Vol[MaxArr-2]+Vol[MaxArr-1]+Vol[MaxArr]+Vol[MaxArr+1]+Vol[MaxArr+2] <
Vol[arr-2] +Vol[arr-1] +Vol[arr] +Vol[arr+1] +Vol[arr+2] then
MaxArr = arr;
}
}
UpArr = MaxArr;
DnArr = MaxArr;
SubTotVol = Vol[MaxArr];
for j = 0 to 99 {
Vol1 = iff(UpArr-1>=0,Vol[UpArr-1],0);
Vol2 = iff(DnArr+1<=99,Vol[DnArr+1],0);
if Vol1 > Vol2 then {
SubTotVol = SubTotVol + Vol1;
UpArr = UpArr - 1;
}
else if Vol1 < Vol2 then {
SubTotVol = SubTotVol + Vol2;
DnArr = DnArr + 1;
}
else if Vol1 == Vol2 and Vol1 > 0 and Vol2 > 0 then {
SubTotVol = SubTotVol + Vol1;
UpArr = UpArr - 1;
if SubTotVol < TotVol * Percent/100 then {
SubTotVol = SubTotVol + Vol2;
DnArr = DnArr + 1;
}
}
else if Vol1 + Vol2 == 0 then {
if UpArr >= (99 - DnArr) then Uparr = UpArr - 1;
else DnArr = DnArr + 1;
}
if SubTotVol >= TotVol * Percent/100 then
j = 99;
}
MaxPrc = Prc[MaxArr];
UpPrc = Prc[UpArr];
DwnPrc = Prc[DnArr];
Plot1(MaxPrc);
2015-10-21
166
글번호 91565
9회말2아웃 님에 의해서 삭제되었습니다.
2015-10-21
0
글번호 91564
답변완료
질문드립니다.
data2에서 지표를 구현하고 싶습니다.
data1은 따로 있고, data2에서 파라볼릭(종가)을 구현하고 싶은데,
이상하게 data1에서 파라볼릭(종가)을 구현한것과, data2에서 구현한것이 같지 않아 질문드립니다.
예시수식부탁드립니다.
감사합니다.
2015-10-21
146
글번호 91562
답변완료
질문드립니다
시스템수식 부탁드립니다
1 2 3 은 매수 조건이고
4 5 는 매도 조건입니다
1. 1분봉 주기 a 캔들기간 평균거래량 대비 0봉전 캔들의 거래량이 b 배 이상
(a기간에 0봉전 캔들은 미포함)
2. 1분봉 주기 (c 캔들기간내 캔들간 obv 변동값의 절대값 평균) 대비
[ (0봉전 캔들의 obv값) - (1봉전 캔들의 obv값) ]이 d배 이상
(c기간에 0봉전 캔들은 미포함)
3. [ (0봉전 캔들의 obv값) - (1봉전 캔들의 obv값) ]은 양수
a b c d 설정값은 a=100 b=2 c=100 d=2 입니다
(사용자가 숫자를 넣어 변동 가능하도록 부탁드립니다)
2번 조건에서 캔들간 변동값의 절대값 평균의 의미는
예를들어
5봉전 캔들 obv값 = -5
4봉전 캔들 obv값 = -1
3봉전 캔들 obv값 = 1
2봉전 캔들 obv값 = -2
1봉전 캔들 obv값 = -1
0봉전 캔들 obv값 = 9 일때
캔들간 변동값의 절대값은 각각 4 2 3 1 가 되고 평균은 2.5로
0봉전 캔들의 obv값-1봉전 캔들의 obv=10과 비교하여 4배입니다
(1 and 2 and 3) 조건 만족시 설정금액 (ex 100만원)만큼 매수
매수시 진입시점에서 1분 간격으로 3차례에 걸쳐 각각 30% 40% 30% 매수
4. 진입가격에서 1% 2% 3% 상승시 3차례에 걸쳐 각각 30% 40% 나머지 전량 매도
5. 진입가격보다 1% 2% 3% 하락시 3차례에 걸쳐 각각 30% 40% 나머지 전량 손절
5번 조건은 4번조건보다 우선함
마지막 매수진입 시점기준에서 4. 5 각각의 경우에 설정 시간값 (ex. 30분) 동안
매도가 발생하지 않도록 부탁드립니다
그리고 매일매일 자동으로 트레이더 실행 및 시스템 실행을 위해
자동 매크로 프로그램인 macro express로 프로그램 실행 및 시스템 가동을 해봤는데
비밀번호 입력창에서 키보드 입력이 안됩니다
아무래도 보안문제 때문인거 같은데(추측컨대 secure keystroke 때문인듯합니다만)
혹시 해결책이 있는지요
요약하면 매일매일 자동으로 트레이더 실행 및 가동이 되는 외부 프로그램이나 내부 메뉴가 있는지 문의합니다
익숙치 않아 질문도 많고 번거롭게 해드려 죄송하고 또 감사합니다
2015-10-22
246
글번호 91560
답변완료
지표식 부탁드립니다.
매번 성실한 답변 감사드립니다.
분봉 지표식 문의드립니다.
아래 지표식에 만족하는 봉의종가(1)를 최초로 양봉으로 상향돌파하는 봉(2)을 점으로
표시하는 지표식 부탁드립니다.
(1)번봉다음 곧바로 (2)번봉이 발생할경우 (2)번봉의 저가는 (1)번봉의 종가보다 아래이고
(1)번봉다음 (1)번봉 종가보다 낮은봉이 발생한 이후에 (2)번봉이 발생할경우는 상관없음.
감사합니다.
지표식~
var4 = BollBandup(20,2);
var5 = BollBandup(80,2);
var6 = BollBandup(240,2);
if date != date[1] Then{
var1 = c;
var2 = o;
var3 = h;
}
condition1 = c > highest(c,24)[1] ; ##24봉중-최고가
Condition2 = crossup(c,var5);
Condition3 = crossup(c,var6); ##주가-240bbup돌파
if Condition1 == true and Condition3 == true and c > var5 and
var4 > var6*0.9 and c > c[1] and c > o and
var4 > var4[1] and var5 > var5[1] and var4[1] <= var6[1] and
(var6-var5) < var5*0.05 and c < DayClose(1)*1.15 then
plot1(c);
2015-10-21
135
글번호 91559
지오2014 님에 의해서 삭제되었습니다.
2015-10-22
19
글번호 91558
답변완료
수식 점검 부탁 드립니다.
44591 수식을 아래 수식에 추가 하였는데 당일 1회진입 수익보전 청산 후에도
피라미딩 진입이 계속 되네요.
수식 점검 부탁 드립니다.
input : N(1),당일손실(1.2),i증감(0.1),진입수량(1);
var : cnt(0),BCount(0),SCount(0);
var : NP(0),PreNP(0),DayPL(0),loss(0),v1(0);
var : Bxcond(false),SxCond(false);
NP = NetProfit;
if date != date[1] Then{
preNP = NP[1];
Condition1 = false;
v1 = 0;
}
dayPL = NP-PreNP;
BCount = 0 ;
SCount = 0 ;
for cnt = 0 to 10 {
if EntryDate(cnt) == sdate and MarketPosition(cnt) == 1 then
BCount = BCount + 1;
if EntryDate(cnt) == sdate and MarketPosition(cnt) == -1 then
SCount = SCount + 1;
}
if Condition1 == false and TotalTrades > TotalTrades[1] Then{
Condition1 = true;
if PositionProfit(1) > 0 Then
v1 = PositionProfit(1);
}
//-------------------------------------------------------------------------
#당일손실제한
if MarketPosition == 1 Then{
ExitLong("당일손실제한bx3",AtStop,avgEntryPrice-(당일손실+(dayPL-v1))/CurrentContracts);
}
if MarketPosition == -1 Then{
ExitShort("당일손실제한sx3",AtStop,avgEntryPrice+(당일손실+(dayPL-v1))/CurrentContracts);
}
//------------------------------------------------------------------------------------------------------
#기존수식 손실손절 스위칭
if MarketPosition == -1 and BCount+SCount < N and dayPL > -당일손실 Then
buy("1BX",AtStop,EntryPrice+1.2);
if MarketPosition == 1 and BCount+SCount < N and dayPL > -당일손실 Then
sell("1SX",AtStop,EntryPrice-1.2);
//------------------------------------------------------------------------------------------------------
if MarketPosition == 1 and Bxcond == false Then
Buy("PBB",AtStop,LatestEntryPrice(0)+i증감,진입수량);
if MarketPosition == -1 and SxCond == false Then
sell("PSS",AtStop,LatestEntryPrice(0)-i증감,진입수량);
/* */
//-----------------------------------------------------------------------------------------------------
input : ma881(20);
var1 = ma(c,ma881);
if MarketPosition == -1 and
stime >= 143000 && stime <= 150000 and #14시30분~15시 사이
MaxPositionProfit(0) >= 3.0 And #진입이후 3포인트이상 수익발생한적이 있고
CrossUp(C,Var1) and #종가가 var1을 상향돌파
dayPL > -당일손실 Then #당일손실은
ExitShort("매도MA수익PM");
if MarketPosition == 1 and
stime >= 143000 && stime <= 150000 and
MaxPositionProfit(0) >= 3.0 And
CrossDown(C,Var1) and
dayPL > -당일손실 Then
Exitlong("매수MA수익PM");
//----------------------------------------------------------------------------------------------------
안녕하세요
예스스탁입니다.
해당 식은 청산식입니다.
진입제한은 진입식에 넣으셔야 합니다.
청산후 추가로 진입이 나오는것은
아래식과 관련이 없습니다.
진입식에 조건을 살펴보셔야 합니다.
즐거운 하루되세요
> dandy 님이 쓴 글입니다.
> 제목 : 수정요청드립니다.
> 아래수식 적용시 당일1회 진입제한인데 수익보전청산 후에도 피라미팅
진입신호가 계속 나오네요. 수정요청드립니다.
감사합니다.
안녕하세요
예스스탁입니다.
1
진입횟수제한은 진입식에만 있으면 됩니다.
청산식에는 불필요합니다.
2
올려주신 식에서 3포인트이상 수익만 수정하시면 됩니다.
진입이후(피라미딩포함) 최대 수익이 3.0이상이었다고 지정하시면 됩니다.
3.
input : ma881(20);
var1 = ma(c,ma881);
if MarketPosition == -1 and
stime >= 143000 && stime <= 150000 and #14시30분~15시 사이
MaxPositionProfit(0) >= 3.0 And #진입이후 3포인트이상 수익발생한적이 있고
CrossUp(C,Var1) and #종가가 var1을 상향돌파
dayPL > -당일손실 Then #당일손실은
ExitShort("매도MA수익PM");
if MarketPosition == 1 and
stime >= 143000 && stime <= 150000 and
MaxPositionProfit(0) >= 3.0 And
CrossDown(C,Var1) and
dayPL > -당일손실 Then
Exitlong("매수MA수익PM");
2015-10-21
125
글번호 91552
세발낚지 님에 의해서 삭제되었습니다.
2015-10-21
26
글번호 91550