Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
это неправильно : if(totalOrders==0 && Magic==OrderMagicNumber() &&
OrderSelect(i-1 , SELECT_BY_POS,MODE_HISTORY)==true)
потому что вы вызываете OrderMagicNumber() перед OrderSelect(), так что он, вероятно, ссылается на предыдущий вызов.
Ой, извините, я неправильно выразил свое мнение.
Я хочу написать (но не могу сделать) что-то, что остановит торговлю советника (или часть торговли советника), если эквити меньше определенного значения.
Спасибо за помощь Roger09, но мне не нужно отображать эквити на графике.Попробуйте этот советник
CloseAllBuySell - База кодов MQL4
Используйте его идею и сделайте код примерно следующего содержания
if (AccountEquity()<YourValue) closeallorders();
Не мог бы кто-нибудь добавить трейлинг-стоп EMA в пример советника по скользящим средним.
EMA трейлинг установлен на 1
Затем измените вход на
Buy=Open[1]>ma && Close[1]>ma;
Sell=Open[1]<ma && Close[1]<ma;
Это должно сделать очень хороший простой скальпер.
Спасибо
Бено
Добавьте в начало программы
extern int pips=2;//(или ваше количество пунктов)
затем замените
sl = OrderOpenPrice() ;
if ((OrderType() == OP_SELL) && (OrderStopLoss() > OrderOpenPrice()))
sl = OrderOpenPrice() ;[/CODE]
to
[CODE]if ((OrderType() == OP_BUY) && (OrderStopLoss() < OrderOpenPrice()))
sl = OrderOpenPrice() +pips*Point;
if ((OrderType() == OP_SELL) && (OrderStopLoss() > OrderOpenPrice()))
sl = OrderOpenPrice() -pips*Point;Может ли кто-нибудь помочь мне вставить в этот индикатор оповещение, когда он рисует новую стрелку?
Спасибо!
Нет, исправьте это
extern int pips=2;
//+------------------------------------------------------------------+
//| функция запуска скриптовой программы |
//+------------------------------------------------------------------+
int start()
{
//----
string curr = Symbol();
int ot = OrdersTotal();
int ords[200], ordType[200], ordTicket[200]; double ordLots[200];
string ordComments[200];
int ix=0;
for (int i=0; i<ot; i++)
{
int o = OrderSelect(i, SELECT_BY_POS);
if (OrderSymbol() == Symbol())
if ((OrderType() == OP_BUY) || (OrderType() == OP_SELL))
{
double sl = 0;
if ((OrderType() == OP_BUY) && (OrderStopLoss() < OrderOpenPrice())))
sl = OrderOpenPrice() +pips*Point;
if ((OrderType() == OP_SELL) && (OrderStopLoss() > OrderOpenPrice())))
sl = OrderOpenPrice() -pips*Point;
if (sl != 0+10)
OrderModify(OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0);
}
}
//----
return(0);
Хорошо, теперь код выглядит следующим образом:
extern int pips=10;//
//+------------------------------------------------------------------+
//| функция запуска скриптовой программы |
//+------------------------------------------------------------------+
int start()
{
//----
string curr = Symbol();
int ot = OrdersTotal();
int ords[200], ordType[200], ordTicket[200]; double ordLots[200];
string ordComments[200];
int ix=0;
for (int i=0; i<ot; i++)
{
int o = OrderSelect(i, SELECT_BY_POS);
if (OrderSymbol() == Symbol())
if ((OrderType() == OP_BUY) || (OrderType() == OP_SELL))
{
double sl = 0;
if ((OrderType() == OP_BUY) && (OrderStopLoss() < OrderOpenPrice())))
sl = OrderOpenPrice() +pips*Point;
if ((OrderType() == OP_SELL) && (OrderStopLoss() > OrderOpenPrice())))
sl = OrderOpenPrice() -pips*Point;
if (sl != 0)
OrderModify(OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0);
}
}
//----
return(0);
}
//+------------------------------------------------------------------+
Привет Roger09,
Большое спасибо за вашу помощь с этим кодом. Теперь код моего скрипта выглядит следующим образом (я добавил изменения, выделенные красным цветом, только для этого ответа, код в MQ4 выглядит так же, как и все остальное, что там было):
//+------------------------------------------------------------------+
//| функция запуска скриптовой программы |
//+------------------------------------------------------------------+
int start()
{
//----
extern int pips=2;//
string curr = Symbol();
int ot = OrdersTotal();
int ords[200], ordType[200], ordTicket[200]; double ordLots[200];
string ordComments[200];
int ix=0;
for (int i=0; i<ot; i++)
{
int o = OrderSelect(i, SELECT_BY_POS);
if (OrderSymbol() == Symbol())
if ((OrderType() == OP_BUY) || (OrderType() == OP_SELL))
{
double sl = 0;
if ((OrderType() == OP_BUY) && (OrderStopLoss() < OrderOpenPrice())))
sl = OrderOpenPrice() +pips*Point;
if ((OrderType() == OP_SELL) && (OrderStopLoss() > OrderOpenPrice())))
sl = OrderOpenPrice() -pips*Point;
if (sl != 0)
OrderModify(OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0);
}
}
//----
return(0);
Не могли бы вы сообщить мне, правильно ли я все понял? Я здесь летаю вслепую, так что потерпите меня.
На самом деле это будет работать, но этот код не очень хорош. К сожалению, я не знаю ваших основных целей и не могу посоветовать что-то другое.