커뮤니티

질문입니다

프로필 이미지
sdfxwe
2011-05-15 02:42:02
745
글번호 38621
답변완료
안녕하세요 사용자 함수에 여러번 질문 드렸던 사람입니다. > sdfxwe 님이 쓴 글입니다. > 제목 : 다시 질문드립니다 ㅠㅠ > 안녕하세요 수고가 많으십니다!! 제가 어제도 여쭈었는데 그땐 이것이 사용자 함수가 포함되어있어서 바꿔주실수가 없다고 하셨는데 위의 것이 _IsNewBar_1m 이 파일이고 Inputs: Interval(NumericSimple); Variables: IsNewBar(false), Hour(0), Minute(0), CheckTime(0), PrevTime(0); IsNewBar = false; if Date <> Date[1] then begin Hour = IntPortion(TimeToMinutes(Time) / 60); Minute = TimeToMinutes(Time) - Hour * 60; if Mod(Minute, Interval) = 0 then CheckTime = MinutesToTime(Hour * 60 + (IntPortion(Minute / Interval) - 1) * Interval) else CheckTime = MinutesToTime(Hour * 60 + IntPortion(Minute / Interval) * Interval); end; if Time <> PrevTime then begin PrevTime = Time; while Time >= CalcTime(CheckTime, Interval) begin if Time[1] > CheckTime then IsNewBar = true; CheckTime = CalcTime(CheckTime, Interval); end; end; 밑의 이 파일이 _SlowD_1m입니다. 이렇게 있으면 변환할수 있지 않을까요???;; 이게 안된다면 사용자함수? 를 지정할 수 있는 방법을 좀 알려주시거나 아니면 사용자함수 부분은 빼고라도 변환을 좀 부탁드립니다!! Inputs: Interval(NumericSimple), Length(NumericSimple); Variables: Factor(.5), BarCount(0), Counter(0); Arrays: FastDArray[2](0), SlowDArray[2](0); if _IsNewBar_1m(Interval) then begin BarCount = BarCount + 1; for Counter = 2 downto 1 begin FastDArray[Counter] = FastDArray[Counter - 1]; SlowDArray[Counter] = SlowDArray[Counter - 1]; end; if BarCount <= 1 then begin FastDArray[0] = FastK(Length * Interval); SlowDArray[0] = FastDArray[0]; end else begin FastDArray[0] = FastDArray[1] + (Factor * (FastK(Length * Interval) - FastDArray[1])); SlowDArray[0] = ((SlowDArray[1] * 2) + (FastDArray[1] + (Factor * (FastK(Length * Interval) - FastDArray[1])))) / 3; end; end; if BarCount > 0 then _SlowD_1m = SlowDArray[0] else _SlowD_1m = 0; 이것을 사용자 함수로 바꿔 주셨는데요 제가 이 사용자 함수를 스토캐스틱 크로스 로직에 적용을 시키려고 하는데요 밑은 스토캐스틱 크로스 로직이구요 Input : Period(5), Period1(3), Period2(3); value1 = StochasticsK(Period,Period1); value2 = StochasticsD(Period,Period1,Period2); # 매도 If Crossdown(value1, value2) Then { sell(); } # 매도청산 If Crossup(value1, value2) Then { buy(); } 위의 사용자 함수에서 스토캐스틱 조건이 만족되었을대 그것이 위의 로직에서 crossdown에 만족 되면 주문이 나가게 하려고하는데 어떻게 수식을 작성해야 할가요?
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2011-05-16 11:37:34

안녕하세요 예스스탁입니다. 함수로는 slowD만 있고 K가 없어 풀어 작성하셔야 합니다. Inputs: Intervals(5), Length(10); Variables: Factor(.5), BarCount(0), Counter(0); Arrays: FastDArray[2](0), SlowDArray[2](0); if _IsNewBar_1m(Intervals) then begin BarCount = BarCount + 1; for Counter = 2 downto 1 begin FastDArray[Counter] = FastDArray[Counter - 1]; SlowDArray[Counter] = SlowDArray[Counter - 1]; end; if BarCount <= 1 then begin FastDArray[0] = FastK(Length * Intervals); SlowDArray[0] = FastDArray[0]; end else begin FastDArray[0] = FastDArray[1] + (Factor * (FastK(Length * Intervals) - FastDArray[1])); SlowDArray[0] = ((SlowDArray[1] * 2) + (FastDArray[1] + (Factor * (FastK(Length * Intervals) - FastDArray[1])))) / 3; end; end; If Crossdown(FastDArray[0], SlowDArray[0]) Then sell(); If Crossup(FastDArray[0], SlowDArray[0]) Then buy(); 즐거운 하루되세요 > sdfxwe 님이 쓴 글입니다. > 제목 : 질문입니다 > 안녕하세요 사용자 함수에 여러번 질문 드렸던 사람입니다. > sdfxwe 님이 쓴 글입니다. > 제목 : 다시 질문드립니다 ㅠㅠ > 안녕하세요 수고가 많으십니다!! 제가 어제도 여쭈었는데 그땐 이것이 사용자 함수가 포함되어있어서 바꿔주실수가 없다고 하셨는데 위의 것이 _IsNewBar_1m 이 파일이고 Inputs: Interval(NumericSimple); Variables: IsNewBar(false), Hour(0), Minute(0), CheckTime(0), PrevTime(0); IsNewBar = false; if Date <> Date[1] then begin Hour = IntPortion(TimeToMinutes(Time) / 60); Minute = TimeToMinutes(Time) - Hour * 60; if Mod(Minute, Interval) = 0 then CheckTime = MinutesToTime(Hour * 60 + (IntPortion(Minute / Interval) - 1) * Interval) else CheckTime = MinutesToTime(Hour * 60 + IntPortion(Minute / Interval) * Interval); end; if Time <> PrevTime then begin PrevTime = Time; while Time >= CalcTime(CheckTime, Interval) begin if Time[1] > CheckTime then IsNewBar = true; CheckTime = CalcTime(CheckTime, Interval); end; end; 밑의 이 파일이 _SlowD_1m입니다. 이렇게 있으면 변환할수 있지 않을까요???;; 이게 안된다면 사용자함수? 를 지정할 수 있는 방법을 좀 알려주시거나 아니면 사용자함수 부분은 빼고라도 변환을 좀 부탁드립니다!! Inputs: Interval(NumericSimple), Length(NumericSimple); Variables: Factor(.5), BarCount(0), Counter(0); Arrays: FastDArray[2](0), SlowDArray[2](0); if _IsNewBar_1m(Interval) then begin BarCount = BarCount + 1; for Counter = 2 downto 1 begin FastDArray[Counter] = FastDArray[Counter - 1]; SlowDArray[Counter] = SlowDArray[Counter - 1]; end; if BarCount <= 1 then begin FastDArray[0] = FastK(Length * Interval); SlowDArray[0] = FastDArray[0]; end else begin FastDArray[0] = FastDArray[1] + (Factor * (FastK(Length * Interval) - FastDArray[1])); SlowDArray[0] = ((SlowDArray[1] * 2) + (FastDArray[1] + (Factor * (FastK(Length * Interval) - FastDArray[1])))) / 3; end; end; if BarCount > 0 then _SlowD_1m = SlowDArray[0] else _SlowD_1m = 0; 이것을 사용자 함수로 바꿔 주셨는데요 제가 이 사용자 함수를 스토캐스틱 크로스 로직에 적용을 시키려고 하는데요 밑은 스토캐스틱 크로스 로직이구요 Input : Period(5), Period1(3), Period2(3); value1 = StochasticsK(Period,Period1); value2 = StochasticsD(Period,Period1,Period2); # 매도 If Crossdown(value1, value2) Then { sell(); } # 매도청산 If Crossup(value1, value2) Then { buy(); } 위의 사용자 함수에서 스토캐스틱 조건이 만족되었을대 그것이 위의 로직에서 crossdown에 만족 되면 주문이 나가게 하려고하는데 어떻게 수식을 작성해야 할가요?