커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
8132
글번호 230811
답변완료
변수 오류
안녕하세요.
종료시간을 만기일에 변화시켜서 매매하려고 합니다.
아래와 같이 게시판에 보고 작성해보았습니다.
종료시간을 input에 두고 초기값을 153000으로 설정하면 잘 매매되었는데,
vars로 옮기고 나서는이상하게 매수가 1건도 이루어지지 않네요.
변수설정에 문제가 있는거 같은데, 수정의견 부탁드립니다~
----------------------------------------------------------------
VARS: kk(1), entry(0),var11(0),var12(0),var13(0), 종료시간(0);
/*이하는 선물만기일이면 종료시간 다르게 하는 로직임*/
var11 = int(date/100)-int(date/10000)*100;
var12 = date - int(date/100)*100;
var13 = DayOfWeek(date);
if var11%3 == 0 and var12 >= 8 and var12 <= 14 and var13 == 4 then
종료시간==151500;
Else
종료시간==153000;
if sTime < 종료시간 and MarketPosition == 0 and DayOpen(0)/DayClose(1)-1<-gap and entry < 1 then
{
buy("시가매수",AtLimit,DayOpen(0),kk);...
2022-05-12
1534
글번호 158840
답변완료
ab-ratio 타주기 적용
항상 감사드립니다.
아래 시스템식을 타주기에 적굥할수 있도록 변환 부탁드립니다
Inputs: Length(5200);
Variables : ABull(0), ABear(0), BBull(0), BBear(0),ARatio(0), BRatio(0);
var:t66(0),t70(0),t71(0),t77(0),t80(0);
ABull = accumn(High - Open, Length);
ABear = Accumn(Open - Low, Length);
BBull = Accumn(High - Close[1], Length);
BBear = Accumn(Close[1] - Low, Length);
ARatio = ABull / ABear * 100;
BRatio = BBull / BBear * 100;
if aRatio>100 Then
t66 = 1 ;
if BRatio>100 Then
t70 = 1 ;
if aRatio>100 and BRatio>100 Then
t71 = 1 ;
if t71==1 Then
t77 = 1 ;
If t77==1 or t77==-1 Then
{
if t77==1 Then t80=1 ;
if t77==-1 Then t80=-1 ;
}
2022-05-13
1444
글번호 158839
답변완료
수식문의드립니다
안녕하세요~
오전에 답변주신것 바탕으로 array 사용해 수식을 줄였는데
줄인건 진입이 일어나지 않는데 원인을 못찾겠습니다...
1. 원래수식
input : ML(20), L01(12083), L02(12043), L03(12003), L04(11963), L05(11923), L06(11883), L07(11843), L08(11803), L09(11763), L10(11723);
var : Bsystem(true), Ssystem(true);
// 매수진입 조건
if Bsystem == true Then
{
if MarketPosition == 0 && condition11 == true Then buy("b01", AtLimit, L01);
if MarketPosition == 0 && condition12 == true Then buy("b02", AtLimit, L02);
if MarketPosition == 0 && condition13 == true Then buy("b03", AtLimit, L03);
if MarketPosition == 0 && condition14 == true Then buy("b04", AtLimit, L04);
if MarketPosition == 0 && condition15 == true Then buy("b05", AtLimit, L05);
if MarketPosition == 0 && condition16 == true Then buy("b06", AtLimit, L06);
if MarketPosition == 0 && condition17 == true Then buy("b07", AtLimit, L07);
if MarketPosition == 0 && condition18 == true Then buy("b08", AtLimit, L08);
if MarketPosition == 0 && condition19 == true Then buy("b09", AtLimit, L09);
if MarketPosition == 0 && condition10 == true Then buy("b10", AtLimit, L10);
if MarketPosition == 0 && CrossDown(C, L01+ML) Then condition11 = true;
if MarketPosition == 0 && CrossDown(C, L02+ML) Then condition12 = true;
if MarketPosition == 0 && CrossDown(C, L03+ML) Then condition13 = true;
if MarketPosition == 0 && CrossDown(C, L04+ML) Then condition14 = true;
if MarketPosition == 0 && CrossDown(C, L05+ML) Then condition15 = true;
if MarketPosition == 0 && CrossDown(C, L06+ML) Then condition16 = true;
if MarketPosition == 0 && CrossDown(C, L07+ML) Then condition17 = true;
if MarketPosition == 0 && CrossDown(C, L08+ML) Then condition18 = true;
if MarketPosition == 0 && CrossDown(C, L09+ML) Then condition19 = true;
if MarketPosition == 0 && CrossDown(C, L10+ML) Then condition10 = true;
if CrossDown(L, L01) Then condition11 = False;
if CrossDown(L, L02) Then condition12 = False;
if CrossDown(L, L03) Then condition13 = False;
if CrossDown(L, L04) Then condition14 = False;
if CrossDown(L, L05) Then condition15 = False;
if CrossDown(L, L06) Then condition16 = False;
if CrossDown(L, L07) Then condition17 = False;
if CrossDown(L, L08) Then condition18 = False;
if CrossDown(L, L09) Then condition19 = False;
if CrossDown(L, L10) Then condition10 = False;
}
//매도진입 조건
if Ssystem == true Then
{
if MarketPosition == 0 && Condition21 == true Then Sell("s01",AtLimit,L01);
if MarketPosition == 0 && Condition22 == true Then Sell("s02",AtLimit,L02);
if MarketPosition == 0 && Condition23 == true Then Sell("s03",AtLimit,L03);
if MarketPosition == 0 && Condition24 == true Then Sell("s04",AtLimit,L04);
if MarketPosition == 0 && Condition25 == true Then Sell("s05",AtLimit,L05);
if MarketPosition == 0 && Condition26 == true Then Sell("s06",AtLimit,L06);
if MarketPosition == 0 && Condition27 == true Then Sell("s07",AtLimit,L07);
if MarketPosition == 0 && Condition28 == true Then Sell("s08",AtLimit,L08);
if MarketPosition == 0 && Condition29 == true Then Sell("s09",AtLimit,L09);
if MarketPosition == 0 && Condition20 == true Then Sell("s10",AtLimit,L10);
if MarketPosition == 0 && CrossUp(C, L01-ML) Then condition21 = true;
if MarketPosition == 0 && CrossUp(C, L02-ML) Then condition22 = true;
if MarketPosition == 0 && CrossUp(C, L03-ML) Then condition23 = true;
if MarketPosition == 0 && CrossUp(C, L04-ML) Then condition24 = true;
if MarketPosition == 0 && CrossUp(C, L05-ML) Then condition25 = true;
if MarketPosition == 0 && CrossUp(C, L06-ML) Then condition26 = true;
if MarketPosition == 0 && CrossUp(C, L07-ML) Then condition27 = true;
if MarketPosition == 0 && CrossUp(C, L08-ML) Then condition28 = true;
if MarketPosition == 0 && CrossUp(C, L09-ML) Then condition29 = true;
if MarketPosition == 0 && CrossUp(C, L10-ML) Then condition20 = true;
if CrossUp(H, L01) Then Condition21 = False;
if CrossUp(H, L02) Then Condition22 = False;
if CrossUp(H, L03) Then Condition23 = False;
if CrossUp(H, L04) Then Condition24 = False;
if CrossUp(H, L05) Then Condition25 = False;
if CrossUp(H, L06) Then Condition26 = False;
if CrossUp(H, L07) Then Condition27 = False;
if CrossUp(H, L08) Then Condition28 = False;
if CrossUp(H, L09) Then Condition29 = False;
if CrossUp(H, L10) Then Condition20 = False;
}
// 청산
if marketposition == 1 Then
{
ExitLong("exitL1",AtLimit,EntryPrice+ML);
ExitLong("exitL2",AtStop,EntryPrice-ML);
}
if marketposition == -1 Then
{
ExitShort("exitS1",AtLimit,EntryPrice-ML);
ExitShort("exitS2",AtStop,EntryPrice+ML);
}
2. array 사용한 수식
input : ML(20);
var : Bsystem(true), Ssystem(true), i(0);
array : LL[9](0), BC[9](False), SC[99](False);
LL[5] = 11923;
For i = 0 to 4 {LL[4-i] = LL[5-i] + 2*ML;}
For i = 5 to 9 {LL[i+1] = LL[i] - 2*ML;}
MessageLog("L1 %.2f, L2 %.2f, L3 %.2f, L4 %.2f, L5 %.2f", LL[2] , LL[4], LL[5], LL[6], LL[7]);
// 매수진입 조건
if Bsystem == true Then
{
For i = 0 to 9
{
if MarketPosition == 0 && BC[i] == true Then buy("b", AtLimit, LL[i]);
if MarketPosition == 0 && CrossDown(C,LL[i]+ML) Then BC[i] = true;
if CrossDown(L, LL[i])then BC[i] = False;
}
}
//매도진입 조건
if Ssystem == true Then
{
For i = 0 to 9
{
if MarketPosition == 0 && SC[i] == true Then Sell("s", AtLimit, LL[i]);
if MarketPosition == 0 && CrossUp(C,LL[i]-ML) Then SC[i] = true;
if Crossup(H, LL[i])then SC[i] = False;
}
}
// 청산
if marketposition == 1 Then
{
ExitLong("exitL1",AtLimit,EntryPrice+ML);
ExitLong("exitL2",AtStop,EntryPrice-ML);
}
if marketposition == -1 Then
{
ExitShort("exitS1",AtLimit,EntryPrice-ML);
ExitShort("exitS2",AtStop,EntryPrice+ML);
}
-----------------------------------------------------
확인해보면 1.은 진입이 정상적으로 일어나는데
줄이기만한 2.는 진입이 아얘 일어나지 않는데 원인을 못찾겠습니다ㅠ
확인해주시면 감사하겠습니다!
2022-05-13
1259
글번호 158838
답변완료
하루최대 수익 및 장중 손실금액 수식 부탁드립니다.
안녕하세요
앞전에 하루 최대수익 도달시 더이상 거래 안되게 코드를 알려주셨는데
추가적으로 넣고싶은 코드가 있어 며칠간 도전해보다 실패하여 이렇게 글을 남깁니다.
만약 현재 코드에서(아래 첨부)
진입 후 현재손실 누적포인트가 -50point(나스닥) 경우
프로핏타겟(xx,pointstop); (신호즉시)
코드가 실행되고,
다시 현재 손실금액이 0이상으로 바뀌면
프로핏타겟 진행을 멈추고 아래 코드로 진행되게 하려 합니다.
*요약 -
-당일거래 진행중 손실이 -50 포인트 이상 손실 발생시
프로핏타겟 모드로 진행,
- 다시 수익이 -50 에서 0포인트 이상으로 바뀌면
프로핏타겟 모드 해제,
이전 코드 내용,
Input : 당일수익틱수(400);
Var : N1(0),dayPl(0),당일수익(0),Xcond(false);
당일수익 = PriceScale*당일수익틱수;
if Bdate != Bdate[1] Then
{
Xcond = false;
N1 = NetProfit;
}
daypl = NetProfit-N1;
if TotalTrades > TotalTrades[1] then
{
if daypl >= 당일수익 Then
Xcond = true;
if (IsExitName("dbp",1) == true or IsExitName("dsp",1) == true) then
Xcond = true;
}
if MarketPosition == 1 then
{
if C >= EntryPrice+((당일수익-daypl)/CurrentContracts) Then
ExitLong("dbp");
}
if MarketPosition == -1 then
{
if C <= EntryPrice-((당일수익-daypl)/CurrentContracts) then
ExitShort("dsp");
}
if Xcond == false then
{
if MarketPosition == 0 and (진입시간1, 진입시간2) Then
{
if 매수조건 Then
{
Buy();
}
if 매도조건 Then
{
Sell();
}
}
if MarketPosition == 1 Then
{
if 매수청산 조건 Then
{
ExitLong();
if 매도진입조건 (스위칭) and (진입시간1, 진입시간2) Then
{
Sell("");
}
}
}
if MarketPosition == -1 Then
{
if 매도청산 조건 Then
{
ExitShort();
if 매수 진입조건 (스위칭) and (진입시간1, 진입시간2) Then
{
Buy("");
}
}
}
}
2022-05-13
1185
글번호 158837
답변완료
종목검색식 부탁드립니다.
안녕하십니까
수고많으십니다.
종목 검색식 부탁드립니다.
ㅇ최근 30거래일 동안 일봉 상 양봉 비율이 60% 이상인 종목
감사합니다.
2022-05-13
1213
글번호 158836
대한이 님에 의해서 삭제되었습니다.
2022-05-13
0
글번호 158828
답변완료
시스템식 문의 드립니다.
안녕하세요 질문이 있어 글을 올려봅니다.
아래의 지표식을 살펴보면 저가대비 5%상승할때마다.
var1, var2 값이 변경되는데
혹시 저가대비 5%상승해서 var1, var2 값이 바뀌었을때
그전의 변수값 (var1, var2)로 매매를 하려면
var1(1), var(2) 이거나 var1[1], var2[1]
로 사용해야 하나요?? 사실 둘다 적용해봤는데 작동이 안됩니다.
방법이 있으시면 알려주세요!!ㅜ.ㅜ
1
var1 = L*1.05;
var2 = H*0.90;
if Index == 0 or (value1 > 0 and H >= value1) Then
{
value1 = var1;
value2 = Var2;
}
Else
{
if var1 < value1 Then
value1 = value1;
if var2 > Value2 Then
value2 = Var2;
}
Plot1(Value1);
plot2(value2);
2
var1 = L*1.05;
var2 = H*0.90;
if Index == 0 Then
{
value1 = var1;
value2 = Var2;
}
Else
{
if var1 < value1 Then
value1 = value1;
if var2 > Value2 Then
value2 = Var2;
if H >= value1 Then
{
value1 = var1;
Value2 = Var2;
}
}
Plot1(Value1);
plot2(value2);
즐거운 하루되세요
2022-05-13
1444
글번호 158824
2wnwn 님에 의해서 삭제되었습니다.
2022-05-13
16
글번호 158823
답변완료
수식 질문드립니다.
data1은 선물1분봉입니다.
data2는 참조차트 10틱입니다.
여기서 var1 = data2(C)-data2(C[1])
average(var1,2000) 값을
1분봉의 OHLC 값 나오도록 봉차트 구현가능한지 궁금합니다.
즉, 10틱을 다시 1분봉으로 변환해서 지표로 표기하고싶습니다.
감사합니다.
2022-05-13
1397
글번호 158822