Доброго времени суток.
Прошу доработать советник.
Доработка советника:
1. Должен открывать один ордер в день BUY и (или) SELL по сигналу.
2. Возможность выбора общего количества ордеров BUY и SELL (например, может быть общее количество BUY — 3 шт. и SELL — 5 шт.).
3. При прохождении определенного процента в сторону депозита перевод в без убыток (например, цена прошла 76,4% переводим в б\у на расстоянии 23,6% от цены открытия ордера).
Советник прилагается:
BuySell.mq5 (6 Kb)
#include <Trade\Trade.mqh>
CTrade trade;
input double Lots = 0.01; // лот
input int Count = 5; // число поз
input int Magic = 123;
int h=0,h1=0;
double ma[];
double maD[];
datetime t=0;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
ArraySetAsSeries(ma,true);
ArraySetAsSeries(maD,true);
trade.SetExpertMagicNumber(Magic);
// h=iMA(NULL,0,14,0,0,0);
h1=iMA(NULL,PERIOD_D1,14,0,0,0);
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int CountTrades(int type)
{
int count=0;
for(int i=PositionsTotal()-1; i>=0; i--)
{
if(PositionSelectByTicket(PositionGetTicket(i)))
{
if(PositionGetString(POSITION_SYMBOL)==_Symbol)
{
if(PositionGetInteger(POSITION_MAGIC)==Magic)
{
if(PositionGetInteger(POSITION_TYPE)==type)
count++;
}
}
}
}
return(count);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
// CopyBuffer(h,0,0,2,ma);
CopyBuffer(h1,0,0,2,maD);
double Ask=SymbolInfoDouble(NULL,SYMBOL_ASK);
double Bid=SymbolInfoDouble(NULL,SYMBOL_BID);
double Cl_D=iClose(NULL,PERIOD_D1,1);
double Op_D=iOpen(NULL,PERIOD_D1,0);
double max=iHigh(NULL,PERIOD_D1,1);
double min=iLow(NULL,PERIOD_D1,1);
double Cl=iClose(NULL,0,1);
double Op=iOpen(NULL,0,1);
double Cl2=iClose(NULL,0,2);
double Op2=iOpen(NULL,0,2);
if(t!=iTime(NULL,0,0))
{
if(Op_D>Cl2 && Cl2<Op2 && Cl>Op)
trade.Buy(Lots,NULL,Ask,0,max,"");
if(Op_D<Cl2 && Cl2>Op2 && Cl<Op)
trade.Sell(Lots,NULL,Bid,0,min,"");
}
t=iTime(NULL,0,0);
}
//+------------------------------------------------------------------+
BuySell.mq5 (6 Kb)
Комментарии (5)
не могу найти аналог функций:
34 AM2 Сообщений: 16232 - Андрей
34 AM2 Сообщений: 16232 - Андрей
9 droba Автор Сообщений: 239 - Droba
9 droba Автор Сообщений: 239 - Droba
8 39mail Сообщений: 48 - fenix74
Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий