커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
6343
글번호 230811
답변완료
수식추가부탁드림니다
52224관련수식에서 파동의고점(마지막봉)과고점(마지막봉)을 연결하는 윗꼬리선(1종가선+2고가선)과
파동의 저점(마지막봉)과저점(마지막봉)을 연결하는 아랫꼬리선(3종가선+4저가선)4선을 추가해주세요
2017-03-06
167
글번호 107470
답변완료
문의드립니다.
1.
input:p(192),stoch_k(14),stoch_d(5),stoch_s(3),mv(5),kstd(1.618);
var:j(1),sum(0),ip(0),n(0),f(0),qq(0),mm(0),tt(0),ii(0),jj(0),
kk(0),ll(0),nn(0),mi(0),kstd_internal(0.8);
var:sq(0),stdv(0),StoK(0),StoD(0);
array:ai[10,10](0),b[10](0),x[10](0),sx[20](0);
array:fx[500](0),sqh[500](0),sql[500](0),stdh[500](0),stdl[500](0);
//-------------------stochastic-------------------
value1 = lowest(L,stoch_k);
value2 = highest(H,stoch_k);
value3 = (Close - value1) / (value2 - value1) * 100;
StoK = ma(value3, stoch_d);
StoD = ma(StoK,stoch_s);
//-------------------sx---------------------------
sx[1] = p + 1;
nn = mv + 1; //5 + 1 = 6
for mi = 1 to nn * 2 - 2 begin //1 ~ 10
sum = 0;
for n = j to j + p begin //1 ~ 193
sum = sum + pow(n,mi);
end
sx[mi + 1] = sum;
end
//-------------------syx--------------------------
for mi = 1 to nn begin //1 ~ 6
sum = 0;
for n = j to j + p begin //1 ~ 193
if mi == 1 then
sum = sum + StoK[n];
else
sum = sum + StoK[n] * pow(n,mi - 1);
end
b[mi] = sum;
end
//===================Matrix=======================
for jj = 1 to nn begin //1 ~ 6
for ii = 1 to nn begin //1 ~ 6
kk = ii + jj - 1; //1 ~ 11
ai[ii,jj] = sx[kk];
end
end
//===================Gauss========================
for kk = 1 to nn - 1 begin //1 ~ 5
ll = 0; mm = 0;
for ii = kk to nn begin
if abs(ai[ii,kk]) > mm then begin
mm = abs(ai[ii,kk]);
ll = ii;
end
end
if ll == 0 then kk = 10;
else if ll <> kk then begin
for jj = 1 to nn begin //1 ~ 6
tt = ai[kk,jj];
ai[kk,jj] = ai[ll,jj];
ai[ll,jj] = tt;
end
tt = b[kk]; b[kk] = b[ll]; b[ll] = tt;
end
for ii = kk + 1 to nn begin
qq = ai[ii,kk] / ai[kk,kk];
for jj = 1 to nn begin
if jj == kk then begin
ai[ii,jj] = 0;
end else begin
ai[ii,jj] = ai[ii,jj] - qq * ai[kk,jj];
end
end
b[ii] = b[ii] - qq * b[kk];
end
end
x[nn] = b[nn] / ai[nn,nn];
for ii = nn - 1 downto 1 begin
tt =0;
for jj = 1 to nn - ii begin
tt = tt + ai[ii,ii + jj] * x[ii + jj];
x[ii] = (1 / ai[ii,ii]) * (b[ii] - tt);
end
end
//================================================
for n = j to j + p begin
sum = 0;
for kk = 1 to mv begin
sum = sum + x[kk + 1] * Pow(n,kk);
end
fx[n] = x[1] + sum;
end
//-------------------Std--------------------------
sq = 0;
for n = j to j + p begin
sq = sq + pow(StoK[n] - fx[n],2);
end
sq = SqRt(sq / (p + 1)) * kstd;
stdv = STD(StoK,p)[j] * kstd_internal;
for n = j to j + p begin
sqh[n] = fx[n] + sq;
sql[n] = fx[n] - sq;
stdh[n] = fx[n] + stdv;
stdl[n] = fx[n] - stdv;
end
#3
if (crossup(stok,stdl[1]) and stod > stdl[1]) or
(CrossUp(stod,stdl[1]) and stok > stdl[1]) Then
buy();
if (CrossDown(stok,sqh[1]) and stod < sqh[1]) or
(CrossDown(stod,sqh[1]) and stok < sqh[1]) Then
ExitLong();
if (CrossDown(stok,stdh[1]) and stod < stdh[1]) or
(CrossDown(stod,stdh[1]) and stok < stdh[1]) Then
sell();
if (crossup(stok,sql[1]) and stod > sql[1]) or
(CrossUp(stod,sql[1]) and stok > sql[1]) Then
buy();
2.
input : 기간(20);
INPUT: P26(26), PER(1);
var : T(0),a1(0),a2(0),V1(0),V2(0),V3(0);
var1 = Highest(h,기간);
var2 = Lowest(L,기간);
var3 = var1-var2;
value1 = var1-var3*0.382;
value2 = var1-var3*0.500;
value3 = var1-var3*0.618;
if value2 > value2[1] Then
T = 1;
if value2 < value2[1] Then
T = -1;
if T == 1 then{
a1 = value1;
a2 = value2;
}
else{
a1 = value3;
a2 = value2;
}
V1=(Highest(H,P26)+LOWEST(L,P26))/2;
V2=V1*(1+PER/100);
V3=V1*(1-PER/100);
if crossup(a1,v1) Then
buy("매수",OnClose,def,2);
if CrossDown(a1,v1) Then
sell("매도",OnClose,def,2);
if MarketPosition == 1 Then{
ExitLong("매수10틱청",atlimit,EntryPrice+PriceScale*10,"",1,1);
}
if MarketPosition == -1 Then{
ExitShort("매도10틱청",atlimit,EntryPrice-PriceScale*10,"",1,1);
}
위 2가지 수식에 추가를 좀부탁드리는 수식입니다
1.거래시간(예: 저녁 6시부터 밤 12시 까지만 그외 시간에는 신호발생금지)
시간 수정 가능하게 부탁드립니다
2.수익설정(예: 크루드오일 경우 0.01=1틱 수익 수정=설정 가능하게)
수익설정(예: 20틱 을 수익으로 설정할경우 더이상 신호발생 금지)
감사합니다
2017-03-05
467
글번호 107469
답변완료
검증부탁드립니다.
안녕하세요
아래의 식을 한번 봐주시고 잘못된 부분이 있으면 알려주시기 바랍니다.
감사합니다.
-----------------------------------------------------------------------------------
If 조건 then{
EP= C;
if MarketPosition == 0 or (MarketPosition == 1 and IsEntryName("B1") == false) then
sell("S1");
}
if O - C < 0.5 then
if MarketPosition == -1 Then{
if IsEntryName("S1") == true Then
ExitShort("S1손절",AtStop,EP+Pricescale*10);
if IsEntryName("S1") == true Then
ExitShort("S1익절",Atlimit,EP-Pricescale*15);
}
if O - C >= 0.5 then
if MarketPosition == -1 Then{
if IsEntryName("S1") == true Then
ExitShort("S1손절2",AtStop,EP+Pricescale*6);
if IsEntryName("S1") == true Then
ExitShort("S1익절2",Atlimit,EP-Pricescale*15);
}
if MarketPosition == -1 Then{
if IsEntryName("S1") == true Then
if lowest(L,BarsSinceEntry)<= EntryPrice - PriceScale*10
and lowest(L,BarsSinceEntry) > EntryPrice - PriceScale*20 Then
ExitShort("S1본절",AtStop,EntryPrice-PriceScale*3);
}
2017-03-05
139
글번호 107468
답변완료
문의드립니다
1. 아래식에서 목표수익이 50틱 달성이면 청산하게 부탁드립니다.
청산후에는 동일방향으로 재진입안하고 반대신호 나올때 진입해야합니다.
2. 신호에의해 진입후 반대신호청산시(손실이면) 이번신호는 미진입하고 다음신호에 진입
예) 1.sell(진입) , 2.buy{청산 (이익), 진입} , 3.sell{청산(손실)이면 , sell 진입은 안하게}
, 4.buy(이신호에 진입)
단)위의 과정처럼 할시 원래 발생되는 신호자리가 바뀌면 안됩니다. 3.sell 자리에서 손실로 청산만하고 진입을
안한다고 해서 다음 4.buy 신호자리가 다른데서 나오지는 안겟지요 ?
시스템 신호는 buy sell 한묶음으로 처리된다하니 혹시 다른 결과자리가 나오면 안되는데 "^ .^"
3. 신호 진입후 10틱이상 수익진행중이다 진입포지션 이탈시 청산하고 위 2번처럼 신호 한번 건너뛰고 다음신호
진입하게 부탁드립니다.
예) 1. buy 진입 (10틱이상수익진행중이다 다시 진입자리이탈시 청산) 2. sell 자리는 건너뛰고 3. buy 진입
Input : af(0.02), maxAF(0.2);
var1 = SAR(af,maxAF);
if C < var1 Then
Begin
sell();
End
else
Begin
buy();
End;
2017-03-05
127
글번호 107467
수색대대 님에 의해서 삭제되었습니다.
2017-03-05
12
글번호 107465
답변완료
뭐가잘못됐나요?
안녕하세요 검증되는데 신호 없어 수정의뢰합니다 감사^^
input : Length1(10);
input : LengthMult1(2);
input : NdayAgo1(0);
var : a저항선(0), a지지선(0), aRcount(0), aScount(0);
var : a저항선2(0), a지지선2(0), aRcount2(0), aScount2(0);
var : aR1(0), aR2(0), aR3(0), aR4(0), aR5(0), aR6(0), aR7(0), aR8(0), aR9(0),aR10(0),
aR11(0), aR12(0), aR13(0), aR14(0), aR15(0),aR16(0), aR17(0), aR18(0), aR19(0),aR20(0);
var : aS1(0), aS2(0), aS3(0), aS4(0), aS5(0), aS6(0), aS7(0), aS8(0), aS9(0),aS10(0),
aS11(0), aS12(0), aS13(0), aS14(0), aS15(0), aS16(0), aS17(0), aS18(0), aS19(0),aS20(0);
var : aR81(0), aR82(0), aR83(0), aR84(0), aR85(0), aS91(0), aS92(0), aS93(0), aS94(0), aS95(0);
input : Length2(10);
input : LengthMult2(2);
input : NdayAgo2(0);
var : b저항선(0), b지지선(0), bRcount(0), bScount(0);
var : b저항선2(0), b지지선2(0), bRcount2(0), bScount2(0);
var : bR1(0), bR2(0), bR3(0), bR4(0), bR5(0), bR6(0), bR7(0), bR8(0), bR9(0), bR10(0),
bR11(0), bR12(0), bR13(0), bR14(0), bR15(0), bR16(0), bR17(0), bR18(0), bR19(0), bR20(0);
var : bS1(0), bS2(0), bS3(0), bS4(0), bS5(0), bS6(0), bS7(0), bS8(0), bS9(0), bS10(0),
bS11(0), bS12(0), bS13(0), bS14(0), bS15(0), bS16(0), bS17(0), bS18(0), bS19(0), bS20(0);
var : bR81(0), bR82(0), bR83(0), bR84(0), bR85(0), bS91(0), bS92(0), bS93(0), bS94(0), bS95(0);
var1 = DateToJulian(currentdate);
var2 = DateToJulian(date);
if var2 >= var1-NdayAgo1 && dayindex >= Length1-1 then {
a저항선 = SwingHigh(1, H, Length1, Length1, Length1*2+1);
a지지선 = swingLow(1, L, Length1, Length1, Length1*2+1);
if a저항선 == -1 Then a저항선 = a저항선[1];
if a지지선 == -1 Then a지지선 = a지지선[1];
if a저항선 != a저항선[1] then aRcount = aRcount + 1;
if a지지선 != a지지선[1] Then aScount = aScount + 1;
if aRcount == 1 then aR1 = a저항선;
if aRcount == 2 Then aR2 = a저항선;
if aRcount == 3 then aR3 = a저항선;
if aRcount == 4 Then aR4 = a저항선;
if aRcount == 5 then aR5 = a저항선;
if aRcount == 6 Then aR6 = a저항선;
if aRcount == 7 then aR7 = a저항선;
if aRcount == 8 Then aR8 = a저항선;
if aRcount == 9 then aR9 = a저항선;
if aRcount == 10 Then aR10 = a저항선;
if aRcount == 11 then aR11 = a저항선;
if aRcount == 12 Then aR12 = a저항선;
if aRcount == 13 then aR13 = a저항선;
if aRcount == 14 Then aR14 = a저항선;
if aRcount == 15 then aR15 = a저항선;
if aRcount == 16 Then aR16 = a저항선;
if aRcount == 17 then aR17 = a저항선;
if aRcount == 18 Then aR18 = a저항선;
if aRcount == 19 then aR19 = a저항선;
if aRcount == 20 Then aR20 = a저항선;
if aScount == 1 then aS1 = a지지선;
if aScount == 2 Then aS2 = a지지선;
if aScount == 3 then aS3 = a지지선;
if aScount == 4 Then aS4 = a지지선;
if aScount == 5 then aS5 = a지지선;
if aScount == 6 Then aS6 = a지지선;
if aScount == 7 then aS7 = a지지선;
if aScount == 8 Then aS8 = a지지선;
if aScount == 9 then aS9 = a지지선;
if aScount == 10 Then aS10 = a지지선;
if aScount == 11 then aS11 = a지지선;
if aScount == 12 Then aS12 = a지지선;
if aScount == 13 then aS13 = a지지선;
if aScount == 14 Then aS14 = a지지선;
if aScount == 15 then aS15 = a지지선;
if aScount == 16 Then aS16 = a지지선;
if aScount == 17 then aS17 = a지지선;
if aScount == 18 Then aS18 = a지지선;
if aScount == 19 then aS19 = a지지선;
if aScount == 20 Then aS20 = a지지선;
}
# 중요 지지a저항선은 굵게 표시
if var2 >= var1-NdayAgo1 && dayindex >= Length1*LengthMult1-1 then {
a저항선2 = SwingHigh(1, H, Length1*LengthMult1, Length1*LengthMult1, Length1*LengthMult1*2+1);
a지지선2 = swingLow(1, L, Length1*LengthMult1, Length1*LengthMult1, Length1*LengthMult1*2+1);
if a저항선2 == -1 Then a저항선2 = a저항선2[1];
if a지지선2 == -1 Then a지지선2 = a지지선2[1];
if a저항선2 != a저항선2[1] then aRcount2 = aRcount2 + 1;
if a지지선2 != a지지선2[1] Then aScount2 = aScount2 + 1;
if aRcount2 == 1 then aR81 = a저항선2;
if aRcount2 == 2 Then aR82 = a저항선2;
if aRcount2 == 3 then aR83 = a저항선2;
if aRcount2 == 4 Then aR84 = a저항선2;
if aRcount2 == 5 then aR85 = a저항선2;
if aScount2 == 1 then aS91 = a지지선2;
if aScount2 == 2 Then aS92 = a지지선2;
if aScount2 == 3 then aS93 = a지지선2;
if aScount2 == 4 Then aS94 = a지지선2;
if aScount2 == 5 then aS95 = a지지선2;
}
var1 = DateToJulian(currentdate);
var2 = DateToJulian(date);
if var2 >= var1-NdayAgo2 && dayindex >= Length2-1 then {
b저항선 = SwingHigh(1, H, Length2, Length2, Length2*2+1);
b지지선 = swingLow(1, L, Length2, Length2, Length2*2+1);
if b저항선 == -1 Then b저항선 = b저항선[1];
if b지지선 == -1 Then b지지선 = b지지선[1];
if b저항선 != b저항선[1] then bRcount = bRcount + 1;
if b지지선 != b지지선[1] Then bScount = bScount + 1;
if bRcount == 1 then bR1 = b저항선;
if bRcount == 2 Then bR2 = b저항선;
if bRcount == 3 then bR3 = b저항선;
if bRcount == 4 Then bR4 = b저항선;
if bRcount == 5 then bR5 = b저항선;
if bRcount == 6 Then bR6 = b저항선;
if bRcount == 7 then bR7 = b저항선;
if bRcount == 8 Then bR8 = b저항선;
if bRcount == 9 then bR9 = b저항선;
if bRcount == 10 Then bR10 = b저항선;
if bRcount == 11 then bR11 = b저항선;
if bRcount == 12 Then bR12 = b저항선;
if bRcount == 13 then bR13 = b저항선;
if bRcount == 14 Then bR14 = b저항선;
if bRcount == 15 then bR15 = b저항선;
if bRcount == 16 Then bR16 = b저항선;
if bRcount == 17 then bR17 = b저항선;
if bRcount == 18 Then bR18 = b저항선;
if bRcount == 19 then bR19 = b저항선;
if bRcount == 20 Then bR20 = b저항선;
if bScount == 1 then bS1 = b지지선;
if bScount == 2 Then bS2 = b지지선;
if bScount == 3 then bS3 = b지지선;
if bScount == 4 Then bS4 = b지지선;
if bScount == 5 then bS5 = b지지선;
if bScount == 6 Then bS6 = b지지선;
if bScount == 7 then bS7 = b지지선;
if bScount == 8 Then bS8 = b지지선;
if bScount == 9 then bS9 = b지지선;
if bScount == 10 Then bS10 = b지지선;
if bScount == 11 then bS11 = b지지선;
if bScount == 12 Then bS12 = b지지선;
if bScount == 13 then bS13 = b지지선;
if bScount == 14 Then bS14 = b지지선;
if bScount == 15 then bS15 = b지지선;
if bScount == 16 Then bS16 = b지지선;
if bScount == 17 then bS17 = b지지선;
if bScount == 18 Then bS18 = b지지선;
if bScount == 19 then bS19 = b지지선;
if bScount == 20 Then bS20 = b지지선;
}
if var2 >= var1-NdayAgo2 && dayindex >= Length2*LengthMult2-1 then {
b저항선2 = SwingHigh(1, H, Length2*LengthMult2, Length2*LengthMult2, Length2*LengthMult2*2+1);
b지지선2 = swingLow(1, L, Length2*LengthMult2, Length2*LengthMult2, Length2*LengthMult2*2+1);
if b저항선2 == -1 Then b저항선2 = b저항선2[1];
if b지지선2 == -1 Then b지지선2 = b지지선2[1];
if b저항선2 != b저항선2[1] then bRcount2 = bRcount2 + 1;
if b지지선2 != b지지선2[1] Then bScount2 = bScount2 + 1;
if bRcount2 == 1 then bR81 = b저항선2;
if bRcount2 == 2 Then bR82 = b저항선2;
if bRcount2 == 3 then bR83 = b저항선2;
if bRcount2 == 4 Then bR84 = b저항선2;
if bRcount2 == 5 then bR85 = b저항선2;
if bScount2 == 1 then bS91 = b지지선2;
if bScount2 == 2 Then bS92 = b지지선2;
if bScount2 == 3 then bS93 = b지지선2;
if bScount2 == 4 Then bS94 = b지지선2;
if bScount2 == 5 then bS95 = b지지선2;
}
if crossup(c,aR1) Then
buy();
if CrossDown(c,bS1) Then
exitlong();
if CrossDown(C,aS1) Then
sell();
if crossup(C,bR1) Then
ExitShort();
2017-03-05
158
글번호 107464
답변완료
부탁 드립니다.
아래 수식의
그림1을
그림2와 같이 나타 내고 십습니다.
미리 감사 드립니다.
var1=trix(20);
plot1(var1,"trix20");
PlotBaseLine1(0,"0");
PlotBaseLine2(-0.01,"-0.01");
PlotBaseLine3(0.01,"0.01");
2017-03-05
197
글번호 107463
답변완료
안녕하세요. 수식 부탁드립니다.
안녕하세요~
해외선물의 전일 장의 중심가와 당일 시가를 나타내는 수식 부탁드립니다.
그리고 중심가 가격과 시가 가격을 그리고 시가선과 중심가선의 이름을
차트 우측 여백에 표시되게 부탁드립니다.
미리 감사드립니다.
2017-03-04
146
글번호 107462
카카 님에 의해서 삭제되었습니다.
2017-03-04
23
글번호 107461