커뮤니티
지표식 보완부탁합니다.
2015-10-16 06:33:05
113
글번호 91337
NO.44954와 관련입니다.
# 관련 지표식 입니다.
Input : 진입날짜(20151001),진입시간(90000);
input : 진입수수료(0),청산수수료(0);
input : 진입슬리피지(0),청산슬리피지(0);
Input : P(10);
input : A(10),MU(2),X(0);
var : EMAs(0),upv(0),dnv(0),Ov(0);
var : T(0),sumPL(0),totalPL(0),HH(0);
EMAs = ema(C,P);
Ov = ( DayOpen(0));
if sdate == 진입날짜 and (stime == 진입시간 or (stime > 진입시간 and stime[1] < 진입시간)) Then
Condition1 = true;
if Condition1 == true then{
if dayindex == 0 Then{
upv = Ov+atr(A)*MU;
dnv = Ov-atr(A)*MU;
}
if dayindex > 0 Then {
if CrossUp(EMAs,upv) Then {
if T <= 0 Then{
var1 = c;
if T == -1 Then{
sumPL = SumPL+(var2-c-진입수수료-청산수수료-진입슬리피지-청산슬리피지);
}
}
T = 1;
upv = upv[1]+atr(A)*MU;
dnv = upv[1];
}
if CrossDown(EMAs,dnv) Then {
if T >= 0 Then{
var2 = c;
if T == 1 Then{
sumPL = sumPL+(c-var1-진입수수료-청산수수료-진입슬리피지-청산슬리피지);
}
}
T = -1;
upv = dnv[1];
dnv = dnv[1]-atr(A)*MU;
}
}
if T == 1 Then
totalPL = sumPL+(c-var1-진입수수료-청산수수료-진입슬리피지-청산슬리피지);
if T == -1 Then
totalPL = sumPL+(var2-c-진입수수료-청산수수료-진입슬리피지-청산슬리피지);
if totalPL > HH Then
HH = totalPL;
plot1(totalPL,"누적수익");
plot2(HH,"최고누적수익");
plot3(HH*0.6,"최고누적수익 60%");
}
# 아래와 같이 시스템식을 부분적으로 수정하여 포지션이 청산 된 후 무포지션 상태의 구간이 있습니다.
.......... < 중략 >.........
if dayindex == 0 Then{
upv = Ov+atr(A)*MU;
dnv = Ov-atr(A)*MU;
# 이곳 다음으로 아래 수식을 시스템식에 삽입 하였습니다.
If MarketPosition == 1 Then {
If upv < EntryPrice(0)-X Then
ExitLong("Lx",AtMarket);
}
If MarketPosition == -1 Then {
If dnv > EntryPrice(0)+X Then
ExitShort("Sx",AtMarket);
}
# 위와같이 포지션 청산 후 무포지션 상태로 수익의 변화가 없는 구간에 대하여 관련 지표식을 보완 하여 주시면 감사 하겠습니다.
# 그리고 NO.44954 당초 식에서 위 관련 지표식과 같이
NextBarOpen 은 ----> C 로
plot1(sumPL,"누적수익"); 은 -----> plot1(totalPL,"누적수익"); 로 변경을 하니 정상적인 수익차트가 생성 되었습니다.
# 다음으로 위 관련 지표식에서
T <= 0
T >= 0
T == 1
T == -1
T = -1
T = 1 로 표기 된 부분에 대하여 쉽게 이해 될 수 있도록 주석을 달아 주시면 대단히 감사 하겠습니다.
답변 1
예스스탁 예스스탁 답변
2015-10-16 14:12:48
안녕하세요
예스스탁입니다.
1.
Input : 진입날짜(20151001),진입시간(90000);
input : 진입수수료(0),청산수수료(0);
input : 진입슬리피지(0),청산슬리피지(0);
Input : P(10);
input : A(10),MU(2),X(1);
var : EMAs(0),upv(0),dnv(0),Ov(0);
var : T(0),sumPL(0),totalPL(0),HH(0);
EMAs = ema(C,P);
Ov = ( DayOpen(0));
if sdate == 진입날짜 and (stime == 진입시간 or (stime > 진입시간 and stime[1] < 진입시간)) Then
Condition1 = true;
if Condition1 == true then{
if dayindex == 0 Then{
upv = Ov+atr(A)*MU;
dnv = Ov-atr(A)*MU;
}
if dayindex > 0 Then {
if CrossUp(EMAs,upv) Then {
if T <= 0 Then{
var1 = c;
if T == -1 Then{
sumPL = SumPL+(var2-c-진입수수료-청산수수료-진입슬리피지-청산슬리피지);
}
}
T = 1;
upv = upv[1]+atr(A)*MU;
dnv = upv[1];
}
if CrossDown(EMAs,dnv) Then {
if T >= 0 Then{
var2 = c;
if T == 1 Then{
sumPL = sumPL+(c-var1-진입수수료-청산수수료-진입슬리피지-청산슬리피지);
}
}
T = -1;
upv = dnv[1];
dnv = dnv[1]-atr(A)*MU;
}
}
if T == 1 Then{
totalPL = sumPL+(c-var1-진입수수료-청산수수료-진입슬리피지-청산슬리피지);
if upv < var1-X Then{
sumPL = SumPL+(var2-c-진입수수료-청산수수료-진입슬리피지-청산슬리피지);
T = 0;
}
}
if T == -1 Then{
totalPL = sumPL+(var2-c-진입수수료-청산수수료-진입슬리피지-청산슬리피지);
if dnv > var2+X Then{
sumPL = SumPL+(var2-c-진입수수료-청산수수료-진입슬리피지-청산슬리피지);
T = 0;
}
}
if totalPL > HH Then
HH = totalPL;
plot1(totalPL,"누적수익");
plot2(HH,"최고누적수익");
plot3(HH*0.6,"최고누적수익 60%");
}
2
위 수식에서 T는 지표식에서 현재 진입방향을 구분하기 위한 용도입니다.
매수진입조건이 만족하면 1, 매도진입조건이 만족하면 -1, 청산후 포지션이 없으면 0입니다.
마치 시스템에서 현재포지션의 상태를 나타내는 MarketPosition과 같이 동작하게 변수입니다.
T <= 0
현재 진입방향이 무포지션이거나 매도포지션
T >= 0
현재 진입방향이 무포지션이거나 매수포지션
T == 1
현재 매수진입된 상태
T == -1
현재 매도진입된 상태
T=1; T=-1, T=0
위 3개는 진입조건이 만족하거나 청산되면
각 값을 저장해 주는 것입니다.
즐거운 하루되세요
> 너무조아 님이 쓴 글입니다.
> 제목 : 지표식 보완부탁합니다.
> NO.44954와 관련입니다.
# 관련 지표식 입니다.
Input : 진입날짜(20151001),진입시간(90000);
input : 진입수수료(0),청산수수료(0);
input : 진입슬리피지(0),청산슬리피지(0);
Input : P(10);
input : A(10),MU(2),X(0);
var : EMAs(0),upv(0),dnv(0),Ov(0);
var : T(0),sumPL(0),totalPL(0),HH(0);
EMAs = ema(C,P);
Ov = ( DayOpen(0));
if sdate == 진입날짜 and (stime == 진입시간 or (stime > 진입시간 and stime[1] < 진입시간)) Then
Condition1 = true;
if Condition1 == true then{
if dayindex == 0 Then{
upv = Ov+atr(A)*MU;
dnv = Ov-atr(A)*MU;
}
if dayindex > 0 Then {
if CrossUp(EMAs,upv) Then {
if T <= 0 Then{
var1 = c;
if T == -1 Then{
sumPL = SumPL+(var2-c-진입수수료-청산수수료-진입슬리피지-청산슬리피지);
}
}
T = 1;
upv = upv[1]+atr(A)*MU;
dnv = upv[1];
}
if CrossDown(EMAs,dnv) Then {
if T >= 0 Then{
var2 = c;
if T == 1 Then{
sumPL = sumPL+(c-var1-진입수수료-청산수수료-진입슬리피지-청산슬리피지);
}
}
T = -1;
upv = dnv[1];
dnv = dnv[1]-atr(A)*MU;
}
}
if T == 1 Then
totalPL = sumPL+(c-var1-진입수수료-청산수수료-진입슬리피지-청산슬리피지);
if T == -1 Then
totalPL = sumPL+(var2-c-진입수수료-청산수수료-진입슬리피지-청산슬리피지);
if totalPL > HH Then
HH = totalPL;
plot1(totalPL,"누적수익");
plot2(HH,"최고누적수익");
plot3(HH*0.6,"최고누적수익 60%");
}
# 아래와 같이 시스템식을 부분적으로 수정하여 포지션이 청산 된 후 무포지션 상태의 구간이 있습니다.
.......... < 중략 >.........
if dayindex == 0 Then{
upv = Ov+atr(A)*MU;
dnv = Ov-atr(A)*MU;
# 이곳 다음으로 아래 수식을 시스템식에 삽입 하였습니다.
If MarketPosition == 1 Then {
If upv < EntryPrice(0)-X Then
ExitLong("Lx",AtMarket);
}
If MarketPosition == -1 Then {
If dnv > EntryPrice(0)+X Then
ExitShort("Sx",AtMarket);
}
# 위와같이 포지션 청산 후 무포지션 상태로 수익의 변화가 없는 구간에 대하여 관련 지표식을 보완 하여 주시면 감사 하겠습니다.
# 그리고 NO.44954 당초 식에서 위 관련 지표식과 같이
NextBarOpen 은 ----> C 로
plot1(sumPL,"누적수익"); 은 -----> plot1(totalPL,"누적수익"); 로 변경을 하니 정상적인 수익차트가 생성 되었습니다.
# 다음으로 위 관련 지표식에서
T <= 0
T >= 0
T == 1
T == -1
T = -1
T = 1 로 표기 된 부분에 대하여 쉽게 이해 될 수 있도록 주석을 달아 주시면 대단히 감사 하겠습니다.
다음글
이전글