冲动 - 页 21

 
Karputov Vladimir:
  1. 很好。嘀嗒声到达的时间可以不以增量来记录,而是直接以微秒来记录,从MQL5程序开始。这就是将计算出两点之间的停顿的方法。
  2. 然后第二个字段将是数组close[]的价格--也就是Bid。
  3. 我对Ask有一些怀疑。是否值得接受?该指标接收spread[]数组--可以这样写。需要的人就会计算出Ask。
  4. 此格式的文件名:Data_ticks_GBPUSD.f_2015.07.20 16_02_36.csv

补充:这原来是一个这样的表格。

与终端版本完全没有向后兼容。对于MT4,它必须完全重做。是什么阻止了你记录日期而不是一些合成时间?你可以把日期与任何东西联系起来,使用它而不需要用任何东西重新计算。为什么要在未来故意制造混乱呢?你不知道你的时间还能做什么......在这里,我们也必须重新计算/转换它......。

是什么阻止了我们写出当前的Ask而不是数组spread[],这在MT4中是没有用的?你是故意把自己的脚砍到脖子上吗?:)))

 

好的。这就是文件格式。

Время тика, микросекунд Время тика, секунд      Bid             Ask
76718                   20.07.2015 18:09        1.55962         1.55981
76838                   20.07.2015 18:09        1.55962         1.55981
190796                  20.07.2015 18:09        1.55961         1.55980
533045                  20.07.2015 18:09        1.55960         1.55979
989364                  20.07.2015 18:09        1.55961         1.55980
2058082                 20.07.2015 18:09        1.55960         1.55979
2397266                 20.07.2015 18:09        1.55961         1.55980
3498990                 20.07.2015 18:09        1.55962         1.55981
5276197                 20.07.2015 18:09        1.55962         1.55981
5276318                 20.07.2015 18:09        1.55962         1.55981
5714501                 20.07.2015 18:09        1.55967         1.55986
5825529                 20.07.2015 18:09        1.55968         1.55987
5825630                 20.07.2015 18:09        1.55968         1.55987
6095716                 20.07.2015 18:09        1.55969         1.55988
6419932                 20.07.2015 18:09        1.55968         1.55987
6795191                 20.07.2015 18:09        1.55969         1.55988
6972306                 20.07.2015 18:09        1.55968         1.55987
7017356                 20.07.2015 18:09        1.55967         1.55986
它好吗?
 
Roman Shiredchenko:

关于这个问题有什么要补充的吗?

有一个视频的链接--他们删除了--他们认为这是广告。

我怎样才能分享我编写指标的剥头皮策略?

我如何将youtube视频放在 "七月有趣的视频 "中?

我不会发布链接--我会把它发送到谷歌。"Forex Speedometer"策略的主要特点是没有指标和交易的简单性。策略类型 - 剥头皮。该策略可用于任何货币对,但建议选择波动性大、点差小的货币对。"

------------------------------------------------------------------------------------------

这里也谈到了这个话题。如何计算数组中每个刻度的到达时间,如何计算速度...

很明显,有一些变种。很明显,以毫秒为单位,每个被抓到的虱子的时间将是可见的......。(事后如何使用这个?也许......)

阿特姆再次为特别有天赋的人写...:-)

那里提供的是精确到每秒计数的刻度--这里也提供了这样的变体......

这里还有一个问题--如何测试?我的经纪人的最小点差的ND账户没有演示。如果我想使用我的外汇经纪商的模拟和真实和账户,我会检查刻度的数量 - 它是相同的...

也就是说,问题将是如何以编程方式处理在csv文件eexcel和ticks中收集的虚拟交易数据。来自真实账户。

问题是如何处理收集到的虚拟交易数据,在csv文件中的eexsv和来自真实账户的ticks...:-)

如何将csv文件中的ticks嵌入到MT4策略测试器 的历史中?

不久前我也试过类似的东西(不是这个策略,是我自己发明的),但我放弃了。我必须实时测试这样一个系统,因为测试器只模拟刻度线。我观察了两个小时的专家顾问,然后我复制了5分钟的代码,如此反复,然后我感到很无聊。结果不是很好,许多交易的利润很小,但一次止损多次超过了所有利润。作为一种选择,人们应该使用马丁格尔法来避免股权的累积损失。我在马汀上有一个专家顾问,没有这个功能,它的实施就简单多了。
 

记录蜱虫的基础就在那里。

//+------------------------------------------------------------------+
//|                                             IndTickCollector.mq5 |
//|                              Copyright © 2015, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2015, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.01"
#property indicator_chart_window
#property description "Индикатор хранит тики. Время тика, микросекунд, Время тика, секунд , Bid, Ask"
#property indicator_buffers 0
#property indicator_plots   0
//+------------------------------------------------------------------+
//| Индикатор расчитывает скорость прихода тиков.                    |
//+------------------------------------------------------------------+
//--- parameters
int file_handle; // хэндл файла
string FileName; // имя файла
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- open file
//--- время начала сбора тиков - текущее
   datetime time_start=TimeCurrent();
//--- откроем файл для записи значений индикатора (если его нет, то создастся автоматически)
   ResetLastError();
   FileName="Data_ticks_"+Symbol()+"_"+TimeToString(time_start,TIME_DATE|TIME_MINUTES|TIME_SECONDS)+".csv";
   StringReplace(FileName,":","-");
   file_handle=FileOpen(FileName,FILE_READ|FILE_WRITE|FILE_CSV);
   if(file_handle!=INVALID_HANDLE)
     {
      PrintFormat("Файл %s открыт для записи",FileName);
      PrintFormat("Путь к файлу: %s\\MQL5\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH));
      //--- запишем название колонок
      FileWrite(file_handle,"Время тика, микросекунд","Время тика, секунд","Bid","Ask");
     }
   else
      PrintFormat("Не удалось открыть файл %s, Код ошибки = %d",FileName,GetLastError());
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate (const int rates_total,      // размер массива price[]
                 const int prev_calculated,  // обработано баров на предыдущем вызове
                 const int begin,            // откуда начинаются значимые данные
                 const double& price[]       // массив для расчета
                 )
  {
   ulong microsecond_count=GetMicrosecondCount(); // зафиксировали вход в OnCalculate()
   int start=0;
   if(prev_calculated!=0) // работаем только на пришедших тиках, так как на истории нет времени тиков
     {
      MqlTick last_tick;
      //---
      if(SymbolInfoTick(Symbol(),last_tick))
        {
         FileWrite(file_handle,microsecond_count,last_tick.time,
                   DoubleToString(last_tick.bid,Digits()),DoubleToString(last_tick.ask,Digits()));
        }
      else Print("SymbolInfoTick() failed, error = ",GetLastError());
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- закрываем файл
   FileClose(file_handle);
   PrintFormat("Данные записаны, файл %s закрыт",FileName);
//--- очищаем комментарии
   Comment("");
  }
//+------------------------------------------------------------------+


文件名格式。

Data_ticks_GBPUSD.f_2015.07.21 12-06-14.csv

该文件有四列。

Время тика, микросекунд Время тика, секунд      Bid             Ask
76718                   20.07.2015 18:09        1.55962         1.55981
76838                   20.07.2015 18:09        1.55962         1.55981
190796                  20.07.2015 18:09        1.55961         1.55980
533045                  20.07.2015 18:09        1.55960         1.55979
989364                  20.07.2015 18:09        1.55961         1.55980


关于多长时间启动新文件的问题仍然存在。我认为每个文件应该每小时启动一次。这将使以后的分析更加容易。

 
Karputov Vladimir:

记录蜱虫的基础就在那里。

文件名格式。

该文件有四列。

关于多长时间启动新文件的问题仍然存在。我认为每个文件应该每小时启动一次。这样以后分析起来就会更容易。

这在技术上不是最佳选择。首先,为什么要写微秒?这种形式更好。

Время, DD.MM.YYY HH:mm:ss:sss     Bid    Ask
20.07.2015 18:09:323            1.55962  1.55981 

应该放弃CSV格式而采用XML。将Object To Xml <--> XML To Object数据序列化的任务很明显。在需要的情况下,将很容易添加新的参数。当然,要按天存储。1个文件--1天的蜱虫历史

 
至于这个想法本身,当然是完全胡说八道(恕我直言)。你在波动性和动量(方向性运动)之间做了一个认同。但这从根本上说是错误的。实际上不存在这种关联,因此所选择的方法将毫无结果。
 
Vasiliy Sokolov:
至于这个想法本身--当然是一派胡言(恕我直言)。你在波动性和动量(方向性运动)之间做了一个认同。但这从根本上说是错误的。实际上不存在这种关联,因此所选择的方法将毫无结果。

最主要的是收集关于抽搐的数据。这就是研究的基础。而在此基础上已经可以测试不同的模式。

补充:是的,对冲动仍然没有明确的定义。

[删除]  
Karputov Vladimir:

最主要的是收集关于抽搐的数据。这就是研究的基础。而在此基础上已经可以测试不同的模式。

补充:是的,对冲动仍然没有明确的定义。

更准确地说:这里没有必要的明确表述......毕竟这是一个基础,真正必要的基础......没有这样的表述,一切都会摇摇欲坠,摇摇欲坠。

例如,在脉冲工程中就有这样一个明确的表述。 我在前面举了一个例子。当然,你不能只局限于一张照片。这个理论很广泛,它在这里的应用将是非常有用的。

[删除]  

我再试一次把我的观点说清楚......

虽然非常粗糙,但它仍然是一张能让人了解的图片。



脉冲参数--变量--必须在飞行中确定。

 
Олег avtomat:

我再试着解释一下我的观点......

虽然非常粗糙,但这仍然是一张能让人了解的图片。



脉冲的参数--变量--应在飞行中确定。

奥列格,这张照片中的脉冲在哪里?然后将其分解为tick-time部分,而不是提出一个天数的图表。