3) Осциллятор Билла Вильямса Accelerator (АС) с настройками по умолчанию.
4) Стохастик поверх АС с настройками 5,3,4.
Агрессивный вход.
1) Сильный сигнал. Когда стохастики %К и %D пересекают вверх или вниз 80 или 20 и оба осциллятора АС и АО становятся красным/зеленым в одно и тоже время.
2) Когда стохастик пересекает вверх или вниз 80 или 20. Ждем пока АС станет красным или зеленым. Открываемся на открытии того же самого бара.
Консервативный вход.
Когда стохастик пересекает вверх или вниз 80 или 20, ждем пока стохастик пересечет нулевую линию АС.
Не открываем позицию.
Когда стохастик пересекает вверх или вниз 80 или 20, но АС не меняет цвет на следующей свече.
Управление капиталом.
2) Фиксируем прибыль по 1-му лоту на 50 пипсах, сдвигаем стоп-лосс до уровня безубыточности.
3) Фиксируем прибыль по 2-му лоту на 100 пипсах.
4) Третью часть позиции закрываем, когда получен противоположный сигнал на вход.
Выход.
Не выходим, если стохастик не пересек уровни 80 или 20. Ждем пересечения нулевой линии АС и после этого выходим. Это очень важно, если вы хотите поймать большие движения от 100 до 800 пипсов.
extern double TakeProfit = 50;
extern double Lots = 0.1;
extern double Stoploss = 30;
extern double TrailingStop = 30;
int b = 0;
int start()
{
double a;
int flag;
int total, ticket, cnt;
if (!ExistPositions())
{
if (isPosibleBuy())
{
flag = isStohasticBuy();
if (keepItClosed(flag))
{
if (flag > 0)
{
if (isBuyFinal())
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-Stoploss*Point, Ask+TakeProfit*Point ,"OzFx",16384,0,Green);
return(0);
}
}
}
}
if (isPosibleSell())
{
flag = isStohasticSell();
if (keepItClosed(flag))
{
if (flag > 0)
{
if (isSellFinal())
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+Stoploss*Point,Bid-TakeProfit*Point,"OzFx",16384,0,Red);
return(0);
}
}
}
}
}
else
{
if (isBuyPos())
{
if (isTimeToCloseBuy())
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);
return(0);
}
}
else
{
if (isTimeToCloseSell())
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);
return(0);
}
}
}
return;
}
bool ExistPositions() {
for(int i=0;i<OrdersTotal(); i++) {
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && OrderComment()=="OzFx") return(True);
else return(false); } }
bool isPosibleBuy()
{
double st_main, st_signal;
st_main = iStochastic(NULL,0,5,3,4,MODE_SMA,0,MODE_MAIN,0);
st_signal = iStochastic(NULL,0,5,3,4,MODE_SMA,0,MODE_SIGNAL,0);
if ((st_main>20) && (st_signal>20))
return (true);
else
return (false);
}
bool isPosibleSell()
{
double st_main, st_signal;
st_main = iStochastic(NULL,0,5,3,4,MODE_SMA,0,MODE_MAIN,0);
st_signal = iStochastic(NULL,0,5,3,4,MODE_SMA,0,MODE_SIGNAL,0);
if (st_main<80 && st_signal<80)
return (true);
else
return (false);
}
int isStohasticBuy()
{
double st_main, st_signal;
for(int i = 1; i < 6; i++)
{
st_main = iStochastic(NULL,0,5,3,4,MODE_SMA,0,MODE_MAIN,i);
st_signal = iStochastic(NULL,0,5,3,4,MODE_SMA,0,MODE_SIGNAL,i);
if (st_main<=20 && st_signal<=20)
return (i);
}
return (0);
}
int isStohasticSell()
{
double st_main, st_signal;
for(int i = 1; i < 6; i++)
{
st_main = iStochastic(NULL,0,5,3,4,MODE_SMA,0,MODE_MAIN,i);
st_signal = iStochastic(NULL,0,5,3,4,MODE_SMA,0,MODE_SIGNAL,i);
if (st_main>=80 && st_signal>=80)
{
return (i);
}
}
return (0);
}
bool isACGreen()
{
double AC_now,AC_past;
AC_now = iAC(NULL,0,0);
AC_past = iAC(NULL,0,1);
if (AC_now>AC_past)
return (true);
else
return (false);
}
bool isAOGreen()
{
double AO_now,AO_past;
AO_now = iAO(NULL,0,0);
AO_past = iAO(NULL,0,1);
if (AO_now>AO_past)
return (true);
else
return (false);
}
bool isBuyFinal()
{
if ((isAOGreen()) && (isACGreen()))
{
return (true);
}
else
{
return (false);
}
}
bool isSellFinal()
{
if ((!isAOGreen()) && (!isACGreen()) )
{
return (true);
}
else
{
return (false);
}
}
bool keepItClosed(int a)
{
double ACprew = iAC(NULL,0,a);
double ACnow = iAC(NULL,0,a-1);
if (ACprew<ACnow)
return (true);
else
return (false);
}
bool isBuyPos()
{
OrderSelect(0, SELECT_BY_POS, MODE_TRADES);
if(OrderType()==OP_BUY)
return (true);
else
return (false);
}
bool isPosibleCloseBuy()
{
double st_prew_main,st_now_main;
double st_prew_signal,st_now_signal;
st_now_main = iStochastic(NULL,0,5,3,4,MODE_SMA,0,MODE_MAIN,0);
st_prew_main = iStochastic(NULL,0,5,3,4,MODE_SMA,0,MODE_MAIN,1);
st_now_signal = iStochastic(NULL,0,5,3,4,MODE_SMA,0,MODE_SIGNAL,0);
st_prew_signal = iStochastic(NULL,0,5,3,4,MODE_SMA,0,MODE_SIGNAL,1);
if ((st_now_main<80 && st_prew_main>80) || (st_now_signal<80 && st_prew_signal>80))
{
b = 1;
return (true);
}
return (false);
}
bool isTimeToCloseBuy()
{
isPosibleCloseBuy();
if (b == 1)
{
double st_prew_main,st_now_main;
double st_prew_signal,st_now_signal;
st_now_main = iStochastic(NULL,0,5,3,4,MODE_SMA,0,MODE_MAIN,0);
st_prew_main = iStochastic(NULL,0,5,3,4,MODE_SMA,0,MODE_MAIN,1);
st_now_signal = iStochastic(NULL,0,5,3,4,MODE_SMA,0,MODE_SIGNAL,0);
st_prew_signal = iStochastic(NULL,0,5,3,4,MODE_SMA,0,MODE_SIGNAL,1);
if ((st_now_main<50 && st_prew_main>50) || (st_now_signal<50 && st_prew_signal>50))
{
b = 0;
return (true);
}
}
return (false);
}
bool isPosibleCloseSell()
{
double st_prew_main,st_now_main;
double st_prew_signal,st_now_signal;
st_now_main = iStochastic(NULL,0,5,3,4,MODE_SMA,0,MODE_MAIN,0);
st_prew_main = iStochastic(NULL,0,5,3,4,MODE_SMA,0,MODE_MAIN,1);
st_now_signal = iStochastic(NULL,0,5,3,4,MODE_SMA,0,MODE_SIGNAL,0);
st_prew_signal = iStochastic(NULL,0,5,3,4,MODE_SMA,0,MODE_SIGNAL,1);
if ((st_now_main>20 && st_prew_main<20) || (st_now_signal>20 && st_prew_signal<20))
{
b = 2;
return (true);
}
return (false);
}
bool isTimeToCloseSell()
{
isPosibleCloseSell();
if (b == 2)
{
double st_prew_main,st_now_main;
double st_prew_signal,st_now_signal;
st_now_main = iStochastic(NULL,0,5,3,4,MODE_SMA,0,MODE_MAIN,0);
st_prew_main = iStochastic(NULL,0,5,3,4,MODE_SMA,0,MODE_MAIN,1);
st_now_signal = iStochastic(NULL,0,5,3,4,MODE_SMA,0,MODE_SIGNAL,0);
st_prew_signal = iStochastic(NULL,0,5,3,4,MODE_SMA,0,MODE_SIGNAL,1);
if ((st_now_main>50 && st_prew_main<50) || (st_now_signal>50 && st_prew_signal<50))
{
b = 0;
return (true);
}
}
return (false);
}
В эттаче результаты тестирования на истории с стоплосом 50, а тейкпрофитом 100. В периоде с 35 марта 2006-го по наши дни: