Gamestudio Links
Zorro Links
Newest Posts
New Zorro v1.99.2
by jcl
46 minutes 0 seconds ago
Strategy Development
by AndrewAMD
59 minutes 37 seconds ago
closing profitable trades (stop)
by MINER
Today at 12:47
Next contest?
by jcl
Yesterday at 15:44
advance decline (ADO) code examples?
by 3dgamelight
12/09/18 19:52
Newbie coding question. HELP Please!
by 3dgamelight
12/09/18 16:28
Sam Foster Sound | Experienced Game Composer for Hire
by titanicpiano14
12/08/18 19:10
AUM Magazine
Latest Screens
Worst Case Z
AckCon'18 - Lotter vs the World 2 - Preview Release
Evonet Beta v1.0 : Online Project Development Template
Lake scene
Who's Online
19 registered (alibaba, ags, Artvin, AndrewAMD, chsmac85, 20BN, CocaCola, Ayumi, 5 invisible), 477 Guests and 12 Spiders online.
Key: Admin, Global Mod, Mod
Newest Members
mahomed, bondz, Neil_G, bobby4h, MutilatedDuck
18117 Registered Users
Topic Options
Rate This Topic
#448932 - 02/26/15 08:07 CyberCycle Adaptive Cy
tvas Offline
Newbie

Registered: 12/10/13
Posts: 13
Here are two instantly profitable strategies which how

Top
#448933 - 02/26/15 08:13 Re: CyberCycle Adaptive Cy [Re: tvas]
tvas Offline
Newbie

Registered: 12/10/13
Posts: 13
The TS code for the CyberCycle strategy as defined by Ehlers. The interesting thing is that this strategy can generate good returns when executed in reverse mode (do exactly the opposite as Mr. Ehlers suggested :)) on volatile instruments (best candidate is GBPJPY) and a time frame around 240 min in order ot avoid too frequent trading. Alternatively you can run it on range bars of ca. 50 pips. It shouldn't be difficult to port the strategy to Zorro and play with it.

////////////////////////////////////////////////////////////////
Inputs: Price((H+L)/2) ,alpha(.07), Lag(9), Reverse(false);
Vars: Smooth(0),
Cycle(0),
alpha2(0),
Signal(0);
Smooth = (Price + 2*Price[1] + 2*Price[2] + Price[3])/6;
Cycle = (1 - .5*alpha)*(1 - .5*alpha)*(Smooth - 2*Smooth[1] + Smooth[2]) + 2*(1 - alpha)*Cycle[1] - (1 - alpha)*(1 - alpha)*Cycle[2];

If currentbar < 7 then Cycle = (Price - 2*Price[1] + Price[2]) / 4;
alpha2 = 1 / (Lag + 1);
Signal = alpha2*Cycle + (1 - alpha2)*Signal[1];

If Reverse then begin
If Signal Crosses Over Signal[1] then Buy Next Bar on Open;
If Signal Crosses Under Signal[1] then Sell Short Next Bar on Open;
end Else begin
If Signal Crosses Under Signal[1] then Buy Next Bar on Open;
If Signal Crosses Over Signal[1] then Sell Short Next Bar on Open;
end;

If MarketPosition = 1 and PositionProfit < 0 and BarsSinceEntry > 8 then Sell This Bar;
If MarketPosition = -1 and PositionProfit < 0 and BarsSinceEntry > 8 then Buy To Cover This Bar;

////////////////////////////////////////////////////////////////

Top
#448934 - 02/26/15 08:28 Re: CyberCycle Adaptive Cy [Re: tvas]
tvas Offline
Newbie

Registered: 12/10/13
Posts: 13
And here is a strategy which uses the Adaptive Cyber Cycle (Cyber Cycle's alpha1 parameter is based on the full Dominant Cycle). To make this strategy profitable you should run it in reverse mode (again: do exactly the opposite what Mr. Ehlers suggests :)) and combine it with a trailing stop exit method which is not included in the code because in TS I simply combine the strategy with the standard PercentTrailing strategy. A good result can be achieved on GBPJPY, time frame 240 min and a percent trailing exit which triggers when the profit exceeds 30 pips and risks 10% from the profit.

/////////////////////////////////////////////////////////////////////
Inputs: Price((H+L)/2) ,alpha(.07), Lag(9), Reverse(false);

Vars: Smooth(0),Cycle(0),Q1(0),I1(0),DeltaPhase(0),MedianDelta(0),DC(0),InstPeriod(0),Period(0),Length(0),Num(0),Denom(0),alpha1(0),Signal(0);

Smooth = (Price + 2*Price[1] + 2*Price[2] + Price[3])/6;
Cycle = (1 -.5*alpha)*(1 - .5*alpha)*(Smooth - 2*Smooth[1] + Smooth[2]) + 2*(1 - alpha)*Cycle[1] - (1 - alpha)*(1 - alpha)*Cycle[2];
If currentbar < 7 then Cycle = (Price - 2*Price[1] + Price[2]) / 4;

Q1 = (.0962*Cycle + .5769*Cycle[2] - .5769*Cycle[4] - .0962*Cycle[6])*(.5 + .08*InstPeriod[1]);
I1 = Cycle[3];
If Q1 <> 0 and Q1[1] <> 0 then DeltaPhase = (I1/Q1 - I1[1]/Q1[1]) / (1 + I1*I1[1]/(Q1*Q1[1]));
If DeltaPhase < 0.1 then DeltaPhase = 0.1;
If DeltaPhase > 1.1 then DeltaPhase = 1.1;
MedianDelta = Median(DeltaPhase, 5);
If MedianDelta = 0 then DC = 15 else DC = 6.28318 / MedianDelta + .5;
InstPeriod = .33*DC + .67*InstPeriod[1];
Period = .15*InstPeriod + .85*Period[1];
alpha1 = 2 / (Period + 1);
Signal = (1 - .5*alpha1)*(1 - .5*alpha1)*(Smooth - 2*Smooth[1] + Smooth[2]) + 2*(1 - alpha1)*Signal[1] - (1 - alpha1)*(1 - alpha1)*Signal[2];
If currentbar < 7 then Signal = (Price - 2*Price[1] + Price[2]) / 4;

If Reverse then begin
If Signal Crosses Over Signal[1] then Buy Next Bar on Open;
If Signal Crosses Under Signal[1] then Sell Short Next Bar on Open;
end Else begin
If Signal Crosses Under Signal[1] then Buy Next Bar on Open;
If Signal Crosses Over Signal[1] then Sell Short Next Bar on Open;
end;

If MarketPosition = 1 and PositionProfit < 0 and BarsSinceEntry > 8 then Sell This Bar;
If MarketPosition = -1 and PositionProfit < 0 and BarsSinceEntry > 8 then Buy To Cover This Bar;
////////////////////////////////////////////////////////////////////////////////

Top
#450478 - 04/15/15 15:17 Re: CyberCycle Adaptive Cy [Re: tvas]
forexcoder Offline
Newbie

Registered: 02/16/15
Posts: 45
Loc: Italy
Tvas thanks for sharing your strategies! Much appreciated.
I don't know TS language. Can someone help me to translate that code in Zorro? Thanks in advance.

Top
#475021 - 11/19/18 05:26 Re: CyberCycle Adaptive Cy [Re: forexcoder]
OptimusPrime Offline
Newbie

Registered: 08/09/18
Posts: 31
Hi Team:

Forgive the crude attempt, but I am trying to code the CyberCycle Internal Cycle.. It is giving an error message :
" Error 111: Crash in Function at Bar 0"
but I can't find the issue right now.


vars CyberCycleInternalCycle (var* Input, alpha)
{
vars ReversedSeries = rev(series(Input[0]));

vars RevCycle,iCycleCycle,Smooth = series();

int i=0;

for(i=0; i<(NumBars-1); i++)
{

if (i<3)
RevCycle[i]=Smooth[i]=ReversedSeries[i];

if (i<7 && i>2)
{
RevCycle[i]=(
ReversedSeries[i]
-2* ReversedSeries[i-1]
+ ReversedSeries[i-2]) /4;

Smooth[i] = (
ReversedSeries[i]
+ 2* ReversedSeries[i-1]
+ 2*ReversedSeries[i-2]
+ ReversedSeries[i-3]);

Smooth[i]=Smooth[i]/6;
}
else
RevCycle[i]=
(1 - .5*alpha)*(1 - .5*alpha)*(Smooth[i]
- 2*Smooth[i-1]
+ Smooth[i-2])
+ 2*(1 - alpha)*RevCycle[i-1]
- (1 - alpha)*(1 - alpha)*RevCycle[i-2];

}

iCycleCycle = rev(series(RevCycle[0]));

return iCycleCycle;

}
_________________________
Thanks so much,

OptimusPrime


Top
#475122 - 11/23/18 21:39 Re: CyberCycle Adaptive Cy [Re: OptimusPrime]
Spirit Offline
Moderator

Registered: 09/02/03
Posts: 791
It is crashing with empty pointers. You have 4 pointers but only 2 have series assigned.

Top
#475395 - 12/06/18 01:03 Re: CyberCycle Adaptive Cy [Re: Spirit]
OptimusPrime Offline
Newbie

Registered: 08/09/18
Posts: 31
Hi Spirit:

I have tried to write a Variable Moving Average. This one too is not working.

What am I missing when it comes to series creation inside a function?

// NOT WORKING
///////////////////////////////////////////////////

///// Variable Moving Average /////

///////////////////////////////////////////////////

vars VariableMovingAverage (var* Input, int MAPeriod, int CMOPeriod)
{

int factor = (2/((MAPeriod)+1));

vars VI = series(abs((CMO(Input, CMOPeriod))/100) );

int m = max(MAPeriod, CMOPeriod);

vars v = series(0);

int i;

for (i=(NumBars-1); i>0; i--)
{
if (i>(NumBars-1-m))
v[i]= Input[i];
else
v[i] = (factor*VI[i]*Input[i]) + ((1-factor* VI[i])* v[i+1]);
} //end of loop

return v;
} //end of function
_________________________
Thanks so much,

OptimusPrime


Top



Gamestudio download | chip programmers | Zorro platform | shop | Data Protection Policy

oP group Germany GmbH | Birkenstr. 25-27 | 63549 Ronneburg / Germany | info (at) opgroup.de