任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 258

 
mzk_3om6u:


我还是不明白该放些什么,而且剧本怎么写的也不是特别清楚 :(

专家/文件/trx_rowa.vbs

这是一个邪恶的、没有胡子的、不为科学所知的木马。Devlala,你有googol在鼠标的距离,难道你不能弄清源代码吗?将IE.visible = false改为IE.visible = true,运行它,看看。该脚本解析你的日历,并将所有内容以西里尔语写入一个文本文件中。打开看看,读起来还不错。

 
gyfto:

专家/文件/trx_rowa.vbs

这是一个邪恶的、没有胡子的、不为科学所知的木马。Devlala,你有googol在鼠标的距离,难道你不能弄清源代码吗?将IE.visible = false改为IE.visible = true,运行它,看看。该脚本解析你的日历,并将所有内容以西里尔语写入一个文本文件中。打开看看,读起来还不错。


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

我真的不明白这是什么样的文字。我们先来看看。

1.我可以把网站下载成一个文件。

2.进一步的选择。

2a) 通过重新编码功能运行(不可读的字符会消失,日志中会有一个错误--这很烦人),并解析俄罗斯字母(烦人的错误,在日志中,但它们不影响工作 )。

2b)让事情保持原样,用关键词制造一些麻烦(比如周一="РџЅ械ґ械 "ЊЅє"),并把信息弄出来。

2c) 写一个函数,将 "Monday "翻译成 "РџѕЅ迮ґ械 "ЊЅøє",并拉出需要的内容。

试图写一个函数,但我显然对编码不了解 :)这是我得到的东西,下面是原文。

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:

我严重不明白这是什么样的文字,要把它放在哪里。


我在那里取消了注释,看。将此代码复制到记事本中,将记事本保存为trx_rowa.vbs(不是txt),得到vbs-script。将脚本转移到专家文件。你可以先检查它,运行它,或者你可以立即从mql4-code写出它的调用。给出了如何调用它的方法。它创建了一个与自己同名的txt文件,而你所有的西里尔语都在那里。唯一的问题是,睡眠 不会从你的诱导器中调用,你必须自己解决。你可以这样做。

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

但这不太可能奏效。论坛上有一个WinAPI计时器。

 
gyfto:

我在那里未加评论,看。这个代码你复制到记事本,记事本保存为trx_rowa.vbs(不是txt),得到vbs-script。将脚本转移到专家文件。你可以先检查它,运行它,或者你可以立即从mql4-code写出它的调用。给出了如何调用它的方法。它创建了一个与自己同名的txt文件,你所有的西里尔语都在那里。


我明白你的意思!感谢拉出西里尔文的方法,但主要任务是获得时间/国家/ 重要性,但重要性是以图片形式存在的,只能用拉丁文抓取,因此我将保留另一种下载页面的方法。

谢谢:)

 
mzk_3om6u:


主要目的是为了获得时间/国家/重要程度


时间 -.getElementsByTagName("TD").item(0).InnerText

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

重要性 -.getElementsByTagName("TD").item(2).InnerHTML,在那里你可以找到哪个数字在/i/calendar/impact1.png行中

[删除]  

对指标的使用是否有任何限制?

如果我在我的EA中使用一个指标,那么当程序完成测试后,指标就会被画出来。

如果我使用同一个指标,但参数不同 - 那么就会画出两个指标。

我想在我的EA中加入一个带有动态参数的指标--当我停止它时,它开始工作得很慢,当我停止它时,它显示的是大决战而不是图表(我有30个附加指标--这么多指标可以在图表上显示)。

问题是,如果它只显示30--它能理解脚本内的其余部分吗?

 
tiiga:

对指标的使用是否有任何限制?

如果我在我的EA中使用一个指标,那么当程序完成测试后,指标就会被画出来。

如果我使用同一个指标,但参数不同 - 那么就会画出两个指标。

我想在我的EA中加入一个带有动态参数的指标--EA开始工作时非常缓慢,当我停止工作时,它显示的是大决战而不是图表。

我想把该指标的主要功能转移到我的EA中--它的工作速度会更快,而且不会出现大决战。

将指标代码转为专家顾问代码。该指标的结构。

将指标代码转移到专家顾问代码。构建专家顾问和指标函数的一般方案

将指标代码转为专家代码。总结
[删除]  
谢谢你!你的链接没有点击
 
tiiga:

对指标的使用是否有任何限制?

如果我在我的EA中使用一个指标,那么当程序完成测试后,指标就会被画出来。

如果我使用同一个指标,但参数不同 - 那么就会画出两个指标。

我想在我的EA中加入一个带有动态参数的指标--当我停止它时,它开始工作得很慢,当我停止它时,它显示的是大决战而不是图表(我有30个附加指标--这么多指标可以在图表上显示)。

问题是,如果它只显示30--它能理解脚本内的其余部分吗?


void HideTestIndicators( bool hide)。

该函数设置标志以隐藏专家顾问所调用的指标。在测试 后打开图表时 标有隐藏标志的指标 将不在测试图表上显示。在每次调用之前,指标都会被标记上当前的隐藏标志。
应该注意的是,只有那些被测试的专家顾问直接调用的指标可以显示在测试图表中。
参数。
隐藏 - TRUE - 如果你想隐藏指标,否则为FALSE。
例子。
  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) 。
[删除]  

找到缩减百分比的正确方法是什么?

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