你是如何对MA饲料集群的检测进行算法的? - 页 15

 

问题解决了,错误在于在EA中卸载时,向类中添加了更多的控制参数!

日安,请指教--我有什么没听清?

我在.bat中下载了数据,然后我加载它,但只有第一个条目是正确的,然后数据就不一致了。


该代码的含义如下

指标

- 如果文件里有新的数据,就把它们填进去。

顾问

- 倾倒数据到一个类。


在指标中,它被上载为-

//+------------------------------------------------------------------+
//| Выгружаю данные с файла если он есть                             |
//+------------------------------------------------------------------+
void TextCsv0(int size)
  {
   ArrayFree(cand_buff);
   ArrayResize(cand_buff,0);
   long count=FileLoad("test.bin",cand_buff);
   if(count!=-1)
     {
      for(int i=0; i<count; i++)
         PrintFormat("%s\t%G\t%G\t%G\t%G\t%G\t%G\t%G\t%G\t%G\t%I64u",
                     TimeToString(cand_buff[i].time,TIME_DATE|TIME_SECONDS),
                     cand_buff[i].bar,cand_buff[i].period,cand_buff[i].praceMA);
     }
   TextCsv1(size,(int)count);
  }
//+------------------------------------------------------------------+
//| Загружаю новые данные                                            |
//+------------------------------------------------------------------+
void TextCsv1(int size,int count)
  {
   int _count=0;
   if(count==-1) count=0;
   for(int i=0; i<size; i++)
      if(TextCsv2(count,i)==true)
        {
         ArrayResize(cand_buff,count+(int)_count+1);
         cand_buff[count+_count].period=Alt[i].period;
         cand_buff[count+_count].bar=Alt[i].bar;
         cand_buff[count+_count].praceMA=Alt[i].praceMA;
         cand_buff[count+_count].time=Alt[i].time;
         cand_buff[count+_count].High=Alt[i].High;
         cand_buff[count+_count].Low=Alt[i].Low;
         cand_buff[count+_count].type=Alt[i].type;
         _count++;
        }
   TextCsv(size,_count,count);
  }
//+------------------------------------------------------------------+
//| Проверка на новые данные                                         |
//+------------------------------------------------------------------+
bool  TextCsv2(long count,int i)
  {
   bool fl=true;
   for(int j=(int)count-1; j>=0; j--)
      if(cand_buff[j].period==Alt[i].period)
         if(cand_buff[j].time==Alt[i].time)
            return(false);
   return(true);
  }
//+------------------------------------------------------------------+
//| Загрузка                                                         |
//+------------------------------------------------------------------+
void TextCsv(int size,int _count, int count)
  {
//--- откроем файл для записи массива структуры в файл (если его нет, то создастся автоматически)
   ResetLastError();
   int file_handle=FileOpen("test.bin",FILE_READ|FILE_WRITE|FILE_BIN);//FileOpen("test "+"//"+_symbol(),FILE_READ|FILE_WRITE|FILE_BIN|FILE_COMMON);
   if(file_handle!=INVALID_HANDLE)
     {
      FileSeek(file_handle,0,SEEK_END);
      //--- подготовим счетчик количества байт
      uint counter=0;
      //--- в цикле запишем значения массива
      for(int i=0; i<_count; i++)
         counter+=FileWriteStruct(file_handle,cand_buff[count+i]);
      //  PrintFormat("В файл %s записано %d байт информации",_symbol(),counter);
      PrintFormat("Всего байтов: %d * %d * %d = %d, %s",size,4,7,size*4*7,size*4*7==counter ? "Верно" : "Ошибка");
      //--- закрываем файл
      FileClose(file_handle);
      // PrintFormat("Данные записаны, файл %s закрыт",_symbol());
     }
   else
      PrintFormat("Не удалось открыть файл %s, Код ошибки = %d",_symbol(),GetLastError());
  }

在专家顾问中,按以下方式下载 -

//+------------------------------------------------------------------+
//| Выгрузка                                                         |
//+------------------------------------------------------------------+
void LoadFail(datetime InpTimeDrawTo)
  {
   ArrayFree(buf0);
   long count=FileLoad("test.bin",buf0);
   if(count!=-1)
     {
      for(int i=0; i<count; i++)
        {
         PrintFormat("%s\t%G\t%G\t%G\t%G\t%G\t%G\t%G\t%G\t%I64u\t%d\t%I64u",
                     TimeToString(buf0[i].time,TIME_DATE|TIME_SECONDS),
                     buf0[i].bar,buf0[i].period,buf0[i].praceMA,buf0[i].High,buf0[i].Low,buf0[i].type);
        }
     }
  }
 
至少你应该有一些代码,这样你就可以自己运行它,扭曲它,探究它......。
 

你好,继续掌握识别MA线束的方法

获取一个由400个MAs组成的数组,周期值为: - sm.d[per-1].m[bar]

将其绘制在XY图上,看看如何识别捆绑。范围是一个柱状的第4至400次MA值

X轴--周期4-400



差异化的,得到了这个图表

我理解,形成的曲线就是棒子。


差异化是在一个特殊程序的帮助下完成的,但我不能使用mql。也许,谁知道在mql5中怎么做?

虽然也不容易确定这个四舍五入的范围!!。有没有人有什么建议?

如何确定这个范围?

还是这个?


 
Mikhail Toptunov:

你好,继续掌握识别MA线束的方法

获取一个由400个MAs组成的数组,周期值为: - sm.d[per-1].m[bar]

将其绘制在XY图上,看如何识别捆绑。范围是一个柱状的第4至400次MA值

X轴--周期4-400



差异化的,得到了这个图表

我理解,形成的曲线是一种鞭毛。


差异化是在一个特殊程序的帮助下完成的,但我不能使用mql。也许,谁知道在mql5中怎么做?

虽然也不容易确定这个四舍五入的范围!!。有没有人有什么建议?

如何确定这个范围?

还是这个?


"原分化"--你能详细说明这是如何做到的吗?
 

我认为--常微分方程(微分和积分)。

衍生品:1(X),2(Y)

 
Mikhail Toptunov:

我认为--常微分方程(微分和积分)。

衍生品:1(X),2(Y)

例如:有一个报价单

如何区分?

没有包,通过代码?

 
Renat Akhtyamov:

例如,有这样一句话

如何区分?

没有数据包,通过代码?

对不起,你是在问我吗?

- 我没有意识到这一点。我有点问自己,如何?

 
Mikhail Toptunov:

对不起,你是在问我吗?

- 我没有意识到这一点。我有点问自己,如何?

是的,很有意思。

这里,googled。

时间序列 微分 --从一个序列X(t) 到一个序列的差值X(t)-X(t-1)

 
Renat Akhtyamov:

是的,很有意思。

在这里,我上网搜索了一下

对一个时间序列进行微分 --从一个序列X(t) 到一系列的差值X(t) - X(t-1)

我不明白!

 

亲爱的专业人士,你是如何选择这个范围的?