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

 

Где ошибка, не знаю.

Оп.

Файлы:
5system2.mq4  8 kb
 
CJIeCaPb:

Где ошибка, не знаю.

Оп.

Что-то не так в цикле while(O==3)

 
CJIeCaPb:

Что-то не так в цикле while(O==3)

Фух... Все, разобрался. После закрытия удаляется тикет и нужно ордер заново перебирать
 
Здравствуйте! Такая проблема, не могу открыть файл. Пробовал разные расширения файлов, бесполезно, просто выдает: ошибка 5004. Файл находится в файловой песочнице. Все дело в handle, но не имею представления почему. Вот код:
   int filehandle=FileOpen("test.txt",FILE_TXT|FILE_WRITE,";");
   if(filehandle<0)
   Alert("ошибка ",GetLastError());                          //Для проверки handle

 
 int filehandle=FileOpen("test.txt",FILE_WRITE|FILE_TXT,";");
 
evillive:
Пробовал без разделителя - бесполезно.
 
Kapizdo4ka:
Здравствуйте! Такая проблема, не могу открыть файл. Пробовал разные расширения файлов, бесполезно, просто выдает: ошибка 5004. Файл находится в файловой песочнице. Все дело в handle, но не имею представления почему. Вот код:

Не пробовали указать что файл находится в общей папке

 

Флаги открытия файлов

Значения флагов, определяющих режим работы с файлом. Флаги определены следующим образом:

Идентификатор

Значение

Описание

FILE_READ

1

Файл открывается для чтения. Флаг используется при открытии файлов (FileOpen()). При открытии файла обязательно должен быть указан флаг FILE_WRITE и/или флаг FILE_READ

FILE_WRITE

2

Файл открывается для записи. Флаг используется при открытии файлов (FileOpen()). При открытии файла обязательно должен быть указан флаг FILE_WRITE и/или флаг FILE_READ

FILE_BIN

4

Двоичный режим чтения-записи (без преобразования из строки и в строку). Флаг используется при открытии файлов (FileOpen())

FILE_CSV

8

Файл типа csv (все записанные элементы преобразуются к строкам соответствующего типа, unicode или ansi, и разделяются разделителем). Флаг используется при открытии файлов (FileOpen())

FILE_TXT

16

Простой текстовый файл (тот же csv, однако разделитель не принимается во внимание). Флаг используется при открытии файлов (FileOpen())

FILE_ANSI

32

Строки типа ANSI (однобайтовые символы). Флаг используется при открытии файлов (FileOpen())

FILE_UNICODE

64

Строки типа UNICODE (двухбайтовые символы). Флаг используется при открытии файлов (FileOpen())

FILE_SHARE_READ

128

Совместный доступ по чтению со стороны нескольких программ. Флаг используется при открытии файлов (FileOpen()), но не заменяет при открытии файла необходимости указать FILE_WRITE и/или флаг FILE_READ

FILE_SHARE_WRITE

256

Совместный доступ по записи со стороны нескольких программ. Флаг используется при открытии файлов (FileOpen()), но не заменяет при открытии файла необходимости указать FILE_WRITE и/или флаг FILE_READ

FILE_REWRITE

512

Возможность перезаписывания файла функциями FileCopy() и FileMove(). Файл должен существовать или открываться для записи. В противном случае файл открыт не будет

FILE_COMMON

4096

Расположение файла в общей папке всех клиентских терминалов \Terminal\Common\Files. Флаг используется при открытии файлов (FileOpen()), копировании файлов (FileCopy(), FileMove()) и проверке существования файлов (FileIsExist())

При открытии файла можно указать один или более флагов, такое сочетание называется комбинацией флагов. Комбинация флагов записывается с помощью знака операции логического ИЛИ (|), который ставится между перечисляемыми флагами. Например, чтобы открыть файл в формате CSV одновременно на чтение и на запись, можно указать комбинацию FILE_READ|FILE_WRITE|FILE_CSV. 

 
Vinin:

Не пробовали указать что файл находится в общей папке

 

Флаги открытия файлов

Значения флагов, определяющих режим работы сфайлом. Флаги определены следующим образом:

Идентификатор

Значение

Описание

FILE_READ

1

Файл открывается для чтения. Флагиспользуется при открытии файлов (FileOpen()). При открытии файла обязательно должен бытьуказан флаг FILE_WRITE и/или флаг FILE_READ

FILE_WRITE

2

Файл открывается для записи. Флагиспользуется при открытии файлов (FileOpen()). При открытии файла обязательно должен бытьуказан флаг FILE_WRITE и/или флаг FILE_READ

FILE_BIN

4

Двоичный режим чтения-записи (безпреобразования из строки и в строку). Флаг используется при открытии файлов (FileOpen())

FILE_CSV

8

Файл типа csv (все записанныеэлементы преобразуются к строкам соответствующего типа, unicode или ansi, иразделяются разделителем). Флаг используется при открытии файлов (FileOpen())

FILE_TXT

16

Простой текстовый файл (тот жеcsv, однако разделитель не принимается во внимание). Флаг используется приоткрытии файлов (FileOpen())

FILE_ANSI

32

Строки типа ANSI (однобайтовыесимволы). Флаг используется при открытии файлов (FileOpen())

FILE_UNICODE

64

Строки типа UNICODE (двухбайтовыесимволы). Флаг используется при открытии файлов (FileOpen())

FILE_SHARE_READ

128

Совместный доступ по чтению состороны нескольких программ. Флаг используется при открытии файлов (FileOpen()), но не заменяет при открытиифайла необходимости указать FILE_WRITE и/или флаг FILE_READ

FILE_SHARE_WRITE

256

Совместный доступ по записи состороны нескольких программ. Флаг используется при открытии файлов (FileOpen()), но не заменяет при открытиифайла необходимости указать FILE_WRITE и/или флаг FILE_READ

FILE_REWRITE

512

Возможность перезаписывания файлафункциями FileCopy() и FileMove(). Файл должен существовать илиоткрываться для записи. В противном случае файл открыт небудет

FILE_COMMON

4096

Расположение файла в общей папкевсех клиентских терминалов \Terminal\Common\Files. Флаг используется при открытии файлов (FileOpen()), копировании файлов (FileCopy(), FileMove()) и проверке существования файлов (FileIsExist())

При открытии файла можно указать один илиболее флагов, такое сочетание называется комбинацией флагов. Комбинация флаговзаписывается с помощью знака операции логического ИЛИ (|), который ставитсямежду перечисляемыми флагами. Например, чтобы открыть файл в формате CSVодновременно на чтение и на запись, можно указать комбинациюFILE_READ|FILE_WRITE|FILE_CSV. 

Спасибо! Однако ответ оказался намного проще. Все из-за изменений в новом билде. Оказывается, теперь для ф-ции FileOpen нужно указывать тип uint, а не int, как в прошлой версии. Вот так: 
uint filehandle=FileOpen(filename,FILE_TXT||FILE_WRITE,"\r\n");

И теперь ф-ция в случае ошибки возвращает не -1, а 0.

 

Набросал простой Треллинг стоп. bez_Level - уровень начала Треллинга в пунктах. TrallStep - шаг треллинга. Magic - число мэджик.

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

 

int lim=OrdersTotal()-1;

      for(int i=lim; i>=0; i--)
        {
         if(bez_Level>0) 
           {
            if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
              {
               if(OrderType()==OP_SELL) 
                 {
                  if((OrderOpenPrice()-Ask)>(Point*bez_Level))
                    {
                      if((OrderStopLoss()>(Ask+Point*bez_Level)+(Point*TrallStep)) || (OrderStopLoss()==0))
                       {
                        //--- modify order and exit
                        if(!OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*bez_Level,OrderTakeProfit(),0))
                           Print("Ошибка Траллинга ",GetLastError());
                       }
                    }
                 }
               if(OrderType()==OP_BUY) 
                 {
                  if((Bid-OrderOpenPrice()>Point*bez_Level))
                    {
                     if(OrderStopLoss()<Bid-(Point*bez_Level)-(Point*TrallStep))
                       {
                        //--- modify order
                        if(!OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*bez_Level,OrderTakeProfit(),0))
                           Print("Ошибка Траллинга ",GetLastError());
                                                  }
                    }

                 }

              }
           }
        }
 

Ребята, в чём фишка? Почему не выходит из Инита?

ПОЧЕМУ НЕТ ВХОДА В СТАРТ?????????

int init()
 {
   if(init_data()==false)error=true;
   if(error==false)load_data();
   if(error==false)count_data();
   //if(error==true)Print("---------->>>>>>> ERORR!!! <<<<<<<<<--------------");
   setparam();
   Print ("Инит завершён успешно");
   return (0);
 }

int start()
{
  // if(iTime(Symbol(),0,0) == prevtime) return(0);    //ждем нового бара
 //  prevtime = iTime(Symbol(),0,0);                   //если появился новый бар , включаемся    
   Print (" Старт после нового бара"); 
...
      
Причина обращения: