답변완료
함수 문의드립니다
시그널메이커에서 사용중인 전략을 예스트레이더로 사용하려고 하는데 없는 함수가 있어서
사용자 함수로 등록하였는데 출력값이 시그널 메이커와 일치하지 않아서 문의드립니다.
사용하려는 함수는 선형회귀선에서 각도를 출력하는 함수로 아래와 같습니다.
LinearRegAngle( price, period )
//////////////////////////////////////사용자함수 등록내용
Inputs :
Price( NumericSeries ),
Period( NumericSimple );
Vars :
ii( 0 ),
X( 0 ),
Xsum( 0 ),
Ysum( 0 ),
XYSum( 0 ),
Xsquare_sum( 0 ),
Gradient( 0 );
Xsum = 0;
Ysum = 0;
XYsum = 0;
Xsquare_sum = 0;
For ii = 0 to Period - 1 step 1
Begin
X = Period - 1 - ii;
Xsum = Xsum + X;
Ysum = Ysum + Price[ii];
XYsum = XYSum + X * Price[ii];
Xsquare_sum = Xsquare_sum + Square(X);
End;
If Period > 1 && (Period * Xsquare_sum - Square(Xsum)) > 0
Then
Begin
Gradient = (Period * XYsum - Xsum * Ysum)/(Period * Xsquare_sum - Square(Xsum));
LinearRegAngle = Arctangent(Gradient);
End;
//////////////////////////////////////끝
이렇게 등록후 지표 등록 후 띄우면
//////////////////////////////////////지표시작
Inputs : lpp(20), hpp(20);
Vars : v1(0), v2(0);
v1=LinearRegAngle(L,lpp);
Plot1(v1,"L");
v2=LinearRegAngle(H,hpp);
Plot2(v2,"H");
//////////////////////////////////////지표끝
예스트레이더에서는 지표는 출력되지만 수치가 각도값으로 나오지 않고 -1에서 1사이의 값으로 나옵니다.
함수부분은 시그널메이커에서 그대로 가져왔고 각도값으로 출력이 됩니다. (최대 두자리수값으로 표현됨)
기존에 최적화한 값이 있어서 전략수정없이 성과분석 및 매매하기 원합니다.
무엇이 문제인지 해결가능한지 문의드립니다
2020-11-28
905
글번호 144257
사용자 함수
답변완료
디버젼스
뭐가 잘못될걸 까요?
제가 찾고싶은 지점은 가격이 하락했지만 macd값은 상승했을때, macd가 signal선을 상승돌파하는 지점을 표시하고 싶습니다.
Input : shortPeriod(5), longPeriod(20), N(70);
Var : MACDV(0) , MACDS(0), cnt(0), first(0), second(0), flag(0), maev_1(0), maev_2(0), past(0), ep_1(0), ep_2(0);
MACDV = MACD(shortPeriod, longPeriod);
MACDS= EMA(MACDV,5);
//*70봉 안에서 디버젼스 찾기*//
for cnt = 0 to N-1
{
//*반복문 종료조건 : macd signal 선이 0선위로 올라오면*//
if MACDS[cnt] > 0 Then
{
cnt = 1000 ;
}
//*최초 기준점 잡기*//
If flag == 0 Then
{
first = MACDS[cnt];
//*기준점 이전봉에서 macd의 저점 찾기*//
maev_1= Min(first[0], first[1], first[2], first[3], first[4]);
}
//* 이전에 골든크로스 된 지점 찾기*//
if CrossUp(MACDV[cnt],MACDS[cnt]) && MACDS[cnt] < 0 && flag > 0 Then
{
second = MACDV[cnt];
maev_2 = Min(second[0], second[1], second[2], second[3], second[4]);
if maev_2 < maev_1 Then
{
past = cnt;
}
}
flag = flag+1;
}
ep_1 = Lowest(L,5);
ep_2 = Lowest(L,5)[past];
Condition1 = ep_2 > ep_1 && maev_2 < maev_1;
If Condition1 == True Then
plot1(H,"매수디버젼스");
Else
NoPlot(1);
2020-11-28
959
글번호 144255
검색
답변완료
시스템문의
수고많으십니다.
일전에 답변주신 로직인데요.
이걸 매도청산으로 바꿀려고 하는데, 자꾸 에러가 납니다.
매도청산 버전으로 한번 더 부탁드립니다.
var : n1(0),T(0),daypl(0);
if Bdate != Bdate[1] Then
{
n1 = NetProfit;
T = 0;
}
daypl = NetProfit-n1+PositionProfit(0);
if T < 3 then
{
진입수식
}
if MarketPosition == 1 Then
{
if T == 0 and CurrentContracts >= 4 and daypl >= 300000 Then
{
T = 1;
ExitLong("bx1",OnClose,DEF,"",CurrentContracts-3,1);
}
if T == 1 and CurrentContracts >= 3 and daypl >= 500000 Then
{
T = 2;
ExitLong("bx2",OnClose,DEF,"",CurrentContracts-1,1);
}
if T == 2 and daypl >= 700000 Then
{
T = 3;
ExitLong("bx3");
}
}
2020-11-27
997
글번호 144254
시스템
답변완료
신호검색문의요
max( avg(C,short), avg(C,mid), avg(C,long)) <
min( avg(C,short), avg(C,mid), avg(C,long)) * (1+Percent/100) &&
HIGHEST(H, 4, 1) < C
and O < C
and V(1)*2 <= V
지표변수
short 5
mid 20
long 60
percent 5
영웅문 신호검색식입니다.
변환부탁드립니다.
2020-11-27
851
글번호 144252
검색
답변완료
신호검색문의요
max( avg(C,short), avg(C,mid), avg(C,long)) <
min( avg(C,short), avg(C,mid), avg(C,long)) * (1+Percent/100) &&
HIGHEST(H, 4, 1) < C
and O < C
and ((C(1)*1.021 <= C) or (O*1.021 <= C))
and (C-O)*2 >= (H-C)
and (C-O)*0.9 >= (O-L)
and V(1)*1.5 <= V
and avg(V, 5) >= 9000
and PreDayClose() >= 950
and Crossup(C,SAR(0.02, 0.2))
지표변수
short 5
mid 20
long 60
percent 5
영웅문 신호검색입니다.
변환부탁드립니다
2020-11-27
873
글번호 144251
검색