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

 
m8akca:

ВОЗМОЖНО ЛИ запрограммировать данный алгоритм. Голова кипит третью неделю! 

Добрый день! Пытаюсь запрограммировать алгоритм, работает но не до конца не открывает ордер sell при сравнении цен. Помогите голова кипит уже третью неделю! Код не буду свой скидавать потому что уже как только не пробовал писать все не получается уже каша в кодах. Прошу скажите возможно ли осуществить данную программу? И если не затруднит скинте код буду очень благодарен!!!

Программа: Открывается ордер Buy, берем цену открытия ордера Buy и сравниваем ее с ценой Bid и в том случае когда цена открытия ордера Buy будет равна цене Bid открывается ордер Sell по цене открытия ордера Buy.

Запрограммировать можно почти всё, а этот алгоритм тем-более.

Только вот одна проблема в алгоритме (выделено жирным), может так случиться, что не будет равна очень долго (может несколько лет). Поэтому в данном случае надо ставить условие проверки не равно ==, а равно или больше =>. При этом после открытия ордера надо запретить открытие следующих ордеров, от которых и кипит голова.

 
AlexeyVik:

Запрограммировать можно почти всё, а этот алгоритм тем-более.

Только вот одна проблема в алгоритме (выделено жирным), может так случиться, что не будет равна очень долго (может несколько лет). Поэтому в данном случае надо ставить условие проверки не равно ==, а равно или больше =>. При этом после открытия ордера надо запретить открытие следующих ордеров, от которых и кипит голова.

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

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

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;
   }
Причина обращения: