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

Options

Bookmark Thread

First Page First Unread Last Page Last Post

Print Thread

Similar Threads

Terminator MTF indicator for MT4 and MT5 (Free) 10 replies

Free or cheap margin indicator/EA with email alerts for MT4 0 replies

A Free Indicator for Metatrader Mt4 10 replies

Free MT4 Indicator 4 replies

request for small indicator development 2 replies

  • Platform Tech
  • /
  • Reply to Thread
  • Subscribe
  • 12
Attachments: Free EA/Indicator development for MT4
Exit Attachments

Free EA/Indicator development for MT4

  • Last Post
  •  
  • Page 1 2
  • Page 1 2
  •  
  • Post #1
  • Quote
  • First Post: Edited Jan 14, 2013 12:34am Nov 1, 2009 8:08am | Edited Jan 14, 2013 12:34am
  •  mtarek16
  • | Joined Sep 2008 | Status: Member | 36 Posts
I'm no longer working on this thread. Please check the latest one.
  • Post #2
  • Quote
  • Nov 3, 2009 12:16am Nov 3, 2009 12:16am
  •  PiPologi$t
  • | Joined Oct 2009 | Status: Member | 21 Posts
As I'm not a coder, I do not know if this is complicated. That being said here is an overview.

- 1. Candle's High or low is below a MA.
2. Then next candle's high and low are above a MA sound an alarm and
3. Enter trade when the next candle opens.
- Set hard Stop Loss
- Set soft Stop Loss to a different MA
- After set Profit achieved, change to a different MA.

- Must have two different time windows available each day.
- Must not take new trade when already in a trade.
- All MA's must be adjustable. ie. Period, MA method, and Apply to.

In forward testing this breakout method has produced 667 pips in the last two weeks.
 
 
  • Post #3
  • Quote
  • Nov 3, 2009 1:05am Nov 3, 2009 1:05am
  •  Tenax
  • | Joined Sep 2006 | Status: Member | 49 Posts
Hi mtarek16,
Can you write multipair ADX indicator, which should display in a table a current ADX value, something like dashboard.
 
 
  • Post #4
  • Quote
  • Nov 3, 2009 4:42am Nov 3, 2009 4:42am
  •  peterke
  • | Joined May 2008 | Status: Member | 161 Posts
MT, attached is an example of an trading plan for an EA.
It is based on Renko blocks with a couple of indicators for direction.

It is based on 5 pip renko bars for ease but should work equally on straight bars

Trade in both directions but I have only onlined long as short is just the reverse

Option 1.

Entry, Long, STC >15 , QQE > signal , CLOSE > ma. Trade only in direction of the Zig Zag signal

Exit. Close <= MA ( usually the start of the the 2nd 5 pip renko bar)

Stop loss 14 pips from entry


Option 2

Entry, Long, STC >15 , QQE > signal and > 50 , CLOSE > ma. Trade only in direction of the Zig Zag signal

Exit. Close <= MA ( usually the start of the the 2nd 5 pip renko bar)

Stop loss 14 pips from entry

Re -entry if above conditions met ( reentry generally meets option 2 conditions and often trades better and reverse zig zag not showing.

Money Mgmt ( defined size)

Other conditions

Optional No entry on Fridays ( day 6)

Please feel free to contact me f you have any questions, I lookf orward to developing this as an idea

rgds

Peter
Attached Image (click to enlarge)
Click to Enlarge

Name: example of renko strategy.gif
Size: 53 KB
 
 
  • Post #5
  • Quote
  • Nov 5, 2009 8:57pm Nov 5, 2009 8:57pm
  •  piphunter65
  • | Joined Nov 2009 | Status: Member | 31 Posts
Would it be possible to add code to this EA so that it only makes one
trade per signal? It should trade only when cci crosses zero and price is
above 62 ema for long and of course the opposite for a short. I use a set take profit and stoploss. When the take profit or stoploss is hit the EA then immediately opens a new position. Would also like to have coded in start and stop times for the EA so that it could be run only during European and US sessions. Thanks in advance if you can do this!

//+------------------------------------------------------------------+
//| This MQL is generated by Expert Advisor Builder |
//| http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/ |
//| |
//| In no event will author be liable for any damages whatsoever. |
//| Use at your own risk. |
//| |
//+------------------- DO NOT REMOVE THIS HEADER --------------------+
#define SIGNAL_NONE 0
#define SIGNAL_BUY 1
#define SIGNAL_SELL 2
#define SIGNAL_CLOSEBUY 3
#define SIGNAL_CLOSESELL 4
#property copyright "Expert Advisor Builder"
#property link "http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/"
extern int MagicNumber = 0;
extern bool SignalMail = False;
extern bool EachTickMode = False;
extern double Lots = 1.0;
extern int Slippage = 3;
extern bool UseStopLoss = True;
extern int StopLoss = 30;
extern bool UseTakeProfit = True;
extern int TakeProfit = 60;
extern bool UseTrailingStop = True;
extern int TrailingStop = 30;
int BarCount;
int Current;
bool TickCheck = False;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init() {
BarCount = Bars;
if (EachTickMode) Current = 0; else Current = 1;
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit() {
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start() {
int Order = SIGNAL_NONE;
int Total, Ticket;
double StopLossLevel, TakeProfitLevel;

if (EachTickMode && Bars != BarCount) TickCheck = False;
Total = OrdersTotal();
Order = SIGNAL_NONE;
//+------------------------------------------------------------------+
//| Variable Begin |
//+------------------------------------------------------------------+

double Buy1_1 = iCCI(NULL, 0, 136, PRICE_TYPICAL, Current + 0);
double Buy1_2 = 0;
double Buy2_1 = iMA(NULL, 0, 1, 0, MODE_EMA, PRICE_CLOSE, Current + 0);
double Buy2_2 = iMA(NULL, 0, 62, 0, MODE_EMA, PRICE_CLOSE, Current + 0);
double Sell1_1 = iCCI(NULL, 0, 136, PRICE_TYPICAL, Current + 0);
double Sell1_2 = 0;
double Sell2_1 = iMA(NULL, 0, 1, 0, MODE_EMA, PRICE_CLOSE, Current + 0);
double Sell2_2 = iMA(NULL, 0, 62, 0, MODE_EMA, PRICE_CLOSE, Current + 0);


//+------------------------------------------------------------------+
//| Variable End |
//+------------------------------------------------------------------+
//Check position
bool IsTrade = False;
for (int i = 0; i < Total; i ++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderType() <= OP_SELL && OrderSymbol() == Symbol()) {
IsTrade = True;
if(OrderType() == OP_BUY) {
//Close
//+------------------------------------------------------------------+
//| Signal Begin(Exit Buy) |
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//| Signal End(Exit Buy) |
//+------------------------------------------------------------------+
if (Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");
if (!EachTickMode) BarCount = Bars;
IsTrade = False;
continue;
}
//Trailing stop
if(UseTrailingStop && TrailingStop > 0) {
if(Bid - OrderOpenPrice() > Point * TrailingStop) {
if(OrderStopLoss() < Bid - Point * TrailingStop) {
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
} else {
//Close
//+------------------------------------------------------------------+
//| Signal Begin(Exit Sell) |
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//| Signal End(Exit Sell) |
//+------------------------------------------------------------------+
if (Order == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell");
if (!EachTickMode) BarCount = Bars;
IsTrade = False;
continue;
}
//Trailing stop
if(UseTrailingStop && TrailingStop > 0) {
if((OrderOpenPrice() - Ask) > (Point * TrailingStop)) {
if((OrderStopLoss() > (Ask + Point * TrailingStop)) || (OrderStopLoss() == 0)) {
OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
}
}
}
//+------------------------------------------------------------------+
//| Signal Begin(Entry) |
//+------------------------------------------------------------------+
if (Buy1_1 > Buy1_2 && Buy2_1 > Buy2_2) Order = SIGNAL_BUY;
if (Sell1_1 < Sell1_2 && Sell2_1 < Sell2_2) Order = SIGNAL_SELL;

//+------------------------------------------------------------------+
//| Signal End |
//+------------------------------------------------------------------+
//Buy
if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
if(!IsTrade) {
//Check free margin
if (AccountFreeMargin() < (1000 * Lots)) {
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;
if (UseTakeProfit) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;
Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);
if(Ticket > 0) {
if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
Print("BUY order opened : ", OrderOpenPrice());
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");
} else {
Print("Error opening BUY order : ", GetLastError());
}
}
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = Bars;
return(0);
}
}
//Sell
if (Order == SIGNAL_SELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
if(!IsTrade) {
//Check free margin
if (AccountFreeMargin() < (1000 * Lots)) {
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
if (UseStopLoss) StopLossLevel = Bid + StopLoss * Point; else StopLossLevel = 0.0;
if (UseTakeProfit) TakeProfitLevel = Bid - TakeProfit * Point; else TakeProfitLevel = 0.0;
Ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, "Sell(#" + MagicNumber + ")", MagicNumber, 0, DeepPink);
if(Ticket > 0) {
if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
Print("SELL order opened : ", OrderOpenPrice());
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Open Sell");
} else {
Print("Error opening SELL order : ", GetLastError());
}
}
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = Bars;
return(0);
}
}
if (!EachTickMode) BarCount = Bars;
return(0);
}
 
 
  • Post #6
  • Quote
  • Nov 6, 2009 12:25am Nov 6, 2009 12:25am
  •  Athlon
  • | Joined Nov 2009 | Status: Junior Member | 1 Post
Hi mtarek16,
could you modification this indicator ?
make it MTF - standard TF = m30 & bandsperiod = 240..

thanks..
Attached File
File Type: mq4 1mthBandsQ200_MultiDev.mq4   6 KB | 914 downloads
 
 
  • Post #7
  • Quote
  • Nov 6, 2009 3:39am Nov 6, 2009 3:39am
  •  mtarek16
  • | Joined Sep 2008 | Status: Member | 36 Posts
Hi people.

Sorry for not replying quickly. I have a ton of things to do this week, literally !
So I'll look into your ideas soon, filter them, and decide which is the first one that I'm going to work on.

Best,
MT
 
 
  • Post #8
  • Quote
  • Nov 6, 2009 11:52am Nov 6, 2009 11:52am
  •  benco246
  • | Joined Oct 2009 | Status: Junior Member | 2 Posts
1. Brief descripition of the EA; The EA is all about Moving Average crosses. When Moving Average cross each other.

2.The indicators to be monitored before building the LOGIC is Moving Average (smoothed) .

3.Entry;
when should it open a BUY position?; Let the EA open BUY if 5 days (smoothed)moving Average crosses 100 days (smoothed)Moving Average UPWARD.

When should it open a SELL position?; Let the EA open SELL if 5 days (smoothed)moving Average crosses 100 days (smoothed)Moving Average DOWNWARD.

4. Exit ; Buy Exit RULES
when should it close a BUY position ?; Let the EA close BUY position if 5 days (smoothed) Moving Average cross 100 days (smoothed) Moving Average in opposite direction, and enter the SELL POSITION immediately.

Sell Exit RULES;
When should it close a SELL position ?; Let the EA close SELL position if 5 days (smoothed) Moving Average cross 100 days (smoothed) Moving Average in opposite direction, and enter the BUY POSITION immediately.


5. TRADE OPTION ;
Stoploss =
Trailing Stop =
Lot Size =

The TRADE OPTION will be change with any number .
 
 
  • Post #9
  • Quote
  • Nov 10, 2009 4:16pm Nov 10, 2009 4:16pm
  •  mtarek16
  • | Joined Sep 2008 | Status: Member | 36 Posts
Still very busy .. so I'll start with piphunter65's EA.

@piphunter:
Does the EA you posted work as required , and the only modifications you want to make are making 1 trade per expert ? i.e when the expert closes the position it will never trade until you reset it ?

MT
 
 
  • Post #10
  • Quote
  • Edited at 5:00pm Nov 10, 2009 4:27pm | Edited at 5:00pm
  •  piphunter65
  • | Joined Nov 2009 | Status: Member | 31 Posts
Quoting mtarek16
Disliked
Still very busy .. so I'll start with piphunter65's EA.

@piphunter:
Does the EA you posted work as required , and the only modifications you want to make are making 1 trade per expert ? i.e when the expert closes the position it will never trade until you reset it ?

MT
Ignored
MT,

Yes the ea works great as is but it needs to eliminate the small losses that happen when it re-enters in the same direction after it hits take profit. If the only solution to this problem is to shut it down until it's manually restarted thats fine. The other possible solution would be to code in trading times. If we could
have user inputs so that the ea could be run only during certain hours i.e european and US sessions. That might work because I run this on the one hour timeframe, and I usually only get one signal during those sessions.

Thanks for all your help!
piphunter65
 
 
  • Post #11
  • Quote
  • Nov 17, 2009 11:29am Nov 17, 2009 11:29am
  •  mtarek16
  • | Joined Sep 2008 | Status: Member | 36 Posts
Hi piphunter,

Attached is the modified expert of yours.
I have added 2 extra initialization parameters; StartTime and EndTime. You enter the values of the starting and ending hours in there respective fields if you want the expert to trade between those specified hours only, if you leave the default value (hh), the expert will keep trading continuously as before.

I have tested the modification and it works for me. It's very possible though that a bug might slip or something like that, so just tell me if you find such things.

MT.
Attached File
File Type: mq4 piphunter.mq4   8 KB | 1,145 downloads
 
 
  • Post #12
  • Quote
  • Nov 17, 2009 11:07pm Nov 17, 2009 11:07pm
  •  jurn_e
  • Joined Oct 2008 | Status: Member | 984 Posts
I have been trading my own 5 min scalping strategy in Euro quite profitably, this strategy is based on Price Action. I do not have the skills to write an EA so i am asking for your help.

The system is easy , just buy when it breaks above a certain 5min candle or sell when it breaks below.

R:R is usually 1:1 . 15pips Profit Target and 15 pips Stop Loss

If u r interested to develop this simple system to see its overall profitability in a backtest, kindly PM me.
Pivot Boss in the making~
 
 
  • Post #13
  • Quote
  • Nov 18, 2009 2:23am Nov 18, 2009 2:23am
  •  LCTrader
  • | Joined Mar 2009 | Status: Left Coast Trader | 9 Posts
Hey MT,

I've been trying to get help with this indicator for awhile now, with no luck. I'm just trying to get the email alert to work and also get it to stop alerting at the end of every bar.

I've been doing very well with this indicator, but would be doing much better if I could receive the email alerts. Would be willing to offer compensation if you can work it out...

Thanks!
LCT
Attached File
File Type: mq4 Stoch Crossing.mq4   10 KB | 707 downloads
-Left Coast Trader
 
 
  • Post #14
  • Quote
  • Edited Nov 19, 2009 8:21am Nov 18, 2009 9:16am | Edited Nov 19, 2009 8:21am
  •  Nikopol
  • | Joined Mar 2009 | Status: Member | 76 Posts
Hi There

If u have the time could code us an Ea that puts the stoploss
at the position of opposite end of the ichimoku cloud relative to price . I would prefer to have it coded with the cloud indikator attached

*edit

I got the wrong indicator attached sry

Should be ok now
Attached File
File Type: mq4 Ichimoku.mq4   5 KB | 557 downloads
 
 
  • Post #15
  • Quote
  • Nov 18, 2009 11:15pm Nov 18, 2009 11:15pm
  •  piphunter65
  • | Joined Nov 2009 | Status: Member | 31 Posts
Quoting mtarek16
Disliked
Hi piphunter,

Attached is the modified expert of yours.
I have added 2 extra initialization parameters; StartTime and EndTime. You enter the values of the starting and ending hours in there respective fields if you want the expert to trade between those specified hours only, if you leave the default value (hh), the expert will keep trading continuously as before.

I have tested the modification and it works for me. It's very possible though that a bug might slip or something like that, so just tell me if you find such things.

MT.
Ignored
MT,

Thanks again for all your help with this. I will test it out and if there are
any problems I will let you know.
 
 
  • Post #16
  • Quote
  • Aug 26, 2010 6:58am Aug 26, 2010 6:58am
  •  campco
  • | Joined Jul 2009 | Status: Member | 140 Posts
Hello,

I've been looking to find an EA or script that will help me avoiding overtrading. It would be nice to get blocket automatically when I want to enter another trade, which goes against the settings I've put to protect my account.

Is this possible? And/or available?

Regards,

Ben
 
 
  • Post #17
  • Quote
  • Aug 26, 2010 4:17pm Aug 26, 2010 4:17pm
  •  thomasmore
  • | Joined May 2009 | Status: Veni, Vidi, Pipsi | 91 Posts
Hello,
I use the attached indicator , it gives good pattern recognition on Candlesticks. However, when attached to some 20 charts, it consumes most resources of my PC: changing from one chart to another is very sluggish. I would appreciate a look at it from an experienced coder to see if and how this could be fixed. PS: i am not the owner of this indicator. Thaks for your time and effort.
Ludo
Attached Files
File Type: ex4 CANDLESTICK_v1.ex4   24 KB | 564 downloads
File Type: mq4 CANDLESTICK_v1.mq4   15 KB | 649 downloads
 
 
  • Post #18
  • Quote
  • Aug 28, 2010 7:36am Aug 28, 2010 7:36am
  •  Erksy
  • | Joined Aug 2009 | Status: Member | 6 Posts
Hi there. need an awsome osillator and osma in one with alert, EG alert goes off when both osillators are on the same side of the zero line up or down. if you can help that would be appreciated.
thanx erksy.
 
 
  • Post #19
  • Quote
  • Sep 15, 2010 1:51pm Sep 15, 2010 1:51pm
  •  fxbr56
  • | Joined Jul 2010 | Status: Member | 42 Posts
Hello, I'm looking for an indicator that does the following:

This information comes from Paulus' 1hour Indicator free post

Locate two bar setups where the 1st bar is a down candle and the second bar is an up candle that is less than 50% the size of the first bar. Send an alert and put a Green arrow above the two bar formation.

Locate two bar setups where the 1st bar is an up candle and the second bar is a down candle that is less than 50% the size of the first bar. Send an alert and put a Red arrow below the two bar formation.

Could you provide this to me?
Attached File
File Type: doc Paulus H1 trading strategy.doc   38 KB | 577 downloads
 
 
  • Post #20
  • Quote
  • Sep 29, 2010 12:44am Sep 29, 2010 12:44am
  •  Lemo
  • | Joined May 2009 | Status: Junior Member | 3 Posts
Dear Fellow traders,

First of all I am all new to the FF forum, so please bare with me, secondly English is not my first language, again please bare with me.

The following strategy I used for the last month (sep) on the EU gave me a nice steady profit (1195%) on a small live account (no demo). No big hits, just small amount of pips in the pocket.

It is fair to say that I was partly lucky as the lot sizes I used (0.05=$0.50), which is way too big for a starting capital of $80.00, but I entered a trending EU and therefore I believed that this method works for me on trending pairs.

Please note that that there is no logic behind it, it is just a method that works for me.

I would like to ask all skilled programmers out there to help me on an EA, which does the following:

  1. EA opens a trade as soon as you enable it with a fixed lot size or MM with a predefined trailing stop of 115 (5 digit ECN broker).
  2. As soon as the trailing stop is activated (meaning the position is up 115), a new position is opened with the same trailing stop.
  3. As soon as that one is up 115, a new position will be opened and again and again.
  4. As soon as the last opened position goes 300 against you a new position will be opened with the same trailing stop and same applies as mentioned above (as soon as this new position goes 300 against you, again a new position will be opened with the same rules as set out above and so on and so on)
  5. I didn’t use a stop loss, but maybe an optional hard stop loss can be entered.



With this method the following I noticed:

  1. If you are in a trending market and the price doesn’t look back, you will accumulate quite a few positions by stacking up. At all times there is only 1 position (the last one) which takes the risk and all the others are running for free, due to the trailing stop. Once the price goes 115 against you all positions except for the last one will be closed in profit and it starts all over again
  2. If you are in the market and there is a retrace you will take pips here and there and soon you will be stacking up when trend resumes.
  3. If you have to open too many -300 trades maybe you should review the direction of the trend. It is up to the trader to determine whether you are in the right direction or not.
  4. I am not interested in the floating P/L, I am more interested in the equity flow. You will always have a floating loss which can be growing, but your equity is growing steadily when you collect the pips on the way back .


I hope this makes sense. Please note that the pips mentioned above worked for me, but should be adjustable in the settings of the EA.

I would like to post my statement here, but don’t know how.

Hopefully there is a skilled programmer out there who can help me out here.

I’ve done it manually, but it takes quite a bit of screen time as you have to monitor your positions and enter trades accordingly.

Thanks in advance.

Les

 
 
  • Platform Tech
  • /
  • Free EA/Indicator development for MT4
  • Reply to Thread
    • Page 1 2
    • Page 1 2
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