커뮤니티
신호좀 자주 나오게 해주세요.
2016-09-06 12:24:09
102
글번호 101720
지난번 질문에 수식 작성해주셔서 고맙습니다.
아래는
"최근 20개 봉의 평균 가격 기준 상 하 3% 이내에서는 조건을 만족해도 신호 발생하지 않는다."
라는 수식을 작성해주신건데 실행해보니까 신호가 3일에 한번 정도 나옵니다.
조금더 민감하게 해보려고
봉 수를 20개가 아닌 2개로 줄이고( var4 = (highest(H,20)+lowest(L,20))/2;), --> 이 부분에서 20을 2로 변경함
상하 3% 이내를 1% 이내로 줄이고 (C >= var4*1.03 or C <= var4*0.97) --> 이 부분을 1.03을 1.01로, 0.97을 0.99로 변경함
이렇게 수정하고 실행해도 신호가 안나옵니다.
좀더 민감하게 하려면 어떻게 해야 하는지요?
var1 = ma(c,3);
var2 = ma(c,6);
var3 = ma(C,9);
var4 = (highest(H,20)+lowest(L,20))/2;
#기존매수는 피라미딩이 되지 않게 MarketPosition <= 0 조건 추가
if MarketPosition <= 0 and var1 > var2 and C > var3 and C > O and
(C >= var4*1.03 or C <= var4*0.97) Then
buy("b");
#기존매도는 피라미딩이 되지 않게 MarketPosition >= 0 조건 추가
if MarketPosition >= 0 and var1 < var2 and C < var3 and C < O and
(C >= var4*1.03 or C <= var4*0.97) Then
sell("s");
#피라미딩매수(매수상태이고 첫봉에서 동일조건이면 추가매수)
if dayindex == 0 and MarketPosition == 1 and var1 > var2 and C > var3 and C > O and
(C >= var4*1.03 or C <= var4*0.97) Then
buy("bb");
#피라미딩매도(매도진입상태이고 첫봉에서 동일조건이면 추가매도)
if dayindex == 0 and MarketPosition == -1 and var1 < var2 and C < var3 and C < O and
(C >= var4*1.03 or C <= var4*0.97) Then
sell("ss");
if MarketPosition == 1 Then{
var1 = Floor((highest(H,BarsSinceEntry)-EntryPrice)/(PriceScale*10));
if var1 > var1[1] Then
Text_New(sdate,stime,H,NumToStr(var1*10,0)+"틱");
}
if MarketPosition == -1 Then{
var1 = Floor((EntryPrice-Lowest(L,BarsSinceEntry))/(PriceScale*10));
if var1 > var1[1] Then
Text_New(sdate,stime,H,NumToStr(var1*10,0)+"틱");
}
답변 1
예스스탁 예스스탁 답변
2016-09-06 14:40:15
안녕하세요
예스스탁입니다.
중심선기간과 상하폭을 틱수로 지정할수 있게 수식을 변경해 드립니다.
틱수는 작을수록 신호가 많이 발생합니다.
기간도 작을수록 많이 발생하지만 항상 작게 발생하는 것이 아닙니다.
일정기간 평균가의 위치에 따라 다릅니다.
input : 기간(20),틱수(1);
var1 = ma(c,3);
var2 = ma(c,6);
var3 = ma(C,9);
var4 = (highest(H,기간)+lowest(L,기간))/2;
#기존매수는 피라미딩이 되지 않게 MarketPosition <= 0 조건 추가
if MarketPosition <= 0 and var1 > var2 and C > var3 and C > O and
(C >= var4+PriceScale*틱수 or C <= var4-PriceScale*틱수) Then
buy("b");
#기존매도는 피라미딩이 되지 않게 MarketPosition >= 0 조건 추가
if MarketPosition >= 0 and var1 < var2 and C < var3 and C < O and
(C >= var4+PriceScale*틱수 or C <= var4-PriceScale*틱수) Then
sell("s");
#피라미딩매수(매수상태이고 첫봉에서 동일조건이면 추가매수)
if dayindex == 0 and MarketPosition == 1 and var1 > var2 and C > var3 and C > O and
(C >= var4+PriceScale*틱수 or C <= var4-PriceScale*틱수) Then
buy("bb");
#피라미딩매도(매도진입상태이고 첫봉에서 동일조건이면 추가매도)
if dayindex == 0 and MarketPosition == -1 and var1 < var2 and C < var3 and C < O and
(C >= var4+PriceScale*틱수 or C <= var4-PriceScale*틱수) Then
sell("ss");
if MarketPosition == 1 Then{
var1 = Floor((highest(H,BarsSinceEntry)-EntryPrice)/(PriceScale*10));
if var1 > var1[1] Then
Text_New(sdate,stime,H,NumToStr(var1*10,0)+"틱");
}
if MarketPosition == -1 Then{
var1 = Floor((EntryPrice-Lowest(L,BarsSinceEntry))/(PriceScale*10));
if var1 > var1[1] Then
Text_New(sdate,stime,H,NumToStr(var1*10,0)+"틱");
}
즐거운 하루되세요
> 천왕봉 님이 쓴 글입니다.
> 제목 : 신호좀 자주 나오게 해주세요.
> 지난번 질문에 수식 작성해주셔서 고맙습니다.
아래는
"최근 20개 봉의 평균 가격 기준 상 하 3% 이내에서는 조건을 만족해도 신호 발생하지 않는다."
라는 수식을 작성해주신건데 실행해보니까 신호가 3일에 한번 정도 나옵니다.
조금더 민감하게 해보려고
봉 수를 20개가 아닌 2개로 줄이고( var4 = (highest(H,20)+lowest(L,20))/2;), --> 이 부분에서 20을 2로 변경함
상하 3% 이내를 1% 이내로 줄이고 (C >= var4*1.03 or C <= var4*0.97) --> 이 부분을 1.03을 1.01로, 0.97을 0.99로 변경함
이렇게 수정하고 실행해도 신호가 안나옵니다.
좀더 민감하게 하려면 어떻게 해야 하는지요?
var1 = ma(c,3);
var2 = ma(c,6);
var3 = ma(C,9);
var4 = (highest(H,20)+lowest(L,20))/2;
#기존매수는 피라미딩이 되지 않게 MarketPosition <= 0 조건 추가
if MarketPosition <= 0 and var1 > var2 and C > var3 and C > O and
(C >= var4*1.03 or C <= var4*0.97) Then
buy("b");
#기존매도는 피라미딩이 되지 않게 MarketPosition >= 0 조건 추가
if MarketPosition >= 0 and var1 < var2 and C < var3 and C < O and
(C >= var4*1.03 or C <= var4*0.97) Then
sell("s");
#피라미딩매수(매수상태이고 첫봉에서 동일조건이면 추가매수)
if dayindex == 0 and MarketPosition == 1 and var1 > var2 and C > var3 and C > O and
(C >= var4*1.03 or C <= var4*0.97) Then
buy("bb");
#피라미딩매도(매도진입상태이고 첫봉에서 동일조건이면 추가매도)
if dayindex == 0 and MarketPosition == -1 and var1 < var2 and C < var3 and C < O and
(C >= var4*1.03 or C <= var4*0.97) Then
sell("ss");
if MarketPosition == 1 Then{
var1 = Floor((highest(H,BarsSinceEntry)-EntryPrice)/(PriceScale*10));
if var1 > var1[1] Then
Text_New(sdate,stime,H,NumToStr(var1*10,0)+"틱");
}
if MarketPosition == -1 Then{
var1 = Floor((EntryPrice-Lowest(L,BarsSinceEntry))/(PriceScale*10));
if var1 > var1[1] Then
Text_New(sdate,stime,H,NumToStr(var1*10,0)+"틱");
}