Orders Execution
Indicators Used
0
Views
0
Downloads
0
Favorites
FractalTakeOut_v1a
//+--------------------------------------------------------------------------+
//| FractalTakeOut_v1a.mq4 |
//| Copyright © Mar/30/2007, C.O.P.Y.C.A.T. |
//| http://finance.groups.yahoo.com/group/MetaTrader_Experts_and_Indicators/ |
//+--------------------------------------------------------------------------+
//Built for Peter Henry , as described in the thread titled "Simple Fractal trading system" @ http://finance.groups.yahoo.com/group/MetaTrader_Experts_and_Indicators/
#property copyright "Copyright © Mar/30/2007, C.O.P.Y.C.A.T."
#property link "http://finance.groups.yahoo.com/group/MetaTrader_Experts_and_Indicators/"
extern int OpenTradeBuffer = 1;
extern int CloseTradeBuffer = 1;
extern double StopLoss$ = 10.00; // == $0.00 , Not Pips
extern int MagicNumber = 1913;
double HighPrice = 0;
bool HighBreaker = false;
double LowPrice = 0;
bool LowBreaker = false;
int i;
int ticket = 0;
double BuyTradeTime=0;
double SellTradeTime=0;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
if ( !IsDemo() ) return(0);
double Ma3High = iMA(Symbol(),0,3,0,MODE_SMA,PRICE_HIGH,0);
double Ma3Low = iMA(Symbol(),0,3,0,MODE_SMA,PRICE_LOW ,0);
double LastVisableHighFractal = 0, LastVisableLowFractal = 0;
for ( int b = Bars-10; b >= 0; b-- )
{
if ( iFractals(Symbol(),0,MODE_UPPER, b+1) > 0 ) LastVisableHighFractal = iFractals(Symbol(),0,MODE_UPPER, b+1);
if ( iFractals(Symbol(),0,MODE_LOWER, b+1) > 0 ) LastVisableLowFractal = iFractals(Symbol(),0,MODE_LOWER, b+1);
}
ticket = 0;
BuyTradeTime=0;
SellTradeTime=0;
for ( i = 0; i < OrdersHistoryTotal() ; i++ )
{
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if ( OrderSymbol() == Symbol() && OrderType() == OP_BUY && OrderMagicNumber() == MagicNumber )
{
BuyTradeTime = OrderOpenTime();
}
if ( OrderSymbol() == Symbol() && OrderType() == OP_SELL && OrderMagicNumber() == MagicNumber )
{
SellTradeTime = OrderOpenTime();
}
}
for ( i = 0; i < OrdersTotal(); i++ )
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if ( OrderSymbol() == Symbol() && OrderType() == OP_BUY && OrderMagicNumber() == MagicNumber )
{
if ( OrderOpenTime() >= BuyTradeTime ) { BuyTradeTime = OrderOpenTime(); } else { BuyTradeTime = BuyTradeTime; }
if ( Close[0] >= Ma3High+(CloseTradeBuffer*Point) || OrderProfit() <= (-StopLoss$) )
{
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),0,White);
}
}
if ( OrderSymbol() == Symbol() && OrderType() == OP_SELL && OrderMagicNumber() == MagicNumber )
{
if ( OrderOpenTime() >= SellTradeTime ) { SellTradeTime = OrderOpenTime(); } else { SellTradeTime = SellTradeTime; }
if ( Close[0] <= Ma3Low-(CloseTradeBuffer*Point) || OrderProfit() <= (-StopLoss$) )
{
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),0,White);
}
}
}
if ( !HighBreaker && High[0] > LastVisableHighFractal ) { HighPrice = LastVisableHighFractal; HighBreaker = true; LowBreaker = false; }
if ( !LowBreaker && Low[0] < LastVisableLowFractal ) { LowPrice = LastVisableLowFractal; HighBreaker = false; LowBreaker = true; }
if ( HighPrice == 0 ) HighBreaker = false;
if ( LowPrice == 0 ) LowBreaker = false;
if ( HighBreaker && Close[0] <= Ma3Low+(OpenTradeBuffer*Point) && BuyTradeTime < Time[0] )
{
ticket = OrderSend(Symbol(),OP_BUY,0.10,Ask,0,0,0,"FractalTakeOut_v1"+MagicNumber,MagicNumber,0,Aqua);
BuyTradeTime = TimeCurrent();
if( ticket < 1 )
{
Print("OrderSend failed with error #",GetLastError());
BuyTradeTime = 0;
}
}
if ( LowBreaker && Close[0] >= Ma3High-(OpenTradeBuffer*Point) && SellTradeTime < Time[0] )
{
ticket = OrderSend(Symbol(),OP_SELL,0.10,Bid,0,0,0,"FractalTakeOut_v1"+MagicNumber,MagicNumber,0,DeepPink);
SellTradeTime = TimeCurrent();
if( ticket < 1 )
{
Print("OrderSend failed with error #",GetLastError());
SellTradeTime = 0;
}
}
Comment("\n"," Last High Fractal TakeOut Price : ",HighPrice,
"\n"," Buy Mode : ",HighBreaker,
"\n",
"\n"," Last Low Fractal TakeOut Price : ",LowPrice,
"\n"," Sell Mode : ",LowBreaker);
//----
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
---