![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
проблема с закрытой позицией
......
double cena=0;
static int isCrossed = 0;
isCrossed = Crossed (k,d);
if(OrderSelect(ticket, SELECT_BY_POS))
{
c=OrderOpenPrice();
return(0);
}
if (isCrossed>0)
{
cena=((c-Ask)*10000);
return(0);
}
total = OrdersTotal();
if(total < 1)
{
if(isCrossed == 1)
{
ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, 1000, cena,
cena , "EMA_CROSS", 12345, 0, Green);
}
....
if(isCrossed == 2)
{
ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, 1000, cena,
cena, "EMA_CROSS", 12345, 0, Red);
......
в общем, советник закрывает позицию при пересечении ЕМА и одновременно открывает другую позицию.
позиции открываются, но закрываться не хотят ;/
пожалуйста, помогите
Можно ли закрыть позицию и открыть новую на том же тике?
(...)
if(OrdersTotal()!=0) {
(...)
OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), Slippage, Green ); }
if(OrdersTotal()==0) {
OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, Ask - SL * Point, Ask + TP * Point, NULL, Magic, 0, Green); }
(...)
В данном примере кода короткая позиция будет закрыта на первом тике, но длинная позиция не будет открыта мгновенно. Для открытия длинной позиции требуется еще один тик.
Заранее спасибо :-)
Да, это возможно. Просто поместите функцию RefreshRates() между операторами.
...... пожалуйста, помогите
Похоже на то: Я - Пьетра. Какое у меня второе имя?
Невозможно помочь вам без полного кода. Извините.
Нужна помощь в кодировании
Кто-нибудь может помочь мне с кодировкой MT4 для определения максимальной и минимальной цены открытия для советника? Есть несколько открытий советником.
Нашел вот такой код, но он для определения первого/последнего открытия сделки.
double GetLastBuyPrice(int Magic)
{
int total=OrdersTotal()-1;
for (int cnt = total ; cnt >=0 ; cnt--)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol() && (OrderType()==OP_BUY))
{
return(OrderOpenPrice());
}
}
return(10000);
}
Как написать код для определения наибольшего/наименьшего открытия сделки?
Код
Кто-нибудь может мне помочь с кодировкой MT4 для определения максимальной и минимальной цены открытия для советника? Есть несколько открытий советника.
Я нашел код, похожий на этот, но он для определения первого/последнего открытия транзакции.
Double opens[1000] = {0};
double maxopen = 0 ;
double minopen = 1000000 ;
// double GetLastBuyPrice(int Magic)
{
int total=OrdersTotal()-1;
for (int cnt = total ; cnt >=0 ; cnt--)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol() && (OrderType()==OP_BUY))
{
opens[cnt] = OrderOpenPrice() ;
}
}
for ( cnt = 0 ; cnt <= total ; cnt ++ )
{
if ( opens[cnt] > maxopen ) maxopen = opens[cnt] ;
if ( opens[cnt] < minopen ) minopen = opens[cnt] ;
}
}
Как закодировать информацию о наибольшем/наименьшем открытии транзакции?привет,
измените код, как указано выше,
это не процедура для вызова из других...,
поместите его туда, куда вы хотите в коде вашего эксперта.
OTR
Нужна помощь в создании кода для открытия более одного заказа
Мне не удается добавить код для открытия второго ордера.
Я пытаюсь открыть 2 ордера на основе одного и того же сигнала с разными уровнями TP.
Ниже приведен мой код для открытия первого ордера:
Любая помощь будет оценена по достоинству.
if(SlowSell<0 && FastSell<0 && PrevFastSell==0)
{
ticket=OrderSend(Symbol(),OP_SELL,LotSize,Bid,Slipage,Bid+StopLoss*Point,Bid-TakeProfit*Point, "MA_Angle_Trader",MagicNumber,0,Red);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print(" Открытордер SellStop: ",OrderOpenPrice());
}
else Print("Ошибка при открытии ордера SellStop : ",GetLastError());
return(0);
ticket=OrderSend(Symbol(),OP_SELL,LotSize,Bid,Slipage,Bid+StopLoss*Point,0, "MA_Angle_Trader",MagicNumber,0,Red);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("Открыт ордер SellStop : ",OrderOpenPrice());
}
else Print("Ошибка при открытии ордера SellStop : ",GetLastError());
return(0);
}
Здравствуйте
Мне нужна помощь по простому кодированию,
1) Хеджирование сделки на определенное количество пунктов
2) Затем отключает/приостанавливает любую дальнейшую торговлю.
Убедиться, что он не хеджирует снова, так как я буду вручную закрывать хеджированную сделку.
Мне не удалось добавить код для открытия второго заказа.
Я пытаюсь открыть 2 ордера на основе одного и того же сигнала с разными уровнями TP.
Ниже приведен мой код для открытия первого ордера:
любая помощь будет оценена по достоинству.
if(SlowSell<0 && FastSell<0 && PrevFastSell==0)
{
ticket=OrderSend(Symbol(),OP_SELL,LotSize,Bid,Slipage,Bid+StopLoss*Point,Bid-TakeProfit*Point, "MA_Angle_Trader",MagicNumber,0,Red);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("Открыт ордер SellStop : ",OrderOpenPrice());
}
else Print("Ошибка при открытии ордера SellStop : ",GetLastError());
return(0);
ticket=OrderSend(Symbol(),OP_SELL,LotSize,Bid,Slipage,Bid+StopLoss*Point,0, "MA_Angle_Trader",MagicNumber,0,Red);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("Открыт ордер SellStop : ",OrderOpenPrice());
}
else Print("Ошибка при открытии ордера SellStop : ",GetLastError());
return(0);
}Замените первый
return(0);
на
RefreshRates();