Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
khorosh:
Ничего сложного. Есть же функция у Кима с магиком.
ОК. Допустим, в советнике дополним:
extern int Magic = 737;
В Ordersend тоже Magic пропишем по всем трём парам.
А в эту функцию куда вставить Magic тогда??
чето не трейдит, пишет - unknown symbol name USDCHF for OrderSend function. И тоже для ПИЗГЫВ, запускаю на EURUSD
В обзоре рынка есть инструмент этот? И посмотрите, в вашем терминале у названий пар ВЕРХНИЙ регистр?
ОК. Допустим, в советнике дополним:
extern int Magic = 737;
В Ordersend тоже Magic пропишем по всем трём парам.
А в эту функцию куда вставить Magic тогда??
{
//Закрываем все ордера
}
if(GetProfitOpenPosInCurrency("EURUSD",OP_BUY, Magic)+GetProfitOpenPosInCurrency("GBPUSD",OP_BUY, Magic)+GetProfitOpenPosInCurrency("USDCHF",OP_BUY, Magic)>=Profit)
{
//Закрываем все ордера
}
У меня получилось по-другому:
if (OrdersTotal()>1 && GetProfitOpenPosInCurrency("", -1, Magic)>Profit || GetProfitOpenPosInCurrency("", -1, Magic)<-Stop)
Closeall();
Единственное, функция Closeall закрывает реально все ордера, вот её код:
int Closeall ()
{int slippage=2;
for (int i=OrdersTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
if (OrderType()==OP_BUY ) OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),slippage);
if (OrderType()==OP_SELL) OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),slippage);
}
}
Я сейчас поищу такую, что бы закрывала только те, что с мэйджиком... Если не сложно - помогите найти, или доработать эту и советник будет доделан.
У меня получилось по-другому:
if (OrdersTotal()>1 && GetProfitOpenPosInCurrency("", -1, Magic)>Profit || GetProfitOpenPosInCurrency("", -1, Magic)<-Stop)
Closeall();
Единственное, функция Closeall закрывает реально все ордера, вот её код:
int Closeall ()
{int slippage=2;
for (int i=OrdersTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
if (OrderType()==OP_BUY ) OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),slippage);
if (OrderType()==OP_SELL) OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),slippage);
}
}
Я сейчас поищу такую, что бы закрывала только те, что с мэйджиком... Если не сложно - помогите найти, или доработать эту и советник будет доделан.
Всё, доделал. Доработал сам функцию Closeall(). Сторонник того, что всё должно быть просто:
int Closeall ()
{int slippage=2;
for (int i=OrdersTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
if (OrderType()==OP_BUY && OrderMagicNumber() == Magic ) OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),slippage);
if (OrderType()==OP_SELL && OrderMagicNumber() == Magic) OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),slippage); - хотя, эту строчку можно удалить нахрен!! :)
}
}
Пробуйте.
if (OrdersTotal()>1 && GetProfitOpenPosInCurrency("", -1, Magic)>Profit || GetProfitOpenPosInCurrency("", -1, Magic)<-Stop)
Closeall();
Если в функции не указывать символ, то закроется только ордер с символом на графике которого установлен эксперт.
У меня получилось по-другому:
if (OrdersTotal()>1 && GetProfitOpenPosInCurrency("", -1, Magic)>Profit || GetProfitOpenPosInCurrency("", -1, Magic)<-Stop)
Closeall();
Если в функции не указывать символ, то закроется только ордер с символом на графике которого установлен эксперт.
У меня закрывается всё..
Всё, доделал. Доработал сам функцию Closeall(). Сторонник того, что всё должно быть просто:
int Closeall ()
{int slippage=2;
for (int i=OrdersTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
if (OrderType()==OP_BUY && OrderMagicNumber() == Magic ) OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),slippage);
if (OrderType()==OP_SELL && OrderMagicNumber() == Magic) OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),slippage);
}
}
Пробуйте.
Просто это только для тестера. Для реала будет сложнее. С обработкой ошибок и повторной посылкой команд в случае реквотов или других ошибок исполнения ордера, как это сделано у Кима.
Да, согласен на все 100. Я это подчеркнул в начале.