Price Data Components
Orders Execution
0
Views
0
Downloads
0
Favorites
Profitability Reports
GBP/USD
Oct 2024 - Jan 2025
139.00 %
Total Trades
47
Won Trades
0
Lost trades
0
Win Rate
0.00 %
Expected payoff
8.25
Gross Profit
1378.30
Gross Loss
-990.60
Total Net Profit
387.70
-100%
-50%
0%
50%
100%
NZD/USD
Oct 2024 - Jan 2025
63.00 %
Total Trades
50
Won Trades
20
Lost trades
30
Win Rate
0.40 %
Expected payoff
-6.20
Gross Profit
524.60
Gross Loss
-834.70
Total Net Profit
-310.10
-100%
-50%
0%
50%
100%
3 Bar Reversal
//+------------------------------------------------------------------+
//| 3 Bar Reversal.mq4
//| Copyright © 2007, fxid10t@yahoo.com
//| "Gordon Gibson" <gibsonmail@shaw.ca>
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007, fxid10t@yahoo.com"
#property link "Gordon Gibson <gibsonmail@shaw.ca> "
#include <stdlib.mqh>
extern double Lots=0.1;
string pairs[] = { "EURUSDm","USDJPYm","GBPUSDm","USDCHFm","EURCHFm","AUDUSDm","USDCADm",
"NZDUSDm","EURGBPm","EURJPYm","GBPJPYm","CHFJPYm","GBPCHFm","EURAUDm",
"EURCADm","AUDCADm","AUDJPYm","NZDJPYm","AUDNZDm" };
int periods[] = { 1,5,15,30,60,240,1440,10080,43200 };
string TradeSymbol, CommentHeader, CommentsPairs[];
int TradePeriod,MagicNumber;
int Pair = -1;
int PPeriod = -1;
double bid,ask,point,spread,ticket,bSL,sSL,btp,stp;
int b1,s1;
//initialize
int init(){
if ( IsTesting() ) { if ( ArrayResize(pairs,1) != 0 ) pairs[0] = Symbol(); }
if ( IsTesting() ) { if ( ArrayResize(periods,1) != 0 ) periods[0] = Period(); }
return(0); }
//deinitialize
int deinit() {return(0);}
int start() {
b1=0;s1=0;
//Select Pair from Array
Pair = (Pair+1) % ArraySize(pairs);
TradeSymbol = pairs[Pair];
//Identify ibfx mini trade symbol
if(iClose(TradeSymbol,1440,0)==0) { TradeSymbol=StringSubstr(TradeSymbol,0,6); }
//TradeSymbol MagicNumber Assignment
if (TradeSymbol=="AUDCADm" || TradeSymbol=="AUDCAD") {MagicNumber=200001;}
if (TradeSymbol=="AUDJPYm" || TradeSymbol=="AUDJPY") {MagicNumber=200002;}
if (TradeSymbol=="AUDNZDm" || TradeSymbol=="AUDNZD") {MagicNumber=200003;}
if (TradeSymbol=="AUDUSDm" || TradeSymbol=="AUDUSD") {MagicNumber=200004;}
if (TradeSymbol=="CHFJPYm" || TradeSymbol=="CHFJPY") {MagicNumber=200005;}
if (TradeSymbol=="EURAUDm" || TradeSymbol=="EURAUD") {MagicNumber=200006;}
if (TradeSymbol=="EURCADm" || TradeSymbol=="EURCAD") {MagicNumber=200007;}
if (TradeSymbol=="EURCHFm" || TradeSymbol=="EURCHF") {MagicNumber=200008;}
if (TradeSymbol=="EURGBPm" || TradeSymbol=="EURGBP") {MagicNumber=200009;}
if (TradeSymbol=="EURJPYm" || TradeSymbol=="EURJPY") {MagicNumber=200010;}
if (TradeSymbol=="EURUSDm" || TradeSymbol=="EURUSD") {MagicNumber=200011;}
if (TradeSymbol=="GBPCHFm" || TradeSymbol=="GBPCHF") {MagicNumber=200012;}
if (TradeSymbol=="GBPJPYm" || TradeSymbol=="GBPJPY") {MagicNumber=200013;}
if (TradeSymbol=="GBPUSDm" || TradeSymbol=="GBPUSD") {MagicNumber=200014;}
if (TradeSymbol=="NZDJPYm" || TradeSymbol=="NZDJPY") {MagicNumber=200015;}
if (TradeSymbol=="NZDUSDm" || TradeSymbol=="NZDUSD") {MagicNumber=200016;}
if (TradeSymbol=="USDCHFm" || TradeSymbol=="USDCHF") {MagicNumber=200017;}
if (TradeSymbol=="USDJPYm" || TradeSymbol=="USDJPY") {MagicNumber=200018;}
if (TradeSymbol=="USDCADm" || TradeSymbol=="USDCAD") {MagicNumber=200019;}
if (MagicNumber==0) {MagicNumber = 200999;}
//Assign Symbol Bid/Ask, Point & Spread values
bid=MarketInfo(TradeSymbol,MODE_BID);
ask=MarketInfo(TradeSymbol,MODE_ASK);
point=MarketInfo(TradeSymbol,MODE_POINT);
spread=MarketInfo(TradeSymbol,MODE_SPREAD);
if(IsTesting()) { if(spread > 13*point) {spread=13*point;}}
//Pair Chart Period Setup check loop
/*for(int p=0;p<9;p++) {
PPeriod = (PPeriod+1) % ArraySize(periods);
TradePeriod = periods[PPeriod]; */
TradePeriod = Period();
//Orders counter
int cnt,total=OrdersTotal();
if(TotalTradesThisSymbol(TradeSymbol)==0) { b1=0;s1=0; }
if(TotalTradesThisSymbol(TradeSymbol)>0) {
for(cnt=0;cnt<total;cnt++) {
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==TradeSymbol) {
if(OrderComment()==StringConcatenate(TradeSymbol," ",TradePeriod," 3BR Long") ) {b1=OrderTicket(); }
if(OrderComment()==StringConcatenate(TradeSymbol," ",TradePeriod," 3BR Short") ) {s1=OrderTicket(); }
} } }
//Buy Setup
if( iHigh(TradeSymbol,TradePeriod,5)<iHigh(TradeSymbol,TradePeriod,4) &&
iHigh(TradeSymbol,TradePeriod,4)<iHigh(TradeSymbol,TradePeriod,3) &&//3 is swing high
iHigh(TradeSymbol,TradePeriod,3)>iHigh(TradeSymbol,TradePeriod,2) &&
iHigh(TradeSymbol,TradePeriod,2)>iHigh(TradeSymbol,TradePeriod,1) ) {
//modify open buystop order
if(OrderSelect(b1,SELECT_BY_TICKET)==true && OrderType()==OP_BUYSTOP) {
if(iHigh(TradeSymbol,TradePeriod,3)+spread < OrderOpenPrice()) {
OrderModify(b1,iHigh(TradeSymbol,TradePeriod,3)+spread,//swing high
OrderStopLoss(),OrderTakeProfit(),OrderExpiration(),Orchid); } }
//sell order modify initial/trailing stoploss
if(OrderSelect(s1,SELECT_BY_TICKET)==true && OrderType()==OP_SELL) {
if( (iHigh(TradeSymbol,TradePeriod,3)+spread+(1*point) < OrderStopLoss() &&
iHigh(TradeSymbol,TradePeriod,3)+spread+(1*point) < OrderOpenPrice() ) ||
OrderStopLoss()==0) {
OrderModify(s1,OrderOpenPrice(),iHigh(TradeSymbol,TradePeriod,3)+spread+(1*point),//swing high
OrderTakeProfit(),OrderExpiration(),LightSalmon); } }
//Buy Execution
if(b1==0) {
ticket=OrderSend(TradeSymbol,
OP_BUYSTOP,
Lots,
iHigh(TradeSymbol,TradePeriod,3)+spread,//swing high
0,//slippage
0,//stoploss set when stop order is executed
0,//no tp defined
StringConcatenate(TradeSymbol," ",TradePeriod," 3BR Long"),
MagicNumber,
0,//time expire,
Aqua);
if(ticket>0) {
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) {Print(ticket);}
else Print("Error Opening BuyStop Order: ",GetLastError());
return(0); }}
}
//Sell Setup
if( iLow(TradeSymbol,TradePeriod,5)>iLow(TradeSymbol,TradePeriod,4) &&
iLow(TradeSymbol,TradePeriod,4)>iLow(TradeSymbol,TradePeriod,3) &&//3 is swing low
iLow(TradeSymbol,TradePeriod,3)<iLow(TradeSymbol,TradePeriod,2) &&
iLow(TradeSymbol,TradePeriod,2)<iLow(TradeSymbol,TradePeriod,1) ) {
//modify open sellstop order
if(OrderSelect(s1,SELECT_BY_TICKET)==true && OrderType()==OP_SELLSTOP) {
if(iLow(TradeSymbol,TradePeriod,3)-spread > OrderOpenPrice()) {
OrderModify(s1,iLow(TradeSymbol,TradePeriod,3)-spread,//swing low
OrderStopLoss(),OrderTakeProfit(),OrderExpiration(),HotPink); } }
//buy order modify initial/trailing stoploss
if(OrderSelect(b1,SELECT_BY_TICKET)==true && OrderType()==OP_BUY) {
if( (iLow(TradeSymbol,TradePeriod,3)-spread-(1*point) > OrderStopLoss() &&
iLow(TradeSymbol,TradePeriod,3)-spread-(1*point) > OrderOpenPrice() ) ||
OrderStopLoss()==0) {
OrderModify(b1,OrderOpenPrice(),iLow(TradeSymbol,TradePeriod,3)-spread-(1*point),//swing low
OrderTakeProfit(),OrderExpiration(),Orchid); } }
//Sell Execution
if(s1==0) {
ticket=OrderSend(TradeSymbol,
OP_SELLSTOP,
Lots,
iLow(TradeSymbol,TradePeriod,3)-spread,//3 is swing low
0,//slippage
0,//stoploss set when stop order is executed
0,//no tp defined
StringConcatenate(TradeSymbol," ",TradePeriod," 3BR Short"),
MagicNumber,
0,//time expire,
HotPink);
if(ticket>0) {
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) {Print(ticket);}
else Print("Error Opening SellStop Order: ",GetLastError());
return(0); }}
}
// }//end period loop
return(0);}//end start()
//+------------------------------------------------------------------+
int TotalTradesThisSymbol(string TradeSymbol) {
int i, TradesThisSymbol=0;
for(i=0;i<OrdersTotal();i++) {
OrderSelect(i,SELECT_BY_POS);
if(OrderSymbol()==TradeSymbol &&
OrderComment()==StringConcatenate(TradeSymbol," ",TradePeriod," 3BR Long") ||
OrderComment()==StringConcatenate(TradeSymbol," ",TradePeriod," 3BR Short"))
{ TradesThisSymbol++; } }
return(TradesThisSymbol); }//end TotalTradesThisSymbol
Comments
Markdown Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---