//+------------------------------------------------------------------+
//| BetonFractal.mq4 |
//| Copyright 2015, AM2 |
//| http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, AM2"
#property link "http://www.forexsystems.biz"
#property version "1.00"
#property description "Simple expert advisor"
//--- Inputs
extern double Lots = 0.1; // лот
extern int StopLoss = 500; // лось
extern int TakeProfit = 500; // язь
extern int Profit = 500; // язь в рублях
extern int Delta = 100; // расстояние от фрактала
extern int MAPeriod = 12; // период МА
extern int Slip = 30; // проскальзывание
extern int Shift = 3; // сдвиг баров назад
extern int Count = 100; // количество открываемых ордеров
extern int Magic = 123; // магик
int t=0;
//+------------------------------------------------------------------+
int CountTrades()
{
int count=0;
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
count++;
}
}
}
return(count);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
double AllProfit()
{
double profit=0;
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if(OrderType()==OP_BUY || OrderType()==OP_SELL) profit+=OrderProfit();
}
}
}
return (profit);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void CloseAll()
{
bool cl;
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if(OrderType()==OP_BUY) cl=OrderClose(OrderTicket(),OrderLots(),Bid,Slip,Blue);
if(OrderType()==OP_SELL) cl=OrderClose(OrderTicket(),OrderLots(),Ask,Slip,Red);
}
}
}
}
//+------------------------------------------------------------------+
//| Check for open order conditions |
//+------------------------------------------------------------------+
void OpenPos()
{
double up=0,dn=0,ma=0,pr=0,sl=0,tp=0;
int res;
//--- get ind
up=iFractals(NULL,0,MODE_UPPER,Shift);
dn=iFractals(NULL,0,MODE_LOWER,Shift);
ma=iMA(NULL,0,MAPeriod,0,MODE_SMA,PRICE_CLOSE,1);
//--- sell conditions
if(up>0 && Bid>ma)
{
pr=NormalizeDouble(up+Delta*Point,Digits);
if(StopLoss>0) sl=NormalizeDouble(pr+StopLoss*Point,Digits);
if(TakeProfit>0) tp=NormalizeDouble(pr-TakeProfit*Point,Digits);
res=OrderSend(Symbol(),3,Lots,pr,Slip,sl,tp,"",Magic,0,Red);
return;
}
//--- buy conditions
if(dn>0 && Ask<ma)
{
pr=NormalizeDouble(dn-Delta*Point,Digits);
if(StopLoss>0) sl=NormalizeDouble(pr-StopLoss*Point,Digits);
if(TakeProfit>0) tp=NormalizeDouble(pr+TakeProfit*Point,Digits);
res=OrderSend(Symbol(),2,Lots,pr,Slip,sl,tp,"",Magic,0,Blue);
return;
}
//---
}
//+------------------------------------------------------------------+
//| OnTick function |
//+------------------------------------------------------------------+
void OnTick()
{
double up,dn;
//--- get ind
up=iFractals(NULL,0,MODE_UPPER,Shift);
dn=iFractals(NULL,0,MODE_LOWER,Shift);
if(CountTrades()<Count && t!=Time[0])
{
OpenPos();
t=Time[0];
}
if(AllProfit()>Profit) CloseAll();
Comment("\n UP Fractal ",up,
"\n DN Fractal ",dn,
"\n Profit: ",AllProfit());
//---
}
//+------------------------------------------------------------------+
Ну вот и рез. Не то что хотел бы увидеть.
Но когда германские цепи приблизились к окопам, из густо-зеленого хлорного тумана на них обрушилась… контратакующая русская пехота. Зрелище было ужасающим: бойцы шли в штыковую с лицами, обмотанными тряпками, сотрясаясь от жуткого кашля, буквально выплевывая куски легких на окровавленные гимнастерки. Это были остатки 13-й роты 226-го пехотного Землянского полка, чуть больше 60 человек. Но они ввергли противника в такой ужас, что германские пехотинцы, не приняв боя, ринулись назад, затаптывая друг друга и повисая на собственных проволочных заграждениях. <…> Это сражение войдет в историю как «атака мертвецов».
есть серия открытых ордеров Сел, депозит просел на определённый %, открывается лок.ордер Бай и СЛ у него равен ( 0 ), то при возврате цены к открытию этого ордера он закрывается.
И статья с примером кода: mql.opentraders.ru/25225.html
AM2