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

 

с архивом разобрался. Подскажите, пожалуйста:

1. можно ли на одном графике включить несколько советников?

2. либо советник+скрипт?

3. нужно ли выставлять на графике инструмента именно тот  ТФ, который использует советник? если да, то что будет в противном случае?

4. нужно ли в окне инструмента ставить тот индикатор, который использует советник? если да, то что будет в противном случае?

5. если советник использует мультивалютник, нужно ли открывать все окна с этими валютными парами? 

 
m8akca:
Вот в том и дело что мне нужно точное сравнение ==, а не сколько лет ждать почему если к примеру в комментарий я себе вывожу цену ордера Buy и цену Bid и эти переменные в некоторые моменты совпадают но вот условие сравнения == не выполняется. код: ВОЗМОЖНО ЛИ запрограммировать данный алгоритм. Голова кипит третью неделю! 
Потому, что цена может быть на _Point больше или меньше и это уже не равно.
 

  Подскажите, пожалуйста, функцию которая считает сумму из серии последних убыточных сделок подряд. Срабатывание TakeProfit обнуляет счетчик.

[Удален]  

Здрасте всем, Уважаемые! подскажите пожалуйста, есть ли в сети, или может есть у кого время, написать советника, по следующим параметрам. 1)указываю направление покупки(продажи), и цену этой покупки(продажи). 2) указываю размер стопа. 3)выставляю к примеру еще три уровня цен, при котором должны закрываться части от размера лота. Кпримеру, выставляю ордер на продажу по цене 1$, в параметрах советника указываю сколько %(или сколько объема) закрыть на уровне 1.2, сколько %(или сколько объема) на уровне 1.3 и остаток на уровне 1.4.

 
ara66676:
скажем так, мне было важно определить время, за 10 секунд до закрытия каждых пяти минут, а так как в анализе 28 валютных пар, то уж по какой нибудь паре этот бар будет, и колличество тиков в моём случае не важно.

Тогда проще так:

datetime TSec; // Текущее время в секундах от начала последней пятиминутки

TSec = TimeCurrentl() %  300; // Остаток от деления. Его можно сравнить с 290 = 5 минут - 10 секунд

В случае разрыва связи с сервером компании последнее известное время TimeCurrent меняться не будет, отстанет от реального времени. Если есть уверенность в ходе системного таймера на компьютере с терминалом, например, при автоматической синхронизации времени компьютера с астрономическим средствами операционной системы (погрешность 1-2 секунды) либо иначе, лучше использовать не последнее известное время сервера (время последнего прихода котировок), а время самого компьютера datetime TimeLocal(). Оно также отсчитывается от 1970.01.01 0:00:00 в секундах и годится для измерения 5-ти минут и 10-ти секунд, разница часовых поясов между компьютером и сервером не важна. Тогда

TSec = TimeLocal() %  300;

 
Vlad143:

Тогда проще так:

datetime TSec; // Текущее время в секундах от начала последней пятиминутки

TSec = TimeCurrentl() %  300; // Остаток от деления. Его можно сравнить с 290 = 5 минут - 10 секунд

В случае разрыва связи с сервером компании последнее известное время TimeCurrent меняться не будет, отстанет от реального времени. Если есть уверенность в ходе системного таймера на компьютере с терминалом, например, при автоматической синхронизации времени компьютера с астрономическим средствами операционной системы (погрешность 1-2 секунды) либо иначе, лучше использовать не последнее известное время сервера (время последнего прихода котировок), а время самого компьютера datetime TimeLocal(). Оно также отсчитывается от 1970.01.01 0:00:00 в секундах и годится для измерения 5-ти минут и 10-ти секунд, разница часовых поясов между компьютером и сервером не важна. Тогда

TSec = TimeLocal() %  300;

благодарю, тоже полезно .
 
        Подскажите пожалуйста как прервать суммирование убыточных позиций
    Подскажите, пожалуйста, как прервать суммирование убыточных позиций при срабатывании Тейкпрофита. После заново считать.
    
    Использую функцию Кimа 
    
     double GetProfitFromDateInCurrency(string sy="", int op=-1, int mn=-1,  datetime dt=0)
{
  p=0;
  int    i, k=OrdersHistoryTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (mn<0 || OrderMagicNumber()==mn) {
            if (dt<OrderCloseTime()) {
             
             if(OrderProfit()<0){
              p+=OrderProfit();
            }
          }
        }
      }
    }
  }
 }
  
  return(p);
 
 
Neron_plus34:
        Подскажите пожалуйста как прервать суммирование убыточных позиций  
if(dt<OrderCloseTime()) {
   if(OrderProfit()<0) p+=OrderProfit(); 
   else break;
   }
 
artmedia70:

А вот тут нужно уже конкретно понимать что именно вы хотите перерисовать.

Вполне может быть придётся полностью пересчитать все буферы индикатора.
Нужно экспериментировать с поведением индикатора, и его реакцией на внешнее изменение его внутренних переменных.

Честно говоря, никогда этого не пробовал (не..., ну вру конечно, делал, и много раз делал индикаторы, реагирующие на события, и рисующие то, что требуется. Но я изначально использовал для отрисовки буферов не стандартный подход). Сделайте тестовый индикатор, который что-то рисует (да хоть пару-тройку точек на экране на ближайших барах), и попробуйте через события менять значение его буфера. Если оно будет меняться - это один путь к работе над вашим индикатором, если не будет - тут уже совсем иной подход продумывать нужно. Может быть придётся все расчёты в таймер перенести, или прямо в OnChartEvent() делать один цикл перерасчёта после обнаружения нужного события...

Короче - эксперименты нужны...

Спасибо!

 
artmedia70:

     Почему-то появление Тейкпрофита не прерывает суммирование. Считает все минуса в истории.