Orders Execution
Indicators Used
0
Views
0
Downloads
0
Favorites
Profitability Reports
AUD/USD
Oct 2024 - Jan 2025
0.00 %
Total Trades
0
Won Trades
0
Lost trades
0
Win Rate
0.0 %
Expected payoff
0.00
Gross Profit
0.00
Gross Loss
0.00
Total Net Profit
0.00
-100%
-50%
0%
50%
100%
GBP/USD
Oct 2024 - Jan 2025
0.00 %
Total Trades
0
Won Trades
0
Lost trades
0
Win Rate
0.0 %
Expected payoff
0.00
Gross Profit
0.00
Gross Loss
0.00
Total Net Profit
0.00
-100%
-50%
0%
50%
100%
Sweet_Spot_Extreme
/*-----------------------------+
| |
| Shared by www.Aptrafx.com |
| |
+------------------------------*/
//+-----------------------------------------------------------------------------------------------------------+
//| Sweet_Spot_Extreme.mq4 |
//|Copyright © 2006, Safari Traders, http://finance.groups.yahoo.com/group/MetaTrader_Experts_and_Indicators/ |
//+-----------------------------------------------------------------------------------------------------------+
#property copyright "Copyright © 2006, Safari Traders , chopped and optimized by transport_david "
#property link "http://finance.groups.yahoo.com/group/MetaTrader_Experts_and_Indicators/"
extern int MAGIC_NUMBER = 613;
extern int MaxTradesPerSymbol = 3;
extern int Slippage = 2;
extern double Lots = 1.00;
extern double MaximumRisk = 0.05;
extern double DecreaseFactor = 6;
extern double Stop = 10;
extern double MAPeriod = 85;
extern double CloseMa = 70;
extern double MinLot = 0.1;
extern double buyccilevel = -200.00;
extern double sellccilevel = 200.00;
extern int price = 0;
int init(){
return(0);
}
int start(){
double Alpha = iCCI(NULL, 30, 12, price, 0); // links to 30 minutes chart
double MA = iMA(NULL,15,MAPeriod,0,MODE_EMA,PRICE_MEDIAN,1); // Links to 15 minutes chart for shorttearm accuracy
double MAprevious = iMA(NULL,15,MAPeriod,0,MODE_EMA,PRICE_MEDIAN,2); // Links to 15 minutes chart for shorttearm accuracy
double MAClose0 = iMA(NULL,15,CloseMa,0,MODE_EMA,PRICE_MEDIAN,0); // Links to 15 minutes chart for shorttearm accuracy
double MAClose1 = iMA(NULL,15,CloseMa,0,MODE_EMA,PRICE_MEDIAN,1); // Links to 15 minutes chart for shorttearm accuracy
int trades = 0;
for(int cnt1 = 0; cnt1 < OrdersTotal(); cnt1++){
if(!OrderSelect(cnt1, SELECT_BY_POS, MODE_TRADES)) continue;
if(OrderMagicNumber() != MAGIC_NUMBER) continue;
if(StringFind(OrderSymbol(), Symbol(), 0) != -1) {
//debugging
Print("symbol "+Symbol());
trades++;
if(cnt1 == OrdersTotal()-1) Print("Trades: "+trades);
}
}
// no opened orders identified
if(AccountFreeMargin()<(100*Lots)){
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
if(trades < MaxTradesPerSymbol){
// no opened orders identified
if(AccountFreeMargin()<(100*Lots)){
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
int ticket = -10;
// Bull trending
if((MA>MAprevious) && (MAClose0 > MAClose1)&&(Alpha < buyccilevel))
ticket=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask, Slippage,0,0,"Sweet_Spot_Extreme", MAGIC_NUMBER,0,Aqua);
// Bear trending
if((MA<MAprevious) && (MAClose0 < MAClose1) && (Alpha > sellccilevel) )
ticket=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid, Slippage, 0,0,"Sweet_Spot_Extreme", MAGIC_NUMBER,0,Coral);
}
// EXIT POSITIONS
for(int cnt=0; cnt<OrdersTotal(); cnt++){
if(!OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) continue;
if(OrderMagicNumber() != MAGIC_NUMBER) continue;
if(StringFind(OrderSymbol(), Symbol(), 0) == -1) continue;
if(OrderType() <= OP_SELL)
{ // opened position_Sell??
if(OrderType() == OP_BUY)
{ // position is opened_buy??
// early take profit giving this strategy a scalping capability?
if((MA <= MAprevious)&&(OrderMagicNumber() == MAGIC_NUMBER))
{
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(), 0,Aqua); // close position
//return(0);
}
// check for stop
if((Stop > 0)&&(OrderMagicNumber() == MAGIC_NUMBER))
{
if((OrderClosePrice()-OrderOpenPrice())>Stop*Point)
{
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(), 0,Aqua); // close position
//return(0);
}
}
}
else
{ // OrderType() == OP_SELL
if(OrderType() == OP_SELL)
{
// should it be closed?
if((MA >= MAprevious)&&(OrderMagicNumber() == MAGIC_NUMBER))
{
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(), 0, Coral); // close position
//return(0); // exit
}
// check for stop
if((Stop > 0)&&(OrderMagicNumber() == MAGIC_NUMBER))
{
if((OrderOpenPrice()-OrderClosePrice())>Stop*Point)
{
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(), 0, Coral); // close position
//return(0);
}
}
}
}
} //close --> if(OrderType() <= OP_SELL){
} //close --> if(OrderType() == OP_BUY){
//Comment("");
return(0);
}
//////////////////////////////////////////////////////////////////////
// Calculate optimal lot size
//////////////////////////////////////////////////////////////////////
double LotsOptimized()
{
double lot=Lots;
int orders=HistoryTotal(); // history orders total
int losses=0; // number of losses orders without a break
//---- select lot size
lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/500, 1);
//---- calcuulate number of losses orders without a break
if(DecreaseFactor>0)
{
for(int i=orders-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error in history!"); break; }
if(StringFind(OrderSymbol(), Symbol(), 0) == -1 || OrderType()>OP_SELL) continue;
if(OrderMagicNumber() != MAGIC_NUMBER) continue;
if(OrderProfit()>0) break;
if(OrderProfit()<0) losses++;
}
if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);
}
//---- return lot size
if(lot>50) lot=50;
if(lot < MinLot) lot = MinLot;
return(lot);
}
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
---