[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3. - страница 197
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Товарищи, помогите плз... написал простенький код, но при компиляции говорит, что скобки не уравновешены, а я их уже по 300 раз пересчитал - все на месте
Идея проще некуда - если MACD побыл выше(или ниже) 0 не более 7 минут, то позиция открывается
Проверь эту функцию
p.s. как рисовать скрипт так красиво, как у вас?
Когда пишешь ответ есть кнопочка SRC.
А что касаеся скобочек, то у меня есть привычка указывать к чему относится закрывающая
}//for
}//if (signal...
А что касаеся скобочек, то у меня есть привычка указывать к чему относится закрывающая
}//for
}//if (signal...
"на вкус и цвет..." - но, надо признать, такой подход загромождает код ненужной информацией + отвлекает время на написание лишних строчек кода + не решает проблему при глубокой вложенности (нумеровать уровни?)
лучше структурировать код - как в примере постом выше
Добрый день, подскажите пожалуйста, как написать условие, что бы после открытия одного ордера, второй не мог открыться на той же самой свече. Я пишу следующее:
if (... && CountOrder<2 && (BarLast>1 || BarLast==-1))
{
OrderSend(Symbol(),OP_BUY,MinLot,Ask,0,VStopLossLong,0,"BUY: ",MagicL,0,Green);
}
где
// считаю количество открытых ордеров для бумаги
int CountOrder=0;
for (int j=0; j<OrdersTotal(); j++)
if (OrderSelect(j,SELECT_BY_POS,MODE_TRADES))
if (OrderSymbol()==Symbol()) CountOrder++;
// номер бара последней закрытой позиции либо -1, еси не была еще открыта
int BarLast=BarLastClosePose();
и
// номер бара последней закрытой позиции
int BarLastClosePose()
{
datetime t;
int i;
for (i=0; i<OrdersHistoryTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
{
//if (OrderMagicNumber()!=Magic) continue;
if (OrderSymbol()!=Symbol()) continue;
if (OrderType()>1) continue;
if (t<OrderCloseTime()) t=OrderCloseTime();
}
}
return (iBarShift(Symbol(),Period(),t,true));
}
Проверь эту функцию
Винин, приверил, в этой функции все хорошо... return(0) относится к функции старт, и если не считать скобку, которая к return'y прилагается, то скобок получается 14... по 7 в каждую сторону
Винин, приверил, в этой функции все хорошо... return(0) относится к функции старт, и если не считать скобку, которая к return'y прилагается, то скобок получается 14... по 7 в каждую сторону
Помогает копипаст каждой функции в отдельный файл и проверочная компиляция.
Если скобочки правильные, то укажи, где заканчивается старт и начинается сигнал MACD.
Помогает копипаст каждой функции в отдельный файл и проверочная компиляция.
Если скобочки правильные, то укажи, где заканчивается старт и начинается сигнал MACD.
хм... int signal_MACD() - это действительно функция... но почему она должна быть за функцией старт? мне, честно говоря, не понятно, почему некоторые функции пишутся за пределами старт, а некоторые внутри... в чем разница?