Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 808

 

Здравствуйте! Помогите разобраться. Пишу свой первый советник на MQL4. 

Советник открывает позицию, но не закрывает ее. В журнале никаких ошибой не выдает.

void OnTick()
  {RefreshRates();
  ma1=iMA(_Symbol,TimeFrame,Period_MA1,Shift_MA1,metod_ma1,PRICE_CLOSE,0);
ma2=iMA(_Symbol,TimeFrame,Period_MA2,Shift_MA2,metod_ma2,PRICE_CLOSE,0);


if (ma1<ma2)
{
SellPositionClose();
BuyPositionOpen();
}

if (ma1>ma2)
{
BuyPositionClose();
SellPositionOpen();
}
}
 

     
void BuyPositionOpen()  // покупка
{int res=0;
RefreshRates();
if (OrdersTotal()==0)
res=OrderSend(_Symbol,OP_BUY,Lots,Ask,3,0,0,"",Magic,0,Blue);
if (res<0) Print("OrderClose111111 error ",GetLastError());
}

void     SellPositionOpen() // продажа
{int res=0;
RefreshRates();
if (OrdersTotal()==0)
res=OrderSend(_Symbol,OP_SELL,Lots,Bid,3,0,0,"",Magic,0,Red);
if (res<0) Print("OrderClose111111 error ",GetLastError());
}

void BuyPositionClose() // закрытие длинной позиции
{RefreshRates();
if ((OrdersTotal()!=0) && (OrderMagicNumber()==Magic))
{
if (!OrderSelect(0,SELECT_BY_POS,MODE_TRADES)) Print("OrderClose error ",GetLastError());

 if(OrderType()==OP_BUY)
           
            if(!OrderClose(OrderTicket(),OrderLots(),Bid,3,White))
               Print("OrderClose error ",GetLastError());
               }
               }
               
void SellPositionClose()  // закрытие короткой позиции
{RefreshRates();
if (OrdersTotal()!=0 && OrderMagicNumber()==Magic)
{
if (!OrderSelect(0,SELECT_BY_POS,MODE_TRADES)) Print("OrderClose error ",GetLastError());
    
     if(OrderType()==OP_SELL)
                
            if(!OrderClose(OrderTicket(),OrderLots(),Ask,100,White))
               Print("OrderClose error ",GetLastError());
               
               }
               }
 
Terind:

Здравствуйте! Помогите разобраться. Пишу свой первый советник на MQL4. 

Советник открывает позицию, но не закрывает ее. В журнале никаких ошибой не выдает.

 

Вот это условие не работает:

if ((OrdersTotal()!=0) && (OrderMagicNumber()==Magic)) //ордер ещё не выбран с помощью OrderSelect()
 
evillive:

Вот это условие не работает:

Спасибо. Исправил, теперь работает.
 
здравствуйте. столкнулся с такой проблемой. когда рисую линии и прямоугольники на графике одной пары, все эти элементы отображаются на рынках других пар. почему так, и как это убрать?
 
roymax:
здравствуйте. столкнулся с такой проблемой. когда рисую линии и прямоугольники на графике одной пары, все эти элементы отображаются на рынках других пар. почему так, и как это убрать?
Надо бы показать, а то другие не умеют. И желательно в коде
 

Это давний баг, можно уже считать фичей :)

1. Рисуем что-нибудь на каком-нибудь графике

2. Жмем пробел и переходим на другую пару

Графические объекты остаются на графике 

Пример:

На графике евро построили прямую 

Перешли на фунт и уменьшили вертикальный масштаб 

 
tara:

Это давний баг, можно уже считать фичей :)

1. Рисуем что-нибудь на каком-нибудь графике

2. Жмем пробел и переходим на другую пару

Графические объекты остаются на графике 

Билд 765, не работает, обьекты действительно остаются, но на том графике, где и были созданы :)

Пы.Сы: Так как Алексей описал конечно же работает, но только фактически это действо в одном окне происходит, символ графика меняется, но обьект-то к окну привязан, а не к символу )))

 
Означает ли AccountInfoInteger(ACCOUNT_TRADE_ALLOWED)=false что счёт заблокирован? Или это просто запрет торговли? Какие ещё критерии есть, для заблокированного счёта? И в чём именно, кроме запрета торговли, выражается блокировка счёта, если логин всё же прошёл (я про ошибку 64)?
 
tara:

Это давний баг, можно уже считать фичей :)

1. Рисуем что-нибудь на каком-нибудь графике

2. Жмем пробел и переходим на другую пару

Графические объекты остаются на графике 

Пример:

 

 

 

и это никак не пофиксили?
 

здравствуйте.  в документации искал но не нашел. вопрос в чем. можно поменять вот эту картинку при запуске эксперта на свой логотип?






Причина обращения: