• Home
  • Forums
  • Trades
  • News
  • Calendar
  • Market
  • Brokers
  • Login
  • Join
  • User/Email: Password:
  • 9:27am
Menu
  • Forums
  • Trades
  • News
  • Calendar
  • Market
  • Brokers
  • Login
  • Join
  • 9:27am
Sister Sites
  • Metals Mine
  • Energy EXCH
  • Crypto Craft

Options

Bookmark Thread

First Page First Unread Last Page Last Post

Print Thread

Similar Threads

Modifying indicator to account for NULL values - A Little Help, please! 8 replies

Please Help: Toolbars are missing 0 replies

Indicators folder in MT4 is missing on Win8! Any help please? 4 replies

If possible a little help with this indicator please 17 replies

Missing Something? 0 replies

  • Platform Tech
  • /
  • Reply to Thread
  • Subscribe
  • 2
Attachments: I made my first indicator (something little missing) help Please
Exit Attachments

I made my first indicator (something little missing) help Please

  • Post #1
  • Quote
  • First Post: Edited Jan 19, 2009 2:29am Jan 17, 2009 6:20pm | Edited Jan 19, 2009 2:29am
  •  bamben
  • | Commercial Member | Joined Nov 2008 | 102 Posts
Inserted Code
#property copyright "Ben Muircroft"
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 White
//INPUTS
extern int P= 377;
extern bool MDOT=true;
//BUFFERS
double MA[];
//DRAW~INDICATOR~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   int init(){
   SetIndexStyle(0,DRAW_NONE);
   SetIndexArrow(0,0);
   SetIndexBuffer(0,MA);
   SetIndexEmptyValue(0,0.0);
   IndicatorShortName("MAD");
   return(0);}
//KILLXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
int deinit(){return(0);}
//MADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMAD
//START MAD CALCULATION
 
   int start(){int L;  
   int Opt = IndicatorCounted();
   if (Opt<0) return(-1);//error 
   //last counted bar will be recounted
   if (Opt>0) Opt--;                                    
   L = Bars - Opt;
   for(int C=L; C>=0; C--){                             
   double MAD = iMA(NULL,0,P,0,MODE_SMA,PRICE_MEDIAN,C);
   MA[C]=MAD;}                                          
 
   if(MDOT)
   {
   int DPOS=0,D=0;
   if(MA[0+DPOS]==EMPTY_VALUE)D=MA[0+DPOS];
   ObjectsDeleteAll();
 
   ObjectCreate("DOT",OBJ_ARROW,0,Time[0+DPOS]);
 
   ObjectSet("DOT",OBJPROP_SCALE,10.0);
   ObjectSet("DOT",OBJPROP_COLOR,White);}
 
 
return(0);}
 
//MADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMAD
  • Post #2
  • Quote
  • Jan 17, 2009 6:29pm Jan 17, 2009 6:29pm
  •  bamben
  • | Commercial Member | Joined Nov 2008 | 102 Posts
I get an error on the line with ObjectCreate("DOT",OBJ_ARROW,0,Time[0+DPOS]);

the error is ')' - wrong parameters count

I keep changing things....

I nabbed some code for an ellipse, it draws the chart object on the price I tryed to it to draw on the indicator instead so I nabbed some more code to try and make it realise to draw it only on the last bar 0 with DPOS

intstart()
{
ObjectsDeleteAll();
// clear the chart before drawing

ObjectCreate("ellipse",OBJ_ELLIPSE,0,Time[100],Low[100],Time[0],High[0]);

ObjectSet("ellipse",OBJPROP_SCALE,1.0);
// change the correlation of sides
ObjectSet("ellipse",OBJPROP_COLOR,Gold);
// change the color

return(0);
}
 
 
  • Post #3
  • Quote
  • Jan 17, 2009 6:29pm Jan 17, 2009 6:29pm
  •  bamben
  • | Commercial Member | Joined Nov 2008 | 102 Posts
does anyone have any advice?
 
 
  • Post #4
  • Quote
  • Jan 17, 2009 11:43pm Jan 17, 2009 11:43pm
  •  Zen_Leow
  • Joined Jun 2008 | Status: Programming for a better future. | 649 Posts
if you look at http://docs.mql4.com/constants/objects

OBJ_ARROW requires 1 coordinate.

each coordinate consists of 2 values namely Time (x-axis) and Price (y-axis) for it's cross-sectional position. you've given the "Time" value. but you've left out the Price value. MT4 won't know how high you'll want this arrow to be drawn.

refer to http://docs.mql4.com/objects/ObjectCreate for proper use of that function.

regards,
Zen
Programming for a better future.
 
 
  • Post #5
  • Quote
  • Jan 18, 2009 3:50am Jan 18, 2009 3:50am
  •  bamben
  • | Commercial Member | Joined Nov 2008 | 102 Posts
ok mabey I have looked at the wrong thing, I have an indicator line for the moving adverage (wich I beleve is made of objects) and I have made it disappear.
I have been looking at the Mql4 documentaion site that you showed me in another post for some thing else and I like it very much its a good site! I can understand what they say this is the best one I think.
I am looking at articals for object creation but I might be typing wrong searches because all of the articals I have found are for placing objects on price coordinates or chart window coordinates, when I am looking for an artical on placing objects on indicator coordinates.

I have also tryed to look at the indicator ang_PR (Din)-v1 but it for now this indicator is too complicated for me.

the way I see it so far is; first you deleat the object, next you create the object, then you specify its coordinates*, then the look of the object.

* specifying the objects coordinates is a little more difficult when it is to be placed on an indicator because I think first you must create the object mabey in a void so that you may use it as many times as you like. then you must get the coordinate (like 0 would be the current bar for the x coordinate. i am not sure if y is important, mabey it will put it directly on top of the indicator line)the coordinate must be labled as a sepperate thing like objposition=0, then objposition must be assigned to the buffer line you want to put it on, then you must use the objposition in the coordinates setting for the object (after time).

I know this i not correct because this is what i have tryed to do in the MAD indicator with DPOS (DPOS is dot position)

ObjectCreate("DOT",OBJ_ARROW,0,Time[0+DPOS]); i put [0+DPOS]

so time is x ok
price is y and i dont have that ( y in my case is indcator value)

hhhhmmm....
 
 
  • Post #6
  • Quote
  • Jan 18, 2009 4:11am Jan 18, 2009 4:11am
  •  bamben
  • | Commercial Member | Joined Nov 2008 | 102 Posts
SetIndexArrow !
 
 
  • Post #7
  • Quote
  • Jan 18, 2009 4:14am Jan 18, 2009 4:14am
  •  bamben
  • | Commercial Member | Joined Nov 2008 | 102 Posts
YES YES YES!!!!!!
 
 
  • Post #8
  • Quote
  • Edited at 6:54am Jan 18, 2009 6:35am | Edited at 6:54am
  •  bamben
  • | Commercial Member | Joined Nov 2008 | 102 Posts
http://i31.photobucket.com/albums/c3..._m/myMAD-1.jpg

Inserted Code
#property copyright "Ben Muircroft"
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 C'0,128,255'
#property indicator_color2 C'0,128,255'
#property indicator_color3 C'0,128,255'
#property indicator_color4 C'0,128,255'
#property indicator_color5 C'0,128,255'
#property indicator_color6 C'0,128,255'
#property indicator_color7 C'0,128,255'
#property indicator_color8 C'0,128,255'
//INPUTS
extern int P610= 610;
extern int P377= 377;
extern int P233= 233;
extern int P144= 144;
extern int P89= 89;
extern int P55= 55;
extern int P34= 34;
extern int P21= 21;
extern int P13= 13;
extern int History610  =1;
extern int History377  =1;
extern int History233  =1;
extern int History144  =1;
extern int History89  =1;
extern int History55  =1;
extern int History34  =1;
extern int History21  =1;
//BUFFERS
double MA610[];
double MA377[];
double MA233[];
double MA144[];
double MA89[];
double MA55[];
double MA34[];
double MA21[];
//DRAW INDICATOR~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   int init(){
   SetIndexStyle(0,DRAW_ARROW);SetIndexArrow(0,147);SetIndexBuffer(0,MA610);SetIndexEmptyValue(0,0.0);
   IndicatorShortName("MAD610");
   SetIndexStyle(1,DRAW_ARROW);SetIndexArrow(0,146);SetIndexBuffer(0,MA377);SetIndexEmptyValue(0,0.0);
   IndicatorShortName("MAD377");
   SetIndexStyle(2,DRAW_ARROW);SetIndexArrow(0,145);SetIndexBuffer(0,MA233);SetIndexEmptyValue(0,0.0);
   IndicatorShortName("MAD233");
   SetIndexStyle(3,DRAW_ARROW);SetIndexArrow(0,144);SetIndexBuffer(0,MA144);SetIndexEmptyValue(0,0.0);
   IndicatorShortName("MAD144");
   SetIndexStyle(4,DRAW_ARROW);SetIndexArrow(0,143);SetIndexBuffer(0,MA89);SetIndexEmptyValue(0,0.0);
   IndicatorShortName("MAD89");
   SetIndexStyle(5,DRAW_ARROW);SetIndexArrow(0,142);SetIndexBuffer(0,MA55);SetIndexEmptyValue(0,0.0);
   IndicatorShortName("MAD55");
   SetIndexStyle(6,DRAW_ARROW);SetIndexArrow(0,141);SetIndexBuffer(0,MA34);SetIndexEmptyValue(0,0.0);
   IndicatorShortName("MAD34");
   SetIndexStyle(7,DRAW_ARROW);SetIndexArrow(0,140);SetIndexBuffer(0,MA21);SetIndexEmptyValue(0,0.0);
   IndicatorShortName("MAD21");
   return(0);}
//KILLXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
int deinit(){return(0);}
//MADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMAD
//START MAD CALCULATION
   int start(){
 
   int L610;
   int Opt610 = IndicatorCounted();
   if (Opt610<0) return(-1);
 
   if (Opt610>0) Opt610--;
   L610 = Bars - Opt610;
   if (L610>History610-1)
   L610=History610-1;   
for(int C610=L610; C610>=0; C610--){   
   double MAD610 = iMA(NULL,0,P610,0,MODE_SMA,PRICE_MEDIAN,C610);
   MA610[C610]=MAD610;}
   int L377;
   int Opt377 = IndicatorCounted();
   if (Opt377<0) return(-1);
 
   if (Opt377>0) Opt377--;
   L377 = Bars - Opt377;
   if (L377>History377-1)
   L377=History377-1;   
 
for(int C377=L377; C377>=0; C377--){                                            
      double MAD377 = iMA(NULL,0,P377,0,MODE_SMA,PRICE_MEDIAN,C377);
   MA377[C377]=MAD377;}
 
   int L233;
   int Opt233 = IndicatorCounted();
   if (Opt233<0) return(-1);
 
   if (Opt233>0) Opt233--;
   L233 = Bars - Opt233;
   if (L233>History233-1)
   L233=History233-1;   
 
for(int C233=L233; C233>=0; C233--){                                          
      double MAD233 = iMA(NULL,0,P233,0,MODE_SMA,PRICE_MEDIAN,C233);
   MA233[C233]=MAD233;}
 
   int L144;
   int Opt144 = IndicatorCounted();
   if (Opt144<0) return(-1);
 
   if (Opt144>0) Opt144--;
   L144 = Bars - Opt144;
   if (L144>History144-1)
   L144=History144-1;      
 
for(int C144=L144; C144>=0; C144--){                                       
      double MAD144 = iMA(NULL,0,P144,0,MODE_SMA,PRICE_MEDIAN,C144);
   MA144[C144]=MAD144;}
 
   int L89;
   int Opt89 = IndicatorCounted();
   if (Opt89<0) return(-1);
 
   if (Opt89>0) Opt89--;
   L89 = Bars - Opt89;
   if (L89>History89-1)
   L89=History89-1;      
 
for(int C89=L89; C89>=0; C89--){                                       
      double MAD89 = iMA(NULL,0,P89,0,MODE_SMA,PRICE_MEDIAN,C89);
   MA89[C89]=MAD89;}
 
   int L55;
   int Opt55 = IndicatorCounted();
   if (Opt55<0) return(-1);
 
   if (Opt55>0) Opt55--;
   L55 = Bars - Opt55;
   if (L55>History55-1)
   L55=History55-1;      
 
for(int C55=L55; C55>=0; C55--){                                    
      double MAD55 = iMA(NULL,0,P55,0,MODE_SMA,PRICE_MEDIAN,C55);
   MA55[C55]=MAD55;}
 
   int L34;
   int Opt34 = IndicatorCounted();
   if (Opt34<0) return(-1);
 
   if (Opt34>0) Opt34--;
   L34 = Bars - Opt34;
   if (L34>History34-1)
   L34=History34-1;      
 
for(int C34=L34; C34>=0; C34--){                                   
      double MAD34 = iMA(NULL,0,P34,0,MODE_SMA,PRICE_MEDIAN,C34);
   MA34[C34]=MAD34;}
 
   int L21;
   int Opt21 = IndicatorCounted();
   if (Opt21<0) return(-1);
 
   if (Opt21>0) Opt21--;
   L21 = Bars - Opt21;
   if (L21>History21-1)
   L21=History21-1;      
 
for(int C21=L21; C21>=0; C21--){                                          
      double MAD21 = iMA(NULL,0,P21,0,MODE_SMA,PRICE_MEDIAN,C21);
   MA21[C21]=MAD21;}                                            
 
 
return(0);}
 
//MADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMADMAD
Ok now my indicator is getting some where! except it still only shows the 8th buffer (8th buffer is the one with wingdings font 140, it looks like a ball with 1 written in it . This buffer is set to the smallest amount for the periods) it is strange.


Does someone know what i have done wrong?
 
 
  • Post #9
  • Quote
  • Jan 18, 2009 10:18am Jan 18, 2009 10:18am
  •  Zen_Leow
  • Joined Jun 2008 | Status: Programming for a better future. | 649 Posts
haha.. you've made the same mistake when I just started MQL programming.

ok first of all if you are going to display all 8 buffers..

Inserted Code
#property indicator_buffers 1

should be changed to

Inserted Code
#property indicator_buffers [b]8[/b]

and I see that all your SetIndexArrow, SetIndexBuffer, SetIndexArrow and SetIndexEmptyValue are attaching the different buffer arrays to the same indicator index which is 0. that's why only the last line SetIndexBuffer(0,MA21);, etc... gets acknowledge. the compiler was kinda like thinking "which is the bloody buffer you want for index 0? oh great you finally made your mind, I'll attach MA21 to 0, attach arrowtype 140 to index 0, blah blah and forget about the rest."

so....

your

Inserted Code
//DRAW INDICATOR~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   int init(){
   SetIndexStyle(0,DRAW_ARROW);SetIndexArrow(0,147);SetIndexBuffer(0,MA610);SetIndexEmptyValue(0,0.0);
   IndicatorShortName("MAD610");
   SetIndexStyle(1,DRAW_ARROW);SetIndexArrow(0,146);SetIndexBuffer(0,MA377);SetIndexEmptyValue(0,0.0);
   IndicatorShortName("MAD377");
   SetIndexStyle(2,DRAW_ARROW);SetIndexArrow(0,145);SetIndexBuffer(0,MA233);SetIndexEmptyValue(0,0.0);
   IndicatorShortName("MAD233");
   SetIndexStyle(3,DRAW_ARROW);SetIndexArrow(0,144);SetIndexBuffer(0,MA144);SetIndexEmptyValue(0,0.0);
   IndicatorShortName("MAD144");
   SetIndexStyle(4,DRAW_ARROW);SetIndexArrow(0,143);SetIndexBuffer(0,MA89);SetIndexEmptyValue(0,0.0);
   IndicatorShortName("MAD89");
   SetIndexStyle(5,DRAW_ARROW);SetIndexArrow(0,142);SetIndexBuffer(0,MA55);SetIndexEmptyValue(0,0.0);
   IndicatorShortName("MAD55");
   SetIndexStyle(6,DRAW_ARROW);SetIndexArrow(0,141);SetIndexBuffer(0,MA34);SetIndexEmptyValue(0,0.0);
   IndicatorShortName("MAD34");
   SetIndexStyle(7,DRAW_ARROW);SetIndexArrow(0,140);SetIndexBuffer(0,MA21);SetIndexEmptyValue(0,0.0);
   IndicatorShortName("MAD21");
   return(0);}

should be

Inserted Code
//DRAW INDICATOR~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   int init(){
   SetIndexStyle(0,DRAW_ARROW);SetIndexArrow(0,147);SetIndexBuffer(0,MA610);SetIndexEmptyValue(0,0.0);
   IndicatorShortName("MAD610");
   SetIndexStyle(1,DRAW_ARROW);SetIndexArrow(1,146);SetIndexBuffer(1,MA377);SetIndexEmptyValue(1,0.0);
   IndicatorShortName("MAD377");
   SetIndexStyle(2,DRAW_ARROW);SetIndexArrow(2,145);SetIndexBuffer(2,MA233);SetIndexEmptyValue(2,0.0);
   IndicatorShortName("MAD233");
   SetIndexStyle(3,DRAW_ARROW);SetIndexArrow(3,144);SetIndexBuffer(3,MA144);SetIndexEmptyValue(3,0.0);
   IndicatorShortName("MAD144");
   SetIndexStyle(4,DRAW_ARROW);SetIndexArrow(4,143);SetIndexBuffer(4,MA89);SetIndexEmptyValue(4,0.0);
   IndicatorShortName("MAD89");
   SetIndexStyle(5,DRAW_ARROW);SetIndexArrow(5,142);SetIndexBuffer(5,MA55);SetIndexEmptyValue(5,0.0);
   IndicatorShortName("MAD55");
   SetIndexStyle(6,DRAW_ARROW);SetIndexArrow(6,141);SetIndexBuffer(6,MA34);SetIndexEmptyValue(6,0.0);
   IndicatorShortName("MAD34");
   SetIndexStyle(7,DRAW_ARROW);SetIndexArrow(7,140);SetIndexBuffer(7,MA21);SetIndexEmptyValue(7,0.0);
   IndicatorShortName("MAD21");
   return(0);}

on a sidenote, you usually don't have to use SetIndexEmptyValue at all unless you want EMPTY_VALUE to be of a different value. go read up on that in the documentation website as well.

another thing... IndicatorShortName(string name) is setting the name to be shown on the indicator window. that means you only call it once and it should be the name of your indicator and perhaps along with maybe the settings if its not too much.

I suppose right now your indicator window is only showing "MAD21" right? because that is the last time you call this function and again the compiler is thanking you for finally making up your mind. haha =)

hope this helps.

regards,
Zen
Programming for a better future.
 
 
  • Post #10
  • Quote
  • Edited at 2:23am Jan 19, 2009 1:56am | Edited at 2:23am
  •  bamben
  • | Commercial Member | Joined Nov 2008 | 102 Posts
Lol it is good that I make the same mistakes as you I think, as it means that I will grow up to be big and strong like you lol


the indicator works now thanks to you!

I am halfway there to making the full indicator now I have to go back to iCustom research for the linear regression (this iCustom is realy anoiying!!!)
I thort that I had learned this already but it is different again.

this is the code from MAD to call moving average:
MAD610 = iMA (NULL,0,P610,0,MODE_SMA,PRICE_MEDIAN,C610);

now i am trying to do the same with linear regression:

LRD610 = iCustom(NULL,0,p610,0,"Linear Regression Line",c610);

or like this:
LRD610 = iCustom(NULL,0,"Linear Regression Line",610,c610);

I would like to try another and another untill I get it right but what else could I do? I dont want the answer, maybe a Hint or what sort of things...

Ps: the MAD indicator is attached(tell me if you like it), at the moment it is good for fibonacci (I think) but what I am going to do is another one which i think can tell when the market is flat as a main purpous. with only two dots MA=610 LR=610
when the price goes in the midle it is Flat. Before meter trader I used it lot to tell when the market will be flat. I think it will be good
http://i31.photobucket.com/albums/c3...esentation.jpg
Attached Files
File Type: mq4 MAD.mq4   5 KB | 317 downloads
File Type: mq4 LinearRegression-REAL.mq4   3 KB | 322 downloads
 
 
  • Post #11
  • Quote
  • Jan 19, 2009 2:36am Jan 19, 2009 2:36am
  •  bamben
  • | Commercial Member | Joined Nov 2008 | 102 Posts
LRD610[c610] = iCustom(NULL,0,0,"Linear Regression Line",610,0,c610);

nope!
 
 
  • Post #12
  • Quote
  • Jan 19, 2009 2:41am Jan 19, 2009 2:41am
  •  bamben
  • | Commercial Member | Joined Nov 2008 | 102 Posts
LRD610 = iCustom(NULL,0,0,"Linear Regression Line",610,0);

compiles ok but nothing is on the chart
 
 
  • Post #13
  • Quote
  • Jan 19, 2009 2:43am Jan 19, 2009 2:43am
  •  bamben
  • | Commercial Member | Joined Nov 2008 | 102 Posts
mabey this linear regression doesnt like the decrementing cycle?
 
 
  • Post #14
  • Quote
  • Jan 19, 2009 2:55am Jan 19, 2009 2:55am
  •  bamben
  • | Commercial Member | Joined Nov 2008 | 102 Posts
int start(){

int l610;
int opt610 = IndicatorCounted();
if (opt610<0) return(+1);

if (opt610>0) opt610++;
l610 = Bars - opt610;
if (l610>history610+1)
l610=history610+1;

(all the parts that are + have been changed from -)

it doesnt like it at all my mouse got stuck in the chart screen as if it had walls.

ahhhhhh! I got an electric shock from the back of my labtop... my computer hates me

out of curiousity i will change MAD to increment rather than decrement hopefully not another electric shock.
 
 
  • Post #15
  • Quote
  • Jan 19, 2009 3:01am Jan 19, 2009 3:01am
  •  bamben
  • | Commercial Member | Joined Nov 2008 | 102 Posts
I should change the name of this second indicator from LRD (linear regression dot) to LARD, because it does nothing
 
 
  • Post #16
  • Quote
  • Jan 19, 2009 3:08am Jan 19, 2009 3:08am
  •  bamben
  • | Commercial Member | Joined Nov 2008 | 102 Posts
I changed buffer 0 to incrementing cycle loop and it has made MAD go....mad!
 
 
  • Post #17
  • Quote
  • Last Post: Jan 19, 2009 3:13am Jan 19, 2009 3:13am
  •  ramdas
  • | Joined Aug 2006 | Status: Member | 147 Posts
This is good link for learning how to create indicatore

http://articles.mql4.com/536
 
 
  • Platform Tech
  • /
  • I made my first indicator (something little missing) help Please
  • Reply to Thread
0 traders viewing now
Top of Page
  • Facebook
  • Twitter
About FF
  • Mission
  • Products
  • User Guide
  • Media Kit
  • Blog
  • Contact
FF Products
  • Forums
  • Trades
  • Calendar
  • News
  • Market
  • Brokers
  • Trade Explorer
FF Website
  • Homepage
  • Search
  • Members
  • Report a Bug
Follow FF
  • Facebook
  • Twitter

FF Sister Sites:

  • Metals Mine
  • Energy EXCH
  • Crypto Craft

Forex Factory® is a brand of Fair Economy, Inc.

Terms of Service / ©2022