1. Научитась выкладыать код через SRC.
2. Научитась стилю со сдвигом блоков. В этом случае никогда не будет таких ошибок.
Писал для себя эксперта. Перечитал кучу статей, просмотрел много готовых экспертов.
- Для чайников есть специальная ветка: Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3.
- Не надо портить зрение тем, у кого просите помощи, а научитесь пользоваться вставкой кода Ctrl+Alt+M
1. Научитась выкладыать код через SRC.
2. Научитась стилю со сдвигом блоков. В этом случае никогда не будет таких ошибок.
Хорошо, а где про это есть подробно?
Хорошо, а где про это есть подробно?
вам подробно про нажатие клавиатуры Ctrl+Alt+M ??
или вам подробно про то, что надо отступы для вложенных { } делать???
Писал для себя эксперта. Перечитал кучу статей, просмотрел много готовых экспертов.
Написал по некоторому подобию своего, но не могу скомпилировать.
Выдает ошибку и все тут: '\end_of_program' - ending bracket '}' expected.
Перепробовал редактировать его, скобки и все такое, ничего не получается.
Может быть кто-то из спецов поможет? Опытным взглядом?
Очень прошу!!!
___________________________________________________________________________________Может, я что-то со скобками напутал? Очень прошу помочь, хотя-бы намек....
С уважением, ко всем !!!!!!
1) нужна еще одна скобка перед return (которая закроет цикл for)
2) в следующий раз пишите в ветку для новичков
3) вставляйте код с помощью кнопки SRC
4) в OrderClose не хватает 1 параметра, проскальзывания, поставьте хотя бы 0
5) по поводу скобок старайтесь оформлять хотя бы так:
start() { for (int i = 0; i < N; i++) { if (a>b[i]) { //что-то делаем } else { } } }
вам подробно про нажатие клавиатуры Ctrl+Alt+M ??
или вам подробно про то, что надо отступы для вложенных { } делать???
Про отступы. Прошу прощения.
1) нужна еще одна скобка перед return (которая закроет цикл for)
2) в следующий раз пишите в ветку для новичков
3) вставляйте код с помощью кнопки SRC
4) в OrderClose не хватает 1 параметра, проскальзывания, поставьте хотя бы 0
5) по поводу скобок старайтесь оформлять хотя бы так:
Спасибо. Буду пробовать.
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Писал для себя эксперта. Перечитал кучу статей, просмотрел много готовых экспертов.
Написал по некоторому подобию своего, но не могу скомпилировать.
Выдает ошибку и все тут: '\end_of_program' - ending bracket '}' expected.
Перепробовал редактировать его, скобки и все такое, ничего не получается.
Может быть кто-то из спецов поможет? Опытным взглядом?
Очень прошу!!!
_____________________________________________________________________________
//+------------------------------------------------------------------
// Численные значения для М30
extern double StopLoss = 20; // SL для открываемого ордера
extern double TakeProfit = 50; // ТР для открываемого ордера
extern double Lots = 0.1; // Жестко заданное колич. лотов
extern double TrailingStop = 10; // Trail stop in points
extern double Prots = 0.4; // Процент свободных средств
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start() // Внутренние переменные
{
double MA_1Current,MA_1Previous,MA_2Current, MA_2Previous;
double MA_3Current, MA_3Previous, StochMCurrent, StochMPrevious;
double StochSCurrent, StochSPrevious, MacdSCurrent, MacdSPrevious;
int cnt=0, ticket, total;
//+------------------------------------------------------------------+
//Описание функций технических индикаторов.
MA_1Current = iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,0); // МА_1 0 бар
MA_1Previous = iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,1); // МА_1 1 бар
MA_2Current = iMA(NULL,0,13,0,MODE_EMA,PRICE_CLOSE,0); // МА_2 0 бар
MA_2Previous = iMA(NULL,0,13,0,MODE_EMA,PRICE_CLOSE,1); // МА_2 1 бар
MA_3Current = iMA(NULL,0,34,0,MODE_EMA,PRICE_CLOSE,0); // МА_3 0 бар
MA_3Previous = iMA(NULL,0,34,0,MODE_EMA,PRICE_CLOSE,1); // МА_3 1 бар
StochMCurrent = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,0); // Sto_M 0 бар
StochMPrevious = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,1); // Sto_M 1 бар
StochSCurrent = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,0); // Sto_S 0 бар
StochSPrevious = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,1); // Sto_S 1 бар
MacdSCurrent = iMACD(NULL,0,5,7,3,PRICE_CLOSE,MODE_SIGNAL,0); // MACD_S 0 бар
MacdSPrevious = iMACD(NULL,0,5,7,3,PRICE_CLOSE,MODE_SIGNAL,1); // MACD_S 1 бар
//Проверка наличия открытых ордеров.
total=OrdersTotal();
if(total<1)
{
//+------------------------------------------------------------------+
//Определение торговых критериев.
//Проверяем возможность открытия длинной позиции.
if (Bid<MA_3Current && MA_1Current<MA_2Current && MA_2Current<MA_3Current &&
MacdSCurrent<0 && MacdSPrevious>0 && StochMPrevious>70 &&
StochMPrevious>StochSPrevious && MA_1Previous>MA_2Previous)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point);
}
//Проверяем возможность открытия короткой позиции.
if (Bid>MA_3Current && MA_1Current>MA_2Current && MA_2Current>MA_3Current &&
MacdSCurrent>0 && MacdSPrevious<0 && StochMPrevious<30 &&
StochMPrevious<StochSPrevious && MA_1Previous<MA_2Previous)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point);
}
return(0); // Выход из пользовательской функции ???
}
//+------------------------------------------------------------------+
//Контроль открытых позиций.
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && // это открытая позиция? OP_BUY или OP_SELL.
OrderSymbol()==Symbol()) // инструмент совпадает?
{
if(OrderType()==OP_BUY) // открыта длинная позиция.
{
// проверка необходимости закрытия позиции.
if(StochMCurrent>StochSCurrent && StochMPrevious<StochSPrevious &&
MacdSCurrent>MacdSPrevious)
{
OrderClose(OrderTicket(),OrderLots(),Bid); // закрываем позицию.
return(0); // выход.
}
// проверка - трейлинг стоп ставить?
if(TrailingStop>0)
{
if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
if(OrderStopLoss()<Bid-Point*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,
OrderTakeProfit(),0);
return(0);
}
}
}
}
else // Иначе, это короткая позиция.
{
// проверка необходимости закрытия позиции.
if(StochMCurrent<StochSCurrent && StochMPrevious>StochSPrevious &&
MacdSCurrent<MacdSPrevious)
{
OrderClose(OrderTicket(),OrderLots(),Ask); // закрываем позицию.
return(0); // выход.
}
// проверка - трейлинг стоп ставить?
if(TrailingStop>0)
{
if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
{
if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,
OrderTakeProfit(),0);
return(0);
}
}
}
}
}
return(0);
}
//Конец.
___________________________________________________________________________________
Может, я что-то со скобками напутал? Очень прошу помочь, хотя-бы намек....
С уважением, ко всем !!!!!!