커뮤니티
시스템 수정문의
2013-08-16 13:57:32
156
글번호 66517
시스템문의드립니다.
아래와 같이 2종류의 시스템 식이 있습니다. 피라미딩은 2가지 모두 2건입니다.
A코드는 B코드를 함수화 한 코드입니다.
문제는 B코드는
zero == 2 일때, N ==5 일때
음봉(봉크기제일큼) - 음봉 - 도지봉 - 도지봉 - 음봉 - 음봉 - 음봉 - 도지봉
일때, 최근 2번째 음봉 종가에서만 진입이 1회 이루어집니다만,
A코드는 최근 2번째 음봉에서 진입 및 최근 1번째 도지봉에서 진입이 됩니다. 총 2번 진입입니다.
B코드가 정확안 진입이고, A코드의 최근 도지봉에서의 진입은 잘못된 진입입니다.
A코드를 좀 수정해주셨으면 합니다.
참고로, 동일코드에서 이러한 경우에는 진입이 맞으며,, 정상적으로 움직입니다.
음봉(봉크기제일큼) - 음봉(봉크기2번째로큼) -도지봉 -도지봉 - 음봉 - 음봉 - 음봉 - 음봉
이럴경우에는 최근 음봉과 최근2번째 음봉에서 각각 진입하는 것이 맞고, 정상적으로 움직입니다.
또한, c코드는 5분봉챠트에서 10분봉을 거래하는 겁니다만,
마찬가지로,
zero == 2 일때, N ==5 일때
음봉(봉크기제일큼) - 음봉 - 도지봉 - 도지봉 - 음봉 - 음봉 - 음봉 - 도지봉
최근 2번째 음봉에서 진입 및 최근 1번째 도지봉에서 진입이 됩니다. 총 2번 진입입니다.
현상이 나타납니다.
---A코드---
input : CT(0); // CT(1)=양봉 O<C , CT(0)=음봉 O>C
input : N(5);
input : Zero(2);
var : cnt(0),absv(0),sellcond(false);
Array : DD[20](0),FF[20](0);
Absv = abs(O-C);
if C > O Then{
DD[0] = 1;
FF[0] = absv;
for cnt = 1 to 19{
DD[cnt] = DD[cnt-1][1];
ff[cnt] = ff[cnt-1][1];
}
}
if C < O Then{
DD[0] = -1;
FF[0] = absv;
for cnt = 1 to 19{
DD[cnt] = DD[cnt-1][1];
ff[cnt] = ff[cnt-1][1];
}
}
sellcond = false;#초기값(매봉 아래수식 수행전 false로 초기화)
#zero가 2이면
if Zero == 2 Then{
var1 = 0;
var2 = 0;
for cnt = 0 to N-1{
var1 = var1+DD[cnt];
if FF[cnt] > var2 Then
var2 = FF[cnt];
}
if CT == 0 and Var1 == -N and FF[N-1] == var2 Then
sellcond = true;
if CT == 1 and Var1 == N and FF[N-1] == var2 Then
sellcond = true;
}
if sellcond == true Then
Buy("A", OnClose, DEF, 1);
----B코드---
If C < O Then {
Var1 = 1;
Var2 = Var1[1];
Var3 = Var2[1];
Var4 = Var3[1];
Var5 = Var4[1];
Var11 = Abs(C-O);
Var12 = Var11[1];
Var13 = Var12[1];
Var14 = Var13[1];
Var15 = Var14[1];
If Var1 == 1 and Var2 ==1 and Var3 ==1 and var4 == 1 and Var5 == 1 and
Var15 >= Max( Var14, Var13, Var12, Var11) Then {
Buy("A", OnClose, DEF, 1);
}
}
If C > O Then {
Var1 = -1;
Var2 = Var1[1];
Var3 = Var2[1];
Var4 = Var3[1];
Var5 = Var4[1];
Var11 = Abs(C-O);
Var12 = Var11[1];
Var13 = Var12[1];
Var14 = Var13[1];
Var15 = Var14[1];
}
---c 코드
input : CT(0); // CT(1)=양봉 O<C , CT(0)=음봉 O>C
input : N(5);
input : Zero(0);
var : TF(0),OpenV(0),CloseV(0),cnt(0),sellcond(false);
var : count11(0),count12(0),count21(0),count22(0),count31(0),count32(0);
var : A1max(0),a2max(0);
Array : D1[20](0),A1[20](0),D2[20](0),A2[20](0),CC[20](0),OO[20](0);
TF = TimeToMinutes(stime)%10;
if dayindex == 0 or (TF < TF[1] ) Then
openV = O;
//CloseV = C;
if TF == 5 Then{
if C > OpenV Then{
CC[0] = C;
OO[0] = OpenV;
D1[0] = 1;
A1[0] = abs(OpenV-C);
D2[0] = 1;
A2[0] = abs(OpenV-C);
for cnt = 1 to 19{
CC[cnt] = CC[cnt-1][1];
OO[cnt] = OO[cnt-1][1];
D1[cnt] = D1[cnt-1][1];
A1[cnt] = A1[cnt-1][1];
D2[cnt] = D1[cnt-1][1];
A2[cnt] = A2[cnt-1][1];
}
}
if CloseV < OpenV Then{
CC[0] = c;
OO[0] = OpenV;
D1[0] = -1;
A1[0] = abs(OpenV-C);
D2[0] = -1;
A2[0] = abs(OpenV-C);
for cnt = 1 to 19{
CC[cnt] = CC[cnt-1][1];
OO[cnt] = OO[cnt-1][1];
D1[cnt] = D1[cnt-1][1];
A1[cnt] = A1[cnt-1][1];
D2[cnt] = D2[cnt-1][1];
A2[cnt] = A2[cnt-1][1];
}
}
if CloseV == OpenV Then{
CC[0] = c;
OO[0] = OpenV;
D1[0] = 0;
A1[0] = abs(OpenV-C);
for cnt = 1 to 19{
CC[cnt] = CC[cnt-1][1];
OO[cnt] = OO[cnt-1][1];
D1[cnt] = D1[cnt-1][1];
A1[cnt] = A1[cnt-1][1];
}
}
}
sellcond = false;#초기값(매봉 아래수식 수행전 false로 초기화)
count11 = 0;
count12 = 0;
count21 = 0;
count22 = 0;
count31 = 0;
count32 = 0;
A1max = 0;
A2max = 0;
for cnt = 0 to N-1{
#d1 N개봉 양봉인 횟수
if D1[cnt] == 1 Then
count11 = count11+1;
#d1 N개봉 음봉인 횟수
if D1[cnt] == -1 Then
count12 = count12+1;
#d1 N개봉 도지봉이나 양봉인 횟수
if D1[cnt] >= 0 Then
count21 = count21+1;
#d1 N개봉 도지봉이나 음봉인 횟수
if D1[cnt] <= 0 Then
count22 = count22+1;
#D2 N개봉 도지봉이나 양봉인 횟수
if D2[cnt] == 1 Then
count31 = count31+1;
#D2 N개봉 도지봉이나 음봉인 횟수
if D2[cnt] == -1 Then
count32 = count32+1;
if A1[cnt] > A1max Then
A1max = A1[cnt];
if A2[cnt] > A2max Then
A2max = A2[cnt];
}
#zero가 2이면
if Zero == 2 Then{
if CT == 0 and count32 == N and A2[N-1] == A2max Then
sellcond = true;
if CT == 1 and count31 == N and A2[N-1] == A2max Then
sellcond = true;
}
if sellcond == true Then
buy("C", OnClose, DEF, 1);
SetStopProfittarget(0.0012,PointStop);
SetStopLoss(0.0040,PointStop);
답변 1
예스스탁 예스스탁 답변
2013-08-16 16:47:58
안녕하세요
예스스탁입니다.
1.
A코드의 경우 가장 최근 음봉과 양봉의 값을 저장해 사용해서
음봉진행중인 도지봉에서도 신호가 발생했습니다.
기본 B코드는 진입자체트가 양봉이란느 조건식 안에 있는데
해당 식은 외부에 있었습니다.
조건식에 해당 내용 추가했습니다.
input : CT(0); // CT(1)=양봉 O<C , CT(0)=음봉 O>C
input : N(5);
input : Zero(2);
var : cnt(0),absv(0),sellcond(false);
Array : DD[20](0),FF[20](0);
Absv = abs(O-C);
if C > O Then{
DD[0] = 1;
FF[0] = absv;
for cnt = 1 to 19{
DD[cnt] = DD[cnt-1][1];
ff[cnt] = ff[cnt-1][1];
}
}
if C < O Then{
DD[0] = -1;
FF[0] = absv;
for cnt = 1 to 19{
DD[cnt] = DD[cnt-1][1];
ff[cnt] = ff[cnt-1][1];
}
}
sellcond = false;#초기값(매봉 아래수식 수행전 false로 초기화)
#zero가 2이면
if Zero == 2 Then{
var1 = 0;
var2 = 0;
for cnt = 0 to N-1{
var1 = var1+DD[cnt];
if FF[cnt] > var2 Then
var2 = FF[cnt];
}
if CT == 0 and Var1 == -N and FF[N-1] == var2 and C < O Then
sellcond = true;
if CT == 1 and Var1 == N and FF[N-1] == var2 and C < O Then
sellcond = true;
}
if sellcond == true Then
Buy("A", OnClose, DEF, 1);
2.
input : CT(0); // CT(1)=양봉 O<C , CT(0)=음봉 O>C
input : N(5);
input : Zero(0);
var : TF(0),OpenV(0),CloseV(0),cnt(0),sellcond(false);
var : count11(0),count12(0),count21(0),count22(0),count31(0),count32(0);
var : A1max(0),a2max(0);
Array : D1[20](0),A1[20](0),D2[20](0),A2[20](0),CC[20](0),OO[20](0);
TF = TimeToMinutes(stime)%10;
if dayindex == 0 or (TF < TF[1] ) Then
openV = O;
CloseV = C;
if TF == 5 Then{
if CloseV > OpenV Then{
CC[0] = C;
OO[0] = OpenV;
D1[0] = 1;
A1[0] = abs(OpenV-C);
D2[0] = 1;
A2[0] = abs(OpenV-C);
for cnt = 1 to 19{
CC[cnt] = CC[cnt-1][1];
OO[cnt] = OO[cnt-1][1];
D1[cnt] = D1[cnt-1][1];
A1[cnt] = A1[cnt-1][1];
D2[cnt] = D1[cnt-1][1];
A2[cnt] = A2[cnt-1][1];
}
}
if CloseV < OpenV Then{
CC[0] = c;
OO[0] = OpenV;
D1[0] = -1;
A1[0] = abs(OpenV-C);
D2[0] = -1;
A2[0] = abs(OpenV-C);
for cnt = 1 to 19{
CC[cnt] = CC[cnt-1][1];
OO[cnt] = OO[cnt-1][1];
D1[cnt] = D1[cnt-1][1];
A1[cnt] = A1[cnt-1][1];
D2[cnt] = D2[cnt-1][1];
A2[cnt] = A2[cnt-1][1];
}
}
if CloseV == OpenV Then{
CC[0] = c;
OO[0] = OpenV;
D1[0] = 0;
A1[0] = abs(OpenV-C);
for cnt = 1 to 19{
CC[cnt] = CC[cnt-1][1];
OO[cnt] = OO[cnt-1][1];
D1[cnt] = D1[cnt-1][1];
A1[cnt] = A1[cnt-1][1];
}
}
}
sellcond = false;#초기값(매봉 아래수식 수행전 false로 초기화)
count11 = 0;
count12 = 0;
count21 = 0;
count22 = 0;
count31 = 0;
count32 = 0;
A1max = 0;
A2max = 0;
for cnt = 0 to N-1{
#d1 N개봉 양봉인 횟수
if D1[cnt] == 1 Then
count11 = count11+1;
#d1 N개봉 음봉인 횟수
if D1[cnt] == -1 Then
count12 = count12+1;
#d1 N개봉 도지봉이나 양봉인 횟수
if D1[cnt] >= 0 Then
count21 = count21+1;
#d1 N개봉 도지봉이나 음봉인 횟수
if D1[cnt] <= 0 Then
count22 = count22+1;
#D2 N개봉 도지봉이나 양봉인 횟수
if D2[cnt] == 1 Then
count31 = count31+1;
#D2 N개봉 도지봉이나 음봉인 횟수
if D2[cnt] == -1 Then
count32 = count32+1;
if A1[cnt] > A1max Then
A1max = A1[cnt];
if A2[cnt] > A2max Then
A2max = A2[cnt];
}
#zero가 2이면
if Zero == 2 Then{
if CT == 0 and count32 == N and A2[N-1] == A2max and CloseV < OpenV Then
sellcond = true;
if CT == 1 and count31 == N and A2[N-1] == A2max and CloseV < OpenV Then
sellcond = true;
}
if sellcond == true and TF == 5 Then
buy("C", OnClose, DEF, 1);
SetStopProfittarget(0.0012,PointStop);
SetStopLoss(0.0040,PointStop);
즐거운 하루되세요
> 파쿠3 님이 쓴 글입니다.
> 제목 : 시스템 수정문의
> 시스템문의드립니다.
아래와 같이 2종류의 시스템 식이 있습니다. 피라미딩은 2가지 모두 2건입니다.
A코드는 B코드를 함수화 한 코드입니다.
문제는 B코드는
zero == 2 일때, N ==5 일때
음봉(봉크기제일큼) - 음봉 - 도지봉 - 도지봉 - 음봉 - 음봉 - 음봉 - 도지봉
일때, 최근 2번째 음봉 종가에서만 진입이 1회 이루어집니다만,
A코드는 최근 2번째 음봉에서 진입 및 최근 1번째 도지봉에서 진입이 됩니다. 총 2번 진입입니다.
B코드가 정확안 진입이고, A코드의 최근 도지봉에서의 진입은 잘못된 진입입니다.
A코드를 좀 수정해주셨으면 합니다.
참고로, 동일코드에서 이러한 경우에는 진입이 맞으며,, 정상적으로 움직입니다.
음봉(봉크기제일큼) - 음봉(봉크기2번째로큼) -도지봉 -도지봉 - 음봉 - 음봉 - 음봉 - 음봉
이럴경우에는 최근 음봉과 최근2번째 음봉에서 각각 진입하는 것이 맞고, 정상적으로 움직입니다.
또한, c코드는 5분봉챠트에서 10분봉을 거래하는 겁니다만,
마찬가지로,
zero == 2 일때, N ==5 일때
음봉(봉크기제일큼) - 음봉 - 도지봉 - 도지봉 - 음봉 - 음봉 - 음봉 - 도지봉
최근 2번째 음봉에서 진입 및 최근 1번째 도지봉에서 진입이 됩니다. 총 2번 진입입니다.
현상이 나타납니다.
---A코드---
input : CT(0); // CT(1)=양봉 O<C , CT(0)=음봉 O>C
input : N(5);
input : Zero(2);
var : cnt(0),absv(0),sellcond(false);
Array : DD[20](0),FF[20](0);
Absv = abs(O-C);
if C > O Then{
DD[0] = 1;
FF[0] = absv;
for cnt = 1 to 19{
DD[cnt] = DD[cnt-1][1];
ff[cnt] = ff[cnt-1][1];
}
}
if C < O Then{
DD[0] = -1;
FF[0] = absv;
for cnt = 1 to 19{
DD[cnt] = DD[cnt-1][1];
ff[cnt] = ff[cnt-1][1];
}
}
sellcond = false;#초기값(매봉 아래수식 수행전 false로 초기화)
#zero가 2이면
if Zero == 2 Then{
var1 = 0;
var2 = 0;
for cnt = 0 to N-1{
var1 = var1+DD[cnt];
if FF[cnt] > var2 Then
var2 = FF[cnt];
}
if CT == 0 and Var1 == -N and FF[N-1] == var2 Then
sellcond = true;
if CT == 1 and Var1 == N and FF[N-1] == var2 Then
sellcond = true;
}
if sellcond == true Then
Buy("A", OnClose, DEF, 1);
----B코드---
If C < O Then {
Var1 = 1;
Var2 = Var1[1];
Var3 = Var2[1];
Var4 = Var3[1];
Var5 = Var4[1];
Var11 = Abs(C-O);
Var12 = Var11[1];
Var13 = Var12[1];
Var14 = Var13[1];
Var15 = Var14[1];
If Var1 == 1 and Var2 ==1 and Var3 ==1 and var4 == 1 and Var5 == 1 and
Var15 >= Max( Var14, Var13, Var12, Var11) Then {
Buy("A", OnClose, DEF, 1);
}
}
If C > O Then {
Var1 = -1;
Var2 = Var1[1];
Var3 = Var2[1];
Var4 = Var3[1];
Var5 = Var4[1];
Var11 = Abs(C-O);
Var12 = Var11[1];
Var13 = Var12[1];
Var14 = Var13[1];
Var15 = Var14[1];
}
---c 코드
input : CT(0); // CT(1)=양봉 O<C , CT(0)=음봉 O>C
input : N(5);
input : Zero(0);
var : TF(0),OpenV(0),CloseV(0),cnt(0),sellcond(false);
var : count11(0),count12(0),count21(0),count22(0),count31(0),count32(0);
var : A1max(0),a2max(0);
Array : D1[20](0),A1[20](0),D2[20](0),A2[20](0),CC[20](0),OO[20](0);
TF = TimeToMinutes(stime)%10;
if dayindex == 0 or (TF < TF[1] ) Then
openV = O;
//CloseV = C;
if TF == 5 Then{
if C > OpenV Then{
CC[0] = C;
OO[0] = OpenV;
D1[0] = 1;
A1[0] = abs(OpenV-C);
D2[0] = 1;
A2[0] = abs(OpenV-C);
for cnt = 1 to 19{
CC[cnt] = CC[cnt-1][1];
OO[cnt] = OO[cnt-1][1];
D1[cnt] = D1[cnt-1][1];
A1[cnt] = A1[cnt-1][1];
D2[cnt] = D1[cnt-1][1];
A2[cnt] = A2[cnt-1][1];
}
}
if CloseV < OpenV Then{
CC[0] = c;
OO[0] = OpenV;
D1[0] = -1;
A1[0] = abs(OpenV-C);
D2[0] = -1;
A2[0] = abs(OpenV-C);
for cnt = 1 to 19{
CC[cnt] = CC[cnt-1][1];
OO[cnt] = OO[cnt-1][1];
D1[cnt] = D1[cnt-1][1];
A1[cnt] = A1[cnt-1][1];
D2[cnt] = D2[cnt-1][1];
A2[cnt] = A2[cnt-1][1];
}
}
if CloseV == OpenV Then{
CC[0] = c;
OO[0] = OpenV;
D1[0] = 0;
A1[0] = abs(OpenV-C);
for cnt = 1 to 19{
CC[cnt] = CC[cnt-1][1];
OO[cnt] = OO[cnt-1][1];
D1[cnt] = D1[cnt-1][1];
A1[cnt] = A1[cnt-1][1];
}
}
}
sellcond = false;#초기값(매봉 아래수식 수행전 false로 초기화)
count11 = 0;
count12 = 0;
count21 = 0;
count22 = 0;
count31 = 0;
count32 = 0;
A1max = 0;
A2max = 0;
for cnt = 0 to N-1{
#d1 N개봉 양봉인 횟수
if D1[cnt] == 1 Then
count11 = count11+1;
#d1 N개봉 음봉인 횟수
if D1[cnt] == -1 Then
count12 = count12+1;
#d1 N개봉 도지봉이나 양봉인 횟수
if D1[cnt] >= 0 Then
count21 = count21+1;
#d1 N개봉 도지봉이나 음봉인 횟수
if D1[cnt] <= 0 Then
count22 = count22+1;
#D2 N개봉 도지봉이나 양봉인 횟수
if D2[cnt] == 1 Then
count31 = count31+1;
#D2 N개봉 도지봉이나 음봉인 횟수
if D2[cnt] == -1 Then
count32 = count32+1;
if A1[cnt] > A1max Then
A1max = A1[cnt];
if A2[cnt] > A2max Then
A2max = A2[cnt];
}
#zero가 2이면
if Zero == 2 Then{
if CT == 0 and count32 == N and A2[N-1] == A2max Then
sellcond = true;
if CT == 1 and count31 == N and A2[N-1] == A2max Then
sellcond = true;
}
if sellcond == true Then
buy("C", OnClose, DEF, 1);
SetStopProfittarget(0.0012,PointStop);
SetStopLoss(0.0040,PointStop);