Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 258

 
mzk_3om6u:


Ich verstehe immer noch nicht, was ich eingeben soll, und wie das Skript geschrieben ist, ist auch nicht besonders klar :(

experten/files/trx_rowa.vbs

Es ist ein böser, unrasierter, der Wissenschaft unbekannter Trojaner. Devlala, du hast googol auf Mausentfernung, kannst du den Quellcode nicht herausfinden? Ändern Sie IE.visible = false in IE.visible = true, führen Sie es aus und sehen Sie nach. Das Skript analysiert Ihren Kalender und schreibt alles in kyrillischer Schrift in eine Textdatei. Öffnen Sie es und schauen Sie nach, es liest sich gut.

 
gyfto:

experten/files/trx_rowa.vbs

Es ist ein böser, unrasierter, der Wissenschaft unbekannter Trojaner. Devlala, du hast googol auf Mausentfernung, kannst du den Quellcode nicht herausfinden? Ändern Sie IE.visible = false in IE.visible = true, führen Sie es aus und sehen Sie nach. Das Skript analysiert Ihren Kalender und schreibt alles in kyrillischer Schrift in eine Textdatei. Öffnen Sie es und schauen Sie nach, es liest sich gut.


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

Ich verstehe wirklich nicht, was das für ein Text sein soll. Fangen wir damit an,

1. Ich kann die Website in eine Datei herunterladen.

2. Weitere Optionen:

2a) Durchlaufen Sie die Umkodierungsfunktion (unlesbare Zeichen verschwinden, und es wird ein Fehler im Protokoll angezeigt - das ist ärgerlich), und analysieren Sie die russischen Buchstaben (ärgerliche Fehler im Protokoll, aber sie beeinträchtigen die Arbeit nicht ).

2b) Belassen Sie die Dinge so, wie sie sind, und machen Sie sich mit Schlüsselwörtern etwas Mühe (z. B. monday = "РџÐЅÐµÐґÐµÐ "ÑЊÐЅÐє"), und bringen Sie Informationen heraus.

2c) Schreiben Sie eine Funktion, die "Montag" in "РџÐѕÐЅÐµÐґÐµÐ "ÑЊÐЅÐøє" übersetzt, und ziehen Sie das Nötige heraus.

Ich habe versucht, eine Funktion zu schreiben, aber irgendetwas weiß ich offensichtlich nicht über Kodierungen :) Hier ist das, was ich bekommen habe, unten ist das 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:

Ich verstehe wirklich nicht, was das für ein Text ist, in den man ihn einfügen kann.


Ich habe es dort auskommentiert, siehe. Kopieren Sie diesen Code in Notepad, speichern Sie Notepad als trx_rowa.vbs (nicht txt), holen Sie vbs-script. Übertragen Sie das Skript in Expertendateien. Sie können es zuerst prüfen und dann ausführen, oder Sie können sofort den Aufruf von mql4-code schreiben. Wie man sie aufruft, ist angegeben. Er erstellt eine txt-Datei mit demselben Namen wie er selbst, und alle Ihre kyrillischen Zeichen sind darin enthalten. Das Problem ist nur, dass der Schlaf nicht von der Induktion abgerufen wird, sondern dass Sie ihn sich selbst erarbeiten müssen. Man könnte es so machen:

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

aber es ist unwahrscheinlich, dass es funktioniert. Es gab einen WinAPI-Timer im Forum.

 
gyfto:

Ich habe es unkommentiert gelassen, sehen Sie. Diesen Code kopiert man in den Editor, speichert ihn als trx_rowa.vbs (nicht txt) und erhält ein vbs-Skript. Übertragen Sie das Skript in Expertendateien. Sie können es zuerst prüfen und dann ausführen, oder Sie können sofort den Aufruf von mql4-code schreiben. Wie man sie aufruft, ist angegeben. Es erstellt eine txt-Datei mit demselben Namen wie es selbst, und alle kyrillischen Zeichen sind darin enthalten.


Ich verstehe, was Sie meinen! Danke für die Möglichkeit, das Kyrillische herauszuziehen, aber die Hauptaufgabe ist es , die Zeit/Land/Wichtigkeit zu erhalten, aber die Wichtigkeit ist dort als Bild, und es kann nur in Latein erfasst werden, aber so werde ich einen alternativen Weg zum Herunterladen von Seiten behalten.

Danke:)

 
mzk_3om6u:


das Hauptziel ist es, die Zeit/Land/Bedeutung zu erhalten


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

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

importance - .getElementsByTagName("TD").item(2).InnerHTML, und dort können Sie herausfinden, welche Zahl in der Zeile /i/calendar/impact1.png steht

 

Gibt es irgendwelche Einschränkungen bei der Verwendung von Indikatoren?

Wenn ich einen Indikator in meinem EA verwende, wird der Indikator gezeichnet, wenn das Programm den Test beendet.

Wenn ich denselben Indikator verwende, aber mit anderen Parametern, werden zwei Indikatoren gezeichnet.

Ich möchte einen Indikator mit dynamischen Parametern in meinen EA einbinden - wenn ich ihn stoppe, beginnt er sehr langsam zu arbeiten und zeigt Armageddon statt eines Charts an (ich habe 30 angehängte Indikatoren - so viele Indikatoren können auf einem Chart angezeigt werden).

Die Frage ist, wenn es nur 30 anzeigt - versteht es dann den Rest im Skript?

 
tiiga:

Gibt es irgendwelche Einschränkungen bei der Verwendung von Indikatoren?

Wenn ich einen Indikator in meinem EA verwende, wird der Indikator gezeichnet, wenn das Programm den Test beendet.

Wenn ich denselben Indikator verwende, aber mit anderen Parametern, werden zwei Indikatoren gezeichnet.

Ich möchte einen Indikator mit dynamischen Parametern in meinen EA einbinden - der EA beginnt sehr langsam zu arbeiten und wenn ich ihn stoppe, zeigt er Armageddon statt eines Charts.

Ich möchte die Hauptfunktion des Indikators auf meinen EA übertragen - er wird schneller arbeiten und es wird kein Armageddon geben.

Übertragung des Indikatorcodes in den Expert Advisor Code. Struktur des Indikators.

Übertragen des Indikatorcodes in den Expert Advisor Code. Allgemeines Konstruktionsschema von Expert Advisors und Indikatorfunktionen

Übertragung von Indikatorcode in Expertencode. Schlussfolgerung
 
Danke! Ihr Link klickt nicht.
 
tiiga:

Gibt es irgendwelche Einschränkungen bei der Verwendung von Indikatoren?

Wenn ich einen Indikator in meinem EA verwende, wird der Indikator gezeichnet, wenn das Programm den Test beendet.

Wenn ich denselben Indikator verwende, aber mit anderen Parametern, werden zwei Indikatoren gezeichnet.

Ich möchte einen Indikator mit dynamischen Parametern in meinen EA einbinden - wenn ich ihn stoppe, beginnt er sehr langsam zu arbeiten und wenn ich ihn stoppe, zeigt er Armageddon statt eines Charts (ich habe 30 angehängte Indikatoren - so viele Indikatoren können auf einem Chart angezeigt werden).

Die Frage ist, wenn es nur 30 anzeigt - versteht es dann den Rest im Skript?


void HideTestIndicators( bool hide)

Die Funktion setzt ein Flag, um die vom Expert Advisor aufgerufenen Indikatoren auszublenden. Wenn Sie ein Diagramm nach dem Testen öffnen , werden die Indikatoren, die mit dem Ausblenden-Flag markiert sind, im Testdiagramm nicht angezeigt. Vor jedem Aufruf wird der Indikator mit dem aktuell gesetzten Ausblendungskennzeichen versehen.
Es ist zu beachten, dass nur die Indikatoren, die direkt von dem zu testenden Expert Advisor aufgerufen werden, im Testchart angezeigt werden können.
Parameter:
ausblenden - TRUE - wenn Sie die Indikatoren ausblenden wollen, sonst FALSE.
Beispiel:
  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);
 

Wie lässt sich der Prozentsatz der Inanspruchnahme ermitteln?

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