Orders Execution
Indicators Used
0
Views
0
Downloads
0
Favorites
Profitability Reports
GBP/USD
Oct 2024 - Jan 2025
51.00 %
Total Trades
277
Won Trades
0
Lost trades
0
Win Rate
0.00 %
Expected payoff
-15.71
Gross Profit
4490.00
Gross Loss
-8842.00
Total Net Profit
-4352.00
-100%
-50%
0%
50%
100%
NZD/USD
Oct 2024 - Jan 2025
31.00 %
Total Trades
132
Won Trades
55
Lost trades
77
Win Rate
0.42 %
Expected payoff
-31.00
Gross Profit
1863.00
Gross Loss
-5955.00
Total Net Profit
-4092.00
-100%
-50%
0%
50%
100%
ADX_System_Derk_v1
//=============================================================================
// ADX_System.mq4
// work_a@ukr.net
//
// 24 Nov 06: Modified by Derk Wehler
// Formatted code to make readable
//=============================================================================
#property copyright "System"
#property link "work_a@ukr.net"
extern double TakeProfit = 100;
extern double TrailingStop = 35;
extern double StopLoss = 45;
int start()
{
double ADXP,ADXC,ADXDIPP;
double ADXDIPC,ADXDIMP,ADXDIMC;
double Lots;
int cnt, ticket, total;
int li;
if (Bars < 100)
{
Print("bars less than 100");
return(0);
}
if (TakeProfit < 10)
{
Print("TakeProfit less than 10");
return(0); // check TakeProfit
}
li = 60;
Lots = 0.1;
if (AccountBalance() > 700)
Lots = 0.2;
if (AccountBalance() > 3000)
Lots = 1;
if (AccountBalance() > 6000)
Lots = 1;
if (AccountBalance() > 9000)
Lots = 1;
if (AccountBalance() > 10000)
Lots = 1;
if (AccountBalance() > 100000)
Lots = 10;
ADXP = iADX(NULL, li, 14, PRICE_CLOSE, MODE_MAIN, 2);
ADXC = iADX(NULL, li, 14, PRICE_CLOSE, MODE_MAIN, 1);
ADXDIPP = iADX(NULL, li, 14, PRICE_CLOSE, MODE_PLUSDI, 2);
ADXDIPC = iADX(NULL, li, 14, PRICE_CLOSE, MODE_PLUSDI, 1);
ADXDIMP = iADX(NULL, li, 14, PRICE_CLOSE, MODE_MINUSDI, 2);
ADXDIMC = iADX(NULL, li, 14, PRICE_CLOSE, MODE_MINUSDI, 1);
// 24Nov06 - Derk: Commented out because this prevents the EA from taking BUYs
// if (MathAbs(ADXDIPC - ADXC) < 10)
// return(0);
total = OrdersTotal();
if (total < 1)
{
// no opened orders identified
if (AccountFreeMargin() < (1000*Lots))
{
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
// check for long position (BUY) possibility
// TRANSLATION:
// If main ADX is heading up, and the plusdi line has
// just crossed the main line, heading upward
if ((ADXP < ADXC) && (ADXDIPP < ADXP) && (ADXDIPC > ADXC))
{
ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, 3,
Bid - StopLoss * Point, Ask + TakeProfit * Point,
"adx sample", 16384, 0, Green);
if (ticket > 0)
{
if (OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES))
Print("BUY order opened : ", OrderOpenPrice());
}
else
Print("Error opening BUY order : ", GetLastError());
return(0);
}
// check for short position (SELL) possibility
// TRANSLATION:
// If main ADX is heading up, and the minusdi line has
// just crossed the main line, heading upward
if ((ADXP < ADXC) && (ADXDIMP < ADXP) && (ADXDIMC > ADXC))
{
ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, 3,
Ask + StopLoss * Point, Bid - TakeProfit * Point,
"adx sample", 16384, 0, Red);
if (ticket > 0)
{
if (OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES))
Print("SELL order opened : ", OrderOpenPrice());
}
else
Print("Error opening SELL order : ", GetLastError());
return(0);
}
return(0);
}
for (cnt=0; cnt < total; cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if (OrderType() <= OP_SELL && OrderSymbol() == Symbol()) // // check for opened position & symbol
{
if (OrderType() == OP_BUY) // long position is opened
{
if (ADXP > ADXC && ADXDIPP > ADXP && ADXDIPC < ADXC)
{
OrderClose(OrderTicket(), OrderLots(), Bid, 3, Violet); // close position
return(0); // exit
}
if (TrailingStop > 0)
{
if (Bid - OrderOpenPrice() > Point * TrailingStop)
{
if (OrderStopLoss() < Bid-Point * TrailingStop)
{
OrderModify(OrderTicket(), OrderOpenPrice(),
Bid - Point * TrailingStop, OrderTakeProfit(), 0, Green);
return(0);
}
}
}
}
else
{
if (ADXP > ADXC && ADXDIMP > ADXP && ADXDIMC < ADXC)
{
OrderClose(OrderTicket(), OrderLots(), Ask, 3, Violet); // close position
return(0); // exit
}
if (TrailingStop > 0)
{
if (OrderOpenPrice() - Ask > Point * TrailingStop)
{
if ((OrderStopLoss() > (Ask+Point * TrailingStop)) || (OrderStopLoss() == 0))
{
OrderModify(OrderTicket(), OrderOpenPrice(),
Ask+Point * TrailingStop, OrderTakeProfit(), 0, Red);
return(0);
}
}
}
}
}
}
return(0);
}
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
---