커뮤니티
문의드립니다.
2017-03-05 20:38:02
165
글번호 107469
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틱 을 수익으로 설정할경우 더이상 신호발생 금지)
감사합니다
답변 1
예스스탁 예스스탁 답변
2017-03-06 14:43:17
안녕하세요
예스스탁입니다.
시간을 0시00분00초에서 23시59분59초 사이로 지정하셔야 합니다.
밤12시가 0시입니다.
1.
input:p(192),stoch_k(14),stoch_d(5),stoch_s(3),mv(5),kstd(1.618), 시작시간(180000),끝시간(0),수익틱수(20);
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);
var : Tcond(false),Xcond(false);
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
if (시작시간 > 0 and (stime == 시작시간 or (stime > 시작시간 and stime[1] < 시작시간))) or
(시작시간 == 0 and sdate != sdate[1]) Then{
Tcond = true;
Xcond = false;
}
if (끝시간 > 0 and (stime == 끝시간 or (stime > 끝시간 and stime[1] < 끝시간))) or
(끝시간== 0 and sdate != sdate[1]) Then
Tcond = false;
if TotalTrades > TotalTrades[1] and (IsExitName("매수익절",1) or IsExitName("매도익절",1)) Then
Xcond = true;
if Tcond == true and Xcond == false then{
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();
if MarketPosition == 1 Then
ExitLong("매수익절",atlimit,EntryPrice+PriceScale*수익틱수,"",1,1);
if MarketPosition == -1 Then
ExitShort("매도익절",atlimit,EntryPrice-PriceScale*수익틱수,"",1,1);
}
2
input : 기간(20), 시작시간(180000),끝시간(0),수익틱수(20);
INPUT: P26(26), PER(1);
var : T(0),a1(0),a2(0),V1(0),V2(0),V3(0);
var : Tcond(false),Xcond(false);
if (시작시간 > 0 and (stime == 시작시간 or (stime > 시작시간 and stime[1] < 시작시간))) or
(시작시간 == 0 and sdate != sdate[1]) Then{
Tcond = true;
Xcond = false;
}
if (끝시간 > 0 and (stime == 끝시간 or (stime > 끝시간 and stime[1] < 끝시간))) or
(끝시간== 0 and sdate != sdate[1]) Then
Tcond = false;
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 TotalTrades > TotalTrades[1] and (IsExitName("매수익절",1) or IsExitName("매도익절",1)) Then
Xcond = true;
if Tcond == true and Xcond == false then{
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*수익틱수,"",1,1);
}
if MarketPosition == -1 Then{
ExitShort("매도10틱청",atlimit,EntryPrice-PriceScale*수익틱수,"",1,1);
}
}
즐거운 하루되세요
> 곽민수 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 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틱 을 수익으로 설정할경우 더이상 신호발생 금지)
감사합니다
다음글
이전글