Заинтересовала ТС Master Candle Method, более подробно можно посмотреть в блоге, решил сделать робота. Соответственно кому интересно, предлагаю вместе заняться усовершенствованием этой совы. Валютные пары GBP/USD GBP/JPY. Тайм фрейм H4.
MQL-Код:
//+------------------------------------------------------------------+
//| Aktn.mq4 |
//| Copyright 2012, MetaQuotes Software Corp. |
//|
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link
//--- input parameters
extern int lot=1;
extern int StopLoss=200;
extern string _____= "Параметры функции ТРЕЙЛИНГ СТОП";
extern bool UseTrailing = true;//Выключатель трейлинг стопа
extern int MinProfit = 150; //порог включения трейлин стопа
extern int TrailingStop = 75;// величина трейлинг стопа
extern int TrailingStep = 5; // шаг трейлинг стопа
extern int Magic = 1;
double Top;
double Dno;
int TikBuy;
int TikSell,BarSig;
double Cena;
datetime NewTime;
double Balance;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
TikBuy=0;
TikSell=0;
BarSig=0;
//----
return(1);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
void TrailPositions() // функция трейлинг стоп
{
int Orders = OrdersTotal();
for (int i=0; i if (!(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))) continue;
if (OrderSymbol() != Symbol()) continue;
if (OrderMagicNumber() == Magic ){
if (OrderType() == OP_BUY ) {
if (Bid-OrderOpenPrice() > MinProfit*Point) {
if (OrderStopLoss() OrderModify(OrderTicket(), OrderOpenPrice(), Bid-TrailingStop*Point,
OrderTakeProfit(), 0, Blue);
} } }
if (OrderType() == OP_SELL) {
if (OrderOpenPrice()-Ask >MinProfit*Point) {
if (OrderStopLoss() > Ask+(TrailingStop+TrailingStep-1)*Point
|| OrderStopLoss() == 0) {
OrderModify(OrderTicket(), OrderOpenPrice(), Ask+TrailingStop*Point,
OrderTakeProfit(), 0, Blue);
} } } } } }
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
if (UseTrailing) TrailPositions();
if ((OrdersTotal()==0)&&(iHigh(Symbol(),0,5)>iHigh(Symbol(),0,4))&&(iHigh(Symbol(),0,5)>iHigh(Symbol(),0,3))&&(iHigh(Symbol(),0,5)>iHigh(Symbol(),0,2))&&(iHigh(Symbol(),0,5)>iHigh(Symbol(),0,1))&&
(iLow(Symbol(),0,5) {
if (iHigh(Symbol(),0,5) TikBuy=OrderSend(Symbol(),OP_BUYSTOP,lot,Cena,0,Cena-StopLoss*Point,0,NULL,Magic,0,CLR_NONE);
if (iLow(Symbol(),0,5)>Bid-30*Point){Cena=Bid-30*Point;} else {Cena=iLow(Symbol(),0,5);}
TikSell=OrderSend(Symbol(),OP_SELLSTOP,lot,Cena,0,Cena+StopLoss*Point,0,NULL,Magic,0,CLR_NONE);
BarSig=4;
}
if (OrdersTotal()>1)
{
OrderSelect(TikBuy,SELECT_BY_TICKET);
if (OrderProfit()!=0){OrderDelete(TikSell);TikSell=0;}
OrderSelect(TikSell,SELECT_BY_TICKET);
if (OrderProfit()!=0){OrderDelete(TikBuy); TikBuy=0;}
}
if ((BarSig==8)&&(OrdersTotal()==2))
{
OrderDelete(TikSell); TikSell=0;
OrderDelete(TikBuy); TikBuy=0;
}
if (NewTime!=iTime(Symbol(),0,0))
{
BarSig++;
NewTime=iTime(Symbol(),0,0);
}
//----
//----
return(1);
}
//+------------------------------------------------------------------+
Автор#1
Изменено 7 июля, 2017 пользователем Pavel888
