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

 

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的參數嗎。

請各位高手大大不吝賜教,謝謝!

原因: