커뮤니티
시스템식 수정 부탁드립니다.
2015-10-08 10:59:01
156
글번호 91060
아래 보내주신 시스템식에서 매수타점과 매도타점을 좀더 용이하게 하기위해서 다음과 같이
외부변수를 추가로 할당할려고 합니다. 이에 맞게 시스템식 수정 부탁드립니다.
더불어 도움주심에 감사드립니다.
## 추가할 외부변수 설정 시작 ---------------------------------
input : 1차매수위치(2), 2차매수위치(3), 3차매수위치(4);
input : 1차매도위치(1), 2차매도위치(2), 3차매도위치(3);
## 추가할 외부변수 설정 끝 ---------------------------------
[설명]
첨부한 챠트에서 각각의 매수타점의 간격은 "최고점"-"V0.5" 간격차이만큼 모두 동일합니다.
따라서 이간격의 갯수를 1로 설정했을때
V1라인 즉 1차매수타점은 (최고점-V0.5)의 2개간격 -> input:1차매수위치(2) 에 해당
V2라인 즉 2차매수타점은 (최고점-V0.5)의 3개간격 -> input:1차매수위치(3) 에 해당
V3라인 즉 3차매수타점은 (최고점-V0.5)의 4개간격 -> input:1차매수위치(4) 에 해당
으로 변경해 주시고요
매도위치도 마찬가지로
1차매도위치(1)은 최저점에서 (최고점-V0.5)의 1개간격만큼 반등한 위치에서 매도
1차매도위치(1)은 최저점에서 (최고점-V0.5)의 1개간격만큼 반등한 위치에서 매도
로 변경해 주시면 감사하겠습니다.
-------------------------------------------------------------------------------------
input : 전략식시작일자(20151001), 전략식시작시간(090000), 전략총매수금액(1000000);
## 추가할 외부변수 설정 시작 ---------------------------------
input : 1차매수위치(2), 2차매수위치(3), 3차매수위치(4);
input : 1차매도위치(1), 2차매도위치(2), 3차매도위치(3);
## 추가할 외부변수 설정 끝 ---------------------------------
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.985) or (stime >= 133000 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*1,"",Floor(MaxContracts*(매도비중1차/100)),1);
if Condition2 == false then
exitlong("2차매도",atlimit,lowest(L,BarsSinceEntry)+diff*2,"",Floor(MaxContracts*(매도비중2차/100)),1);
if Condition3 == false then
exitlong("3차매도",atlimit,lowest(L,BarsSinceEntry)+diff*3);
}
Else{
Condition1 = false;
Condition2 = false;
Condition3 = false;
}
}
}
-------------------------------------------------------------------------------------
- 1. 한온시스템_3분봉.PNG (0.06 MB)
답변 1
예스스탁 예스스탁 답변
2015-10-08 14:16:33
안녕하세요
예스스탁입니다.
input : 전략식시작일자(20151001), 전략식시작시간(090000), 전략총매수금액(1000000);
## 추가할 외부변수 설정 시작 ---------------------------------
input : 매수위치1차(2), 매수위치2차(3), 매수위치3차(4);
input : 매도위치1차(1), 매도위치2차(2), 매도위치3차(3);
## 추가할 외부변수 설정 끝 ---------------------------------
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),value(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;
value = abs(var1-V0.5);
if sdate >= 전략식시작일자 then{
if MarketPosition == 0 and stime >= 전략식시작시간 and
((stime < 120000 and O > C[1]*0.985) or (stime >= 133000 and C > V2)) Then{
if NextBarOpen > var1-value*매수위치1차 Then
buy("1차매수",atlimit,var1-value*매수위치1차,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 >= var1-value*매수위치2차 and CurrentContracts == MaxContracts Then
buy("2차매수",atlimit,var1-value*매수위치2차,Floor((전략총매수금액*(매수비중2차/100))/C));
if MaxEntries == 2 and L >= var1-value*매수위치3차 and CurrentContracts == MaxContracts Then
buy("3차매수",atlimit,var1-value*매수위치3차,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*매도위치1차,"",Floor(MaxContracts*(매도비중1차/100)),1);
if Condition2 == false then
exitlong("2차매도",atlimit,lowest(L,BarsSinceEntry)+diff*매도위치2차,"",Floor(MaxContracts*(매도비중2차/100)),1);
if Condition3 == false then
exitlong("3차매도",atlimit,lowest(L,BarsSinceEntry)+diff*매도위치3차);
}
Else{
Condition1 = false;
Condition2 = false;
Condition3 = false;
}
}
}
즐거운 하루되세요
> 종풍화성 님이 쓴 글입니다.
> 제목 : 시스템식 수정 부탁드립니다.
> 아래 보내주신 시스템식에서 매수타점과 매도타점을 좀더 용이하게 하기위해서 다음과 같이
외부변수를 추가로 할당할려고 합니다. 이에 맞게 시스템식 수정 부탁드립니다.
더불어 도움주심에 감사드립니다.
## 추가할 외부변수 설정 시작 ---------------------------------
input : 1차매수위치(2), 2차매수위치(3), 3차매수위치(4);
input : 1차매도위치(1), 2차매도위치(2), 3차매도위치(3);
## 추가할 외부변수 설정 끝 ---------------------------------
[설명]
첨부한 챠트에서 각각의 매수타점의 간격은 "최고점"-"V0.5" 간격차이만큼 모두 동일합니다.
따라서 이간격의 갯수를 1로 설정했을때
V1라인 즉 1차매수타점은 (최고점-V0.5)의 2개간격 -> input:1차매수위치(2) 에 해당
V2라인 즉 2차매수타점은 (최고점-V0.5)의 3개간격 -> input:1차매수위치(3) 에 해당
V3라인 즉 3차매수타점은 (최고점-V0.5)의 4개간격 -> input:1차매수위치(4) 에 해당
으로 변경해 주시고요
매도위치도 마찬가지로
1차매도위치(1)은 최저점에서 (최고점-V0.5)의 1개간격만큼 반등한 위치에서 매도
1차매도위치(1)은 최저점에서 (최고점-V0.5)의 1개간격만큼 반등한 위치에서 매도
로 변경해 주시면 감사하겠습니다.
-------------------------------------------------------------------------------------
input : 전략식시작일자(20151001), 전략식시작시간(090000), 전략총매수금액(1000000);
## 추가할 외부변수 설정 시작 ---------------------------------
input : 1차매수위치(2), 2차매수위치(3), 3차매수위치(4);
input : 1차매도위치(1), 2차매도위치(2), 3차매도위치(3);
## 추가할 외부변수 설정 끝 ---------------------------------
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.985) or (stime >= 133000 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*1,"",Floor(MaxContracts*(매도비중1차/100)),1);
if Condition2 == false then
exitlong("2차매도",atlimit,lowest(L,BarsSinceEntry)+diff*2,"",Floor(MaxContracts*(매도비중2차/100)),1);
if Condition3 == false then
exitlong("3차매도",atlimit,lowest(L,BarsSinceEntry)+diff*3);
}
Else{
Condition1 = false;
Condition2 = false;
Condition3 = false;
}
}
}
-------------------------------------------------------------------------------------