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

 

Может кто подскажет ,устанавливаю плагин GetTickerHistory в МТ-4,запускается,но загрузка не идёт,наWindows 7 x64,возможно ли загрузить внешние индексы другим способом.

Заранее благодарен.

 
001:
Есть функция закрытия позы по времени.

  Позиция закрывается, но выдает по каждой позе OrderClose error 138

11:44:49 2000.01.10 07:00  Time+iLowest_old EURUSD,H1: open #1 sell 0.10 EURUSD at 1.02940 ok
11:44:49 2000.01.10 14:00  Time+iLowest_old EURUSD,H1: OrderClose error 138
11:44:49 2000.01.10 14:00  Time+iLowest_old EURUSD,H1: close #1 sell 0.10 EURUSD at 1.02940 at price 1.02230
11:44:49 2000.01.11 07:00  Time+iLowest_old EURUSD,H1: open #2 sell 0.10 EURUSD at 1.02660 ok
11:44:49 2000.01.11 14:00  Time+iLowest_old EURUSD,H1: OrderClose error 138
11:44:49 2000.01.11 14:00  Time+iLowest_old EURUSD,H1: close #2 sell 0.10 EURUSD at 1.02660 at price 1.02890
11:44:49 2000.01.13 07:00  Time+iLowest_old EURUSD,H1: open #3 sell 0.10 EURUSD at 1.02860 ok

11:44:49 2000.01.13 14:00  Time+iLowest_old EURUSD,H1: OrderClose error 138 ,

Что это может быть? Самое интересное, что в другом советнике все работает.

У вас нет обработки кодов возврата торгового сервера. Т.е., реквоту вы не обрабатываете, а проскальзывание всего в 3 пункта не хватает:

int f=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),3,Red);

Ну и по мелочи:

Закрывать в обратном цикле (иначе пропускать будет):

for(int i=OrdersTotal()-1; i>=0; i--)

Проверку нужно сделать на тип ордера, иначе будет пытаться закрывать и отложки:

if(OrderType()>1) continue;
 
pu6ka:

  Есть функция SetIndexDrawBegin(). Но там особенность, считает слева направо. Вобщем, в Init поставьте себе строку SetIndexDrawBegin(0, Bars-p), и посмотрите, может это то, что Вам нужно.
Проблем сделать, чтобы индикатор считал последние № баров нет. Мне нужно сделать окно из кол-во баров, в котором будут считаться эти движения и с каждым баром окно бы передвигалось, исключая из расчетов последний бар в прошлом расчете, добавляя новый. Что-то вроде сглаживания "iMAOnArray", но сглаживание не подходит, так как выводит среднюю, а нужна сумма.
 
artmedia70:

У вас нет обработки кодов возврата торгового сервера. Т.е., реквоту вы не обрабатываете, а проскальзывание всего в 3 пункта не хватает:

Ну и по мелочи:

Закрывать в обратном цикле (иначе пропускать будет):

Проверку нужно сделать на тип ордера, иначе будет пытаться закрывать и отложки:



Большое спасибо! Сейчас попробую. И еще вопрос. Реквота в тестере актуальна? у меня в тестере не закрывает.
 
001:

Большое спасибо! Сейчас попробую. И еще вопрос. Реквота в тестере актуальна? у меня в тестере не закрывает.
Тогда обратите внимание на цену в торговом приказе. Buy закрывается по Bid, Sell - по Ask. У вас там нет проверки на тип ордера и, соответственно, нет выбора цены - либо Ask, либо Bid
 

Здравствуйте! Скачал несколько, практически, идентичных мультитаймфреймовых индикаторов RSI. У всех возникает одна и та же проблема. Устанавливаю индикатор на графике младшего таймфрейма со значением какого-либо старшего таймфрейма. В тестере на уже загруженных данных отрисовывается отлично, а если запустить тестирование, то отрисовка прекращается. Кроме того, на реальном графике отрисовывает сигнал, но на каждом баре реального графика значения индикаторной линии различны. Т.е на уже загруженных данных отрисовка идёт лесенкой, а на подгружаемых данных в режиме реального времени отрисовка происходит по другому. Подскажите, какие изменения необходимо произвести, чтобы индикатор рисовал такой же лесенкой и на реальном графике в режиме реального времени, и в тестере.

Код индикатора в прикреплённом файле. 

 

Спасибо. 

Файлы:
mtf_rsi.mq4  3 kb
 
Здравствуйте, советник при модификации выдает  ошибку 1 "Нет ошибку но результат не известен". Ошибка 1
void ControlBuylimit(){
  for(int i=OrdersTotal(); i>=0; i--){
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
      if(OrderMagicNumber()==Magic){
        if(OrderSymbol()==Symbol()){
          if(OrderType()==OP_BUYLIMIT){
            if(OrderComment()=="MA_1"){
              if(OrderOpenPrice()!=ma1){
                int cnt=0;
                bool res;
                while(cnt<=5){
                  res=OrderModify(OrderTicket(),NormalizeDouble(ma1,Digits),NormalizeDouble(ma1,Digits)-StopLoss*Point,NormalizeDouble(ma1,Digits)+TakeProfit*Point,0,clrNONE);
                  if(!res){
                    int answ=0;
                    answ=ERRORS(GetLastError(),OrderTicket());
                    if(answ==1){continue; cnt++;}
                    if(answ==2)break;
                  }
                  if(res)break;
                }
              }
            }
            if(OrderComment()=="MA_2"){
              if(OrderOpenPrice()!=ma2){
                int cnt=0;
                bool res;
                while(cnt<=5){
                  res=OrderModify(OrderTicket(),NormalizeDouble(ma2,Digits),NormalizeDouble(ma2,Digits)-StopLoss*Point,NormalizeDouble(ma2,Digits)+TakeProfit*Point,0,clrNONE);
                  if(!res){
                    int answ=0;
                    answ=ERRORS(GetLastError(),OrderTicket());
                    if(answ==1){continue; cnt++;}
                    if(answ==2)break;
                  }
                  if(res)break;
                }
              }
            }
          }
        }
      }
      
    }
  }
}
 
Forexman77:
Проблем сделать, чтобы индикатор считал последние № баров нет. Мне нужно сделать окно из кол-во баров, в котором будут считаться эти движения и с каждым баром окно бы передвигалось, исключая из расчетов последний бар в прошлом расчете, добавляя новый. Что-то вроде сглаживания "iMAOnArray", но сглаживание не подходит, так как выводит среднюю, а нужна сумма.

  Киньте этот индикатор на М1, с появлением новых баров, слева линии аллигатора "затираются". Такое нужно?

  
  

Файлы:
 
Example2:
Здравствуйте, советник при модификации выдает  ошибку 1 "Нет ошибку но результат не известен". 

 Скорее всего, модифицируете старой ценой, которая уже прописана в ордере.
 
pu6ka:

 Скорее всего, модифицируете старой ценой, которая уже прописана в ордере.


Но ведь есть же проверка if(OrderOpenPrice()!=ma2)