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

 

как закрыть ордер по закрытию бара или свечи

int start()
  {
      if ((Time[0] == prevtime) && openbarspriceonly) {
      return(0);
      }
   
      if (! IsTradeAllowed()) {
      Comment("Trades disallow");
      return(0);
      }
   
      prevtime = Time[0];

    if (CountTrades() == 0)
    {
        open = iOpen(Symbol(), PERIOD_D1, 0);
        close = iClose(Symbol(), PERIOD_D1, 1);

     if (DayOfWeek()==1&& Ask >= open)
     { 
        ticket = OrderSend(Symbol(), OP_BUY, lots, Ask, Slippage, 0, 0, NULL, Magic, 0, Blue);
        if (ticket>0)
        {
          Print("Ордер ошибка в Лонг: ", GetLastError());
        }
        else 
           Print("Ордер открыт успешно");
        if(OrderSelect( ticket, SELECT_BY_POS))
        {
          if(OrderClose(ticket, lots, close,Slippage,0))
          return(0);
        }
     }
     if (DayOfWeek()==5&& Bid <= open)
     {
        ticket = OrderSend(Symbol(), OP_SELL, lots, Bid, Slippage, 0, 0, NULL, Magic, 0, Red);
        if (ticket>0)
        {
          Print("Ордер ошибка в Шорт ", GetLastError());
        }
        else 
           Print("Ордер открыт успешно");
        if(OrderSelect( ticket, SELECT_BY_POS))
        {
          if(OrderClose(ticket, lots, close,Slippage,0))
          return(0);
        }

     }
    }
    return(0);
  }
 
ikatsko:

В тестере стратегий команда MarketInfo(Symbol(),MODE_TICKVALUE) = 0 (!) Это происходит в ситуациях, когда, например, инструмент EURUSD а валюта баланса RUR     .... и в других сочетаниях. Я понял так, что валюта баланса должна совпадать с именем второй валюты в валютной паре. Иначе коменда дает значение НОЛЬ (в тестере стратегий) В результате невозможно проводить тестирование в желаемых сочетаниях. Как решить эту проблему?

 

Выделенное неверно! У меня расчёт производится в евро с EURUSD, GBPUSD и др. Только при включении может дать 0, пока не поступили первые данные, поэтому перед вычислениями с TICKVALUE ставлю условие, что если != 0; 

А в тестере MarketInfo() может не работать, поэтому зная примерную цену тика проставляю её с условием IsTesting() || IsOptimization() || IsVisualMode().

 

 "зная примерную цену тика" ? Решение принял такое: примерная цена тика = 10*КурсВалютнойПары (USDВалютаБаланса). Ставится во вх параметрах. Конечно, было бы хорошо, если бы КурсВалютнойПары (USDВалютаБаланса) можно было бы взять в терминале автоматически. А именно, зная валюту баланса (AccountInfoString(ACCOUNT_CURRENCY)), например, RUR, сформировать строку имени символа, например, USDRUR. Посмотреть, имеется ли в терминале такой символ? Может есть подобный, например, USDRUR_c ? Взять в работу КурсВалютнойПары которая имеется в наличии.

 
artmedia70:
А Виста тут при чём? Мышь, мышь уже сдыхает. Скоро протухнет ;)
У меня нотбук без мышки, не как раньше с большим компом от мышки указательный палец болел! 
 
ikatsko:

В тестере стратегий команда MarketInfo(Symbol(),MODE_TICKVALUE) = 0 (!) Это происходит в ситуациях, когда, например, инструмент EURUSD а валюта баланса RUR     .... и в других сочетаниях. Я понял так, что валюта баланса должна совпадать с именем второй валюты в валютной паре. Иначе коменда дает значение НОЛЬ (в тестере стратегий) В результате невозможно проводить тестирование в желаемых сочетаниях. Как решить эту проблему?

 

Выделенное неверно! У меня расчёт производится в евро с EURUSD, GBPUSD и др. Только при включении может дать 0, пока не поступили первые данные, поэтому перед вычислениями с TICKVALUE ставлю условие, что если != 0; 

А в тестере MarketInfo() может не работать, поэтому зная примерную цену тика проставляю её с условием IsTesting() || IsOptimization() || IsVisualMode().

 

 "зная примерную цену тика" ? Решение принял такое: примерная цена тика = 10*КурсВалютнойПары (USDВалютаБаланса). Ставится во вх параметрах. Конечно, было бы хорошо, если бы КурсВалютнойПары (USDВалютаБаланса) можно было бы взять в терминале автоматически. А именно, зная валюту баланса (AccountInfoString(ACCOUNT_CURRENCY)), например, RUR, сформировать строку имени символа, например, USDRUR. Посмотреть, имеется ли в терминале такой символ? Может есть подобный, например, USDRUR_c ? Взять в работу КурсВалютнойПары которая имеется в наличии.

Для меня это не нужно, т.к. во время тестирования цена тика не меняется, как и спред и многое другое. Потому всегда имею на графике любого инструмента MarketInfo(Symbol(),MODE_TICKVALUE), выведенное комментом через любой чартовый индикатор, которым пользуюсь, и проставляю всякий раз его значение в код эксперта перед тестированием.
 
borilunad:
У меня нотбук без мышки, не как раньше с большим компом от мышки указательный палец болел! 

Значит тачпад глючит. На нём же тоже кнопки есть.

Или пальцы уже не те ... :) Но вот никак чё-та не думается, что появившийся "дребезг" - следствие причины ОС

 
artmedia70:

Значит тачпад глючит. На нём же тоже кнопки есть.

Или пальцы уже не те ... :) Но вот никак чё-та не думается, что появившийся "дребезг" - следствие причины ОС

Я не очень в терминах силён, тачпад, "дребезг" ... Хотя тачпад это когда тачка падает?! Но мне это не грозит, нет у меня тачки и не нужна. Мне приятно ходить по прекрасному городу, и когда надо, очень удобный общественный транспорт с хорошими дорогами и без пробок! :)
 
borilunad:
Я не очень в терминах силён, тачпад, "дребезг" ... Хотя тачпад это когда тачка падает?! Но мне это не грозит, нет у меня тачки и не нужна. Мне приятно ходить по прекрасному городу, и когда надо, очень удобный общественный транспорт с хорошими дорогами и без пробок! :)

В Гугле забанили?

Тачпа́д (англ. touchpad — сенсорная площадка), се́нсорная пане́ль — указательное устройство ввода, изобретение относится к автоматике и вычислительной технике и может быть использовано для считывания и ввода в ЭВМ информации, например, символьной, а также информации о координатах положения элементов и деталей, выполненных из магнитного материала, на поверхности сенсорной панели. Сенсорная панель содержит пакет печатных плат. На слоях каждой печатной платы расположены плоские спиральные индуктивно-емкостные элементы, соединенные в последовательные цепочки по строкам и столбцам матрицы. Матрицы всех печатных плат совмещены друг с другом. Между смежными поверхностями печатных плат размещен изоляционный слой. Выходы строк (столбцов) i-печатной платы соединены с входами строк (столбцов) (i+1)-й печатной платы, причем входы строк и столбцов матрицы первой в пакете печатной платы являются входами сенсорной панели, выходами которой являются выходы строк и столбцов матрицы последней в пакете печатной платы. Как и другие указательные устройства, тачпад обычно используется для управления «указателем» путем перемещения пальца по поверхности устройства. Тачпады имеют различные размеры, но обычно их площадь не превышает 50 см². Форма исполнения - чаще всего прямоугольник, но существуют модели и в виде круга.

 

Ребяты подскажите из-за чего может быть глюк, возникший сегодня.

В советнике есть возможность остановки торговли за 15 минут до закрытия рынка в пятницу.

При появлении нового дня советник проверяет, если это пятница, то сегодня перестаем торговать в StringToTime("23:59")-15*60

datetime FinishInFriday;
void OnTick()   {
   datetime cur=TimeCurrent();
   if(PrevDay!=Day()) {                               // при наступлении нового дня
      PrevDay =Day();
      
       if(TimeDayOfWeek(cur)==5) {                    // если сегодня пятница
         FinishInFriday=StringToTime("23:59")-15*60;    // время окончания торговли
         Print("Finish In Friday = ",FinishInFriday);   
       }
   }
   if(TimeDayOfWeek(cur)==5)
      if(cur>FinishInFriday) 
         return;
}

В тестере стратегий эта функция работает правильно, но на реале наблюдаю совсем другую картину - советник перестает торговать с первым тиком при наступлении пятницы. 

Вот принты из журнала экспертов:

Брокер №1, демо:

0 05:59:47.731 Scalper GBPAUDpt,M1: Finish In Friday = 2014.10.23 23:44:00

Брокер №2, реал:

0 03:00:11.999 Scalper EURUSD,M1: Finish In Friday = 2014.10.23 23:44:00

То есть при появлении сегодняшнего дневного бара (24 окт, пятница) на первом же тике советник 

преобразует строку "23:59" во время со вчерашним днем, за место того чтобы присваивать день сегодняшний.

Но если советник перезапустить в пятницу в середине дня, то он корректно определит время завершения работы.

 
tuner:

Ребяты подскажите из-за чего может быть глюк, возникший сегодня.

В советнике есть возможность остановки торговли за 15 минут до закрытия рынка в пятницу.

При появлении нового дня советник проверяет, если это пятница, то сегодня перестаем торговать в StringToTime("23:59")-15*60

В тестере стратегий эта функция работает правильно, но на реале наблюдаю совсем другую картину - советник перестает торговать с первым тиком при наступлении пятницы. 

Вот принты из журнала экспертов:

Брокер №1, демо:

0 05:59:47.731 Scalper GBPAUDpt,M1: Finish In Friday = 2014.10.23 23:44:00

Брокер №2, реал:

0 03:00:11.999 Scalper EURUSD,M1: Finish In Friday = 2014.10.23 23:44:00

То есть при появлении сегодняшнего дневного бара (24 окт, пятница) на первом же тике советник 

преобразует строку "23:59" во время со вчерашним днем, за место того чтобы присваивать день сегодняшний.

Но если советник перезапустить в пятницу в середине дня, то он корректно определит время завершения работы.

А посмотри внимательно.

Если вчерашний день не равен сегодняшнему...

Войдёшь в этот блок только один раз в сутки.

Что-то я сомневаюсь что и в тестере это будет правильно работать.

Посмотри в документации MqlDateTime и TimeToStruct

Простая структура, а работать гораздо удобней чем с такими преобразованиями даты и времени.

 
Vinin:

В Гугле забанили?

Тачпа́д (англ. touchpad — сенсорная площадка), се́нсорная пане́ль — указательное устройство ввода, изобретение относится к автоматике и вычислительной технике и может быть использовано для считывания и ввода в ЭВМ информации, например, символьной, а также информации о координатах положения элементов и деталей, выполненных из магнитного материала, на поверхности сенсорной панели. Сенсорная панель содержит пакет печатных плат. На слоях каждой печатной платы расположены плоские спиральные индуктивно-емкостные элементы, соединенные в последовательные цепочки по строкам и столбцам матрицы. Матрицы всех печатных плат совмещены друг с другом. Между смежными поверхностями печатных плат размещен изоляционный слой. Выходы строк (столбцов) i-печатной платы соединены с входами строк (столбцов) (i+1)-й печатной платы, причем входы строк и столбцов матрицы первой в пакете печатной платы являются входами сенсорной панели, выходами которой являются выходы строк и столбцов матрицы последней в пакете печатной платы. Как и другие указательные устройства, тачпад обычно используется для управления «указателем» путем перемещения пальца по поверхности устройства. Тачпады имеют различные размеры, но обычно их площадь не превышает 50 см². Форма исполнения - чаще всего прямоугольник, но существуют модели и в виде круга.

Как у меня на Висте, а прямоугольная на моей новой 8-ке, которая меня разочаровала своими выкрутасами, невозможно спокойно работать, вдруг всё куда-то улетает, наверно, с мобильников моду взяли, думают, что весь мир живёт только развлечениями! Благодарю за содержательное сообщение (пошутить нельзя?)!
Причина обращения: