## 初學MT4求助TS策略轉MT4.TS策略如內文。

 1 WinstonHsieh 2013.09.18 17:23   1,請教在TS內可使用Ticks這個功能，那在MT4中最小週期單位是M1，如何計算多Tick的指標。 2,TS原碼如下，看似簡單但是MT4需用陣列，還不熟，請高手大大協助。 --------------------------------------------------------------------------------------------------- Inputs: Price((H+L)/2),upColour(Red), downColour(darkGreen),colourDeltaBar(1); Vars: InPhase(0), Quadrature(0), Phase(0), DeltaPhase(0), count(0), InstPeriod(0), Period(0), Played(FALSE), LastBar(0), Trendline(0); If CurrentBar > 5 then begin {Compute InPhase and Quadrature components} Value1 = Price - Price[6]; Value2 =Value1[3]; Value3 =.75*(Value1 - Value1[6]) + .25*(Value1[2] - Value1[4]); InPhase = .33*Value2 + .67*InPhase[1]; Quadrature = .2*Value3 + .8*Quadrature[1]; {Use ArcTangent to compute the current phase} If AbsValue(InPhase +InPhase[1]) > 0 then Phase = ArcTangent(AbsValue((Quadrature+Quadrature[1]) / (InPhase+InPhase[1]))); {Resolve the ArcTangent ambiguity} If InPhase < 0 and Quadrature > 0 then Phase = 180 - Phase; If InPhase < 0 and Quadrature < 0 then Phase = 180 + Phase; If InPhase > 0 and Quadrature < 0 then Phase = 360- Phase; {Compute a differential phase, resolve phase wraparound, and limit delta phase errors} DeltaPhase = Phase[1] - Phase; If Phase[1] < 90 and Phase > 270 then DeltaPhase = 360 + Phase[1] - Phase; If DeltaPhase < 1 then DeltaPhase = 1; If DeltaPhase > 60 then Deltaphase = 60; {Sum DeltaPhases to reach 360 degrees. The sum is the instantaneous period.} InstPeriod = 0; Value4 = 0; For count = 0 to 40 begin Value4 = Value4 + DeltaPhase[count]; If Value4 > 360 and InstPeriod = 0 then begin InstPeriod = count; end; end; {Resolve Instantaneous Period errors and smooth} If InstPeriod = 0 then InstPeriod = InstPeriod[1]; Value5 = .25*(InstPeriod) + .75*Value5[1]; {Compute Trendline as simple average over the measured dominant cycle period} Period = IntPortion(Value5); Trendline = 0; For count = 0 to Period + 1 begin Trendline = Trendline + Price[count]; end; If Period > 0 then Trendline = Trendline / (Period + 2); Value11 = .33*(Price + .5*(Price - Price[3])) + .67*Value11[1]; if CurrentBar < 21 then begin Trendline = Price; Value11 = Price; end; {Plot1(Trendline, "TR");} plot1(Trendline,"TR",iff (Trendline[1] < Trendline,magenta,cyan), Default,2); Plot2(Value11, "ZL"); --------------------------------------------------------------------------------------------------- 圖如附件。 三、可以利用此策略在1M中調用5M及15M的參數嗎。 請各位高手大大不吝賜教，謝謝！