[Архив!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 2. - страница 147
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Профи не проходите мимо, нужна ваша помощь. Бот по условию ранее открывает sell позицию далее эта позиция должна быть закрыта ниже, см. код и там где должна быть закрыта sell позиция должна открыться buy поза, количество открытых позиций должно быть 1 (OrdersTotal()). Вопрос в том как бы сделать что то вроде очереди исполнения приказов: чтобы сначала закрылась селл поза а потом там же открылась бай поза, и количество открытых позиций равнялось бы 1?
речь про то что он задан только буфферу, а не внешной переменной
ну так и используйте этот indicator_colorN
речь про то что он задан только буфферу, а не внешной переменной
средствами MQL никак. Но если О-О-О-О-ОЧЕНЬ нужно, то, конечно, сделать можно)))
ну вы же не знаете даже что нужно...
уверен, что потребности eddy решаются MQL
ну вы же не знаете даже что нужно...
уверен, что потребности eddy решаются MQL
да нет, понял я... ему нужно в коде индикатора программно получить цвет отрисовки из индикаторного буфера (так ведь, eddy?). Насколько мои знания мне позволяют судить, в MQL такое невозможно.
просто использовать параметр indicator_colorN. Это можно сказать такая же переменная.
возможно.
просто использовать параметр indicator_colorN. Это можно сказать такая же переменная.
неееееее.
Допустим, у нас есть индикатор, который рисует линию. Пусть мы хотим нарисовать этим индикатором кружочек. Но хотим сделать его зеленым, если инликаторная линия зеленая, и красным, если она красная.
Господа программисты, пожалуйста подскажите как сделать правильно закрытие всех ордеров. Ниже привожу решаемую задачу и что посоветовали сделать. В общем все получается, кроме закрытия ордеров и установки флага на запрет торговли...
Уверен среди Вас есть опытные програмисты. Помогите пожалуйста прописать условия в советнике:
1) С+=профит по ордеру(1)+профит по ордеру(2)+...+профит по ордеру(n) - сумма профита по всем открытым ордерам в текущий момент времени.
2) С-=убыток по ордеру(1)+убыток по ордеру(2)+...+убыток по ордеру(n) - сумма убытков по всем открытым ордерам в текущий момент времени.
3) X=(c+)/(c-) - отношение прибыли к убытку в текущий момент времени
4) Если Величина средств (S) умноженная на отношение прибыли к убытку(X) больше опрделенной заданной величины (K), то все впорядке, торгуем дальше. (если S*X>K, то ок)
5) Если Величина средств (S) умноженная на отношение прибыли к убытку(X) меньше опрделенной заданной величины (K), то закрываются все открытые ордера по текущим котировкам и отключается советник до следующего включения руками. (S*X<K, close all order and off)
Мне кажется это была бы неплохая защита от слива.
Примерно так. Создаем две функции, которые считают профит и убыток:
double CalculateProfitTotal()
{
double Result = 0;
for(int i = 0; i < OrdersTotal(); i++)
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
if(OrderProfit() > 0)
Result = Result + OrderProfit();
return(Result);
}
double CalculateLossTotal()
{
double Result = 0;
for(int i = 0; i < OrdersTotal(); i++)
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
if(OrderProfit() < 0)
Result = Result + MathAbs(OrderProfit());
return(Result);
}
А в функцию start() прописываем свои условия.
Например так:
X = CalculateProfitTotal() / CalculateLossTotal();
if(AccountEquity() * X < K)
{
//Здесь закрываем все ордера и
//устанавливаем флаг запрещающий торговлю
return(0);
}
Допустим мы хотим нарисовать индикатором кружочек. Но хотим сделать его зеленым, если инликаторная линия зеленая
вот и хочу объект синим создать)
sergeev, т.е. indicator_color1 это color-переменная?