커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
3757
글번호 230811
답변완료
부탁드립니다.
- 같은 1시간대에는 매수신호든 매도신호든 먼저 나온 신호만 진입하고, 만약 같은 시간대에 그 반대신호가 나오더라도 구현되지 않도록 하는 매매시스템식을 구하고 싶습니다. 정말 빠른 답변 감사합니다.
2019-05-21
209
글번호 128860
답변완료
부탁드립니다.
1, 예를들면, 매수진입한 후 종가가 매수진입한 봉의 고가보다 8틱 오르면 수익청산하고, 저가보다 8틱 떨어지면 손절하라, 그리고 매도진입한 후 종가가 매도진입한 봉의 저가보다 8틱 떨어지면 수익청산하고, 고가보다 8틱 오르면 손절하라.
2. 같은 1시간대에서는 매수든 매도든 먼저 나온 진입만 구현할 수 있는 매매시스템을 구할 수 있을 련지요?
2019-05-21
191
글번호 128857
답변완료
문의드립니다
아래 전략 에서 신호가 봉 종가에 나오는데
봉 종가 말고 조건이 만족되면 종가에 상관없이 나오게 수정 부탁드립니다
Input : P1(10),p2(5),P3(12),p4(5);
input : Period1(26),Period2(20);
input : 익절틱수(20),손절틱수(40);
input : starttime(101600),endtime(173000);
var : Tcond(false);
if (sdate != sdate[1] and stime >= starttime) or
(sdate == sdate[1] and stime >= starttime and stime[1] < starttime) then
{
Tcond = true;
}
if (sdate != sdate[1] and stime >= endtime) or
(sdate == sdate[1] and stime >= endtime and stime[1] < endtime) then
{
Tcond = false;
if MarketPosition == 1 Then
ExitLong("bx");
if MarketPosition == -1 Then
ExitShort("sx");
}
var1 = StochasticsK(P1,P2);
var2 = StochasticsK(P3,P4);
var3 = StochasticsK(Period1,Period2);
if Tcond == true then
{
if crossup(var1,var3) and var1 < 20 and var3 < 20 Then
buy("매수");
if CrossDown(var1,var3) and var1 > 80 and var3 > 80 Then
sell("매도");
if crossup(var2,var3) and var2 < 20 and var3 < 20 Then
buy("매수진입");
if CrossDown(var2,var3) and var2 > 80 and var3 > 80 Then
sell("매도진입");
}
SetStopProfittarget(PriceScale*익절틱수,PointStop);
SetStopLoss(PriceScale*손절틱수,PointStop);
2019-05-21
190
글번호 128848
답변완료
62588 재문의 드립니다
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 문의드려요
> 안녕하세요
예스스탁입니다.
신호가 발생하면 설정창에 지정한 매매가격으로 주문이 집행되므로
설장창의 매매가격으로 해당부분을 제어할수는 없습니다.
설정창의 매매가격은 신호발생에 영향을 줄수 없습니다.
atstop이나 atlimit은 신호타입입니다.
감시가격을 지정하고 다음봉의 시세와 비교를 합니다.
다음봉에서 가격조건이 충족되지 않으면 신호가 발생하지 않습니다.
If CrossUP(value1, value2) Then
buy("b",AtLimit,c-priceScale*3);
그러므로 위 수식은
상향돌파가 발생하면 해당종의 종가-3틱을 감시가격으로 지정하고
다음봉에서 해당 감시가격 이하의 시세가 발생하면 신호가 발생하게 됩니다.
다음봉에서 해당 감시가격 이하의 시세가 발생하지 않으면
신호를 발생하지 않습니다.
만약 골드구간에서 다음봉이 아니라도
골드봉의 종가-틱에 도달하면 신호를 발생하고자 하시면
아래와 같이 작성하셔야 합니다.
Input : shortPeriod(5), longPeriod(20);
var : T(0);
value1 = ma(C, shortPeriod);
value2 = ma(C, longPeriod);
If CrossUP(value1, value2) Then
{
T = 1;
var1 = C;
}
If CrossUP(value1, value2) Then
{
T = -1;
}
if T == 1 and MarketPosition <= 0 Then
buy("b",AtLimit,var1-priceScale*3);
즐거운 하루되세요
너무너무 감사합니다
위의 식을 참조하여 아래 매수식을 만들어보았습니다 틀린곳이 있으면 수정해주시고
매도부분 식 부탁드립니다
input : shortPeriod(5), longPeriod(20);
var : T(0);
value1 = ma(Var1, shortPeriod);
value2 = ma(var1, longPeriod);
var1 = bids/Asks*100;
if Value1 > Value2 and C > o
and (V[0] > V[1] ) then
{
T = 1;
var2 = C;
}
if Value1 > Value2 and C > o
and (V[0] > V[1] ) then
{
T = -1;
}
if T == 1 and MarketPosition <= 0 Then
buy("b",AtLimit,var1-priceScale*3);
if MarketPosition == 1 and Value1 < Value2 then ExitLong("bx");
수고하세요
2019-05-21
208
글번호 128847
답변완료
부탁드립니다.
답변 감사드립니다.
그럼
진입 종료는 진입 후 (익절+손절)의 수익이 목표 틱수에 도달하면 진입을 종료하고
진입 시작은 최고 수익값 대비 하락 틱이 얼마 이상 발생하면 진입을 하는 식으로 부탁드립니다.
간단한 매매 식에서 상기수식을 넣어주시면 반영하겠습니다.
감사합니다.
안녕하세요
예스스탁입니다.
문의하신 내용은 작성해 드리기 어렵습니다.
리포트의 항목은 실제 신호를 기준으로 하는데
손실연속횟수 최대값-1에 도달할때 진입시작과 같은 부분은
가상으로 진입청산을 체크하는 내용을 작성해야 합니다.
해당 부분은 전략 내용에 따라 다르게 작성되어지고
작성해 보는데 시간이 많이 들어
업무상 많은 시간이 요구되는 내용은 저희가 답변드릴 수 없습니다.
도움을 드리지 못해 죄송합니다.
즐거운 하루되세요
> 라떼처럼 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 문의드립니다.
전략창에서
시스템 성능 보고서의 [수익손실거래] 의 손실거래 연속 횟수 와 [그래프] 누적손익을
조건으로 매매 진입과 진입 종료를 하고 싶습니다.
진입시작 : (손실연속횟수 최대값 - 1) 에 도달하면 진입 시작
진입종료 : 진입 시작후 그래프의 누적손익이 진입 전 최대 이익대비 20% 이상 시 진입종료
간단한 식에 구현할수 있는 방법을 알려주시면 식에 대입하겠습니다.
감사합니다.
2019-05-21
211
글번호 128844
답변완료
일봉에서 월봉
일봉에서 월봉 5이평선 위에 있을때 매수 매도
Var:monthavg(0);
Monthavg = monthclose(0)+monthclose(1)+monthclose(2)+monthclose(3)+monthclose(3)+monthclose(4);
Monthavg = monthavg/5;
If (ma(c,5) > ma(c,20) and c > monthavg then
Buy("매수");
If c<ma(c,20) then
Sell("매도");
Dayclose 라는 함수는 있는데
Monthclose 라는 함수는 없나요
식좀 바르게 고쳐 주셨으면 합니다
2019-05-21
211
글번호 128833
답변완료
문의드립니다.
도움주시는 덕분에 도전하고 있습니다. 매번 감사합니다.
이건 그 시간까지 당일 고가, 저가 뚫으면 매수나 매도하는 진입식인데요.
이걸 LongFlag 나 CrossUp이 True가 됐을 때 고가를 저장하고 거기서 n틱 하락했을 때 Atstop(Atlimit으로 해야 하나요? 눌림매매인데)으로 매수 진입하려면 어떻게 해야 하나요?
매도는 반대로요. 감사합니다.
Inputs: InitMin(90);
Variables: SessStartMin(0), TradeTime(0), SetHigh(0), SetLow(0), LongFlag(False), ShortFlag(False);
#conversion of hour-based time to minute-based time
SessStartMin = TimeToMinutes(90000);
TradeTime = TimeToMinutes(sTime);
input :
진입횟수(1),
손절률(1),
익절률(1)
;
var : count(0),T1(0);
input : 진입시간(90000),제한시간(150000),청산시간(153400);
var : Tcond(false);
SetStopLoss(손절률,PercentStop);
SetStopProfittarget(익절률,PercentStop);
if stime == 청산시간 or (stime > 청산시간 and stime < 청산시간) Then{
Tcond = false;
if MarketPosition == 1 Then
exitlong();
if MarketPosition == -1 Then
ExitShort();
}
if (sdate != sdate[1] and stime >= 진입시간) or
(sdate == sdate[1] and stime >= 진입시간 and stime[1] < 진입시간) then
{
Tcond = true;
T1 = TotalTrades;
}
if (sdate != sdate[1] and stime >= 제한시간) or
(sdate == sdate[1] and stime >= 제한시간 and stime[1] < 제한시간) then
{
Tcond = false;
}
if MarketPosition == 0 Then
count = TotalTrades-T1;
Else
count = TotalTrades-T1+1;
if Count < 진입횟수 and Tcond == true then
{
#Setup - establishment of the initial range
If TradeTime <= SessStartMin + InitMin Then Begin
If Date <> Date[1] Then Begin
SetHigh = High;
SetLow = Low;
LongFlag = True;
ShortFlag = True;
End
Else Begin
If High > SetHigh Then
SetHigh = High;
If Low < SetLow Then
SetLow = Low;
End;
End
Else Begin
#Entries once the initial period has ended
If LongFlag AND CrossUp( Close , SetHigh) Then
Buy();
If ShortFlag AND CrossDown(Close , SetLow) Then
Sell();
End;
}
2.
피라미딩 진입을요. 저렇게 B가 된 지점에서 -ATRV * 2 지점이 되면 추가 매수하게하는 방식을 쓸 때요. 저게 더 떨어지면 또 진입을 하게 될 것 같은데 bb가 나왔으면 또 BB가 나오지는 않게 하는 방법이 있나요?
그러다가 또 고가를 돌파하면 그 가격을 세팅하고(여기선 또 매수 안하고) 거기서 -ATR*2 지점이 되는 지점에서 추가매수.
이렇게 할 수 있나요?
그러다 마지막 고가 돌파 지점에서 ATR * 5되면 전체 포지션 청산하구요.
2019-05-21
287
글번호 128832
답변완료
피라미딩 수량 문의
안녕하세요, 유진에서 해외선물을 거래하고 있습니다.
condition1 일때 포지션 1개를 진입 하였을때, 이후 condition2 이면 포지션 2개를 진입하고 싶다고하면 (다른 시점에 1개/1개 진입이 아닌 동일 시점에 2개의 포지션을 진입하고 싶습니다)
어떻게 수식을 짜야 할까요?
감사합니다.
2019-05-21
233
글번호 128831
답변완료
수정요청
안녕하세요
늘 도움 감사드립니다.
일전에 아래와 같이 수식변경을 해주셨는데.. Ema 가 아닌 Tema 로 변경해주시기를
부탁드립니다.
INPUTS: LENGTH1(5),LENGTH2(10);
var1 = (3 * Ema(c,LENGTH1)) - (3 * Ema(Ema(c,LENGTH1),LENGTH1)) +
(Ema(Ema(Ema(c,LENGTH1),LENGTH1),LENGTH1));
var2 = (3 * Ema(H,LENGTH1)) - (3 * Ema(Ema(H,LENGTH1),LENGTH1)) +
(Ema(Ema(Ema(H,LENGTH1),LENGTH1),LENGTH1));
var3 = (3 * Ema(L,LENGTH1)) - (3 * Ema(Ema(L,LENGTH1),LENGTH1)) +
(Ema(Ema(Ema(L,LENGTH1),LENGTH1),LENGTH1));
var4 = (3 * Ema(c,LENGTH2)) - (3 * Ema(Ema(c,LENGTH2),LENGTH2)) +
(Ema(Ema(Ema(c,LENGTH2),LENGTH2),LENGTH2));
var5 = (3 * Ema(H,LENGTH2)) - (3 * Ema(Ema(H,LENGTH2),LENGTH2)) +
(Ema(Ema(Ema(H,LENGTH2),LENGTH2),LENGTH2));
var6 = (3 * Ema(L,LENGTH2)) - (3 * Ema(Ema(L,LENGTH2),LENGTH2)) +
(Ema(Ema(Ema(L,LENGTH2),LENGTH2),LENGTH2));
plot1(var1);
plot2(var2);
plot3(var3);
plot4(var4);
plot5(var5);
plot6(var6);
2
INPUTS: LENGTH1(5);
var1 = (3 * Ema(H,LENGTH1)) - (3 * Ema(Ema(H,LENGTH1),LENGTH1)) +
(Ema(Ema(Ema(H,LENGTH1),LENGTH1),LENGTH1));
var2 = (3 * Ema(L,LENGTH1)) - (3 * Ema(Ema(L,LENGTH1),LENGTH1)) +
(Ema(Ema(Ema(L,LENGTH1),LENGTH1),LENGTH1));
if crossup(C[1],var1[1]) Then
buy();
if CrossDown(C[1],var2[1]) Then
sell();
즐거운 하루되세요
2019-05-21
229
글번호 128830