Gamestudio Links
Zorro Links
Newest Posts
Zorro 2.70
by jcl. 09/29/25 09:24
optimize global parameters SOLVED
by dBc. 09/27/25 17:07
ZorroGPT
by TipmyPip. 09/27/25 10:05
assetHistory one candle shift
by jcl. 09/21/25 11:36
Plugins update
by Grant. 09/17/25 16:28
AUM Magazine
Latest Screens
Rocker`s Revenge
Stug 3 Stormartillery
Iljuschin 2
Galactic Strike X
Who's Online Now
2 registered members (OptimusPrime, AndrewAMD), 14,580 guests, and 5 spiders.
Key: Admin, Global Mod, Mod
Newest Members
krishna, DrissB, James168, Ed_Love, xtns
19168 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
Page 1 of 2 1 2
Expressing ADX #484732
12/07/21 10:30
12/07/21 10:30
Joined: Dec 2021
Posts: 7
O
Oliverlista Offline OP
Newbie
Oliverlista  Offline OP
Newbie
O

Joined: Dec 2021
Posts: 7
Hello guys I'm new!
I'm trying to code a strategy that includes ADX as a filter to determine a trending and a non trending market.
So I'm having issues expressing the ADX variable

I wrote it as


"vars ADX18 = series(ADX(Price,18));"


But I'm sure its wrong. I need help writing the code well. Thanks

Re: Expressing ADX [Re: Oliverlista] #484733
12/07/21 11:24
12/07/21 11:24
Joined: Aug 2017
Posts: 311
Netherlands
G
Grant Offline
Senior Member
Grant  Offline
Senior Member
G

Joined: Aug 2017
Posts: 311
Netherlands
First you need to define 'Price' by

Code
vars Price = series(priceClose());

Re: Expressing ADX [Re: Oliverlista] #484734
12/07/21 12:03
12/07/21 12:03
Joined: Dec 2021
Posts: 7
O
Oliverlista Offline OP
Newbie
Oliverlista  Offline OP
Newbie
O

Joined: Dec 2021
Posts: 7
Of course yes. I defined price already, just wanted to be sure of the code for expressing ADX because it doesn't seem to work


function run ()
{
vars Price = series(price());

vars ADX18 = series(ADX(Price,18));

}

Correct?

Last edited by Oliverlista; 12/07/21 12:04.
Re: Expressing ADX [Re: Oliverlista] #484736
12/07/21 12:35
12/07/21 12:35
Joined: Aug 2017
Posts: 311
Netherlands
G
Grant Offline
Senior Member
Grant  Offline
Senior Member
G

Joined: Aug 2017
Posts: 311
Netherlands
'doesn't seem to work' is't a clear explanation of your problem.

After you define the ADX18 you need to include a trade condition.

Re: Expressing ADX [Re: Oliverlista] #484738
12/07/21 12:46
12/07/21 12:46
Joined: Jul 2000
Posts: 28,024
Frankfurt
jcl Offline

Chief Engineer
jcl  Offline

Chief Engineer

Joined: Jul 2000
Posts: 28,024
Frankfurt
We can help code writing, but obviously you should first reveal the purpose of your code and what problem you had with it.

Re: Expressing ADX [Re: Oliverlista] #484740
12/07/21 13:33
12/07/21 13:33
Joined: Dec 2021
Posts: 7
O
Oliverlista Offline OP
Newbie
Oliverlista  Offline OP
Newbie
O

Joined: Dec 2021
Posts: 7
Okay lets say a simple moving average crossover system with ADX filter
The strategy longs when SMA5 is above SMA20 and ADX18 > 20. Close longs when SMA5 crossunder SMA20 . The opposite for shorts

{

function run()

vars Price = series(price());

SMA5 = series(SMA(seriesC(),5));
SMA20 = series(SMA(series(),20));
vars ADX18 = series(ADX(price,18));

if(SMA5[0] > SMA20[0] and ADX18[0]>20) enterLong();
else if(SMA5[0]< SMA20[0] and ADX18[0]>20) enterShort();

if(crossOver(SMA5, SMA20)) exitShort();
else if(crossUnder(SMA5, SMA20)) exitLong();

}


When I ran it, zorro says
"ADX(): wrong number of parameters"

Last edited by Oliverlista; 12/07/21 13:41.
Re: Expressing ADX [Re: Oliverlista] #484741
12/07/21 14:03
12/07/21 14:03
Joined: Apr 2008
Posts: 594
Austria
Petra Offline
Support
Petra  Offline
Support

Joined: Apr 2008
Posts: 594
Austria
Look up the ADX function in the manual and check what parameters it has.

Re: Expressing ADX [Re: Oliverlista] #484744
12/07/21 14:48
12/07/21 14:48
Joined: Dec 2021
Posts: 7
O
Oliverlista Offline OP
Newbie
Oliverlista  Offline OP
Newbie
O

Joined: Dec 2021
Posts: 7
The manual defines ADX Function as ADX(int TimePeriod)



function run()

{

vars Price = series(price());

vars SMA5 = series(SMA(seriesC(), 5));
vars SMA20 = series(SMA(seriesC(), 20));
int TimePeriod = 18;
ADX(TimePeriod);


if(SMA5[0]>SMA20[0] and ADX[0] >20) enterLong();
else if(SMA5[0]<SMA20[0] and ADX[0] >20) enterShort();

if(crossOver(SMA5,SMA20)) exitShort();
if(crossUnder(SMA5,SMA20)) exitLong();

}


Ran it on Zorro. Brought out
" Error in line 13:
subscript requires a array or pointer type
if(SMA5[0]>SMA20[0] and ADX[0] >20) enterLong(); "

Please help with the correct code


Last edited by Oliverlista; 12/07/21 14:49.
Re: Expressing ADX [Re: Oliverlista] #484745
12/07/21 15:00
12/07/21 15:00
Joined: Feb 2017
Posts: 1,806
Chicago
AndrewAMD Online
Serious User
AndrewAMD  Online
Serious User

Joined: Feb 2017
Posts: 1,806
Chicago
ADX is a function, not a vars.

Re: Expressing ADX [Re: AndrewAMD] #484751
12/07/21 16:46
12/07/21 16:46
Joined: Dec 2021
Posts: 7
O
Oliverlista Offline OP
Newbie
Oliverlista  Offline OP
Newbie
O

Joined: Dec 2021
Posts: 7
Got it guys. Thanks

Last edited by Oliverlista; 12/07/21 17:44.
Page 1 of 2 1 2

Moderated by  Petra 

Gamestudio download | Zorro platform | shop | Data Protection Policy

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

Powered by UBB.threads™ PHP Forum Software 7.7.1