커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1708
글번호 230811
답변완료
수식 검증 바랍니다
알려주신 수식으로 작성하고, Var만 숫자를 바꿔서 적용하고
60-240 Cross에서 20선이 변곡시 진입해서, 60선이 5파 변곡에서 청산을 5선이 5파변곡에서 청산으로 수정을 했습니다.
1. 신호가 중간중간 나타나기 않네요..검증 부탁합니다
2. 매수 사인을 추가로 하고 싶으면 청산에 넣었던것처럼 중괄로로 하고 똑같이 묶어주면 되는걸까요?
var : Period1(3),Period2(10),Period3(30),Period4(120),U(0),K(0),W(0),N(0),X(0),Y(0),Z(0);
var26 = ema(Ema(Ema(c,period1),period1),period1); //5선
var27 = ema(Ema(Ema(c,period2),period2),period2); //20선
Var28 = ema(Ema(Ema(c,period3),period3),period3); //60선
Var29 = ema(Ema(Ema(c,period4),period4),period4); //240선
if CrossUp(Var26,Var27) Then
U = 1; //5-20 cross
if CrossDown(Var26,Var27) Then
U = -1;
if CrossUp(Var27,Var28) Then
K = 1; //20-60 cross
if CrossDown(Var27,Var28) Then
K = -1;
if CrossUp(Var28,Var29) Then
W = 1; //60-240 cross
if CrossDown(Var28,Var29) Then
W = -1;
if CrossUp(Var26,Var28) Then
N = 1; //5-60 cross
if CrossDown(Var26,Var28) Then
N = -1;
if Var26 > var26[1] Then
X = 1;
if Var26 < var26[1] Then
X = -1;
if Var27 > var27[1] Then // U : 5-20 Cross X : 5선
Y = 1; // K : 20-60 Cross Y : 20선
if Var27 < var27[1] Then // W : 60-240 cross Z : 60선
Y = -1; // N : 5-60 cross
if Var28 > var28[1] Then
Z = 1;
if Var28 < var28[1] Then
Z = -1;
If MarketPosition <= 0 and
W == 1 and C > O and Y == 1 and Y != Y[1] Then
Buy("콜");
if MarketPosition == 1 Then
{
if U == 1 and CountIf(U == -1,BarsSinceEntry) == 0 and
X == -1 and X != X[1] and CountIf(X == -1 and X != X[1],BarsSinceEntry) == 3 Then
ExitLong("콜청산");
if Y == -1 and C < O and (C+O) <= var27 Then
ExitLong("콜정산");
}
if MarketPosition >= 0 and
W == -1 and C < O and Y == -1 and Y != Y[1] Then
Sell("풋");
if MarketPosition == -1 Then
{
if U == -1 and CountIf(U == 1,BarsSinceEntry) == 0 and
X == 1 and X != X[1] and CountIf(X == 1 and X != X[1],BarsSinceEntry) == 3 Then
ExitShort("풋청산");
if Y == 1 and C > O and (C+O)/2 >= Var27 Then
ExitShort("풋정산");
}
SetStopEndofday(153000);
안녕하세요
예스스탁입니다.
var : X(0),Y(0),Z(0);
var1 = ma(C,20);
var2 = ma(C,60);
Var3 = ma(C,240);
if CrossUp(Var2,Var3) Then
X = 1;
if CrossDown(Var2,Var3) Then
X = -1;
if Var1 > var1[1] Then
Y = 1;
if Var1 < var1[1] Then
Y = -1;
if Var2 > var2[1] Then
Z = 1;
if Var2 < var2[1] Then
Z = -1;
if MarketPosition <= 0 and X == 1 and C > O and Y == 1 and Y != Y[1] Then
Buy();
if MarketPosition == 1 Then
{
if X == 1 and CountIf(X== -1,BarsSinceEntry) == 0 and
Z == -1 and Z != Z[1] and CountIf(Z == -1 and Z != Z[1],BarsSinceEntry) == 3 Then
ExitLong();
if var1 < Var2 and Y == -1 and Y != Y[1] Then
ExitLong();
}
if MarketPosition >= 0 and X == -1 and C < O and Y == -1 and Y != Y[1] Then
Sell();
if MarketPosition == -1 Then
{
if X == -1 and CountIf(X== 1,BarsSinceEntry) == 0 and
Z == 1 and Z != Z[1] and CountIf(Z == 1 and Z != Z[1],BarsSinceEntry) == 3 Then
ExitShort();
if var1 > Var2 and Y == 1 and Y != Y[1] Then
ExitShort();
}
SetStopEndofday(153000);
즐거운 하루되세요
> 중추신경 님이 쓴 글입니다.
> 제목 : 시스템식 문의
> 매수조건 : 장시작이후, 장마감이전
60선과 240선이 정배열이 된 직후로부터
20선의 기울기가 음에서 양으로 바뀌는 양봉에서 진입
(60과 240이 정배열이 됐더라도 20선이 변곡없이 그대로 양으로 상승이라면
진입하지 않고, 기다렸다가 반드시 기울기가 음에서 양으로 바뀌면 진입)
매수청산 : 장마감 or
60과 240선이 정배열된 이후 60선이 5파에서 기울기가 음으로 바뀌는 음봉
(즉, 정배열이후 60선의 기울기가 음으로 바뀌는 3번째 지점)
or 60선 아래에서 20선이 기울기가 양에서 음으로 바뀌는 음봉에서
(반드시, 60선 아래에서 20선이 60선과 Cross가 난이후
20선이 양에서 음으로 바뀌는 음봉에서)
매도 조건이 매수와 반대입니다.
중요포인트는 60과 240이 Cross난 이후, 20선의 기울이가 변곡이 나오는구간입니다
그리고 파동을 count 할수 있을지가 의문이네요..
매수시점이 다시보면 20선이 240선을 Crossup해서 꺽이고 난뒤 240선 위에서 다시 변곡이 나오는 3파동째가 진입구간입니다
항상 감사드립니다
2021-04-15
1003
글번호 148059
답변완료
수식어 부탁드립니다
input : P1(5),P2(20);
input : sto1(12),sto2(26),sto3(5);
Input : trixp(12), sigPeriod(9);
INPUTS: LENGTH(5);
input : short(12),long(26),sig(9);
var : mav1(0),mav2(0),stok(0),stod(0);
var : trixv(0),trixs(0),TEMA(0),macdo(0);
mav1 = ma(C,P1);
mav2 = ma(C,P2);
stok = StochasticsK(sto1,sto2);
stod = StochasticsD(sto1,sto2,sto3);
trixv = trix(trixp);
trixs = ema(trixv,sigPeriod);
TEMA = (3 * Ema(c,LENGTH)) - (3 * Ema(Ema(c,LENGTH),LENGTH)) +
(Ema(Ema(Ema(c,LENGTH),LENGTH),LENGTH));
macdo = macd_osc(short,long,sig);
var1 = 0;
var2 = 0;
if stok > stod Then
var1 = var1+1;
if trixv > trixs Then
var1 = var1+1;
if c > tema Then
var1 = var1+1;
if macdo > 0 Then
var1 = var1+1;
if stok < stod Then
var2 = var2+1;
if trixv < trixs Then
var2 = var2+1;
if c < tema Then
var2 = var2+1;
if macdo < 0 Then
var2 = var2+1;
if crossup(mav1,mav2) and var1 >= 3 Then
buy();
if CrossDown(mav1,mav2) and var2 >= 3 Then
sell();
-------------------
07 : 00~익일 05 : 50
매매시간의 수식어 추가 부탁드립니다
2021-04-15
882
글번호 148054
답변완료
검색식 부탁 드립니다.
수고 많으십니다!
1봉전~5봉전 까지 상한가 나온종목 중에서 5일 이평선을 이탈 하는 종목을 검색 하고 싶습니다.
검색식 부탁 드립니다. 꾸~~벅!
2021-04-15
915
글번호 148053
답변완료
부탁드립니다
#,안녕하세요.
국선에서 전일의 변동폭을 당일에 시가기준으로 스윙하이로우로 출력부탁드립니다.
"언제나 많은 도움에 항상 감사드립니"
2021-04-15
892
글번호 148052
답변완료
문의
음봉의 거래량이 앞봉의 거래량보다 많어면 그음봉의 캔들위에 검은점이 나오게 부탁드립니다.
2021-04-15
852
글번호 148049
답변완료
문의 드립니다
안녕하세요
아래 사항에 대해 두가지 문의 드립니다
1 아래 문법이 적용되는지
2 지표 작성후 f4늘 눌러 문법검증하고 f5를 누르면 지표속성창이 나타난다고 하는데
어떻게 f5를 누르면 지표속성창이 나타나는지 부탁 드립니다
감사합니다.
Inputs: FastMovAvg1(12), SlowMovAvg1(26), MACDMovAvg1(9);
Var : MACDV1(0,data1) , MACDS1(0,data1);
MACDV1 = (ema((c),FastMovAvg1))-(ema(((c)),SlowMovAvg1));
MACDS1 = (ema(MACDv1,MACDMovAvg1));
var1 = MACDV1;
var2 = MACDS1;
if (var1 > var2) Then
var3 = 1;
if (var1 < var2) Then
var3 = -1;
if var3 == 1 then
{
plot1(9999999999,"라인1");
plot2(0,"라인");
}
if var3 == -1 Then
{
plot1(0,"라인1");
plot2(9999999999,"라인");
2021-04-15
999
글번호 148041
답변완료
수식어 부탁드립니다
var : entry(0);
input : StartTime(070000),EndTime(055000),xtime(055500);
var : 전환선(0),기준선(0),선행스팬1(0),선행스팬2(0);
var : Tcond(false);
if sDate != sDate[1] then
SetStopEndofday(xtime);
if (sdate != sdate[1] and stime >= EndTime) or
(sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then
Tcond = False;
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
{
Tcond = true;
SetStopEndofday(0);
}
if bdate != bdate[1] Then
entry = 0;
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
if MarketPosition <= 0 and entry < 1 Then
buy("b",atlimit,dayhigh-PriceScale*120);
if MarketPosition == 1 Then
exitlong("bx",atlimit,lowest(L,BarsSinceEntry)+PriceScale*60);
if MarketPosition >= 0 and entry < 1 Then
sell("s",atlimit,daylow+PriceScale*3500);
if MarketPosition == -1 Then
ExitShort("sx",atlimit,Highest(H,BarsSinceEntry)-PriceScale*120);
if sdate != sdate[1] Then
SetStopEndofday(55000);
if bdate != bdate[1] Then
SetStopEndofday(0);
---------------------------
기존의 하늘색 buy(-120) 청산( +60)에서 청산싯점인 (+60)은 최저점에서 (+60)으로 신호가 나옵니다 .
노란색 buy(=120)이후 바로 (+60) 청산이 되는 buy, sell수식어로 부탁드립니다.
2021-04-15
990
글번호 148040
답변완료
수식 수정 요청부탁드립니다.
안녕하세요. 어제 작성해주신 수식으로 시뮬레이션을 해봤는데 약간 제 생각과
다르게 되는것 같아서 수정 좀 부탁드립니다.
제가 원하는 것은 0.77260에 1계약 매수 들어가면 피라미딩식으로 0.77270에 매수가 되고,
또 0.77280에 매수가 되고 그 다음에 흐름이 바뀌어 0.77270이 되었을 때는 직전에 매수했던
1계약이 매수 청산 된 후에 다시 0.77280이 되면 다시 매수가 진행되는 시스템을 원하거든요.
근데 아래 식으로는 거래내역을 보니 좀 다르게 진행이 되는것 같더라구요.
요약하자면 추세를 따라가면서 1계약씩 늘려가다가 되돌림이 되면 1계약씩 줄여나가고, 최초
매수했던 수량까지 다 손절이 되면, 그 다음부터는 매도로 신규진입되면서 1계약씩 피라미딩
진행되는것을 원합니다.
장대양봉이나, 장대음봉이 나왔을 경우 수익을 극대화하고자 하는 방법을 원하거든요.
보시고, 수정 좀 부탁드립니다.
===============================================================
input : 최초진입(1);
var : LP(0);
if sDate != sDate[1] Then
SetStopEndofday(55500);
if Bdate != Bdate[1] Then
{
SetStopEndofday(0);
LP = 0;
if 최초진입 == 1 Then
Buy("b1",AtMarket,DEF,1);
if 최초진입 == -1 Then
Sell("s1",AtMarket,DEF,1);
}
Else
{
if MarketPosition == 1 Then
{
if CurrentContracts > CurrentContracts[1] Then
LP = LatestEntryPrice(0);
if CurrentContracts < CurrentContracts[1] Then
LP = LatestExitPrice(0);
Buy("bb",AtStop,LP+0.001,1);
ExitLong("bx",AtStop,LP-0.001,"",1,1);
}
if MarketPosition == -1 Then
{
if CurrentContracts > CurrentContracts[1] Then
LP = LatestEntryPrice(0);
if CurrentContracts < CurrentContracts[1] Then
LP = LatestExitPrice(0);
Sell("ss",AtStop,LP-0.001,1);
ExitShort("sx",AtStop,LP+0.001,"",1,1);
}
if MarketPosition == 0 and LP > 0 Then
{
Buy("b",AtStop,ExitPrice(1)+0.001,1);
Sell("s",AtStop,ExitPrice(1)-0.001,1);
}
}
즐거운 하루되세요
> 바다가좋아 님이 쓴 글입니다.
> 제목 : 수식 추가 수정 요청부탁드립니다.
> 안녕하세요. 어제 전량 청산 조건으로 수식 작성 부탁드렸는데 하나씩 청산하는
전략으로도 시뮬레이션을 해보고 싶어서요.
< 요청 사항 >
1. 피라미딩으로 수량 증가하면서 늘려가다가 그 반대방향으로 진행시에는 그 방향으로
하나씩 청산(손절) 되면서, 다 청산 되면 신규 매수 or 매도 진입이 되는 방식으로
만들었으면 합니다. 흐름을 따라가면서 계약수를 하나씩 증가시키거나, 감소시키고자
합니다.
2. 매매종목 : 해외선물(Australian Dollar) (5분봉 기준)
3. 매매 예시
1) 최초 시장가 1계약 매수 or 매도
2) 매수 or 매도와 동시에 손절(+- 0.001pt)만 설정
3) 최초 매수 or 매도한 가격 기준으로 수익 진행시 +0.001포인트마다 1계약씩
추가 매수 or 매도
ex) AUD 기준 0.76545 1계약 매수 -> 0.76645 추가 1계약 매수 ->
0.76745 추가 1계약 매수 -> 0.76845 추가 1계약 매수 -> 이후 가격이 0.76745로
되돌림 되었을 때는 먼저 0.76845에서 매수했던 1계약만 매수 청산(손절) ->
0.76745 에서 1계약 매수청산(손절) -> 0.76645 1계약 매수 청산(손절)
-> 0.76545 1계약 매수청산(손절) -> 이후 가격이 0.76445까지 내려가면 0.76445
1계약 매도 진입 -> 0.76345 1계약 매도 -> 0.76245 추가 1계약 매도 -> (반복)
4) 각 추가매수 or 추가매도한 계약별로 진입할 때마다 손절(-0.001포인트) 설정
5) 청산은 장 종료시에 시장가로 일괄 청산 설정(익일 05:55분)
6) 아~ 그리고 처음에 매수로 진행하지 않고, 시장 상태에 따라 제가 매수 or 매도를
한 후에 위의 방법대로 설정되어 시스템이 움직일 수 있도록 만들었으면 합니다.
항상 감사드립니다. 그럼 수고하세요.
2021-04-15
934
글번호 148039
답변완료
늘 감사합니다
5계약 진입
1 . 이평선 5 10 20 30 40
2 . 주가가 이평선 30 40 돌파 이탈 한 마지막 자리 고점 저점 기억
매번기억하고 이전 기억값은 삭재
3 . 이평선 20 선 과 주가 (현재가격) 이격도 관계
hts 처음 접속하고 시스템 적용하면 직전 2번 조건 기억하기
(2번 조건을 기억할수 없다면 변수에 손으로 적어준다 )
손절1 20틱 5계약
손절2 5 이평선이 20 이평선 이탈시 5계약 (매도금지)
현 조건에서 5 이평선이 20 이평선을 돌파하면 -- 추가 매수3
청산3 20 이평선과 주가 이격이 100 이상이면 1계약
청산4 20 이평선과 주가 이격이 90 이상나왔고 10 이평선이 양에서 음으로 변하면 1계약
현 포지션에서 청산 3 4 나올때 마다 차트에 표시
예)- 한번 청산 나오면 "청산1"
두번째 청산 나오면 "청산2"
세번재 청산 나오면 "청산3"매수 -- 5 이평선이 30 40 이평선을 돌파하면 -- 매수1
매수1 진입해서 손절이 나오면
마지막 (기억한 가격) 가격을 돌파하면(즉 매수1 에 고정) -- 매수2
네번째 청산 나오면 "청산4"
다섯번째 청산 나오면 "완청"
이런 형식으로요 Condition11 = true;
T3 = Text_New(sdate,stime,H," 청산1");
Text_SetColor(T3, 255);
Text_SetStyle(T3,2,1);
매도 -- 5 이평선이 30 40 이평선을 이탈하면 -- 매도1
매도1 진입해서 손절이 나오면
마지막 (기억한 가격) 가격을 돌파하면(즉 매도1 에 저정) -- 매도2
손절1 20틱
손절2 5 이평선이 20 이평선 돌파시 5계약 (매수금지)
현 조건에서 5 이평선이 20 이평선을 이탈하면 -- 추가 매도3
청산3 20 이평선과 주가 이격이 100 이상이면 1계약
청산4 20 이평선과 주가 이격이 90 이상나왔고 10 이평선이 음에서 양으로 변하면 1계약
현 포지션에서 청산 3 4 나올때 마다 차트에 표시
예)- 한번 청산 나오면 "청산1"
두번째 청산 나오면 "청산2"
세번재 청산 나오면 "청산3"
네번째 청산 나오면 "청산4"
다섯번째 청산 나오면 "완청"
이런 형식으로요 Condition11 = true;
T3 = Text_New(sdate,stime,H," 청산1");
Text_SetColor(T3, 255);
Text_SetStyle(T3,2,1);
2021-04-15
1063
글번호 148038