[ARQUIVO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 4. - página 431

 
hoz:

A documentação diz que a função iCustom deve ser usada para chamar indicadores de terceiros.

O segundo parâmetro nesta função é o tempo. Se eu tiver este parâmetro em um indicador, e ele será especificado nos parâmetros da função iCustom, há um lugar após o parâmetro do nome para entrar na lista de parâmetros passados pelo indicador.

Portanto. Em qualquer caso, vou passar o parâmetro de tempo do indicador. Se especificarmos o mesmo parâmetro em 2 lugares, não é lógico. Então, qual é a maneira correta de proceder?


Tudo está em ordem. Tudo tem que ser especificado. O segundo parâmetro é o TF onde o indicador está fisicamente ligado, o TF personalizado é onde o indicador leva os dados para o cálculo. Naturalmente, você pode remover o segundo parâmetro do código indicador, se houver lógica nele.
 
Zhunko:
Tudo está em ordem. Tudo deve ser especificado. O segundo parâmetro é o TF onde o indicador está fisicamente ligado, o TF personalizado é onde o indicador leva os dados para o cálculo. Naturalmente, você pode remover o segundo parâmetro do código indicador, se houver lógica nisto.

Estou vendo agora. Obrigado.

Mas os mesmos parâmetros que devem ser definidos no indicador devem ser declarados na EA. Acontece que todos os valores dos parâmetros para o correto trabalho conjunto do indicador e do Expert Advisor devem ser definidos igualmente em ambos os casos?

Se eu tiver inserido as variáveis no iCustom e não as tiver declarado na EA, então, na compilação, a revista declarará que aquelas variáveis que eu entrei não são declaradas.

 
Quem sabe em qual base de código EA posso ver como a função OrderCloseBy() é codificada com todas as tortas. Observei o roteiro de perto no tutorial, mas não consigo descobrir como fazer dele uma função a ser chamada da EA, etc. Talvez você possa me ensinar o que fazer! Obrigado!
 
borilunad:
Quem sabe em qual base de código EA posso ver como a função OrderCloseBy() é codificada com todas as tortas. Observei o roteiro de perto no tutorial, mas não consigo descobrir como fazer dele uma função a ser chamada da EA, etc. Talvez você possa me ensinar o que fazer! Obrigado!

Você já o viu aqui? https://docs.mql4.com/ru/trading/OrderCloseBy
 

É claro que sim! Eu entendo o princípio, mas não funciona, e preciso aproveitar a oportunidade para economizar na propagação. É por isso que eu queria ver exemplos que funcionassem. Estou olhando através da Base de Código, mas até agora sem sucesso. Ninguém usa este fechamento mútuo nestes EAs. Espero encontrá-los montados e não pelos parafusos. Boa noite! Talvez seja mais sábio pela manhã!
 
Você pode me dizer como apagar linhas de tendência, indicadores, etc., em um computador normal no Windows eu fiz isso com o botão direito do mouse depois de selecioná-los, mas no imac não sei como. Também não consigo encontrar como adicionar ouro à lista geral ?
 
Como apagar linhas no IMAC ?
feeje:
Você pode me dizer como apagar linhas de tendência, indicadores, etc., em um computador normal no Windows eu fiz isso com o botão direito do mouse depois de selecioná-los, mas no imac não sei como. E também não consigo encontrar como adicionar ouro à lista comum ?
 

Boa tarde. PESSOAS, RESPOSTAR A PERGUNTA POR FAVOR (3ª vez lançamento). Pergunta sobre um índice de arquivo... Em meu livro MQL4, encontrado na MQL4.community, na seção "Funções Padrão", há um exemplo do script "Operações de Arquivo", que se destina a ler dados de um arquivo e exibir objetos gráficos em uma janela de símbolos:

//--------------------------------------------------------------------
// timetablenews.mq4
// Предназначен для использования в качестве примера в учебнике MQL4.
//--------------------------------------------------------------- 1 --
int start()                            // Спец. функция start
  {
//--------------------------------------------------------------- 2 --
   int Handle,                         // Файловый описатель
       Stl;                            // Стиль вертикальной линии
   string File_Name="News.csv",        // Имя файла
          Obj_Name,                    // Bмя объекта
          Instr,                       // Название валюты
          One,Two,                     // 1я и 2я чать названия инстр.
          Text,                        // Текст описания события
          Str_DtTm;                    // Дата и время события(строка)
   datetime Dat_DtTm;                  // Дата и время события(дата)
   color Col;                          // Цвет вертикальной линии
//--------------------------------------------------------------- 3 --
   Handle=FileOpen(File_Name,FILE_CSV|FILE_READ,";");// Открытие файла
   if(Handle<0)                        // Неудача при открытии файла
     {
      if(GetLastError()==4103)         // Если файла не существует,..
         Alert("Нет файла с именем ",File_Name);//.. извещаем трейдера 
      else                             // При любой другой ошибке..
         Alert("Ошибка при открытии файла ",File_Name);//..такое сообщ
      PlaySound("Bzrrr.wav");          // Звуковое сопровождение
      return;                          // Выход из start()      
     }
//--------------------------------------------------------------- 4 --
   while(FileIsEnding(Handle)==false)// До тех пор, пока файловый ..
     {                                // ..указатель не в конце файла
      //--------------------------------------------------------- 5 --
      Str_DtTm =FileReadString(Handle);// Дата и время события(дата)
      Text     =FileReadString(Handle);// Текст описания события
      if(FileIsEnding(Handle)==true)   // Файловый указатель в конце
         break;                        // Выход из чтения и рисования
      //--------------------------------------------------------- 6 --
      Dat_DtTm =StrToTime(Str_DtTm);   // Преобразование типа данных
      Instr    =StringSubstr(Text,0,3);// Извлекаем первые 3 символа
      One=StringSubstr(Symbol(),0,3);// Извлекаем первые 3 символа
      Two=StringSubstr(Symbol(),3,3);// Извлекаем вторые 3 символа
      Stl=STYLE_DOT;                   // Для всех - стиль пунктир
      Col=DarkOrange;                  // Для всех - цвет такой
      if(Instr==One || Instr==Two)     // А для событий по нашему ..
        {                             // .. финансовому инструменту..
         Stl=STYLE_SOLID;              // .. такой стиль..
         Col=Red;                      // .. и такой цвет верт. линии
        }
      //--------------------------------------------------------- 7 --
      Obj_Name="News_Line  "+Str_DtTm;     // Имя объекта
      ObjectCreate(Obj_Name,OBJ_VLINE,0,Dat_DtTm,0);//Создаем объект..
      ObjectSet(Obj_Name,OBJPROP_COLOR, Col);       // ..и его цвет,..
      ObjectSet(Obj_Name,OBJPROP_STYLE, Stl);       // ..стиль..
      ObjectSetText(Obj_Name,Text,10);              // ..и описание 
     }
//--------------------------------------------------------------- 8 --
   FileClose( Handle );                // Закрываем файл
   PlaySound("bulk.wav");              // Звуковое сопровождение
   WindowRedraw();                     // Перерисовываем объекты
   return;                             // Выход из start()
  }
//--------------------------------------------------------------- 9 --

Abaixo, ao analisar este script no Livro sobre MQL4, a seguinte frase é dada: "se a verificação especificada (as 2 últimas linhas no bloco 5-6) for removida, um objeto extra será criado em tempo de execução. E somente depois disso, a condição de terminação do loop será acionada e o controle será passado para o bloco 8-9".

Eu entendo corretamente? Um ponteiro de arquivo NÃO é INFLOWED BY TEXT SIGNS (por exemplo: text| onde | é um ponteiro de arquivo), mas é um ponteiro COM EXPRESSÃO, por exemplo: text onde k é o caractere "to", k-th é realçado por um ponteiro de arquivo. Isto explica a necessidade de cordas (ver p.164):

      if(FileIsEnding(Handle)==true)   // Файловый указатель в конце
         break;                        // Выход из чтения и рисования
      //--------------------------------------------------------- 6 --

De fato. Na penúltima iteração, após a criação do ÚLTIMO objeto

2007.05.11 18:30;JPY

o ponteiro do arquivo está na posição do último objeto, ou seja

2007.05.11 18:30;JPYFabricação industrial

(onde o é o caractere" o", k é o índice de arquivo). Então, ao passar o controle para o cabeçalho da declaração, a função FileIsEnding(handle) obviamente retornará verdadeiro, porque o ponteiro do arquivo NÃO está no final do arquivo, mas no ÚLTIMO caráter desse arquivo. Então, quando as duas primeiras linhas forem executadas, o ponteiro do arquivo se moverá para o espaço vazio e se não houver linhas

      if(FileIsEnding(Handle)==true)   // Файловый указатель в конце
         break;                        // Выход из чтения и рисования
      //--------------------------------------------------------- 6 --

o script criará um gráfico (isto é, uma linha) com uma descrição vazia e uma coordenada de tempo que corresponde a 0. Isto é o que significa na frase: "se a verificação especificada (as 2 últimas linhas no bloco 5-6) for removida, então um objeto extra será criado em tempo de execução". "

Pergunta: entendo corretamente:

a) a definição de um ponteiro de arquivo;

b) o significado da frase "Se a verificação especificada (as 2 últimas linhas no bloco 5-6) for eliminada, então um objeto extra será criado na execução do programa.E somente depois disso, a condição final do loop será acionada e o controle será passado para o bloco 8-9".

P.S. A fim de não desperdiçar o fórum, obrigado antecipadamente por sua resposta.

 
Você pode me dizer como fechar parte do lucro (por exemplo, 50% de um comércio aberto)?
 
kostural:
Diga-me como fechar parte do lucro (por exemplo: 50% do comércio aberto) ?

Lote = NormalizeDuplo(OrderLots()/2,Digitos);
Razão: