Обрати внимание на эту строчку
return; // Выход из start() при непреодолимой ошибки
она не дает тебе что-либо делать.
То же самое. Убрал ВСЁ
#property copyright "Chebur"
#property link ""
//---- input parameters
//extern int Time1;
//extern int Time2;
//extern int Magic = 02973;
extern int TrailStop = 15;
extern int StopLoss = 100;
extern int Koefficient = 6;
int Spread,Ticket,Normaling,BUY_new,SELL_new,Error,d,n,Magic;
double Max,t,Min,Pr,LOTSTEP,Obyem,Obyem1,ma,sar,LastBid,LastCheckPoint,Temp,SL;
bool res,Trail=true;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
BUY_new=0;
SELL_new=0;
Magic=(TimeCurrent());
LOTSTEP=MarketInfo(Symbol(),MODE_MINLOT);
if(LOTSTEP==0.1) Normaling=1;
if(LOTSTEP==0.01) Normaling=2;
Obyem1=NormalizeDouble(AccountEquity()/(100000*Koefficient),Normaling);
if (MarketInfo(Symbol(),MODE_MINLOT)>Obyem1) Obyem=LOTSTEP; else Obyem=Obyem1;
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
if(OrdersTotal()<1)
{
while (TimeDay(TimeCurrent())!=d)
{
if(BUY_new==0)
{
if(SELL_new==0)
{
RefreshRates();
Ticket=OrderSend(Symbol(),OP_BUY,Obyem,Ask,3,Bid-Point*StopLoss,0,0,Magic,0,Blue);
BUY_new=1;
if (Ticket > 0)Alert ("Открыт ордер BUY ",Ticket);
}
}
}
}
if(Bid-OrderOpenPrice()>Point*TrailStop)
{
if(OrderStopLoss()<Bid-Point*TrailStop)
{
OrderModify(Ticket,OrderOpenPrice(),Bid-Point*TrailStop,0,0,Blue);
return(0);
}
}
BUY_new=0;
SELL_new=0;
d=TimeDay(TimeCurrent());
return(0);
}
////////////////////////////////////////
double OrderOpenPrice( ) Возвращает цену открытия для выбранного ордера. Ордер должен быть предварительно выбран с помощью функции OrderSelect().в справке много интересного!
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте. Не получается зделать трйлинг. Я уже писал мне ответили. Большое спасибо. Но сегодня даже хелповский MQL ный не могу поставить. Почему-то до модификации даже не доходит дело.
Вот код:
#property copyright "Chebur"
#property link ""
//---- input parameters
//extern int Time1;
//extern int Time2;
//extern int Magic = 02973;
extern int TrailStop = 15;
extern int StopLoss = 100;
extern int Koefficient = 6;
int Spread,Ticket,Normaling,BUY_new,SELL_new,Error,d,n,Magic;
double Max,t,Min,Pr,LOTSTEP,Obyem,Obyem1,ma,sar,LastBid,LastCheckPoint,Temp,SL;
bool res,Trail=true;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
BUY_new=0;
SELL_new=0;
Magic=(TimeCurrent());
LOTSTEP=MarketInfo(Symbol(),MODE_MINLOT);
if(LOTSTEP==0.1) Normaling=1;
if(LOTSTEP==0.01) Normaling=2;
Obyem1=NormalizeDouble(AccountEquity()/(100000*Koefficient),Normaling);
if (MarketInfo(Symbol(),MODE_MINLOT)>Obyem1) Obyem=LOTSTEP; else Obyem=Obyem1;
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
if(OrdersTotal()<1)
{
while (TimeDay(TimeCurrent())!=d)
{
// Comment(
// "Депозит________________",DoubleToStr(AccountEquity(),2)," ",
// TimeToStr(TimeCurrent()),"\n",
// "Magic__________________",Magic,"\n",
// "Плечо__________________1:",AccountLeverage(),"\n",
// "Предыдущий максимум__",Max,"\n",
// "Предыдущий минимум___",Min,"\n","\n",
// "Ширина канала________",(Max-Min)*10000);
if(BUY_new==0)
{
if(SELL_new==0)
{
while(true)
{
RefreshRates();
Ticket=OrderSend(Symbol(),OP_BUY,Obyem,Ask,3,Bid-Point*StopLoss,0,0,Magic,0,Blue);
BUY_new=1;
if (Ticket > 0) // Получилось :)
{
Alert ("Открыт ордер BUY ",Ticket);
break; // Продолжение
}
if (Fun_Error(GetLastError())==1) // Обработка ошибок
continue; // Повторная попытка
return; // Выход из start() при непреодолимой ошибки
}
}
}
}
}
if(Bid-OrderOpenPrice()>Point*TrailStop)
{
if(OrderStopLoss()<Bid-Point*TrailStop)
{
OrderModify(Ticket,OrderOpenPrice(),Bid-Point*TrailStop,0,0,Blue);
return(0);
}
}
BUY_new=0;
SELL_new=0;
d=TimeDay(TimeCurrent());
return(0);
}
////////////////////////////////////////
int Fun_Error(int Error) // Ф-ия обработ ошибок
{
switch(Error)
{ // Преодолимые ошибки
case 4: Alert("Торговый сервер занят. Пробуем ещё раз..");
Sleep(3000); // Простое решение
return(1); // Выход из функции
case 135:Alert("Цена изменилась. Пробуем ещё раз..");
RefreshRates(); // Обновим данные
return(1); // Выход из функции
case 136:Alert("Нет цен. Ждём новый тик..");
while(RefreshRates()==false) // До нового тика
Sleep(1); // Задержка в цикле
return(1); // Выход из функции
case 137:Alert("Брокер занят. Пробуем ещё раз..");
Sleep(3000); // Простое решение
return(1); // Выход из функции
case 146:Alert("Подсис тема торговли занята. Пробуем ещё..");
Sleep(500); // Простое решение
return(1); // Выход из функции
// Критические ошибки
case 2: Alert("Общая ошибка.");
return(0); // Выход из функции
case 5: Alert("Старая версия терминала.");
return; // Больше не работать
return(0); // Выход из функции
case 64: Alert("Счет заблокирован.");
return; // Больше не работать
return(0); // Выход из функции
case 133:Alert("Торговля запрещена.");
return(0); // Выход из функции
case 134:Alert("Недостаточно денег для совершения операции.");
return(0); // Выход из функции
default: Alert("Возникла ошибка ",Error); // Другие варианты
return(0); // Выход из функции
}
}