커뮤니티
Trend Follower System
2014-02-28 19:45:09
257
글번호 73074
Inputs: XMALen(250), P1(30), P2(20), P3(450), VolLen(10), MultFact(2), stopPer(1.0);
Vars: TopBand(0), BotBand(0), XAvg(0), FastMA(0), MedMA(0), SlowMA(0), BullTrend(false), BearTrend(false);
var1 = Volatility( VolLen ) * MultFact;
if CurrentBar > 1 then
XAvg = ema( Close , XMALen );
FastMA = ma( Close, P1 );
MedMA = ma( Close, P1+P2 );
SlowMA = ma( Close, P1+P2+P3 );
BullTrend = FastMA > MedMA AND MedMA > SlowMA;
BearTrend = FastMA < MedMA AND MedMA < SlowMA;
If XAvg > TopBand AND BullTrend then begin
BotBand = TopBand;
TopBand = TopBand + var1;
End;
If XAvg < BotBand AND BearTrend then begin
TopBand = BotBand;
BotBand = BotBand - var1;
End;
if CrossUp(C , TopBand ) then buy();
if CrossDown(C , BotBand) then sell();
setstoploss(stopper);
SetStopEndofday(150000);
[사용자함수 : Volatility ]
Inputs: Length(NumericSimple);
If CurrentBar >= 1 AND Length <> 0 Then Begin
If CurrentBar == 1 Then
Volatility = TrueRange;
Else
Volatility = ((Length - 1) * Volatility[1] + TrueRange) / Length;
End;
수식 앞부분에 if CurrentBar > 1 then 는 무슨의미 인가요?
메뉴얼엔 수식계산에 필요한 필수 봉갯수 이후의 봉수를 반환 이라고
나와 있던데 모르겠네요...
그리고 사용자함수 Volatility 설명좀 달아주시면 감사하겠습니다 부탁드립니다
답변 1
예스스탁 예스스탁 답변
2014-03-03 11:03:10
안녕하세요
예스스탁입니다.
1.
CurrentBar는 수식에서 필요한 최소한의 봉갯수이후로
봉을 카운트 하는 함수입니다.
가령 수식에서 20이평이 있으면 수식에서 최소 20개봉은 필요하므로
20개봉 이후부터 봉카운트가 1씩 증가합니다.
수식에 이전봉의 값에 현재봉의 값을 가감하는 내용등이 있을경우
필요한 봉수 이전에 해당수식이 동작하면 변수에 N/A(계산할수없는값)이 저장되어
이후 계속 값이 N/A가 되므로 해당 함수등이 필요로 합니다.
2.
//수식에서 필요한 최소 봉갯수 이후이고 기간값은 0이 아닐때
If CurrentBar >= 1 AND Length <> 0 Then Begin
If CurrentBar == 1 Then
#1번째 봉일때는 봉의 TrueRange 저장
Volatility = TrueRange;
Else
#2번째 봉부터는 직전봉의 Volatility에 기간-1을 곱하고 현재봉 TrueRange를 더한 후에 기간값으로 나눔
Volatility = ((Length - 1) * Volatility[1] + TrueRange) / Length;
End;
#아래는 TrueRange설명입니다.
#TrueHigh = 현재봉 고가와 직전봉 종가 중 큰 값
#TrueLow = 현재봉 저가와 직전봉 종가 중 작은 값
#TrueRange = TrueHigh-TrueLow
즐거운 하루되세요
> cinamon 님이 쓴 글입니다.
> 제목 : Trend Follower System
> Inputs: XMALen(250), P1(30), P2(20), P3(450), VolLen(10), MultFact(2), stopPer(1.0);
Vars: TopBand(0), BotBand(0), XAvg(0), FastMA(0), MedMA(0), SlowMA(0), BullTrend(false), BearTrend(false);
var1 = Volatility( VolLen ) * MultFact;
if CurrentBar > 1 then
XAvg = ema( Close , XMALen );
FastMA = ma( Close, P1 );
MedMA = ma( Close, P1+P2 );
SlowMA = ma( Close, P1+P2+P3 );
BullTrend = FastMA > MedMA AND MedMA > SlowMA;
BearTrend = FastMA < MedMA AND MedMA < SlowMA;
If XAvg > TopBand AND BullTrend then begin
BotBand = TopBand;
TopBand = TopBand + var1;
End;
If XAvg < BotBand AND BearTrend then begin
TopBand = BotBand;
BotBand = BotBand - var1;
End;
if CrossUp(C , TopBand ) then buy();
if CrossDown(C , BotBand) then sell();
setstoploss(stopper);
SetStopEndofday(150000);
[사용자함수 : Volatility ]
Inputs: Length(NumericSimple);
If CurrentBar >= 1 AND Length <> 0 Then Begin
If CurrentBar == 1 Then
Volatility = TrueRange;
Else
Volatility = ((Length - 1) * Volatility[1] + TrueRange) / Length;
End;
수식 앞부분에 if CurrentBar > 1 then 는 무슨의미 인가요?
메뉴얼엔 수식계산에 필요한 필수 봉갯수 이후의 봉수를 반환 이라고
나와 있던데 모르겠네요...
그리고 사용자함수 Volatility 설명좀 달아주시면 감사하겠습니다 부탁드립니다
다음글
이전글