extern string In_=" Настройки входа";
extern bool ReverseSignal=false; // true - Переворачивать сигнал стратегии.
extern string trade_="Настройки торговли";
extern int Magic=777; // Магический номер
extern int StopLoss=0; // Стоплосс, 0 - не используется
extern int TakeProfit=0; // Тейкпрофит , 0 - не используется
extern int Slippage=0; // Проскальзывание
extern bool MarketWatch=false; // Режим торговли по MarketWatch true = сначала выставляются позиции/ордера без стопов, потом происходит модификация - для некоторых брокеров
extern bool ClosePosifChange=true; // Закрывать позиции при обратном сигнале
extern bool ONlyOnePosbySignal=true; // Играть только или бай и / или селл 1 позицией
extern string autolot_="Настройки автолота";
extern double Lots=0.1; // Фиксирвоанный лот
extern bool DynamicLot=false; // Динамический лот
extern double LotBalancePcnt=20; // % от депозита
extern double MinLot = 0.1; // Минимальный лот при расчете
extern double MaxLot = 5; // Максимальный лот при расчете
extern double Martin=1; // Если 1 то не используется, Коэффициент мартина на следующую сделку после убытончой
extern string timetrade_="Настройки времени торговли";
extern int OpenHour=0; // Час открытия торгов
extern int OpenMinute=0; // Минута открытия торгов
extern int CloseHour=23; // Час закрытия торгов
extern int CloseMinute=59; // Минута закрытия торгов
extern string Trailing_="Настройки трейлингстопа";
extern bool TrailingStopUSE=false; // Использовать трейлингстоп
extern bool IfProfTrail=false; // Использовать только дял профитных позиций - режим безубытка
extern int TrailingStop=0; // Дистанция трейлинга = 0 - минимально допустимый
extern int TrailingStep=1; // Шаг дистанции
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
bool isCloseLastPosByStop(string sy="",int op=-1,int mn=-1)
{
datetime t;
double ocp,osl;
int dg,i,j=-1,k=OrdersHistoryTotal();
if(sy=="0") sy=Symbol();
for(i=0; i<k; i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
{
if(OrderSymbol()==sy || sy=="")
{
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
{
if(op<0 || OrderType()==op)
{
if(mn<0 || OrderMagicNumber()==mn)
{
if(t<OrderCloseTime())
{
t=OrderCloseTime();
j=i;
}
}
}
}
}
}
}
if(OrderSelect(j,SELECT_BY_POS,MODE_HISTORY))
{
dg=MarketInfo(OrderSymbol(),MODE_DIGITS);
if(dg==0) if(StringFind(OrderSymbol(),"JPY")<0) dg=4; else dg=2;
ocp=NormalizeDouble(OrderClosePrice(), dg);
osl=NormalizeDouble(OrderStopLoss(), dg);
if(OrderProfit()<0) return(True);
}
return(False);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int IndicatorSignal()
{
int Sig=0;
int current_trend = -1;
for(int i=1;i<Bars;i++) {
double ExampleCustom_buy = iCustom(NULL,0,"DJX6 V7.2.8 LOCK",0,i);
double ExampleCustom_sell = iCustom(NULL,0,"DJX6 V7.2.8 LOCK",1,i);
if( ExampleCustom_buy!=EMPTY_VALUE) {
current_trend = 0;
break;
}
if( ExampleCustom_sell!=EMPTY_VALUE) {
current_trend = 1;
break;
}
}
//Указываем Сигналы:
{
if( ExampleCustom_buy <Ask)Sig=1; // Если МА ниже цены БИД - открываемся в бай
if( ExampleCustom_sell>Bid)Sig=2; // Если МА выше цены БИД - открываемся в селл
//1 - бай 2 - селл
return(Sig);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
double Prof,Loss;
int timeCheckSignal; // Время открытия позиции
double sl,tp; // Для вычисления стопов
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start()
{
int Signal; // Сигнал к открытию
//+------------------------------------------------------------------+
//Проверяем наличие торгового времени(разрешения на торговлю)
//+------------------------------------------------------------------+
bool Traiding=TDt(DoubleToStr(CloseHour,0),DoubleToStr(CloseMinute,0),DoubleToStr(OpenHour,0),DoubleToStr(OpenMinute,0));
//+------------------------------------------------------------------+
// Включение трейлингстопа:
//+------------------------------------------------------------------+
if(TrailingStopUSE)SimpleTrailing(Symbol(),-1,Magic);
// ==========================================================================================================================================================================================================
Signal=IndicatorSignal();
if(ReverseSignal)
{
if(Signal==1)Signal=2;
else if(Signal==2)Signal=1;
}
//+------------------------------------------------------------------+
// Если время торговли не истекло и мы не открывали позицию на этом баре:
//+------------------------------------------------------------------+
if(Traiding && timeCheckSignal!=Time[0])
{
{
//+------------------------------------------------------------------+
// Если сигнал на бай:
//+------------------------------------------------------------------+
if(Signal==1)// buy
{
//Вычисляем стоплосс
if(StopLoss!=0)sl=Bid-StopLoss*Point; else sl=0;
// ВЫчисляем тейкпрофит
if(TakeProfit!=0)tp=Ask+TakeProfit*Point; else tp=0;
//+------------------------------------------------------------------+
//Закрываем противоположную позицию
//+------------------------------------------------------------------+
if(ClosePosifChange)CPD(Symbol(),OP_SELL,Magic);
//+------------------------------------------------------------------+
//Открываем позицию
//+------------------------------------------------------------------+
if((ONlyOnePosbySignal && !EPs(Symbol(),OP_BUY,Magic)) || !ONlyOnePosbySignal)
{
OPs(Symbol(),OP_BUY,GetSizeLot(),sl,tp,Magic);
timeCheckSignal=Time[0];
}
}
//+------------------------------------------------------------------+
// Если сигнал на селл:
//+------------------------------------------------------------------+
if(Signal==2)// селл
{
//Вычисляем стоплосс
if(StopLoss!=0)sl=Ask+StopLoss*Point; else sl=0;
// ВЫчисляем тейкпрофит
if(TakeProfit!=0)tp=Bid-TakeProfit*Point; else tp=0;
//Закрываем противоположную позицию
if(ClosePosifChange)CPD(Symbol(),OP_BUY,Magic);
//+------------------------------------------------------------------+
//Открываем позицию
//+------------------------------------------------------------------+
if((ONlyOnePosbySignal && !EPs(Symbol(),OP_SELL,Magic)) || !ONlyOnePosbySignal)
{
OPs(Symbol(),OP_SELL,GetSizeLot(),sl,tp,Magic);
timeCheckSignal=Time[0];
}
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
}
return(0);
}