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

Options

Bookmark Thread

First Page First Unread Last Page Last Post

Print Thread

Similar Threads

Algorithmic Quant Trading (Machine Learning + Stat-Arb) 25 replies

Forex with Machine Learning Software Project 1 reply

Machine Learning + Retail Forex = Profitable? (Quant) 1 reply

Potential new machine learning style software. 79 replies

My most recent advancements into machine learning 16 replies

  • Trading Discussion
  • /
  • Reply to Thread
  • Subscribe
  • 233
Attachments: Machine Learning with algoTraderJo
Exit Attachments

Machine Learning with algoTraderJo

  • Last Post
  •  
  • 1 1516Page 171819 47
  • 1 16Page 1718 47
  •  
  • Post #321
  • Quote
  • Feb 14, 2015 1:27pm Feb 14, 2015 1:27pm
  •  PipMeUp
  • Joined Aug 2011 | Status: Member | 1,305 Posts
The same with 500 training samples
Attached Image

Attached Image
No greed. No fear. Just maths.
 
 
  • Post #322
  • Quote
  • Feb 15, 2015 10:27am Feb 15, 2015 10:27am
  •  felixis
  • | Joined Jan 2015 | Status: Member | 122 Posts
I like a lot the smoothing that the extreme learning nn gives
maybe its usefull in noisy conditions just like financial times series

did you tried to increase the number of hidden neurons ?
to see how the approximation is finer grained

there is a kind of GA build inside because of the random weights of the hidden layer
i think the matrix is picking out the nodes that matter
should see if some coefficients are zeroed
 
 
  • Post #323
  • Quote
  • Feb 15, 2015 11:51am Feb 15, 2015 11:51am
  •  PipMeUp
  • Joined Aug 2011 | Status: Member | 1,305 Posts
Quoting felixis
Disliked
I like a lot the smoothing that the extreme learning nn gives maybe its usefull in noisy conditions just like financial times series did you tried to increase the number of hidden neurons ? to see how the approximation is finer grained there is a kind of GA build inside because of the random weights of the hidden layer i think the matrix is picking out the nodes that matter should see if some coefficients are zeroed
Ignored
50 and 100 neurons. With too many neurons it starts learning the dataset rather than explaining it. It takes care of the exceptions too much.
From what I understood of the paper there is no selection of the important coefficients. On the contrary they are considered all irrelevant and any value is as good as any other. Only the output coefficients are optimized.
Attached Images
No greed. No fear. Just maths.
 
 
  • Post #324
  • Quote
  • Feb 15, 2015 12:05pm Feb 15, 2015 12:05pm
  •  PipMeUp
  • Joined Aug 2011 | Status: Member | 1,305 Posts
For trading purpose we have very few samples compared to the universe of the possibilities. Here is ELM with 30 neurons vs Gaussian Processes.
There are now only 50 samples and no mis-labels. I much prefer what the GP finds.
Attached Image
Attached Image
No greed. No fear. Just maths.
 
 
  • Post #325
  • Quote
  • Feb 15, 2015 12:19pm Feb 15, 2015 12:19pm
  •  PipMeUp
  • Joined Aug 2011 | Status: Member | 1,305 Posts
Not only we have very few samples but the data is very noisy. Let's see with 50 samples and 20% chance a sample is mislabelled:
Attached Image
Attached Image
No greed. No fear. Just maths.
 
 
  • Post #326
  • Quote
  • Feb 15, 2015 3:10pm Feb 15, 2015 3:10pm
  •  felixis
  • | Joined Jan 2015 | Status: Member | 122 Posts
maybe with a forest of this the voting scheme will enhance the classification power
because the nodes are random by superposing say 5 extreme learning machines ones could get a better classifier

as for the selection I just mean that maybe some output coef are approximately zero in comparison to the rest
hence some node could be considered zero value for the final classifier
 
 
  • Post #327
  • Quote
  • Edited at 3:55am Feb 23, 2015 3:33am | Edited at 3:55am
  •  roel13
  • | Joined Jun 2014 | Status: Member | 147 Posts
Quoting PipMeUp
Disliked
How can I know if this forecast makes sense or if it is just plain random? If it is valid, how can I measure the predictive power of such an indicator? {image}
Ignored
Sorry for late reply, only just starting reading this thread. This is quite easy. Make a little indicator which compares "actual" vs "forecasted" and calculate the offset; int(NormalizeDouble((x[i]-y[i]),_Digits)/Point) where x[i] could be for instance Close[i] (if you trade near close of bar) and y[i] could be the forecasted value. Then add these up. For binary options, I do something like "correct" (i.e. Close[i]>=Close[i-10] for 10 minute option) means total+=0.80 (80% return on $1 investment) and total-=1.00 for a failure. For Spot Forex, simply use the NormalizeDouble (result is in points, div by 10 for pips on EURUSD) formula above.

Oh and almost forgot to say, do this for all bars. Some sample code (1 minute binary option, "total" from above is "balance" here);

Inserted Code
for(int i=barstoaction;i>=0;i--){
    // Down Algo
    if(
         getRSI3(10,i,1.85,6)>44
      ){
      DrawArrow(string(objcounter)+"do",Time[i],High[i],242,3,clrRed,75*Point);objcounter++;
      if(i>=1){
        bool tradecorrect=false;
        if(Open[i]>=Open[i-1]){
          DrawLine(string(Time[i])+"dnco",Time[i],Close[i],Time[i],Close[i-1],2,clrLime);objcounter++;
          correct++; tradeswronginarow=0;
          balance+=0.8;
        }else{
          DrawLine(string(Time[i])+"dnwr",Time[i],Close[i],Time[i],Close[i-1],2,clrRed);objcounter++;
          wrong++; tradeswronginarow++;
          if(tradeswronginarow>tradeswronginarowmax){tradeswronginarowmax=tradeswronginarow;}
          balance-=1;
        }
      }
    }
}
Comment(....balance...)

If you need more help or a sample indi, PM me.
Not financial advice. For testing purposes only. Do not use on live account
 
 
  • Post #328
  • Quote
  • Feb 23, 2015 10:48am Feb 23, 2015 10:48am
  •  PipMeUp
  • Joined Aug 2011 | Status: Member | 1,305 Posts
Unfortunately it is far from that easy. I could explain why it is wrong but I think that if you're reading this thread you'd like to learn about machine learning for trading. That's why I think it is better if instead you explain why it isn't the right approach. I think it is the spirit of this thread.

- From what I found on the net Point gives the pip/point value of the current instrument. NormalizeDouble() is a rounding function and I guess int() returns the integral part of its operand. What does this normalization bring over simply using x[i]-y[i]?

- Why do you believe this is a good estimator for the worthfulness of this indicator?

- Do you consider a predictor which is right 75% of the time is good?

- x[i]-y[i] is the difference between the forecast and the actual value. Do you think 0 is a good value?

- Let's say I take a large number of samples and sum/average the values of x[i]-y[i]. Intuitively what do think the value will be?

- On the screenshot of my post the forecast is bearish. The target price is hit after only 2 days and again near the end of the forecasting period. At the forecast time the price is actually above the starting price. Do you consider the forecast is correct?
No greed. No fear. Just maths.
 
 
  • Post #329
  • Quote
  • Edited at 8:02pm Feb 23, 2015 6:19pm | Edited at 8:02pm
  •  roel13
  • | Joined Jun 2014 | Status: Member | 147 Posts
Quoting PipMeUp
Disliked
From what I found on the net Point gives the pip/point value of the current instrument. NormalizeDouble() is a rounding function and I guess int() returns the integral part of its operand. What does this normalization bring over simply using x[i]-y[i]?
Ignored
The ability or read out the success of your algo in pips or points (and a good metric accross pairs instead of x[i]-y[i]).

Quoting PipMeUp
Disliked
- Why do you believe this is a good estimator for the worthfulness of this indicator?
Ignored
If you run it on at least 1 million bars (I use this), then assuming your algo has a sufficiently high signal frequency I think it will quite clearly show you how successfull (or not) your algo is.

Quoting PipMeUp
Disliked
- Do you consider a predictor which is right 75% of the time is good?
Ignored
With a fixed x-minute exit and a sufficiently high signal frequency? Absolutely. I'd pay for it.

Quoting PipMeUp
Disliked
- x[i]-y[i] is the difference between the forecast and the actual value. Do you think 0 is a good value?
Ignored
Heh. You're hinting on the ">=" and thinking about spread - right? Did you see "binary options"? Do you think "draw" is good for binary options?

Quoting PipMeUp
Disliked
- Let's say I take a large number of samples and sum/average the values of x[i]-y[i]. Intuitively what do think the value will be?
Ignored
Sure, but maybe you are not following part of my code above, nor see what comes beyond it (% calculation besides balance)

Quoting PipMeUp
Disliked
- On the screenshot of my post the forecast is bearish. The target price is hit after only 2 days and again near the end of the forecasting period. At the forecast time the price is actually above the starting price. Do you consider the forecast is correct?
Ignored
Spot forex vs binary options. The above code was just a copy and paste from BO to get you started. With spot forex you have to add a time limiter in for the signal to realize, at least this is one approach I take.

<edit>Btw, re: spread, you can simply use # or trx x average spread of your broker. Not perfect, but good enough imho for most major pairs</edit>
Not financial advice. For testing purposes only. Do not use on live account
 
 
  • Post #330
  • Quote
  • Feb 25, 2015 5:27pm Feb 25, 2015 5:27pm
  •  roel13
  • | Joined Jun 2014 | Status: Member | 147 Posts
There is actually a mistake in the code above after all balance should not be increased/decreased for a draw
Not financial advice. For testing purposes only. Do not use on live account
 
 
  • Post #331
  • Quote
  • Mar 7, 2015 11:13am Mar 7, 2015 11:13am
  •  mfoste1
  • Joined Jun 2009 | Status: A slave to the tape | 4,390 Posts
You guys might want to check out my thread- http://www.forexfactory.com/showthread.php?t=528926

I have some really incredible ideas with a new ML algorithm, which isn't currently being used by any finance application forecasting-truly ground breaking stuff

I am looking for a skilled coder to help me implement this idea, I will discuss more through PM for anyone who is serious.

Thanks!
 
 
  • Post #332
  • Quote
  • Mar 8, 2015 3:55pm Mar 8, 2015 3:55pm
  •  PipMeUp
  • Joined Aug 2011 | Status: Member | 1,305 Posts
Quoting mfoste1
Disliked
You guys might want to check out my thread- http://www.forexfactory.com/showthread.php?t=528926 I have some really incredible ideas with a new ML algorithm, which isn't currently being used by any finance application forecasting-truly ground breaking stuff I am looking for a skilled coder to help me implement this idea, I will discuss more through PM for anyone who is serious. Thanks!
Ignored
In your thread you say "some incredibly promising open-source software" and "using their proprietary algorithms". Either it's open or it's not. What is the license? If it is open source can you point us to their work to let us asses how incredibly promising it may be?
No greed. No fear. Just maths.
 
 
  • Post #333
  • Quote
  • Mar 9, 2015 7:14pm Mar 9, 2015 7:14pm
  •  mfoste1
  • Joined Jun 2009 | Status: A slave to the tape | 4,390 Posts
Quoting PipMeUp
Disliked
{quote} In your thread you say "some incredibly promising open-source software" and "using their proprietary algorithms". Either it's open or it's not. What is the license? If it is open source can you point us to their work to let us asses how incredibly promising it may be?
Ignored

Everything needed to implement their models is open sourced, and the firm actually encourages experimentation with the algorithms.(There has not been a trading application as of yet using the algorithms). To get a working model running, it will take a skilled coder(after having read their white paper and documentation) using Python on OSx or Linux. If you would like to know more, please DM me. Thanks
 
 
  • Post #334
  • Quote
  • Edited Mar 12, 2015 1:29am Mar 11, 2015 6:57am | Edited Mar 12, 2015 1:29am
  •  TerryTibbs
  • | Joined Jul 2014 | Status: Member | 121 Posts
This is a very interesting thread. Thanks Jo for starting such an interesting topic.

Although i must confess i know little about ML... but i am very intrigued. How is the best way to really get into this stuff...i mean practical work not just reading up on lots of theory? I have a coding background and am comfortable in Java, C, C++, C#, shell scripting, ect. I code my own EAs currently but i've never taken much thought around machine learning and the likes. You mention the F4 framework as a good tool to build around, are there any other example of this that are more, shall we say, "open source" (read free!). I'd like to properly test out this avenue without having to shell out any cash and see whether or not this avenue is right for me.

Also, can we get some clarification on some of the models you are using here for testing? I'm getting confused as i tried to build a simple version of your K-NN example earlier(seems you have moved on from this now) and i was just never clear on the "rules" as it were. I ended up building a model that did runs on past 100 examples for EVERY pattern (doh!) instead i now realise you meant 100 examples of ANY pattern!

I think PipMeUp (i think it was him!) provided a good summary so far:

Currency of the account: USD
Starting balance: $100000
Money Management: 1%
Timezone: Europe/Paris,Berlin
Price used: open price, (bid+ask)/2
Stop loss: 0.6 x ATR20. ATR uses the daily candle in GMT time and excludes the week-end candles (including the W-E changes nothing).
Take profit: None
Number of price return per sample: 2
Number of samples in window: 100

but still leaves a lot to be answered for. For example the SL; originally it was 60% of ATR but later i remember you stating that an 80% SL worked better, but then you never really mentioned more about it??? did you ditch the 60% over the 80%? Other rules such as when to move SL are still fairly unclear. Do we move it on every new bar(and we're still in the trade!)? Move it once our same entry pattern re-appears? dont move it at all???

what about TP targets? is there a TP target? at one point i remember you discussing a 1.5 ATR as TP??? but again not ever made clear which one to use eventually... do we get out once an opposite pattern appears?

What is our "pattern choosing" criteria? the pattern that shows up most in the last 200 bars? the pattern that nets us the most pips in the last 100 examples? are the frequency to price movement weighted in any way??? we may get pattern X show up only 20 times but in that 20 times it moved to our target price 15 times, whereas a pattern coming up 50 times but only moved to our target 25 times, i mean which should we choose? actually maybe my lack of ML is to blame here? this could be what your ML algos are actually figuring out, yes? (excuse my ignorance).

also when we get a clear decision on which "pattern" to trade, do we also by default trade its counterpart? i read also someone wrote(forgot who) that when in a trade if we get a pattern that signals us to get out we close our trade and open another in the opposite direction? that would imply if one pattern is chosen as the favourable its counterpart automatically becomes a valid signal to trade too. Have you experimented with only one-way trades and discounting the "counter trade" pattern? for example if pattern Down-Down>Up is the "winning" pattern do we forget about "Up-Up>Down" as its counter trade???

Im sorry in advance if most my questions sound stupid, forgive my ignorance and perhaps someone can humour me enough to clear up some of the questions i have....

This is the best model i could create so far:

Attached Image (click to enlarge)
Click to Enlarge

Name: fixed.png
Size: 44 KB


I know you have touched on it before but can we have some more explanation as to why this does not work on other pairs? i mean the logic would dictate its a "learning" strategy, so it should "learn" the best "pattern" to trade regardless of pair selection? i understand that open and close times of the daily candles can effect this to some degree but would'nt you expect the "learning" to figure it out anyway? and find the best pattern. I ran a GU test and got horrible results...

Attached Image (click to enlarge)
Click to Enlarge

Name: horribleGU.png
Size: 43 KB
 
 
  • Post #335
  • Quote
  • Mar 15, 2015 10:55am Mar 15, 2015 10:55am
  •  PipMeUp
  • Joined Aug 2011 | Status: Member | 1,305 Posts
Hello,

I'll try my best to clarify

Quote
Disliked
[...] leaves a lot to be answered for. For example the SL; originally it was 60% of ATR but later i remember you stating that an 80% SL worked better, but then you never really mentioned more about it??? did you ditch the 60% over the 80%? Other rules such as when to move SL are still fairly unclear. Do we move it on every new bar(and we're still in the trade!)? Move it once our same entry pattern re-appears? dont move it at all??? what about TP targets? is there a TP target? at one point i remember you discussing a 1.5 ATR as TP??? but again not...
These are the rules you set on top of the prediction. In the examples so far they are not infered from the data. You decide upfront. Up to you.

Quote
Disliked
What is our "pattern choosing" criteria? the pattern that shows up most in the last 200 bars?
You can average the K nearest neighbors predictions. If the result is positive it's a long. If it is negative it's a short. Or you can select the direction depending on the max upward and the max downward. Again the rules are decided upfront.

Quote
Disliked
What is our "pattern choosing" criteria?
The K nearest patterns. Perhaps you didn't understand the K-NN. Let's build an example by hand. For this example I use two price changes for the pattern and the next one for the target. I use 15 training examples. That's certainly not enough for a real life application but that's just an example. For this example I'll use the close prices (just because it make more sense to me). We will predict the next move in pips (to keep the example clear, normally you use %).

First you start with the last prices. We need 3 price changes; 2 for the pattern and 1 for the target. We need 4 prices to compute this since we take differences. We want 15 examples. We need the last 18 prices. Here are the last 18 close prices I have for E/U daily --week-ends are removed--
Inserted Code
1.13997, 1.13658, 1.13784, 1.13339, 1.13395, 1.13639, 1.12027, 1.11947, 1.11766, 1.11828, 1.10791, 1.10318, 1.08426, 1.08348, 1.07068, 1.05478, 1.06265, 1.04964
Let's take the first differences (price[t] - price[t-1]), in pips. We have 17 values.
Inserted Code
-33.9, 12.6, -44.5, 5.6, 24.4, -161.2, -8.0, -18.1, 6.2, -103.7, -47.3, -189.2, -7.8, -128.0, -159.0, 78.7, -130.1
We can now build the training set. The first column is the pip move for a day. The second is the pip move for the next day and the third one is the move for the day after.
Inserted Code
-33.9    12.6    -44.5
12.6    -44.5    5.6
-44.5    5.6    24.4
5.6    24.4    -161.2
24.4    -161.2    -8
-161.2    -8    -18.1
-8    -18.1    6.2
-18.1    6.2    -103.7
6.2    -103.7    -47.3
-103.7    -47.3    -189.2
-47.3    -189.2    -7.8
-189.2    -7.8    -128
-7.8    -128    -159
-128    -159    78.7
-159    78.7    -130.1
We can graph the samples (previous day, day) to make things more visual. The third column is not used. Of course if we used 3 moves it would be a 3D graph. For 10 moves it would be a graph in 10 dimensions. The last 2 moves are -159.0 and 78.7. This is the red square.
Attached Image

What is the next move? Let's take the 3 nearest neighbors. They are (24.4, -161.2), (6.2, -103.7) and (-7.8, -128). Their pips move are -8, -47.3 and -159. The average is -71.4 pips. We can expect a negative movement for Monday.

Quote
Disliked
I know you have touched on it before but can we have some more explanation as to why this does not work on other pairs? i mean the logic would dictate its a "learning" strategy, so it should "learn" the best "pattern" to trade regardless of pair selection? i understand that open and close times of the daily candles can effect this to some degree but would'nt you expect the "learning" to figure it out anyway? and find the best pattern. I ran a GU test and got horrible results...
Same here
This is a very basic learning algorithm. For instance it is cleary unable to make a difference between a Monday move and a Tuesday move. It can not even spot periodic patterns.
No greed. No fear. Just maths.
 
 
  • Post #336
  • Quote
  • Mar 15, 2015 12:04pm Mar 15, 2015 12:04pm
  •  TerryTibbs
  • | Joined Jul 2014 | Status: Member | 121 Posts
PipMeUp, thank you!

Makes much more sense now lol, looks like the "model" i was building was a bit off base then!! as this is not how it does its calculations at all. Regardless seems like i have accidentally stumbled upon something that seems to work in my backtests anyway!

I will try building another model. Many thanks for the reply, thought the thread was going dead!
 
 
  • Post #337
  • Quote
  • Edited at 3:11pm May 4, 2015 2:53pm | Edited at 3:11pm
  •  algoTraderJo
  • Joined Dec 2014 | Status: Member | 412 Posts
Long time no see folks! Life happens, we get busy, but now I am back!

I want to start posting again on this thread to get the ball rolling again on machine learning in FX trading. To start things fresh I want to start sharing with you a machine learning technique that is between the 1D and 1H timeframes (since we use 1H data but trade only once per day), that is quite successful in generating systems for most FX trading pairs. This machine learning technique does the following:

 

  1. On each day, at a given trading hour (A) build a machine learning model using linear regression. To train the model look at the past (B) days at the same trading hour, then look at the past (C) hourly bar returns as inputs and use the maximum long excursion (MLE) and maximum short excursion (MSE) for the (D) bars after the hour signal as target (it is crucial to train for both targets at the same time). The past (C) bar returns are the inputs, the MSE/MLE with a horizon (D) are the targets and the number of examples trained is B. As I have always done, every time I generate a signal using machine learning I retrain the model.
  2. Get the predicted MLE and MSE for the next day according to the previous (C) bars. Signals are only generated on the desired hour (A).
  3. If MLE > MSE enter a long, if MLE < MSE enter a short. If MLE = MSE, stay on the sidelines.
  4. Use a stop loss target of 50% of the 20 day ATR.
  5. If a trade is open and a signal in the opposite direction happens close the trade and open a trade in the new direction. If a signal in the same direction happens then update the SL to match what a new trade would have as SL.

The strategy has 4 variables belonging to the machine learning process. They are:

  1. (A) Hour used for signals and training
  2. (B) number of examples used for training
  3. (C) number of bar returns used per example
  4. (D) Horizon used to define the MLE/MSE

Using A = 0 (GMT +1/+2), B = 130, C = 9 and D = 12 we can obtain the result below for the EURJPY. Notice that:

  1. This is a result outside of the EURUSD
  2. Linearity is very high (R2 > 0.95)
  3. The number of bars as input is much higher than when we used the daily TF. Now that we are training with 1H bars we need more information.
  4. The number of examples is in the same order as the number used before.

Attached Image (click to enlarge)
Click to Enlarge

Name: machine_learning_1h1d_step_eurjpy.png
Size: 24 KB


You can reproduce these results using the LR_Prediction_i_simpleReturn_o_mfemaeDifference function available in the F4 framework if you have access to it. If you don't have access to the Asirikuy framework and have any questions make sure you ask, I'll try to answer. Daniel has also bought 1987-2015 1M data for Asirikuy members (which is the data I used for the above test) so you should be able to reproduce things exactly if you have access to F4. Since we got rid of the restriction imposed by the rigid state of a daily candle structure and we can now provide information in a much more flexible manner, we can actually obtain good results for almost any symbol.

You'll see as the thread advances how we can now create systems for all majors using variations of the above machine learning process, we haven't even looked at what SVM, NN, KNN, ensembles or linear mapping algorithms can do here! Questions and comments welcome.
 
 
  • Post #338
  • Quote
  • May 4, 2015 2:56pm May 4, 2015 2:56pm
  •  MathTrader7
  • Joined Aug 2014 | Status: Trading | 2,145 Posts
Glad to see you back algoTraderJo! I'm following your thread with interest.
Trading is the hardest way to make easy money...
 
 
  • Post #339
  • Quote
  • May 4, 2015 3:32pm May 4, 2015 3:32pm
  •  algoTraderJo
  • Joined Dec 2014 | Status: Member | 412 Posts
Quoting MathTrader7
Disliked
Glad to see you back algoTraderJo! I'm following your thread with interest.
Ignored
Thanks for the warm welcome
 
 
  • Post #340
  • Quote
  • May 4, 2015 3:43pm May 4, 2015 3:43pm
  •  algoTraderJo
  • Joined Dec 2014 | Status: Member | 412 Posts
Sorry, had a couple of years missing from the last backtest I posted here. This is the full version (1991-2015). The last year has been significantly profitable for this system. Remember that the cumulative return axis is logarithmic.

Attached Image (click to enlarge)
Click to Enlarge

Name: machine_learning_1h1d_step_eurjpy_full.png
Size: 24 KB
 
 
  • Trading Discussion
  • /
  • Machine Learning with algoTraderJo
  • Reply to Thread
    • 1 1516Page 171819 47
    • 1 16Page 1718 47
0 traders viewing now
  • More
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