커뮤니티
참조함수로 수정요청(11-1호)
2015-11-04 00:54:04
189
글번호 92029
안녕하세요?
아래의 함수를 사용하여 B종목(data2)에서 신호를 잡아 B종목(data1)을 실제주문을 내고 싶습니다.
참조함수로 수정부탁드립니다.
아울러 작성해주신 함수를 data1에서 시스템을 선택하여 적용시켜야 하나요 data2에다 적용시켜야 하나요?
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();
}
답변 1
예스스탁 예스스탁 답변
2015-11-04 15:58:09
안녕하세요
예스스탁입니다.
data2로 변경하면 기존의 atstop이나 atlimit으로 구현된
조건만족 즉시 내용은 모두 봉완성시 onclose로 변경해야 합니다.
해당 atstop이나 atlimit은 주종목(data1)시세와만 비교합니다.
이용에 참고하시기 바랍니다.
var : entry1(0);
var : ho1(0,data2),OL1(0,data2),HL1(0,data2);
var : maho1(0,data2),maOL1(0,data2),maHL1(0,data2);
var : cnt1(0,data2),sumho1(0,data2),sumOL1(0,data2),sumHL1(0,data2);
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);
Array : DO[100](0),DH[100](0),DL[100](0);
if data2(bdate != bdate[1]) Then{
entry1 = 0;
DO[0] = data2(O);
DH[0] = data2(H);
DH[0] = data2(L);
for cnt1 = 1 to 99{
DO[cnt1] = DO[cnt1-1][1];
DH[cnt1] = DH[cnt1-1][1];
DL[cnt1] = DL[cnt1-1][1];
}
}
if data2(H) > DH[0] Then
DH[0] = data2(H);
if data2(L) < DL[0] Then
DL[0] = data2(L);
if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then
entry1 = entry1+1;
ho1 = data2(highD(0)-openD(0));
OL1 = data2(OpenD(0)-LowD(0));
HL1 = data2(HighD(0)-LowD(0));
sumho1 = 0;
sumOL1 = 0;
sumHL1 = 0;
if DH[10] > 0 Then{
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 and data2(L) <= V7[1]-0.02 Then
sell("s1");
if V7 < V8 and data2(L) <= V8[1]-0.02 Then
sell("s2");
}
if MarketPosition == -1 and IsEntryName("s1") == true Then{
if data2(L) <= V9[1]-0.03 Then
ExitShort("sp1");
if data2(H) >= V6[1] Then
ExitShort("sl1",AtStop,V6);
}
if MarketPosition == -1 and IsEntryName("s2") == true Then{
if data2(L) <= V9[1]-0.03 Then
ExitShort("sp2");
if data2(H) >= V6[1] Then
ExitShort("sl2");
}
var : TF(0,data2);
var : Xtime(0,data1), Etime(false,data1),cnt(0,data1),mav1(0,data2),mav2(0,data2);
var : HV(0,data2),LV(0,data2),HV1(0,data2),LV1(0,data2),HV2(0,data2),LV2(0,data2),H2(0,data1);
Array : HH[50](0,data2),LL[50](0,data2),CC[50](0,data2);
mav1 = data2(ma(c,5));
mav2 = data2(ma(C,20));
H2 = data2(H);
TF = data2(TimeToMinutes(stime)%30);
if Bdate != Bdate[1] Then{
Etime = true;
if stime >= 090000 Then
Xtime = 050000;
Else
Xtime = 060000;
}
if data2(Bdate != Bdate[1] or (TF < TF[1] and stime > stime[1]) or date != date[1]) Then{
HH[0] = data2(H);
LL[0] = data2(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 data2(H) > HH[0] Then
HH[0] = data2(H);
if data2(L) < LL[0] Then
LL[0] = data2(L);
CC[0] = data2(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];
}
v1 = (HV+LV)/2;
v2 = (HV1+LV1)/2;
v3 = (HV2+LV2)/2;
if Etime == true then{
if MarketPosition == 0 and CC[0] > v1 and CC[1] < v2 and CC[2] < v3 and data2(C >= lowD(0)+0.5) Then
buy("b",AtMarket);
if MarketPosition == 1 and data2(c) <= highest(H2,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();
}
즐거운 하루되세요
> 통큰베팅 님이 쓴 글입니다.
> 제목 : 참조함수로 수정요청(11-1호)
> 안녕하세요?
아래의 함수를 사용하여 B종목(data2)에서 신호를 잡아 B종목(data1)을 실제주문을 내고 싶습니다.
참조함수로 수정부탁드립니다.
아울러 작성해주신 함수를 data1에서 시스템을 선택하여 적용시켜야 하나요 data2에다 적용시켜야 하나요?
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();
}