커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
3155
글번호 230811
살빼고싶다 님에 의해서 삭제되었습니다.
2024-05-28
212
글번호 180052
답변완료
문의드립니다.
안녕하세요.
항상 도움 주셔서 감사합니다.
일봉으로 거래 시,
최근 매수(또는 매도)가 발생한 경우에는 진입을 하지 않으려고 합니다.
현재는
if maxentries>0 또는 countif(maxentries>0,10)==0 이런 식으로 체크하고 있었는데 이거 당일 매도되는 경우에는 확인이 불가능하네요.
당일에 매수/매도가 동시에 일어나는 경우를 체크하고 싶은데 어떻게 하면 되는지 문의드립니다.
다시 한 번 감사드립니다.
즐거운 하루 보내세요.
2024-05-28
734
글번호 180051
답변완료
수식이 문제가 있는거 같아 재문의 드립니다
이하 작성해주신 수식입니다
input : P1(5),P2(10),P3(20),P4(50),p5(100);
var : cnt(0),mx(0),mn(0),t(0);
Array : mav[10](0);
mav[1] = ma(C,P1);
mav[2] = ma(C,P2);
mav[3] = ma(C,P3);
mav[4] = ma(C,P4);
mav[5] = ma(C,P5);
mx = 0;
mn = 0;
For cnt = 1 to 5
{
if max(C,O) >= mav[cnt] and mav[cnt] >= min(C,O) Then
{
if mx == 0 or (mx > 0 and mav[cnt] > mx) Then
mx = mav[cnt];
if mn == 0 or (mn > 0 and mav[cnt] < mn) Then
mn = mav[cnt];
}
}
if mav[3] > mav[3][1] Then
T = 1;
if mav[3] < mav[3][1] Then
T = -1;
if C > mav[3] and !(T == -1 and (mav[3][1]-mav[3])*1.5 > C-mav[3]) Then
{
if mx > 0 Then
{
var1 = Floor(mx/PriceScale)*PriceScale;
if NextBarOpen < var1 Then
Buy("b1",AtStop,var1);
Else
Buy("b2",AtLimit,var1);
}
Else
Buy("b3");
if MarketPosition <= 0 Then
value1 = lowest(L,2);
}
if C < mav[3] and !(T == 1 and (mav[3]-mav[3][1])*1.5 > mav[3]-C) Then
{
if mn > 0 Then
{
var2 = Ceiling(mn/PriceScale)*PriceScale;
if NextBarOpen > var2 Then
Sell("s1",AtStop,var2);
Else
Sell("s2",AtLimit,var2);
}
Else
Sell("s3");
if MarketPosition >= 0 Then
value2 = highest(H,2);
}
if value1 > 0 Then
ExitLong("bx",AtStop,value1-PriceScale*1);
if Value2 > 0 Then
ExitShort("sx",AtStop,Value2+PriceScale*1);
여기서부턴 문의사항입니다
첫번째 사진을 보시면 b2 매수신호가 왜 등장한지 모르겠습니다.
원글에
#
3. 20선 위에서 마감한 a봉 이후 다음봉부터, a봉과 a봉 이전1봉의 저가중 더 낮은 저가를 1틱 더 낮은 가격으로 돌파시 그 가격에 매수청산과 매도진입
4. 20선 아래에서 마감한 a봉 이후 다음봉부터, a봉 a봉 이전1봉의 고가중 더 높은 고가를 1틱 더 높은 가격으로 돌파 그 가격에 매도청산과 매수진입
라고 요청을 드렸으니 왼편 b3 매수신호 이후 bx로 b3매수한 계약의 매수청산과 동시에 매도진입을 해야되는데 b2라는 매수진입이 발생하는 상황입니다.
##
그리고 아래는 수정 요청사항입니다.
input : 배수(1.5), 봉수(2), 틱수(1);
var : cnt(0),mx(0),mn(0),t(0);
Array : mav[10](0);
mav[1] = ma(C,5);
mav[2] = ma(C,10);
mav[3] = ma(C,20);
mav[4] = ma(C,50);
mav[5] = ma(C,100);
mx = 0;
mn = 0;
For cnt = 1 to 5
{
if max(C,O) >= mav[cnt] and mav[cnt] >= min(C,O) Then
{
if mx == 0 or (mx > 0 and mav[cnt] > mx) Then
mx = mav[cnt];
if mn == 0 or (mn > 0 and mav[cnt] < mn) Then
mn = mav[cnt];
}
}
if mav[3] > mav[3][1] Then
T = 1;
if mav[3] < mav[3][1] Then
T = -1;
if C > mav[3] and !(T == -1 and (mav[3][1]-mav[3])*배수 > C-mav[3]) Then
{
if mx > 0 Then
{
var1 = Floor(mx/PriceScale)*PriceScale;
if NextBarOpen < var1 Then
Buy("b1",AtStop,var1);
Else
Buy("b2",AtLimit,var1);
}
Else
Buy("b3");
if MarketPosition <= 0 Then
value1 = lowest(L,봉수);
}
if C < mav[3] and !(T == 1 and (mav[3]-mav[3][1])*배수 > mav[3]-C) Then
{
if mn > 0 Then
{
var2 = Ceiling(mn/PriceScale)*PriceScale;
if NextBarOpen > var2 Then
Sell("s1",AtStop,var2);
Else
Sell("s2",AtLimit,var2);
}
Else
Sell("s3");
if MarketPosition >= 0 Then
value2 = highest(H,봉수);
}
if value1 > 0 Then
ExitLong("bx",AtStop,value1-PriceScale*틱수);
if Value2 > 0 Then
ExitShort("sx",AtStop,Value2+PriceScale*틱수);
이평선을 변수로 두고 싶지 않아 빼버렸고 배수는 맞는거 같고, 봉수, 틱수라고 선언한 부분이 제가 원문에
#
3. 20선 위에서 마감한 a봉 이후 다음봉부터, a봉과 a봉 이전1봉의 저가중 더 낮은 저가를 1틱 더 낮은 가격으로 돌파시 그 가격에 매수청산과 매도진입
#
여기에서 제가 선언한 "봉수"가 a봉과 이전봉까지 봉 두개 카운트하는부분, "틱수"라고 선언한 부분이 "1틱 더 낮은 가격" 이 맞을까요? 검수좀 부탁드립니다.
그리고 첫번째 원하는 수정사안입니다
b3, s3가 봉안에 이평선이 없을경우 매수,매도 하는 식인데
그냥 20선 위, 아래에서 가격이 지속되는 두번째 봉에서 매수, 매도하는 식으로 바꾸면 두번째 봉에서 b2,s2와 충돌을 일으킬까요?
두번째 봉에서 b2,s2가 봉 움직임중에 체결되는 감시형 주문인데 if문과 동 시점에 적용되면 감시가 실패했을경우 후적용되는 방식이라면 그렇게 바꿔주세요.
두번째 수정사안입니다.
저렇게 수정된 b3,s3 는 b3x,s4 s3x,b4 로 청산과 진입이 동시에 이루어지게 다른 조건을 설정하려고 합니다.
b3,s3에 한정해서 진입한 봉과 직전봉 두봉 전체의 고가+저가/2 가격을 하향돌파할경우 b3x로 매수청산과 s4매도진입, 상향돌파할경우는 s3x로 매도청산과 b4매수진입
b4와 s4는 손절과 익절을 틱수로 설정할 수 있게 부탁드립니다.
세번째 수정사안입니다.
bx,sx로 청산과 진입을 동시에 했을때, 항상 손실을 보면서 청산과 반대방향으로 진입하는 조건인데 손실틱수를 계산한 후, 청산 익절틱수를 손실틱수 대비 퍼센티지로 변수 설정 부탁드립니다.
오늘도 좋은하루 되세요. 감사합니다.
2024-05-27
808
글번호 180050
답변완료
ma20 crossup 시뮬레이션
시뮬레이션하려구 CPU 7950X 맞췄습니다. ㅎㅎ
ma20 기준으로 하구요.
~로 되어있는것은 가장 결과값이 가장 좋은 인자를 시뮬레이션 돌릴 수 있게...
1) ma20의 90 ~ 110%를 crossup 할 때 매수 (90~110 사이에서 가장 결과값이 좋은 것을 시뮬레이션 해주는 기능)
2) ma20의 90~110%를 crossdown 할 때 매도
3) 1~30% 최고점 도달 후 최고점에서 1~15% 떨어졌을 때 매도
4) stoploss는 -1 ~ -30%
오랜만에 하려니 다 까먹어서 부탁드립니다. ~로 되어 있는 것은 모두 숫자를 선택해서 시뮬레이션 돌릴 수 있게 부탁드려요
2024-05-27
727
글번호 180049
답변완료
문의 합니다.
키움수식 변환 부탁 합니다.
수식1
highestsince(1,crossup(macd(a,b),0),avg(c,15))
수식2
lowestsince(1,crossdown(macd(a,b),0),avg(c,15))
2024-05-27
767
글번호 180048
답변완료
문의
1.
거래량이 백만주이상이고 거래대금이30억이상인 봉의
중간선,시가선 종가선을 긋고 싶습니다.
옆으로 그어질수 있게 해주셔요..
그선은
다음조건의 봉이 나오기 전까지요
2.
과거에 매수시그널이 나온봉의 고가와저가를 현재봉까지 쭉이어지는
밴드를 설정하고 싶습니다. 밴드안에 색도 넣을 수 있으면 좋겠습니다.
고마워요..항상
2024-05-27
664
글번호 180047
산수유 님에 의해서 삭제되었습니다.
2024-05-27
9
글번호 180046
답변완료
문의드립니다
수고 많으십니다
2가지 시스템의 교집합 신호를 부탁드립니다
1번 시스템
input : Length(20),Mult(1.5);
input : ADX_Length(50),P1(6),P2(12);
input : Take_Profit(500),Stop_Loss(500);
var : Price(0),Basis(0),StdDev(0),upper(0),lower(0);
var : TR(0),DirectionalMovementPlus(0),DirectionalMovementMinus(0);
var : SmoothedTrueRange(0),SmoothedDirectionalMovementPlus(0),SmoothedDirectionalMovementMinus(0);
var : DIP(0),DIM(0),DX(0),SmoothedADX1(0),SmoothedADX2(0);
Price = close;
Basis = ma(Price, Length);
StdDev = Mult * std(Price, Length);
Upper = Basis + StdDev;
Lower = Basis - StdDev;
TR = max(max(high-low, abs(high-close[1])), abs(low-close[1]));
DirectionalMovementPlus = iff(high-high[1] > low[1]-low , max(high-high[1], 0) , 0);
DirectionalMovementMinus = iff(low[1]-low > high-high[1] , max(low[1]-low, 0) , 0);
SmoothedTrueRange = SmoothedTrueRange - (SmoothedTrueRange/ADX_Length) + TR;
SmoothedDirectionalMovementPlus = SmoothedDirectionalMovementPlus - (SmoothedDirectionalMovementPlus/ADX_Length) + DirectionalMovementPlus;
SmoothedDirectionalMovementMinus = SmoothedDirectionalMovementMinus - (SmoothedDirectionalMovementMinus/ADX_Length) + DirectionalMovementMinus;
DIP = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100;
DIM = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100;
DX = abs(DIP - DIM) / (DIP + DIM)*100;
SmoothedADX1 = ema(DX, P1);
SmoothedADX2 = ema(DX, P2);
Condition1 = CrossUp(Price, Lower) and SmoothedADX1 < SmoothedADX2;
Condition2 = CrossDown(Price, Upper) and SmoothedADX1 < SmoothedADX2;
if Condition1 == true Then
Buy();
if Condition2 == true Then
Sell();
SetStopProfittarget(Take_Profit,PointStop);
SetStopLoss(Stop_Loss,PointStop
2번 시스템
input : lengthMA(34),lengthSignal(9);
var : src(0),hi(0),lo(0),Ema1(0),Ema2(0),mi(0);
var : md(0),sb(0),sh(0),mdc(0);
/*calc_smma(src, len) =>
smma=na(smma[1]) ? sma(src, len) : (smma[1] * (len - 1) + src) / len
smma
calc_zlema(src, length) =>
ema1=ema(src, length)
ema2=ema(ema1, length)
d=ema1-ema2
ema1+d
*/
src = (h+l+c)/3;
hi = IFF(IsNan(hi[1]) == true, ma(high,lengthMA), hi[1]*(lengthMA-1)+high)/lengthMA;
lo = IFF(IsNan(lo[1]) == true, ma(low,lengthMA), lo[1]*(lengthMA-1)+low)/lengthMA;
ema1 = ema(src, lengthMA);
ema2 = ema(ema1, lengthMA);
mi = ema1+(ema1-ema2);
md = IFf((mi>hi), (mi-hi) , IFf((mi<lo) , (mi - lo) , 0));
sb = ma(md, lengthSignal);
sh = md-sb;
mdc = iff(src>mi,iff(src>hi,lime,green),iff(src<lo,red,orange));
/*plot1(0,"MidLine",Gray);
plot2(md,"ImpulseMACD",mdc);#속성에서 막대
plot3(sh,"ImpulseHisto",Blue); #속성에서 막대
plot4(sb,"ImpulseMACDCDSignal",Maroon);*/
if CrossUp(sb,0) or CrossUp(sb,md) Then
Buy();
if CrossDown(sb,0) or CrossDown(sb,md) Then
sell()
위 2가지 시스템중
1번 시스템이 매수면 +1점 매도면 -1점
2번 시스템이 매수면 +1점 매도면 -1점
이렇게 두 시스템에 점수를 주어 두 시스템의
합이 +2점이면 매수 0점이면 모두청산 -2점이면 매도
이런 수식을 부탁드립니다
항상 감사드립니다
2024-05-27
676
글번호 180045
답변완료
지표 질문입니다
시가 첫봉 고가(H)를 표시한다
시가 첫봉 저가(L)를 표시한다
H+(H-L)을 표시한다
L-(H-L)을 표시한다
감사합니다
2024-05-27
605
글번호 180044