커뮤니티
시스템식 검토부탁드립니다.
2015-10-07 09:46:01
156
글번호 90997
다음 시스템식에서
1. 그림1)에서 2차매수가 진행되지 않습니다.
2. 그림2)에서 빨간색지표 즉, 1매수타점에서 신호가 잡히지 않고, 잠시후 9시30분경 재차 매
수타점에 저가가 형성시 신호가 잡히네요.
저가가 1타점지표를 하향돌파하지 않아도 1타점지표 아래에 있으면 무조건 매수신호가
잡히게 부탁드립니다.
3. 매도비중을 전략총매수금액의 각%가 아니라, 현재 매수된 총금액의 비중대로 매도되도록
수정 부탁드립니다.
------------------------------------------------------------------------------------
input : 전략식시작일자(20151001), 전략식시작시간(090000), 전략총매수금액(1000000);
input : 매수비중1차(20), 매수비중2차(30), 매수비중3차(50);
##괄호안의 숫자는 총매수금액의 각 분할매수할 퍼센티지입니다.
input : 매도비중1차(20), 매도비중2차(30), 매도비중3차(50);
##괄호안의 숫자는 매수된 금액의 각 분할매도할 퍼센티지입니다.
input : Period(384);
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);
Array : HH[400](0),LL[499](0);
TF = TimeToMinutes(stime)%15;
if date != date[1] or (date == date and TF < TF[1]) Then{
HH[0] = H;
LL[0] = L;
for cnt = 1 to 399{
HH[cnt] = HH[cnt-1][1];
LL[cnt] = LL[cnt-1][1];
}
}
if H > HH[0] Then
HH[0] = H;
if L < LL[0] Then
LL[0] = L;
if HH[Period] > 0 Then{
var1 = HH[0];
var2 = LL[0];
var11 = HH[1];
var12 = LL[1];
for cnt = 0 to Period-1{
if HH[cnt] > var1 Then
var1 = HH[cnt];
if HH[cnt+1] > var11 Then
var11 = HH[cnt+1];
if LL[cnt] < var2 Then
var2 = LL[cnt];
if LL[cnt+1] < var21 Then
var21 = LL[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;
if sdate >= 전략식시작일자 then{
if MarketPosition == 0 and
L >= V1 and stime >= 전략식시작시간 and
((stime < 120000 and O > C[1]*0.98) or (stime >= 120000 and C > V2)) Then
buy("1차매수",atlimit,V1,Floor((전략총매수금액*(매수비중1차/100))/C));
if MarketPosition == 1 then{
diff = abs(var1[BarsSinceEntry]-V0.5);
if MaxEntries == 1 and L >= V2 and CurrentContracts == MaxContracts Then
buy("2차매수",atlimit,V2,Floor((전략총매수금액*(매수비중2차/100))/C));
if MaxEntries == 2 and L >= V3 and CurrentContracts == MaxContracts Then
buy("3차매수",atlimit,V3,Floor((전략총매수금액*(매수비중3차/100))/C));
if LatestExitName(0) == "1차매도" Then
Condition1 = true;
if LatestExitName(0) == "2차매도" Then
Condition2 = true;
if LatestExitName(0) == "3차매도" Then
Condition3 = true;
if Condition1 == false then
exitlong("1차매도",atlimit,lowest(L,BarsSinceEntry)+diff*2,"",Floor(MaxContracts*(매도비중1차/100)),1);
if Condition2 == false then
exitlong("2차매도",atlimit,lowest(L,BarsSinceEntry)+diff*3,"",Floor(MaxContracts*(매도비중2차/100)),1);
if Condition3 == false then
exitlong("3차매도",atlimit,lowest(L,BarsSinceEntry)+diff*4,"",Floor(MaxContracts*(매도비중3차/100)),1);
}
Else{
Condition1 = false;
Condition2 = false;
Condition3 = false;
}
}
}
------------------------------------------------------------------------------------
- 1. 성우하이텍_3분봉.PNG (0.04 MB)
- 2. 유진기업_3분봉.PNG (0.04 MB)
답변 4
예스스탁 예스스탁 답변
2015-10-07 14:04:54
안녕하세요
예스스탁입니다.
1.
추가로 진입하게 작성된 식은
차트에 적용하실 때
시스템 트레이딩 설정창의 피라미딩탭에서
피라미딩을 지정하셔야 합니다.
해당식은 다른진입신호만 허용으로 지정하시면 그림1번에
지정한 자리에 2차,3차 진입 발생합니다.
2
지금 현재 전체 진입이
가격이 하락해 지정한 값을 위에서 아래로 터치하면
즉시 신호가 발생하게 되어 있습니다.
2번그림과 같은 경우 9시봉이 이미 그 아래이므로 신호가 발생하지 않았습니다.
만약 10월 7일 9시부터 진입하고자 하시면
아래식 이용하시면 됩니다.
현재 수식의 진입이 atlimit방식입니다.
atlimit이나 atstop 신호타입은
다음봉에서 지정한 가격조건만족하면 즉시 신호가 발생합니다.
그러므로 10월 7일 9시부터 진입시작이면
전략식시작날짜와 전략식시작시간을
한봉전의 날짜와 시간을 지정해 주셔야 합니다.
10월 7일 9시 부터이면 시작하신다면
첨부된 그림과 같이 한봉전인 10월 6일 15시 봉으로 지정해 주시면 됩니다.
input : 전략식시작일자(20151001), 전략식시작시간(090000), 전략총매수금액(1000000);
input : 매수비중1차(20), 매수비중2차(30), 매수비중3차(50);
##괄호안의 숫자는 총매수금액의 각 분할매수할 퍼센티지입니다.
input : 매도비중1차(20), 매도비중2차(30), 매도비중3차(50);
##괄호안의 숫자는 매수된 금액의 각 분할매도할 퍼센티지입니다.
input : Period(384);
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);
Array : HH[400](0),LL[499](0);
TF = TimeToMinutes(stime)%15;
if date != date[1] or (date == date and TF < TF[1]) Then{
HH[0] = H;
LL[0] = L;
for cnt = 1 to 399{
HH[cnt] = HH[cnt-1][1];
LL[cnt] = LL[cnt-1][1];
}
}
if H > HH[0] Then
HH[0] = H;
if L < LL[0] Then
LL[0] = L;
if HH[Period] > 0 Then{
var1 = HH[0];
var2 = LL[0];
var11 = HH[1];
var12 = LL[1];
for cnt = 0 to Period-1{
if HH[cnt] > var1 Then
var1 = HH[cnt];
if HH[cnt+1] > var11 Then
var11 = HH[cnt+1];
if LL[cnt] < var2 Then
var2 = LL[cnt];
if LL[cnt+1] < var21 Then
var21 = LL[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;
if sdate >= 전략식시작일자 then{
if MarketPosition == 0 and stime >= 전략식시작시간 and
((stime < 120000 and O > C[1]*0.98) or (stime >= 120000 and C > V2)) Then{
if NextBarOpen > V1 Then
buy("1차매수",atlimit,V1,Floor((전략총매수금액*(매수비중1차/100))/C));
Else
buy("1차매수.",AtMarket,def,Floor((전략총매수금액*(매수비중1차/100))/C));
}
if MarketPosition == 1 then{
diff = abs(var1[BarsSinceEntry]-V0.5[BarsSinceEntry]);
if MaxEntries == 1 and L >= V2 and CurrentContracts == MaxContracts Then
buy("2차매수",atlimit,V2,Floor((전략총매수금액*(매수비중2차/100))/C));
if MaxEntries == 2 and L >= V3 and CurrentContracts == MaxContracts Then
buy("3차매수",atlimit,V3,Floor((전략총매수금액*(매수비중3차/100))/C));
if LatestExitName(0) == "1차매도" Then
Condition1 = true;
if LatestExitName(0) == "2차매도" Then
Condition2 = true;
if LatestExitName(0) == "3차매도" Then
Condition3 = true;
if Condition1 == false then
exitlong("1차매도",atlimit,lowest(L,BarsSinceEntry)+diff*2,"",Floor(MaxContracts*(매도비중1차/100)),1);
if Condition2 == false then
exitlong("2차매도",atlimit,lowest(L,BarsSinceEntry)+diff*3,"",Floor(MaxContracts*(매도비중2차/100)),1);
if Condition3 == false then
exitlong("3차매도",atlimit,lowest(L,BarsSinceEntry)+diff*4,"",Floor(MaxContracts*(매도비중3차/100)),1);
}
Else{
Condition1 = false;
Condition2 = false;
Condition3 = false;
}
}
}
3.
현재 매도비중은 현재까지의 진입량을 %로 나누어 청산합니다.
전략총매수금액으로 분할하지 않습니다.
즐거운 하루되세요
> 종풍화성 님이 쓴 글입니다.
> 제목 : 시스템식 검토부탁드립니다.
> 다음 시스템식에서
1. 그림1)에서 2차매수가 진행되지 않습니다.
2. 그림2)에서 빨간색지표 즉, 1매수타점에서 신호가 잡히지 않고, 잠시후 9시30분경 재차 매
수타점에 저가가 형성시 신호가 잡히네요.
저가가 1타점지표를 하향돌파하지 않아도 1타점지표 아래에 있으면 무조건 매수신호가
잡히게 부탁드립니다.
3. 매도비중을 전략총매수금액의 각%가 아니라, 현재 매수된 총금액의 비중대로 매도되도록
수정 부탁드립니다.
------------------------------------------------------------------------------------
input : 전략식시작일자(20151001), 전략식시작시간(090000), 전략총매수금액(1000000);
input : 매수비중1차(20), 매수비중2차(30), 매수비중3차(50);
##괄호안의 숫자는 총매수금액의 각 분할매수할 퍼센티지입니다.
input : 매도비중1차(20), 매도비중2차(30), 매도비중3차(50);
##괄호안의 숫자는 매수된 금액의 각 분할매도할 퍼센티지입니다.
input : Period(384);
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);
Array : HH[400](0),LL[499](0);
TF = TimeToMinutes(stime)%15;
if date != date[1] or (date == date and TF < TF[1]) Then{
HH[0] = H;
LL[0] = L;
for cnt = 1 to 399{
HH[cnt] = HH[cnt-1][1];
LL[cnt] = LL[cnt-1][1];
}
}
if H > HH[0] Then
HH[0] = H;
if L < LL[0] Then
LL[0] = L;
if HH[Period] > 0 Then{
var1 = HH[0];
var2 = LL[0];
var11 = HH[1];
var12 = LL[1];
for cnt = 0 to Period-1{
if HH[cnt] > var1 Then
var1 = HH[cnt];
if HH[cnt+1] > var11 Then
var11 = HH[cnt+1];
if LL[cnt] < var2 Then
var2 = LL[cnt];
if LL[cnt+1] < var21 Then
var21 = LL[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;
if sdate >= 전략식시작일자 then{
if MarketPosition == 0 and
L >= V1 and stime >= 전략식시작시간 and
((stime < 120000 and O > C[1]*0.98) or (stime >= 120000 and C > V2)) Then
buy("1차매수",atlimit,V1,Floor((전략총매수금액*(매수비중1차/100))/C));
if MarketPosition == 1 then{
diff = abs(var1[BarsSinceEntry]-V0.5);
if MaxEntries == 1 and L >= V2 and CurrentContracts == MaxContracts Then
buy("2차매수",atlimit,V2,Floor((전략총매수금액*(매수비중2차/100))/C));
if MaxEntries == 2 and L >= V3 and CurrentContracts == MaxContracts Then
buy("3차매수",atlimit,V3,Floor((전략총매수금액*(매수비중3차/100))/C));
if LatestExitName(0) == "1차매도" Then
Condition1 = true;
if LatestExitName(0) == "2차매도" Then
Condition2 = true;
if LatestExitName(0) == "3차매도" Then
Condition3 = true;
if Condition1 == false then
exitlong("1차매도",atlimit,lowest(L,BarsSinceEntry)+diff*2,"",Floor(MaxContracts*(매도비중1차/100)),1);
if Condition2 == false then
exitlong("2차매도",atlimit,lowest(L,BarsSinceEntry)+diff*3,"",Floor(MaxContracts*(매도비중2차/100)),1);
if Condition3 == false then
exitlong("3차매도",atlimit,lowest(L,BarsSinceEntry)+diff*4,"",Floor(MaxContracts*(매도비중3차/100)),1);
}
Else{
Condition1 = false;
Condition2 = false;
Condition3 = false;
}
}
}
------------------------------------------------------------------------------------
종풍화성
2015-10-07 14:26:57
종풍화성 님에 의해 삭제된 답변입니다.
종풍화성
2015-10-07 14:39:03
빠른 답변에 정말 감사드립니다.
그림과 같이 마지막 3차매도에서 잔량이 2주가 남는데.. 이것을 전부 정리할려면 어떻게 해야 하나요?
예스스탁 예스스탁 답변
2015-10-07 14:38:53
안녕하세요
예스스탁입니다.
3차에는 남은 잔량을 전부청산하게 했습니다.
input : 전략식시작일자(20151001), 전략식시작시간(090000), 전략총매수금액(1000000);
input : 매수비중1차(20), 매수비중2차(30), 매수비중3차(50);
##괄호안의 숫자는 총매수금액의 각 분할매수할 퍼센티지입니다.
input : 매도비중1차(20), 매도비중2차(30), 매도비중3차(50);
##괄호안의 숫자는 매수된 금액의 각 분할매도할 퍼센티지입니다.
input : Period(384);
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);
Array : HH[400](0),LL[499](0);
TF = TimeToMinutes(stime)%15;
if date != date[1] or (date == date and TF < TF[1]) Then{
HH[0] = H;
LL[0] = L;
for cnt = 1 to 399{
HH[cnt] = HH[cnt-1][1];
LL[cnt] = LL[cnt-1][1];
}
}
if H > HH[0] Then
HH[0] = H;
if L < LL[0] Then
LL[0] = L;
if HH[Period] > 0 Then{
var1 = HH[0];
var2 = LL[0];
var11 = HH[1];
var12 = LL[1];
for cnt = 0 to Period-1{
if HH[cnt] > var1 Then
var1 = HH[cnt];
if HH[cnt+1] > var11 Then
var11 = HH[cnt+1];
if LL[cnt] < var2 Then
var2 = LL[cnt];
if LL[cnt+1] < var21 Then
var21 = LL[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;
if sdate >= 전략식시작일자 then{
if MarketPosition == 0 and stime >= 전략식시작시간 and
((stime < 120000 and O > C[1]*0.98) or (stime >= 120000 and C > V2)) Then{
if NextBarOpen > V1 Then
buy("1차매수",atlimit,V1,Floor((전략총매수금액*(매수비중1차/100))/C));
Else
buy("1차매수.",AtMarket,def,Floor((전략총매수금액*(매수비중1차/100))/C));
}
if MarketPosition == 1 then{
diff = abs(var1[BarsSinceEntry]-V0.5[BarsSinceEntry]);
if MaxEntries == 1 and L >= V2 and CurrentContracts == MaxContracts Then
buy("2차매수",atlimit,V2,Floor((전략총매수금액*(매수비중2차/100))/C));
if MaxEntries == 2 and L >= V3 and CurrentContracts == MaxContracts Then
buy("3차매수",atlimit,V3,Floor((전략총매수금액*(매수비중3차/100))/C));
if LatestExitName(0) == "1차매도" Then
Condition1 = true;
if LatestExitName(0) == "2차매도" Then
Condition2 = true;
if LatestExitName(0) == "3차매도" Then
Condition3 = true;
if Condition1 == false then
exitlong("1차매도",atlimit,lowest(L,BarsSinceEntry)+diff*2,"",Floor(MaxContracts*(매도비중1차/100)),1);
if Condition2 == false then
exitlong("2차매도",atlimit,lowest(L,BarsSinceEntry)+diff*3,"",Floor(MaxContracts*(매도비중2차/100)),1);
if Condition3 == false then
exitlong("3차매도",atlimit,lowest(L,BarsSinceEntry)+diff*4);
}
Else{
Condition1 = false;
Condition2 = false;
Condition3 = false;
}
}
}
즐거운 하루되세요
> 종풍화성 님이 쓴 글입니다.
> 제목 : Re : Re : 추가질문 드립니다.
> 빠른 답변에 정말 감사드립니다.
그림과 같이 마지막 3차매도에서 잔량이 2주가 남는데.. 이것을 전부 정리할려면 어떻게 해야 하나요?
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 시스템식 검토부탁드립니다.
> 안녕하세요
예스스탁입니다.
1.
추가로 진입하게 작성된 식은
차트에 적용하실 때
시스템 트레이딩 설정창의 피라미딩탭에서
피라미딩을 지정하셔야 합니다.
해당식은 다른진입신호만 허용으로 지정하시면 그림1번에
지정한 자리에 2차,3차 진입 발생합니다.
2
지금 현재 전체 진입이
가격이 하락해 지정한 값을 위에서 아래로 터치하면
즉시 신호가 발생하게 되어 있습니다.
2번그림과 같은 경우 9시봉이 이미 그 아래이므로 신호가 발생하지 않았습니다.
만약 10월 7일 9시부터 진입하고자 하시면
아래식 이용하시면 됩니다.
현재 수식의 진입이 atlimit방식입니다.
atlimit이나 atstop 신호타입은
다음봉에서 지정한 가격조건만족하면 즉시 신호가 발생합니다.
그러므로 10월 7일 9시부터 진입시작이면
전략식시작날짜와 전략식시작시간을
한봉전의 날짜와 시간을 지정해 주셔야 합니다.
10월 7일 9시 부터이면 시작하신다면
첨부된 그림과 같이 한봉전인 10월 6일 15시 봉으로 지정해 주시면 됩니다.
input : 전략식시작일자(20151001), 전략식시작시간(090000), 전략총매수금액(1000000);
input : 매수비중1차(20), 매수비중2차(30), 매수비중3차(50);
##괄호안의 숫자는 총매수금액의 각 분할매수할 퍼센티지입니다.
input : 매도비중1차(20), 매도비중2차(30), 매도비중3차(50);
##괄호안의 숫자는 매수된 금액의 각 분할매도할 퍼센티지입니다.
input : Period(384);
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);
Array : HH[400](0),LL[499](0);
TF = TimeToMinutes(stime)%15;
if date != date[1] or (date == date and TF < TF[1]) Then{
HH[0] = H;
LL[0] = L;
for cnt = 1 to 399{
HH[cnt] = HH[cnt-1][1];
LL[cnt] = LL[cnt-1][1];
}
}
if H > HH[0] Then
HH[0] = H;
if L < LL[0] Then
LL[0] = L;
if HH[Period] > 0 Then{
var1 = HH[0];
var2 = LL[0];
var11 = HH[1];
var12 = LL[1];
for cnt = 0 to Period-1{
if HH[cnt] > var1 Then
var1 = HH[cnt];
if HH[cnt+1] > var11 Then
var11 = HH[cnt+1];
if LL[cnt] < var2 Then
var2 = LL[cnt];
if LL[cnt+1] < var21 Then
var21 = LL[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;
if sdate >= 전략식시작일자 then{
if MarketPosition == 0 and stime >= 전략식시작시간 and
((stime < 120000 and O > C[1]*0.98) or (stime >= 120000 and C > V2)) Then{
if NextBarOpen > V1 Then
buy("1차매수",atlimit,V1,Floor((전략총매수금액*(매수비중1차/100))/C));
Else
buy("1차매수.",AtMarket,def,Floor((전략총매수금액*(매수비중1차/100))/C));
}
if MarketPosition == 1 then{
diff = abs(var1[BarsSinceEntry]-V0.5[BarsSinceEntry]);
if MaxEntries == 1 and L >= V2 and CurrentContracts == MaxContracts Then
buy("2차매수",atlimit,V2,Floor((전략총매수금액*(매수비중2차/100))/C));
if MaxEntries == 2 and L >= V3 and CurrentContracts == MaxContracts Then
buy("3차매수",atlimit,V3,Floor((전략총매수금액*(매수비중3차/100))/C));
if LatestExitName(0) == "1차매도" Then
Condition1 = true;
if LatestExitName(0) == "2차매도" Then
Condition2 = true;
if LatestExitName(0) == "3차매도" Then
Condition3 = true;
if Condition1 == false then
exitlong("1차매도",atlimit,lowest(L,BarsSinceEntry)+diff*2,"",Floor(MaxContracts*(매도비중1차/100)),1);
if Condition2 == false then
exitlong("2차매도",atlimit,lowest(L,BarsSinceEntry)+diff*3,"",Floor(MaxContracts*(매도비중2차/100)),1);
if Condition3 == false then
exitlong("3차매도",atlimit,lowest(L,BarsSinceEntry)+diff*4,"",Floor(MaxContracts*(매도비중3차/100)),1);
}
Else{
Condition1 = false;
Condition2 = false;
Condition3 = false;
}
}
}
3.
현재 매도비중은 현재까지의 진입량을 %로 나누어 청산합니다.
전략총매수금액으로 분할하지 않습니다.
즐거운 하루되세요
> 종풍화성 님이 쓴 글입니다.
> 제목 : 시스템식 검토부탁드립니다.
> 다음 시스템식에서
1. 그림1)에서 2차매수가 진행되지 않습니다.
2. 그림2)에서 빨간색지표 즉, 1매수타점에서 신호가 잡히지 않고, 잠시후 9시30분경 재차 매
수타점에 저가가 형성시 신호가 잡히네요.
저가가 1타점지표를 하향돌파하지 않아도 1타점지표 아래에 있으면 무조건 매수신호가
잡히게 부탁드립니다.
3. 매도비중을 전략총매수금액의 각%가 아니라, 현재 매수된 총금액의 비중대로 매도되도록
수정 부탁드립니다.
------------------------------------------------------------------------------------
input : 전략식시작일자(20151001), 전략식시작시간(090000), 전략총매수금액(1000000);
input : 매수비중1차(20), 매수비중2차(30), 매수비중3차(50);
##괄호안의 숫자는 총매수금액의 각 분할매수할 퍼센티지입니다.
input : 매도비중1차(20), 매도비중2차(30), 매도비중3차(50);
##괄호안의 숫자는 매수된 금액의 각 분할매도할 퍼센티지입니다.
input : Period(384);
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);
Array : HH[400](0),LL[499](0);
TF = TimeToMinutes(stime)%15;
if date != date[1] or (date == date and TF < TF[1]) Then{
HH[0] = H;
LL[0] = L;
for cnt = 1 to 399{
HH[cnt] = HH[cnt-1][1];
LL[cnt] = LL[cnt-1][1];
}
}
if H > HH[0] Then
HH[0] = H;
if L < LL[0] Then
LL[0] = L;
if HH[Period] > 0 Then{
var1 = HH[0];
var2 = LL[0];
var11 = HH[1];
var12 = LL[1];
for cnt = 0 to Period-1{
if HH[cnt] > var1 Then
var1 = HH[cnt];
if HH[cnt+1] > var11 Then
var11 = HH[cnt+1];
if LL[cnt] < var2 Then
var2 = LL[cnt];
if LL[cnt+1] < var21 Then
var21 = LL[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;
if sdate >= 전략식시작일자 then{
if MarketPosition == 0 and
L >= V1 and stime >= 전략식시작시간 and
((stime < 120000 and O > C[1]*0.98) or (stime >= 120000 and C > V2)) Then
buy("1차매수",atlimit,V1,Floor((전략총매수금액*(매수비중1차/100))/C));
if MarketPosition == 1 then{
diff = abs(var1[BarsSinceEntry]-V0.5);
if MaxEntries == 1 and L >= V2 and CurrentContracts == MaxContracts Then
buy("2차매수",atlimit,V2,Floor((전략총매수금액*(매수비중2차/100))/C));
if MaxEntries == 2 and L >= V3 and CurrentContracts == MaxContracts Then
buy("3차매수",atlimit,V3,Floor((전략총매수금액*(매수비중3차/100))/C));
if LatestExitName(0) == "1차매도" Then
Condition1 = true;
if LatestExitName(0) == "2차매도" Then
Condition2 = true;
if LatestExitName(0) == "3차매도" Then
Condition3 = true;
if Condition1 == false then
exitlong("1차매도",atlimit,lowest(L,BarsSinceEntry)+diff*2,"",Floor(MaxContracts*(매도비중1차/100)),1);
if Condition2 == false then
exitlong("2차매도",atlimit,lowest(L,BarsSinceEntry)+diff*3,"",Floor(MaxContracts*(매도비중2차/100)),1);
if Condition3 == false then
exitlong("3차매도",atlimit,lowest(L,BarsSinceEntry)+diff*4,"",Floor(MaxContracts*(매도비중3차/100)),1);
}
Else{
Condition1 = false;
Condition2 = false;
Condition3 = false;
}
}
}
------------------------------------------------------------------------------------