Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 258

 
mzk_3om6u:


Non ho ancora capito cosa mettere, e anche come è scritto lo script non è particolarmente chiaro :(

esperti/files/trx_rowa.vbs

È un trojan malvagio, non rasato, sconosciuto alla scienza. Devlala, hai Googol a portata di mouse, non riesci a capire il codice sorgente? Cambia IE.visible = false a IE.visible = true, eseguilo e vedi. Lo script analizza il tuo calendario e scrive tutto in cirillico in un file di testo. Aprilo e guarda, si legge bene.

 
gyfto:

esperti/files/trx_rowa.vbs

È un trojan malvagio, non rasato, sconosciuto alla scienza. Devlala, hai Googol a portata di mouse, non riesci a capire il codice sorgente? Cambia IE.visible = false a IE.visible = true, eseguilo e vedi. Lo script analizza il tuo calendario e scrive tutto in cirillico in un file di testo. Apritelo e guardate, si legge bene.


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

Davvero non capisco che tipo di testo sia questo. Cominciamo con,

1. Posso scaricare il sito in un file.

2. Altre opzioni:

2a) eseguirlo attraverso la funzione di ricodifica (i caratteri illeggibili spariranno, e ci sarà un errore nel log - che è fastidioso), e analizzare le lettere russe (errori fastidiosi, nel log, ma non influenzano il lavoro ).

2b) Lasciare le cose come sono, e fare qualche problema con le parole chiave (come monday = "РџÐЅÐґÐ "ÑЊÐЅÐє"), e far uscire le informazioni.

2c) Scrivere una funzione che traduca "Lunedì" in "РџÐѕÐЅÐґÐ "ÑЊÐЅÐøє", e tirare fuori ciò che è necessario.

Ho provato a scrivere una funzione, ma qualcosa ovviamente non so sulle codifiche :) Ecco quello che ho ottenuto, sotto c'è l'originale.

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:

Davvero non capisco che tipo di testo sia dove metterlo.


L'ho decommentato lì, vedi. Copiate questo codice in notepad, salvatelo come trx_rowa.vbs (non txt), ottenete il vbs-script. Trasferire lo script in file di esperti. Potete controllarlo prima, eseguirlo, o potete scrivere immediatamente la sua chiamata da mql4-code. Come chiamarlo è dato. Crea un file txt con lo stesso nome di se stesso, e tutto il tuo cirillico è lì. L'unica cosa è che il sonno non sarà chiamato dal tuo induke, dovrai lavorarci tu. Si potrebbe fare così:

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

ma è improbabile che funzioni. C'era un timer WinAPI sul forum.

 
gyfto:

Ho decommentato lì, guarda. Questo codice si copia in notepad, notepad salvare come trx_rowa.vbs (non txt), ottenere vbs-script. Trasferire lo script in file di esperti. Potete controllarlo prima, eseguirlo, o potete scrivere immediatamente la sua chiamata da mql4-code. Come chiamarlo è dato. Crea un file txt con lo stesso nome e tutto il tuo cirillico è lì.


Capisco il tuo punto di vista! Grazie per il modo di tirare fuori il cirillico, ma il compito principale è quello di ottenere il tempo/paese/importanza, ma l'importanza è lì come un'immagine, e può essere colta solo in latino, e quindi terrò un modo alternativo per scaricare le pagine.

Grazie:)

 
mzk_3om6u:


l'obiettivo principale è quello di ottenere il tempo/paese/importanza


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

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

importanza - .getElementsByTagName("TD").item(2).InnerHTML, e lì potete scoprire quale numero è nella linea /i/calendar/impact1.png

 

C'è qualche limitazione nell'uso degli indicatori?

Se uso un indicatore nel mio EA, allora quando il programma finisce il test, l'indicatore viene disegnato.

Se uso lo stesso indicatore ma con parametri diversi - allora vengono disegnati due indicatori.

Voglio includere un indicatore con parametri dinamici nel mio EA - quando lo fermo, inizia a lavorare molto lentamente e quando lo fermo, mostra l'armageddon invece di un grafico (ho 30 indicatori allegati - così tanti indicatori possono essere visualizzati su un grafico).

La domanda è se visualizza solo 30 - capisce il resto all'interno dello script?

 
tiiga:

C'è qualche limitazione nell'uso degli indicatori?

Se uso un indicatore nel mio EA, allora quando il programma finisce il test, l'indicatore viene disegnato.

Se uso lo stesso indicatore ma con parametri diversi - allora vengono disegnati due indicatori.

Voglio includere un indicatore con parametri dinamici nel mio EA - l'EA inizia a lavorare molto lentamente e quando lo fermo, mostra l'armageddon invece di un grafico.

Vorrei trasferire la funzione principale dell'indicatore al mio EA - funzionerà più velocemente e non ci sarà l'Armageddon.

Trasferimento del codice dell'indicatore al codice di Expert Advisor. Struttura dell'indicatore.

Trasferimento del codice dell'indicatore al codice dell'Expert Advisor. Schema generale di costruzione di Expert Advisors e funzioni di indicatori

Trasferimento del codice indicatore al codice esperto. Conclusione
 
grazie! il tuo link non fa clic
 
tiiga:

C'è qualche limitazione nell'uso degli indicatori?

Se uso un indicatore nel mio EA, allora quando il programma finisce il test, l'indicatore viene disegnato.

Se uso lo stesso indicatore ma con parametri diversi - allora vengono disegnati due indicatori.

Voglio includere un indicatore con parametri dinamici nel mio EA - quando lo fermo, inizia a lavorare molto lentamente e quando lo fermo, mostra l'armageddon invece di un grafico (ho 30 indicatori allegati - così tanti indicatori possono essere visualizzati su un grafico).

La domanda è se visualizza solo 30 - capisce il resto all'interno dello script?


void HideTestIndicators( bool hide)

La funzione imposta il flag per nascondere gli indicatori chiamati dall'Expert Advisor. Quando si apre un grafico dopo il test, gli indicatori contrassegnati con il flag di nascondere non saranno visualizzati nel grafico di test. Prima di ogni chiamata, l'indicatore viene contrassegnato con il flag di occultamento corrente impostato.
Va notato che solo gli indicatori che sono chiamati direttamente dall'Expert Advisor in prova possono essere mostrati nel grafico di prova.
Parametri:
nascondere - TRUE - se vuoi nascondere gli indicatori, altrimenti FALSE.
Esempio:
  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 è il modo corretto per trovare la percentuale di drawdown?

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