冲动 - 页 32

 
Artyom Trishkin:
在这里我想:可能是你想简化一切,减少到MA,并使快速,并导致草率的结论 - "这将不会工作"。我告诉过你--首先要计算相邻的虱子之间的差异。我们用价格差异而不是价格来填充阵列。但我们正在顺便寻找MA。纠正。

亲爱的,这东西我已经修了很久了。我指示你,确保你在这里不会得到一个毫无价值的指标。

现在,关于你最后得到的东西。

- 速度平均化。

尽管你在价格上没有得到硕士学位,但你在速度上得到了硕士学位。这有什么区别呢?

如果你不知道什么是平均数错误,那就仔细看看。

(5+1)/2=3 //跌落

(1+5)/2=3 //增加了

好吧,你自己想想,数学家...

 
new-rena:

亲爱的,这东西我已经修了很久了。我指示你,确保你在这里不会得到一个毫无价值的指标。

现在,关于你最后得到的东西。

- 速度平均化。

尽管你在价格上没有得到硕士学位,但你在速度上得到了硕士学位。这有什么区别呢?

如果你不知道什么是平均数错误,那就仔细看看。

(5+1)/2=3

(1+5)/2=3 //增加了

好吧,你自己想想,数学家...

这话说得有点拗口,伙计。无礼并不能使人看起来很好。

现在告诉我你的公式里有什么,导师 ...

ZS.我理解你的攻击性--有人没有给你他们的计算,而你自己也不明白,在世界范围内计算所有MAK,数学家...但你不必因此而对人们大发雷霆--你看起来很愚蠢。

 
Artyom Trishkin:

这有点言过其实了,伙计。无礼并不能使人看起来很好。

现在告诉我你的公式中的内容是什么,导师...

我理解你的攻击性 - 有人没有给你他们的计算,而你不理解,认为世界上的一切是马什基,数学家...你不必因此而对人发火--你看起来很愚蠢。

这种无礼是相互的。而事实上,有人没有给东西,这并不影响这里的创作。在我要求的地方,我已经解释了一切,那个人在所有的论坛上做广告,而不仅仅是在这里。人们写道,他已经厌倦了。

现在进入正题。

我昨天给了这个链接,它几乎是指标的主要部分,可以说是它的亮点。

也就是在同一时间间隔内确定价格运动的点数和方向,并在此基础上获得交易信号。这里有什么不清楚的地方?

最主要的是不要平均。

因此,我们通过点数来判断波动性,通过同一时间间隔的delta之和(正如你在上面正确写到的,delta是连续点数之间的价格差异)来判断价格运动的方向,也就是趋势。而三角洲可以是负数,也可以是正数。我们把我们拥有的东西加起来。

事实上,为了计算这个指标并使其工作,我们只需要并需要N个最后的刻度线。除了测试之外,在历史中写下蜱虫并不是真正必要的。

指标 的现有类似物被设计 成速度表。

 
new-rena:

关于无礼的问题--这是相互的。而事实上,有人没有给东西,这对这里的创作没有影响。在我要求的地方,我已经解释了一切,那个人在所有的论坛上做广告,而不仅仅是在这里。人们都在写,他已经厌倦了。

现在进入正题。

我昨天在这里发布了链接,所以这实际上是该指标的主要部分,可以说是其亮点。

也就是在同一时间段内确定价格运动的点数和方向,并在此基础上获得交易信号。这里有什么不清楚的地方?

最主要的是不要平均。

因此,我们通过点数来判断波动性,通过同一时间间隔的delta之和(正如你上面正确写的,delta是连续点数之间的价格差)来判断价格运动的方向,即趋势。而三角洲可以是负数,也可以是正数。我们把我们拥有的东西加起来。

事实上,为了计算这个指标并使其工作,我们只需要并需要N个最后的刻度。将蜱虫写进历史并不是真的需要,也许只是为了测试。

这种指标的现有类似物是速度表的形式。

这是这个链接吗?https://www.mql5.com/ru/forum/61389/page30#comment_1776762

ZS.关于对等的无礼--那是你的无礼。我没有先对你无礼。

Импульс
Импульс
  • www.mql5.com
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий. - Страница 30 - Категория: автоматические торговые системы
 
Artyom Trishkin:

就是这个链接吗?https://www.mql5.com/ru/forum/61389/page30#comment_1776762

ZS.关于相互之间的无礼,你错了。我没有先对你无礼。

是的,但那是在4件套中。据我所知,我们正在做的是在5。
 
Karputov Vladimir:

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


文件名格式。

文件中共有四列。


问题仍然是--新文件应该多长时间启动一次。我认为每隔一小时你就应该启动每个文件。这将更容易进行分析。

添加High,Low(或立即计算价格变化)--当错过一个tick(由于技术原因)时,它们会发生变化......也就是说,当M1内Bid下降,High上升时,就有可能出现这种情况。

我认为它发生在脉冲期间和终端/计算机正在进行其他工作的时候:-)

 
Karputov Vladimir:

有记录显示,有600只虱子。这个记录(各100个)分布在六个图表中。图中显示了价格和刻度变化率(EMA10)。总而言之,我们有理由研究这些数字。







你看了一下,也就是说,根本没有......在图上你得到了某种微分误差函数。也就是说,你首先把速度读成导数(dx/dt),然后你把它积分(用不同的方法),并与原来的速度进行比较。

提示:任何MA都是一个事实上的积分函数

提示2:要看你是否在向正确的方向移动--取一个简单的SMA并将其向后移动半个周期。如果你在历史上看到一些有用的东西,这意味着速度和动力被计算在内是有原因的,你可以深入挖掘

 
new-rena:
是的,但它是用四合院写的。据我所知,我们正在做的是在5。

使用哪个平台没有区别。我在那里问了罗曼,并私下给他写了代码,但未能理解为什么他在init()中把数组的大小设置 为200万,然后在start()中把数组的大小调整为0,然后试图用索引-1来填充它(!!),之后才把变量SIZE增加1,这应该是数组的索引。比较一下,这就是我的建议。

//+------------------------------------------------------------------+
//|                                                   FillArrays.mq4 |
//|              Copyright 2015, Artem A. Trishkin, Skype artmedia70 |
//|                       https://login.mql5.com/ru/users/artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, Artem A. Trishkin, Skype artmedia70"
#property link      "https://login.mql5.com/ru/users/artmedia70"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//|   Input variables                                                |
//+------------------------------------------------------------------+
input int NumberOfStorableTicks=20;       // Количество сохраняемых тиков
int numberOfStorableTicks; // Количество сохраняемых тиков
input int PeriodOfMA=5;                   // Период сглаживания
int periodOfMA; // Период сглаживания
input ENUM_MA_METHOD MaMethod=MODE_SMA;   // Метод усреднения МА

//+------------------------------------------------------------------+
//|   Global variables                                               |
//+------------------------------------------------------------------+
string symbol;    // Symbol()
int digits;       // Digits
//+------------------------------------------------------------------+
//|   Arrays                                                         |
//+------------------------------------------------------------------+
double      Mass_ticks[];
double      Mass_smoothed_values[];
//+------------------------------------------------------------------+
//|   Structures                                                     |
//+------------------------------------------------------------------+
   MqlTick struct_tick;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   symbol=Symbol();
   digits=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS);
   //---
   numberOfStorableTicks=(NumberOfStorableTicks<1)?1:NumberOfStorableTicks;
   periodOfMA=(PeriodOfMA<1)?1:PeriodOfMA;
   //---
   ArrayResize(Mass_ticks,numberOfStorableTicks);
   ArrayInitialize(Mass_ticks,0.0);
   ArrayResize(Mass_smoothed_values,numberOfStorableTicks);
   ArrayInitialize(Mass_smoothed_values,0.0);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   Comment("");
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(SymbolInfoTick(symbol,struct_tick)) {
      double tick_bid=struct_tick.bid;
      FillArrays(numberOfStorableTicks,tick_bid,Mass_ticks);
      }
   string txt="";
   for(int i=numberOfStorableTicks-1; i>=0; i--) {
      string itxt=IntegerToString(i);
      txt+="\nmass["+itxt+"]: "+DoubleToString(Mass_ticks[i],digits);
      }
   Comment(txt);
  }
//+------------------------------------------------------------------+
void FillArrays(int array_size, double price, double &mass_price[]) {
   //--- сместим данные в массиве влево
   for(int i=array_size-1; i>0; i--) {
      mass_price[i]=mass_price[i-1];
      }
   //--- запишем новый тик в массив
   mass_price[0]=price;
}
//+------------------------------------------------------------------+
void SmoothingDataArray(int array_size, int ma_period, int ma_shift, ENUM_MA_METHOD ma_method, double &mass_price[], double &mass_smoothing[]) {
   for(int i=array_size-1; i>=0; i--) {
      mass_smoothing[i]=iMAOnArray(mass_price,array_size,ma_period,ma_shift,ma_method,i);
      }
   }
//+------------------------------------------------------------------+

然而,iMAOnArray()却拒绝将其平滑化。无论多么曲折,都是前后呼应。但对于这里的目的来说,这并不是必要的。我想...

是的,我忘了。这就是罗曼的建议。

//---------------------
extern int MaxDrawTicks=100;
extern int Num_Aver_of_Ticks=5;  
double     xBuffer_Time []; // Массив значений   динамический
                            // В котором индекс - номер тика, значение - это бид 
int SIZE=0;                 // Вспомогательная переменная для массива                                  
int tickCounter, tickCounter_Current; 
//+------------------------------------------------------------------+
int init()
  {   
//--- устанавливаем размер динамического массива
   if(ArrayResize(xBuffer_Time,2000000)<0) {Alert(" Ошибка в изменении размера массива времени поступления тиков "); return(false);}
//--- установим индексацию для буфера как в таймсерии для динамического массива
  // ArraySetAsSeries(xBuffer_Time,true);    
//---   Возвращает количество элементов указанного массива. 
   int S=ArraySize(xBuffer_Time);
   if (S>=0) Alert("Размер массива: ",S);
   else Print("Ошибка. Массив не создан ",S);        
   ArrayInitialize(xBuffer_Time, 0);
   return(0);
  }  
//+------------------------------------------------------------------+
int start()
  {  
   //ArrayResize(ValueArr,size);
   //ValueArr[size-1] = GetValue();
   //size++; 
 //----------------------------------------  
   ArrayResize(xBuffer_Time,SIZE);
   xBuffer_Time[SIZE-1] = Bid; //NormalizeDouble((iTime (_Symbol,1,0)-_start), 2); 
  
   if ( SIZE >= 0 && ArraySize(xBuffer_Time) < 2147483647)
      {
      Alert (" Значение xBuffer_Time[SIZE-1] = ", DoubleToStr(xBuffer_Time[SIZE-1],Digits) );
      Alert (" Значение SIZE = ", DoubleToStr(SIZE,2) );  
      } 
    SIZE ++;   
 //---------------------------------------      
//------------
   return(0);
  }
 
Artyom Trishkin:

我试着做一个表格。

打勾 10
打钩 9
打勾 8
打勾 7
打勾 6
打勾 5
打勾 4
打勾 3 打勾2
勾选1 勾选 0
未来打钩
X10
X9
X8
X7
X6
X5
X4
X3
X2
X1X0
XN0
X9X8
X7X6X5
X4X3
X2
X1
X0XN0
XN1

x0, x1, x2定义了当前状态(粉红色),其余的定义了过去的状态(浅绿色)。数组中的数据不断转移,新到达的xn0取代了零点的位置。因此,现在的状态将从x1、x0、xn0开始计算,而上次的勾号x2被转移到定义前一个状态的单元格中,对该状态做一个小小的修正。如果我们把所有的东西都算在一起,那么所有的前三个点都将被纠正,这在我看来是相当粗糙的。

这是有道理的。这里有一张滴答图的截图。

滴答图的屏幕截图

注意大箭头所包围的区域。

而这里是当刻度(tick0, tick1, tick2)的平均增量大于平均增量(tick3, tick4, tick5, tick6, tick7, tick8, tick9, tick10)且增量大于零时的条件处理。

条件的处理

 
Artyom Trishkin:

使用哪个平台没有区别。我在那里问了罗曼,并私下给他写了代码,但未能理解为什么他在init()中把数组的大小设置 为200万,然后在start()中把数组的大小调整为0,然后试图用索引-1来填充它(!!),之后才把变量SIZE增加1,这应该是数组的索引。比较一下,这就是我的建议。

然而,iMAOnArray()却拒绝将其平滑化。无论我怎么扭动它,它都会向前和向后移动。但对于这里的目的来说,这并不是必要的。我想...

好的。而在你的代码中,时间间隔分析在哪里,为什么会出现MA?

我也在我的东西里发现了一个错误。在一个相同的时间间隔内,这不是相同的蜱虫数量。我们不应该失去这样一个指标。

也许我错了,因为我还没有使用5-Rka很长时间。