Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 258

 
mzk_3om6u:


Eu ainda não entendo o que colocar, e como o roteiro é escrito também não é particularmente claro :(

especialistas/arquivos/trx_rowa.vbs

É um troiano maléfico, não barbeado, desconhecido para a ciência. Devlala, você tem googol à distância de um mouse, você não consegue descobrir o código fonte? Mudar IE.visible = falso para IE.visible = verdadeiro, execute-o e veja. O roteiro analisa seu calendário e escreve tudo em cirílico em um arquivo de texto. Abra-o e veja, ele lê bem.

 
gyfto:

especialistas/arquivos/trx_rowa.vbs

É um troiano maligno, não barbeado, desconhecido para a ciência. Devlala, você tem googol à distância de um mouse, você não consegue descobrir o código fonte? Mudar IE.visible = falso para IE.visible = verdadeiro, execute-o e veja. O roteiro analisa seu calendário e escreve tudo em cirílico em um arquivo de texto. Abra-o e veja, está bom.


'On Error Resume Next
Dim IE : Set IE = WSCript.CreateObject("InternetExplorer.Application")
Dim objFSO : Set objFSO = CreateObject("Scripting.FileSystemObject")
Dim fTxtName : fTxtName = Left(WSCript.ScriptFullName,len(WSCript.ScriptFullName)-3) & "txt"
Set TxtFile = objFSO.OpenTextFile(fTxtName, 2, True)'открываем файл для записи
IE.visible = false' браузер в фоновом режиме
IE.navigate "http://www.fxteam.ru/forex/economic-calendar/2013_49.html"
Do While IE.Busy
        WSCript.Sleep 500
loop
Do While IE.document.getElementsByClassName("tr1 rowa").Item(0).getElementsByTagName("TD").Item(4) is Nothing' пока этот элемент страницы не загрузится
        WSCript.Sleep 500' будем ждать загрузки страницы
loop
Set tr1_rowa = IE.document.getElementsByClassName("tr1 rowa")
For i = 0 to tr1_rowa.length - 1
        TxtFile.WriteLine tr1_rowa.Item(i).getElementsByTagName("TD").Item(4).InnerText
Next
Set tr0_rowa = IE.document.getElementsByClassName("tr0 rowa")
For i = 0 to tr0_rowa.length - 1
        TxtFile.WriteLine tr0_rowa.Item(i).getElementsByTagName("TD").Item(4).InnerText
Next
Set IE = Nothing' закрываем браузер
TxtFile.Close
WSCript.Quit()

Eu realmente não entendo que tipo de texto é este. Vamos começar com,

1. Eu posso baixar o site em um arquivo.

2. Outras opções:

2a) Execute-o através da função de recodificação (caracteres ilegíveis desaparecerão, e haverá um erro no registro - o que é irritante), e analise as letras russas (erros irritantes, no registro, mas que não afetam o trabalho ).

2b) Deixar as coisas como estão, e criar alguns problemas com palavras-chave (como segunda-feira = "РџÐЅÐµÐґÐµÐ "ÑЊÐЅÐє"), e obter informações.

2c) Escreva uma função que traduz "segunda-feira" para "РџÐѕÐЅÐµÐґÐµÐ "ÑЊÐЅÐøє", e retire o que for necessário.

Tentei escrever uma função, mas algo que eu obviamente não sei sobre codificações :) Aqui está o que eu tenho, abaixo está o original.

string win_utf8(string s) { 
   string outputi = "";
   string other1 = "Ё";
   string other2 = "ё";
   string other3 = "Є";
   string other4 = "є";
   string other5 = "I";
   string other6 = "i";
   string other7 = "Ї";
   string other8 = "ї";
   for (int i = 0; i < StringLen(s); i++)
   {
      if (StringGetChar(s,i) > 191) 
      {
         int output=StringGetChar(s,i)+848;
      }
         else 
         {
            if (StringSubstr(s,i,1) != other1)output=StringGetChar(s,i);
            else output=1025; 
            if (StringSubstr(s,i,1) != other2)output=StringGetChar(s,i);
            else output=1105; 
            if (StringSubstr(s,i,1) != other3)output=StringGetChar(s,i);
            else output=1028; 
            if (StringSubstr(s,i,1) != other4)output=StringGetChar(s,i);
            else output=1108; 
            if (StringSubstr(s,i,1) != other5)output=StringGetChar(s,i);
            else output=1030; 
            if (StringSubstr(s,i,1) != other6)output=StringGetChar(s,i);
            else output=1110; 
            if (StringSubstr(s,i,1) != other7)output=StringGetChar(s,i);
            else output=1031; 
            if (StringSubstr(s,i,1) != other8)output=StringGetChar(s,i);
            else output=1111; 
            }
   outputi=outputi+StringSetChar("",0,output);
   }
   
   return (outputi);
}
function win_utf8($in_text) { 
   $output = "";
   $other[1025] = "Ё";
   $other[1105] = "ё";
   $other[1028] = "Є";
   $other[1108] = "є";
   $other[1030] = "I";
   $other[1110] = "i";
   $other[1031] = "Ї";
   $other[1111] = "ї";
   for ($i = 0; $i < strlen($in_text); $i++){
      if (ord($in_text{$i}) > 191) {
         $output.="&#".(ord($in_text{$i})+848).";";
      }else {
         if (array_search($in_text{$i}, $other)===false){
            $output.=$in_text{$i};
         }else {
            $output.="&#".array_search($in_text{$i}, $other).";";
         }
      }
   }
   return $output;
}
 
mzk_3om6u:

Eu realmente não entendo que tipo de texto é onde colocá-lo.


Eu não o comentei lá, veja. Copie este código para o bloco de notas, salve o bloco de notas como trx_rowa.vbs (não txt), obtenha o vbs-script. Transferir o roteiro para arquivos de especialistas. Você pode verificá-lo primeiro, executá-lo ou pode imediatamente escrever sua chamada a partir do código mql4. Como chamá-lo é dado. Ele cria um arquivo txt com o mesmo nome, e todo o seu cirílico está lá. A única coisa é que o sono não será chamado de seu induke, você terá que resolver isso. Você poderia fazer isso assim:

datetime myTimer = TimeCurrent() + 60;
while(TimeCurrent() < myTimer){}
//дальше код...

mas é pouco provável que funcione. Havia um cronômetro WinAPI no fórum.

 
gyfto:

Eu não comentei lá, veja. Este código você copia para notepad, notepad salvo como trx_rowa.vbs (não txt), recebe vbs-script. Transferir o roteiro para arquivos de especialistas. Você pode verificá-lo primeiro, executá-lo ou pode imediatamente escrever sua chamada a partir do código mql4. Como chamá-lo é dado. Ele cria um arquivo txt com o mesmo nome que ele e todo o seu cirílico está lá.


Entendo seu ponto de vista! Obrigado pela maneira de retirar o Cirílico, mas a tarefa principal é obter o tempo/país/importância, mas a importância está lá como uma imagem, e só pode ser capturada em latim, e por isso vou manter uma maneira alternativa de baixar páginas.

Obrigado:)

 
mzk_3om6u:


o objetivo principal é obter o tempo/país/importância


Tempo - .getElementsByTagName("TD").item(0).InnerText

país - .getElementsByTagName("TD").item(1).InnerText

importância - .getElementsByTagName("TD").item(2).InnerHTML, e lá você pode descobrir qual número está na linha /i/calendar/impact1.png

 

Existe alguma limitação no uso de indicadores?

Se eu usar um indicador em minha EA, então quando o programa terminar os testes, o indicador é desenhado.

Se eu usar o mesmo indicador mas com parâmetros diferentes - então dois indicadores são desenhados.

Quero incluir um indicador com parâmetros dinâmicos em minha EA - quando eu o paro, ele começa a funcionar muito lentamente e exibe o armageddon em vez de um gráfico (tenho 30 indicadores anexados - assim muitos indicadores podem ser exibidos em um gráfico).

A questão é se ele exibe apenas 30 - ele entende o resto dentro do roteiro?

 
tiiga:

Há alguma limitação no uso de indicadores?

Se eu usar um indicador em minha EA, então quando o programa terminar os testes, o indicador é desenhado.

Se eu usar o mesmo indicador mas com parâmetros diferentes - então são desenhados dois indicadores.

Quero incluir um indicador com parâmetros dinâmicos em minha EA - a EA começa a funcionar muito lentamente e quando eu a paro, ela mostra o armageddon em vez de um gráfico.

Eu gostaria de transferir a função principal do indicador para minha EA - ele funcionará mais rápido e não haverá nenhum Armagedom.

Transferência do código indicador para o código Expert Advisor. Estrutura do indicador.

Transferência do código indicador para o código Expert Advisor. Esquema Geral de Construção de Conselheiros Especializados e Funções Indicadoras

Transferência de código indicador para código de especialista. Conclusão
 
obrigado! seu link não está clicando
 
tiiga:

Existe alguma limitação no uso de indicadores?

Se eu usar um indicador em minha EA, então quando o programa terminar os testes, o indicador é desenhado.

Se eu usar o mesmo indicador mas com parâmetros diferentes - então são desenhados dois indicadores.

Quero incluir um indicador com parâmetros dinâmicos em minha EA - quando eu o paro, ele começa a funcionar muito lentamente e exibe o armageddon em vez de um gráfico (tenho 30 indicadores anexados - assim muitos indicadores podem ser exibidos em um gráfico).

A questão é se ele exibe apenas 30 - ele entende o resto dentro do roteiro?


void HideTestIndicators( bool hide)

A função estabelece uma bandeira para ocultar indicadores chamados pelo Conselheiro Especialista. Ao abrir um gráfico após o teste, os indicadores marcados com a bandeira de couro não serão exibidos no gráfico de teste. Antes de cada chamada, o indicador é marcado com a bandeira oculta atual.
Deve-se observar que somente os indicadores que são chamados diretamente do Consultor Especialista em teste podem ser mostrados no gráfico de teste.
Parâmetros:
esconder - VERDADEIRO - se você quiser esconder indicadores, caso contrário FALSO.
Exemplo:
  HideTestIndicators(true); MaCurrent=iMA(NULL,0,56,0,MODE_EMA,PRICE_CLOSE,0); MaPrevious=iMA(NULL,0,56,0,MODE_EMA,PRICE_CLOSE,1); HideTestIndicators(false);
 

Qual é a maneira correta de encontrar a porcentagem de drawdown?

(DoubleToStr(AccountBalance(), 2) - DoubleToStr(AccountFreeMargin(), 2)) * 100