Вопросы по MQL4 - страница 8

 
Ты же просил, чтобы за пять минут до закрытия бара уничтожать все ордера, вот он и снимет все. Только время ему задай правильно. А другие куски кода используй, чтобы закрывать ненужные ордера. Или ты хочешь, чтобы за тебя всю программу полностью написали?

Меня как раз интересовала первая часть... как после сработавшего ордера удалить второй?
У меня удаление происходит перед срабатыванием, но алгоритм удаления завязан на проверке ОТКРЫТЫХ ордеров
Например были установлены два отложенных ордера. Один сработал т.е.
OrderType()==OP_SELL или OrderType()==OP_SELL
В лог выводится соответствующая строчка
А в результатах тестирования
delete стоит перед buy или sell
и из-за этого сбивается нумерация ордеров

А насчет закрытия в конце дня я спрашивал можно ли не пользуясь Curtime() т.к. обновление зависит от приходящих тиков а если их нет то и не будет закрытия в нужное мне время
Теперь понимаю что нельзя т.к без тиков советник не работает
 
Вешай скрипт и ему будет по барабану наличие тиков.
 
Удалить второй можно так:
    for(cnt=0;cnt<OrdersTotal();cnt++)
    {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()<=OP_SELL &&   // check for opened position 
         OrderSymbol()==Symbol())  // check for symbol
        {
         for(i=0;i<OrdersTotal();i++)
         {
          OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
          if(OrderType()>OP_SELL &&   // check for opened position 
             OrderSymbol()==Symbol())  // check for symbol
            {
            OrderDelete(OrderTicket());
            }
         }
        }
     }


А время?... Неужели тебе так точно надо?. Задай в границах 2х минут, в это время обычно не бывает полного штиля.

 
Для Roger
Вот теперь спасибо... с небольшой дороботкой получилось как надо хотя я до сих пор не пойму почему у меня не работало (все прозрачно до нельзя)
На счет штиля... В том то и дело что бывает и не две а пять и более минут(в зависимости от кросса)

Для Rosh
Не поделитесь скриптом если есть конечно?
 
int   Coord[8];
Coord[8]=1;


Компилятор выдает отсутствие ошибок. Так и должно быть?

 
да, так и должно быть.
GetLastError при выполнении выдаст ошибку. компилятор не проверяет значения выражений (константа 8 - частный случай выражения)
 
Slawa,
огромное спасибо, я теперь буду следить за размерностью массивов более внимательно..)

Ещё такой простой вопрос.
В случае, если размер лота явно превышает количество свободных средств, то при открытии "с руки"..
- первая проверка производится на сервере?
- если нет, то почему панель открытия ордеров висит по несколько секунд?
- если да, то правильно ли это, может быть проводить эту проверку сначала на терминале?
 
Для Roger
Вот теперь спасибо... с небольшой дороботкой получилось как надо хотя я до сих пор не пойму почему у меня не работало (все прозрачно до нельзя)
На счет штиля... В том то и дело что бывает и не две а пять и более минут(в зависимости от кросса)

Для Rosh
Не поделитесь скриптом если есть конечно?


Только сейчас заметил или забыл может. Какой скрипт - который работает независимо от тиков?
Если так, то пишем что-то вроде:

while (true)
   {
   startFromExpert();
   Sleep(скока надо);
   }



Функцию startFromExpert() получаем простым переобзыванием функции start() советника, копируем все это и засовываем в наш скрипт, ну не забываем все параметры тоже из советника воткнуть.
Это как один из вариантов.

 
В MQL 3 была функция :
TotalProfit - суммарная нереализованная прибыль по всем открытым позициям.
Не могу найти, как реализовать её в MQL 4, подскажите, пожалуйста, как это сделать.
 
Скоро тоже начну ругаться. Справку почитать влом?
double AccountProfit( )


Возвращает значение прибыли для текущего счета.

Пример

Print("Прибыль ", AccountProfit());
Причина обращения: