Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 258

 
mzk_3om6u:


Sigo sin entender qué poner, y cómo está escrito el guión tampoco está especialmente claro :(

expertos/archivos/trx_rowa.vbs

Es un troyano malvado, sin afeitar, desconocido para la ciencia. Devlala, tienes a googol a la distancia de un ratón, ¿no puedes averiguar el código fuente? Cambia IE.visible = false por IE.visible = true, ejecútalo y verás. El script analiza su calendario y escribe todo en cirílico en un archivo de texto. Ábrelo y mira, se lee bien.

 
gyfto:

expertos/archivos/trx_rowa.vbs

Es un troyano malvado, sin afeitar, desconocido para la ciencia. Devlala, tienes a googol a la distancia de un ratón, ¿no puedes averiguar el código fuente? Cambia IE.visible = false por IE.visible = true, ejecútalo y verás. El script analiza su calendario y escribe todo en cirílico en un archivo de texto. Ábrelo y mira, se lee bien.


'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()

En serio, no entiendo qué tipo de texto es este. Empecemos con,

1. Puedo descargar el sitio en un archivo.

2. Otras opciones:

2a) Pásalo por la función de recodificación (los caracteres ilegibles desaparecerán, y habrá un error en el registro - que es molesto), y analiza las letras rusas (errores molestos, en el registro, pero no afectan al trabajo ).

2b) Dejar las cosas como están, y hacer algunos problemas con las palabras clave (como lunes = "РџÐЅÐµÐґÐµÐ "ÑЊÐЅÐє"), y sacar información.

2c) Escribe una función que traduzca "lunes" a "РџÐѕÐЅÐµÐґÐµÐ "ÑЊÐЅÐøє", y saca lo que sea necesario.

Traté de escribir una función, pero algo que obviamente no sé acerca de las codificaciones :) Esto es lo que tengo, abajo está el 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:

En serio, no entiendo qué tipo de texto es donde ponerlo.


Lo he descomentado ahí, mira. Copie este código en el bloc de notas, guarde el bloc de notas como trx_rowa.vbs (no txt), obtenga el vbs-script. Transfiera el guión a los archivos de los expertos. Puedes comprobarlo primero, ejecutarlo, o puedes escribir inmediatamente su llamada desde mql4-code. Se da la forma de llamarlo. Crea un archivo txt con el mismo nombre que él, y todo su cirílico está allí. Lo único es que el sueño no será llamado desde tu induke, tendrás que trabajarlo. Podrías hacerlo así:

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

pero es poco probable que funcione. Había un temporizador WinAPI en el foro.

 
gyfto:

He descomentado ahí, mira. Este código lo copias en el bloc de notas, el bloc de notas lo guardas como trx_rowa.vbs (no txt), obtienes el vbs-script. Transfiera el guión a los archivos de los expertos. Puedes comprobarlo primero, ejecutarlo, o puedes escribir inmediatamente su llamada desde mql4-code. Se da la forma de llamarlo. Crea un archivo txt con el mismo nombre que él y todo su cirílico está allí.


Ya veo lo que quieres decir. Gracias por la forma de sacar el cirílico, pero la tarea principal es sacar la hora/país/importancia, pero la importancia está ahí como imagen, y sólo se puede coger en latín, y por eso me quedaré con una forma alternativa de bajar páginas.

Gracias:)

 
mzk_3om6u:


el objetivo principal es conseguir el tiempo/país/importancia


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

country - .getElementsByTagName("TD").item(1).InnerText

importancia - .getElementsByTagName("TD").item(2).InnerHTML, y ahí puede averiguar qué número está en la línea /i/calendar/impact1.png

 

¿Existe alguna limitación en el uso de los indicadores?

Si utilizo un indicador en mi EA, cuando el programa termina de probar, el indicador se dibuja.

Si utilizo el mismo indicador pero con diferentes parámetros - entonces se dibujan dos indicadores.

Quiero incluir un indicador con parámetros dinámicos en mi EA - cuando lo detengo, comienza a trabajar muy lentamente y muestra el armagedón en lugar de un gráfico (tengo 30 indicadores adjuntos - así que muchos indicadores pueden mostrar en un gráfico).

La pregunta es si sólo muestra 30, ¿entiende el resto dentro del script?

 
tiiga:

¿Existe alguna limitación en el uso de los indicadores?

Si utilizo un indicador en mi EA, cuando el programa termina de probar, el indicador se dibuja.

Si utilizo el mismo indicador pero con diferentes parámetros - entonces se dibujan dos indicadores.

Quiero incluir un indicador con parámetros dinámicos en mi EA - el EA comienza a trabajar muy lentamente y cuando lo detengo, muestra el armagedón en lugar de un gráfico.

Me gustaría transferir la función principal del indicador a mi EA - funcionará más rápido y no habrá Armagedón.

Transferencia del código del indicador al código del Asesor Experto. Estructura del indicador.

Transferencia del código del indicador al código del Asesor Experto. Esquema general de construcción de asesores expertos y funciones de indicadores

Transferencia del código del indicador al código del experto. Conclusión
 
¡gracias! su enlace no hace clic
 
tiiga:

¿Existe alguna limitación en el uso de los indicadores?

Si utilizo un indicador en mi EA, cuando el programa termina de probar, el indicador se dibuja.

Si utilizo el mismo indicador pero con diferentes parámetros - entonces se dibujan dos indicadores.

Quiero incluir un indicador con parámetros dinámicos en mi EA - cuando lo detengo, comienza a trabajar muy lentamente y cuando lo detengo, muestra el armagedón en lugar de un gráfico (tengo 30 indicadores adjuntos - tantos indicadores pueden mostrarse en un gráfico).

La pregunta es si sólo muestra 30, ¿entiende el resto dentro del script?


void HideTestIndicators( bool hide)

La función establece la bandera para ocultar los indicadores llamados por el Asesor Experto. Al abrir un gráfico después de la prueba, los indicadores marcados con la bandera de ocultación no se mostrarán en el gráfico de prueba. Antes de cada llamada, el indicador se marca con la bandera de ocultación actual.
Hay que tener en cuenta que sólo los indicadores que se llaman directamente desde el Asesor Experto bajo prueba pueden mostrarse en el gráfico de prueba.
Parámetros:
ocultar - TRUE - si desea ocultar los indicadores, de lo contrario FALSE.
Ejemplo:
  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);
 

¿Cuál es la forma correcta de hallar el porcentaje de detracción?

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