커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7445
글번호 230811
가락국수 님에 의해서 삭제되었습니다.
2015-10-20
16
글번호 91448
지오2014 님에 의해서 삭제되었습니다.
2015-10-20
6
글번호 91447
답변완료
함수수정요청(합성11-1호)
아래함수에서 익절청산시(bx, sp1, sp2)의 수익률과 집입 후 1% 수익을 비교하여 수익률이 큰 값으로 청산하도록 함수를 수정부탁드립니다.
var : entry1(0);
var : ho1(0),OL1(0),HL1(0);
var : maho1(0),maOL1(0),maHL1(0);
var : cnt1(0),sumho1(0),sumOL1(0),sumHL1(0);
var : EntryCnt1(0);
var : V1(0),V2(0),V3(0),V4(0),V5(0);
var : V6(0),V7(0),V8(0),V9(0),V10(0);
if bdate != bdate[1] Then
entry1 = 0;
if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then
entry1 = entry1+1;
ho1 = Dayhigh-Dayopen;
OL1 = DayOpen-DayLow;
HL1 = DayHigh-DayLow;
sumho1 = 0;
sumOL1 = 0;
sumHL1 = 0;
for cnt1 = 1 to 10{
sumho1 = sumho1 + (dayhigh(cnt1)-dayopen(cnt1));
sumOL1 = sumOL1 + (DayOpen(cnt1)-DayLow(cnt1));
sumHL1 = sumHL1 + (DayHigh(cnt1)-DayLow(cnt1));
}
maho1 = sumho1/10;
maOL1 = sumOL1/10;
maHL1 = sumHL1/10;
V1 =
V2 =
V3 =
V4 =
V5 =
V6 =
V7 =
V8 =
V9 =
V10 =
if MarketPosition == 0 and entry1 == 0 Then{
if V7 > V8 Then
sell("s1",AtStop,V7-0.02);
if V7 < V8 Then
sell("s2",Atlimit,V8-0.02);
}
if MarketPosition == -1 and IsEntryName("s1") == true Then{
ExitShort("sp1",atlimit,V9-0.03);
ExitShort("sl1",AtStop,V6);
}
if MarketPosition == -1 and IsEntryName("s2") == true Then{
ExitShort("sp2",atlimit,V9-0.03);
ExitShort("sl2",AtStop,V6);
}
var : TF(0);
var : Xtime(0), Etime(false),cnt(0),mav1(0),mav2(0);
var : HV(0),LV(0),HV1(0),LV1(0),HV2(0),LV2(0);
Array : HH[50](0),LL[50](0),CC[50](0);
mav1 = ma(c,5);
mav2 = ma(C,20);
TF = TimeToMinutes(stime)%30;
if Bdate != Bdate[1] Then{
Etime = true;
if stime >= 090000 Then
Xtime = 050000;
Else
Xtime = 060000;
}
if Bdate != Bdate[1] or (TF < TF[1] and stime > stime[1]) or date != date[1] Then{
HH[0] = H;
LL[0] = L;
for cnt = 1 to 49{
HH[cnt] = HH[cnt-1][1];
LL[cnt] = LL[cnt-1][1];
CC[cnt] = CC[cnt-1][1];
}
}
if H > HH[0] Then
HH[0] = H;
if L < LL[0] Then
LL[0] = L;
CC[0] = C;
if HH[25+2] > 0 Then{
HV = HH[0];
LV = LL[0];
HV1 = HH[1];
LV1 = LL[1];
HV2 = HH[2];
LV2 = LL[2];
for cnt = 0 to 25{
if HH[cnt] > HV Then
HV = HH[cnt];
if LL[cnt] < LV Then
LV = LL[cnt];
if HH[cnt+1] > HV Then
HV = HH[cnt+1];
if LL[cnt+1] < LV Then
LV = LL[cnt+1];
if HH[cnt+2] > HV Then
HV = HH[cnt+2];
if LL[cnt+2] < LV Then
LV = LL[cnt+2];
}
var1 = (HV+LV)/2;
var2 = (HV1+LV1)/2;
var3 = (HV2+LV2)/2;
if Etime == true then{
if MarketPosition == 0 and CC[0] > var1 and CC[1] < var2 and CC[2] < var3 and C >= daylow+0.5 Then
buy("b",AtMarket);
if MarketPosition == 1 and c <= highest(H,BarsSinceEntry)-0.5 and CrossDown(mav1,mav2) Then
ExitLong("bx",AtMarket);
}
}
if stime == Xtime or (stime > Xtime and stime[1] < Xtime) Then{
Etime = false;
ExitLong();
}
2015-10-20
143
글번호 91446
답변완료
글번호 44536 지표문의 다시 드립니다.
전에 문의 했던 사항인데요
1.당일 시가선이 일직선으로 진행하다가 다음날 시가선과 이어지게 적용하고싶습니다. 또한
2.전일 고가와 전일 저가의 50%를 당일 중심선으로 적용하고 이 또한 일직선으로 진행하다가 다음날과 이어지게 적용하고 싶습니다.
3.그리고 시가선이 중심선 보다 위에 있으면 적색의 구름대가 형성 시가선이 중심선보다 아래있으면 청색 구름대가 적용되게 하고 싶습니다.
plot1(dayopen,"시가선");
plot2((dayhigh+daylow)/2,"전일중심");
위의 글 대로 관리자님이 해주셔서 적용을 해봤는데 시가선은 일직선으로 나오는데 중심선은 일직선으로 나오지 않고 계단 모양으로 나옵니다. 중심선 또한 시가선 처럼 일직선으로 진행되게 하고 싶습니다.
첨부한 그림 대로 적용하고 싶습니다. 알려주시면 감사하겠습니다.
2015-10-20
180
글번호 91445
답변완료
첨부파일 구현가능한지 여쭙습니다..
가능하면 부탁드리고, 불가능하다면 국내 hts들에서는 구현이 불가능한지 여부도 알려주시면 감사하겠습니다.
간략설명 : 각 봉의 최고점부터 최저점까지의 거래량을 매가격마다 표현한 것으로,
정확히 어느가격대에서 많은 거래가 일어났는지, 그리고 차트의 변동성을 확인하기 용이합니다.
2015-10-20
178
글번호 91444
답변완료
스윙하이 문의드립니다.
혹시 이런 구간을 스윙하이로
매수조건을 넣을수 있을까요?
봉은 40개 기준으로 전고점 돌파입니다.
2015-10-19
189
글번호 91443
답변완료
문의 드립니다.
해외선물 Euro FX 1분봉에서
10시30분 시가에 바로 매수를 구현해 볼려고 했는데요,
If Time==102900 Then Buy("b", AtMarket);
위 식을 해외선물 Euro FX 1분봉에 적용해서 돌리면
매수자체가 아예 안됩니다.
그 이유가 참 궁금하구요.
그래서,
If sTime==102900 Then Buy("b", AtMarket);
위 식을 해외선물 Euro FX 1분봉에 적용해서 돌리면
10시30분 시가에 매수하는게 아니라
10시31분 시가에 매수를 합니다.
즉, 봉 1개를 그냥 건너 띄는데요.
그 이유가 궁금합니다.
2015-10-19
152
글번호 91442
답변완료
부탁 드립니다.
언제나 만족한 수식 답변 노고에
깊이 감사 드립니다.
다음 파동에서
그림과 같이
질문1)ABCD표시 부탁 드립니다.
질문2)
점 C와 D의 중간 지점에서 (초기에)생성된 수평선이
선분 CD가 성장함에 따라
중간 지점이 연동이 되지 않고 머물러 있습니다.
변동 되도록 수정 부탁 드립니다.
미리 깊이 깊이 감사 드립니다.
Input:chngRate(0.1);
Var:j(0),lastHiVal(0),lastLoVal(0),turnPntBit(""),TL1(0);
Array:valArr[10](0),barArr[10](0),turnPntArr[10]("");
For j = 0 To 9
{
barArr[j] = barArr[j] + 1;
}
Condition1 = Min(valArr[1],valArr[2]) * (1 + (chngRate/100)) < H and lastHiVal < H;
Condition2 = Max(valArr[1],valArr[2]) * (1 - (chngRate/100)) > L and (lastLoVal > L || lastLoVal == 0);
If Condition1 Then { lastHiVal = H; lastLoVal = 0; }
If Condition2 Then { lastLoVal = L; lastHiVal = 0; }
turnPntBit = "";
If Condition1 and Condition2 Then
{
If Max(valArr[1],valArr[2]) < H and Min(valArr[1],valArr[2]) > L Then
turnPntBit = "HiLo";
Else If Max(valArr[1],valArr[2]) < H Then turnPntBit = "Hi";
Else If Min(valArr[1],valArr[2]) > L Then turnPntBit = "Lo";
}
Else If Condition1 Then turnPntBit = "Hi";
Else If Condition2 Then turnPntBit = "Lo";
If turnPntBit <> "" Then
{
If turnPntBit == "HiLo" Then
{
valArr[1] = IFF(turnPntArr[1] == "Hi",H,L);
barArr[1] = 0;
TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
If turnPntArr[1] == "Hi" Then
turnPntBit = "Lo";
Else
turnPntBit = "Hi";
}
If turnPntBit <> turnPntArr[1] Then
{
for j = 8 downto 1
{
valArr[j+1] = valArr[j];
barArr[j+1] = barArr[j];
turnPntArr[j+1] = turnPntArr[j];
}
}
If turnPntBit <> turnPntArr[1] or
(turnPntBit == turnPntArr[1] and
((turnPntBit == "Hi" and valArr[1] < H) or
(turnPntBit == "Lo" and valArr[1] > L))) Then
{
valArr[1] = IFF(turnPntBit == "Hi",H,L);
barArr[1] = 0;
turnPntArr[1] = turnPntBit;
If turnPntArr[1][1] <> turnPntArr[1][0] Then
TL1 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
Else
TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]);
}
}
TL_SetSize(TL1,1);
TL_SetColor(TL1,black);
var : AA(0),BB(0),CC(0),DD(0);
var : TL59(0);
if turnPntBit=="Hi" and turnPntArr[1][1] <> turnPntArr[1][0] Then{
AA = valarr[1];
BB = valarr[2];
CC = valarr[3];
DD = valarr[4];
TL_Delete(TL59);
TL59 = TL_New(sdate[1],stime[1],(AA+BB)/2,sdate,stime,(AA+BB)/2);
TL_SetExtRight(TL59,true);
TL_SetColor(TL59,red);
TL_SetSize(TL59,5);
}
if turnPntBit=="Lo" and turnPntArr[1][1] <> turnPntArr[1][0] Then{
AA = valarr[1];
BB = valarr[2];
CC = valarr[3];
DD = valarr[4];
TL_Delete(TL59);
TL_Delete(TL59);
TL59 = TL_New(sdate[1],stime[1],(AA+BB)/2,sdate,stime,(AA+BB)/2);
TL_SetExtRight(TL59,true);
TL_SetColor(TL59,red);
TL_SetSize(TL59,5);
}
2015-10-20
254
글번호 91440
답변완료
시스템식에 주석 부탁드립니다.
다음과 같이 제가 원하는 시스템식을 만들어 주셔서 감사드립니다.
나중에 참고하기 위해 번거로우시더라도 각 항목에 주석을 부탁드립니다.
특히 다음 시스템식에서 "1차매수" 와 "1차매수."의 차이가 무엇인가요?
if NextBarOpen > var1-value*(매수위치1차+1) Then
buy("1차매수",atlimit,var1-value*(매수위치1차+1),Floor((전략총매수금액*10000*(매수비중1차/100))/C));
Else
buy("1차매수.",AtMarket,def,Floor((전략총매수금액*10000*(매수비중1차/100))/C));
}
--------------------------------------------------------------------------------
input : 전략식시작일자(20151007), 전략식시작시간(090000), 전략총매수금액(4000);
input : 매수위치1차(2), 매수위치2차(3);
input : 매도위치1차(1), 매도위치2차(2);
input : 매수비중1차(50), 매수비중2차(50);
input : 매도비중1차(50), 매도비중2차(50);
input : 전략식진입횟수(1);
input : 최종손절위치(4);
input : Period(120);
var : CL(0),V0.5(0),V1(0),V2(0),V3(0);
var : mid(0),V4(0),V5(0),V6(0),V7(0);
var : diff(0),TF(0),cnt(0),value(0);
var : entrycond1(false),entrycond2(false),entrycond3(false);
if dayhigh(Period) > 0 Then{
var1 = dayhigh(0);
var2 = daylow(0);
var11 = dayhigh(1);
var12 = daylow(1);
for cnt = 0 to Period-1{
if DayHigh(cnt) > var1 Then
var1 = DayHigh(cnt);
if dayhigh(cnt+1) > var11 Then
var11 = dayhigh(cnt+1);
if daylow(cnt) < var2 Then
var2 = daylow(cnt);
if daylow(cnt+1) < var21 Then
var21 = daylow(cnt+1);
}
if var11 < var1 Then
CL = (var1+var2)/2;
V0.5 = var1-((var1-CL)/5)*1;
V1 = var1-((var1-CL)/5)*2; ## 1매수타점
V2 = var1-((var1-CL)/5)*3; ## 2매수타점
V3 = var1-((var1-CL)/5)*4; ## 3매수타점
mid = (var1+var2)/2;
V4 = var1-((var1-CL)/5)*5;
V5 = var1-((var1-CL)/5)*6;
V6 = var1-((var1-CL)/5)*7;
V7 = var1-((var1-CL)/5)*8;
value = abs(var1-V0.5);
if sdate >= 전략식시작일자 and
TotalTrades < 전략식진입횟수 and
MarketPosition == 0 and stime >= 전략식시작시간 and
EntryCond1 == false Then{
if NextBarOpen > var1-value*(매수위치1차+1) Then
buy("1차매수",atlimit,var1-value*(매수위치1차+1),Floor((전략총매수금액*10000*(매수비중1차/100))/C));
Else
buy("1차매수.",AtMarket,def,Floor((전략총매수금액*10000*(매수비중1차/100))/C));
}
if MarketPosition == 1 then{
diff = abs(var1[BarsSinceEntry]-V0.5[BarsSinceEntry]);
if MaxEntries == 1 and L >= var1-value*(매수위치2차+1) and EntryCond2 == false Then
buy("2차매수",atlimit,var1-value*(매수위치2차+1),Floor((전략총매수금액*10000*(매수비중2차/100))/C));
if LatestExitName(0) == "1차매도" Then
Condition1 = true;
if LatestExitName(0) == "2차매도" Then
Condition2 = true;
if Condition1 == false then
exitlong("1차매도",atlimit,lowest(L,BarsSinceEntry)+diff*매도위치1차,"",Floor(MaxContracts*(매도비중1차/100)),1);
if Condition2 == false then
exitlong("2차매도",atlimit,lowest(L,BarsSinceEntry)+diff*매도위치2차);
exitlong("최종손절",AtStop,var1-value*(최종손절위치+1));
}
Else{
Condition1 = false;
Condition2 = false;
}
}
if MarketPosition == 1 and (LatestEntryName(0) == "1차매수" or LatestEntryName(0) == "1차매수.") Then
entrycond1 = true;
if MarketPosition == 1 and LatestEntryName(0) == "2차매수" Then
entrycond2 = true;
if MarketPosition == 0 Then{
entrycond1 = false;
entrycond2 = false;
}
2015-10-19
150
글번호 91439