EAs的趋势指标。 - 页 5

 
Petros Shatakhtsyan:

最好、最快、最准确的指标,是我们的大脑,它能即时处理视觉图表。

一个不知道如何用手交易的人,他将永远无法开发一个有利可图的专家顾问。

外汇不是计算机利用其能力快速确定例如指纹或利用机器学习教机器人走路的情况。

在外汇市场上,这样的事情是行不通的。它是不可预测的,就像一场足球比赛。

脑子是的。他们确实比电脑更酷,但我想在这个主题中讨论趋势指数而不是大脑。

但我同意。学会了手工交易,并设法将我的方法算法化--写了一个有利可图的猫头鹰(单程)。

 
Aleksey Ivanov:

脑子是的。它们确实比电脑更酷,但我想在这个话题中讨论趋势指数,而不是大脑。

我不这么认为。如果我学会了如何用手交易,并设法将我的方法算法化,我就写了一个有利可图的猫头鹰(方法之一)。

正如我已经告诉你的,没有任何指标能够确定当前的趋势。如果已经做了,就没有人需要它。

 
Alexey Volchanskiy:

把它挂在收支平衡点上,你就会很高兴。正如佩特罗斯正确地指出的那样,不可能确定开始和结束。

然后尝试突破通道,至少它能提供一些东西。

我非常理解。我想听到对这里的趋势指数的积极意见,但到目前为止是消极的(可能有道理)。
 
Aleksey Ivanov:

先生们!互联网上有数以千计的指标被用于识别趋势。

想问那些在实践中研究这个问题的活跃的EA开发者:"在你们看来,哪些指标真正有希望在EA中用于可靠地检测趋势的开始

在我看来,专家顾问最好能讨论(在优势和劣势方面)有刻度的指标,例如,趋势强度从-1到1 不等。

识别趋势的困难在于,平淡和趋势之间的界限是一个模糊的逻辑问题。

这个问题在 "如何减少 交易员的风险"一文中得到了部分解决https://www.mql5.com/ru/articles/4233。

Как снизить риски трейдера
Как снизить риски трейдера
  • www.mql5.com
В первую очередь, эта статья пригодится начинающим трейдерам и аналитикам, которые работают над созданием собственной торговой системы. Надеюсь, что многие вопросы будут интересны и опытным участникам рынка. Это, например, классификация видов риска, использование свечного анализа для определения зон перекупленности/перепроданности, взаимосвязь...
 
Petros Shatakhtsyan:

最好、最快、最准确的指标,是我们的大脑,它能即时处理视觉图表。

一个不知道如何用手交易的人,他将永远无法开发一个有利可图的专家顾问。

外汇不是计算机利用其能力快速检测,例如指纹或利用机器学习教机器人走路的情况。

在外汇市场上,这样的事情是行不通的。它是不可预测的,就像一场足球比赛。

你再一次严厉地断定是错误的。ATS实现了你的大脑在平静地讨论市场问题时的活动结果,大脑必须再现足够的解决方案。你的大脑对你的思维过程进行数百次的检查和再检查,并给出正确的判决。但在真正的交易中,在有限的时间内,你的大脑可能会犯错,而你可能不会注意到,因为你的潜意识也在工作,而这是你无法控制的。相反,计算机在ATC的框架内准确无误地执行你大脑的意志。还有其他反对ATC的论点吗?

 
Aleksey Ivanov:
是的,我很理解。我想在这里听到对趋势指数的积极意见,但到目前为止都是负面的(也许其中有真相)。

积极所以积极....

趋势指标线?

交易吧,在这里(我们说正确)。

该EA的信号改变了多少次?

 
Petros Shatakhtsyan:

我已经告诉过你,没有任何指标能够确定当前的趋势。而且没有人需要过去的人。

我理解你的意见。谢谢你。我也想听听其他意见。

 
Aleksandr Masterskikh:

识别趋势的困难在于,平淡和趋势之间的界限是一个模糊的逻辑问题。

这个问题在 "如何减少交易员的风险 "一文中得到了部分解决https://www.mql5.com/ru/articles/4233。

谢谢你。我将尝试研究它。 在你的工具上是否有任何提示,以感应器的形式?
 
Aleksey Ivanov:
这里有一个典型的例子。一只火鸡已经组成。烹饪它(写代码)是一个五分钟的问题。让我们转入正题。
//+------------------------------------------------------------------+
//|                                                      MAScale.mq5 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                             https://mql5.com/ru/users/artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://mql5.com/ru/users/artmedia70"
#property version   "1.00"
#property description "Scale of moving average"
#property indicator_separate_window
#property indicator_buffers 5
#property indicator_plots   1
//--- plot MASC
#property indicator_label1  "MASC"
#property indicator_type1   DRAW_COLOR_HISTOGRAM
#property indicator_color1  clrRoyalBlue,clrOrangeRed,clrDarkGray
#property indicator_style1  STYLE_SOLID
#property indicator_width1  2
//--- input parameters
input uint                 InpPeriod         =  14;            // Period
input ENUM_APPLIED_PRICE   InpAppliedPrice   =  PRICE_CLOSE;   // MA Applied price
input ENUM_MA_METHOD       InpMethod         =  MODE_EMA;      // MA method
input ENUM_APPLIED_PRICE   InpByPrice        =  PRICE_CLOSE;   // Distance from:
//--- indicator buffers
double         BufferMASC[];
double         BufferColors[];
double         BufferMA[];
double         BufferMA1[];
double         BufferATR[];
//--- global variables
int            period;
int            handle_ma;
int            handle_ma1;
int            handle_atr;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- set global variables
   period=int(InpPeriod<1 ? 1 : InpPeriod);
//--- indicator buffers mapping
   SetIndexBuffer(0,BufferMASC,INDICATOR_DATA);
   SetIndexBuffer(1,BufferColors,INDICATOR_COLOR_INDEX);
   SetIndexBuffer(2,BufferATR,INDICATOR_CALCULATIONS);
   SetIndexBuffer(3,BufferMA1,INDICATOR_CALCULATIONS);
   SetIndexBuffer(4,BufferMA,INDICATOR_CALCULATIONS);
//--- setting indicator parameters
   IndicatorSetString(INDICATOR_SHORTNAME,"Scale of moving average ("+(string)period+")");
   IndicatorSetInteger(INDICATOR_DIGITS,Digits());
//--- setting buffer arrays as timeseries
   ArraySetAsSeries(BufferMASC,true);
   ArraySetAsSeries(BufferColors,true);
   ArraySetAsSeries(BufferATR,true);
   ArraySetAsSeries(BufferMA1,true);
   ArraySetAsSeries(BufferMA,true);
//--- create MA's handles
   ResetLastError();
   handle_ma1=iMA(NULL,PERIOD_CURRENT,1,0,MODE_SMA,InpByPrice);
   if(handle_ma1==INVALID_HANDLE)
     {
      Print("The iMA(1) by ",EnumToString(InpByPrice)," object was not created: Error ",GetLastError());
      return INIT_FAILED;
     }
   handle_ma=iMA(NULL,PERIOD_CURRENT,period,0,InpMethod,InpAppliedPrice);
   if(handle_ma==INVALID_HANDLE)
     {
      Print("The iMA(",(string)period,") object was not created: Error ",GetLastError());
      return INIT_FAILED;
     }
   handle_atr=iATR(NULL,PERIOD_CURRENT,period);
   if(handle_atr==INVALID_HANDLE)
     {
      Print("The iATR(",(string)period,") object was not created: Error ",GetLastError());
      return INIT_FAILED;
     }
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//--- Проверка и расчёт количества просчитываемых баров
   if(rates_total<fmax(period,4)) return 0;
//--- Проверка и расчёт количества просчитываемых баров
   int limit=rates_total-prev_calculated;
   if(limit>1)
     {
      limit=rates_total-2;
      ArrayInitialize(BufferMASC,EMPTY_VALUE);
      ArrayInitialize(BufferATR,0);
      ArrayInitialize(BufferMA,0);
     }
//--- Подготовка данных
   int count=(limit>1 ? rates_total : 1),copied=0;
   copied=CopyBuffer(handle_ma,0,0,count,BufferMA);
   if(copied!=count) return 0;
   copied=CopyBuffer(handle_ma1,0,0,count,BufferMA1);
   if(copied!=count) return 0;
   copied=CopyBuffer(handle_atr,0,0,count,BufferATR);
   if(copied!=count) return 0;

//--- Расчёт индикатора
   for(int i=limit; i>=0 && !IsStopped(); i--)
     {
      BufferMASC[i]=(BufferATR[i]!=0 ? (BufferMA1[i]-BufferMA[i])/BufferATR[i] : 0);
      BufferColors[i]=(BufferMASC[i]>BufferMASC[i+1] ? 0 : BufferMASC[i]<BufferMASC[i+1] ? 1 : 2);
     }

//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
 
Aleksey Ivanov:

先生们!互联网上有数以千计的指标被用于识别趋势。

向在实践中研究这个问题的活跃的EA开发者提问:"在你们看来,哪些指标真正有希望在EA中用于可靠地检测趋势的开始

在我看来,对于专家顾问来说,最好是讨论(在优势和劣势方面)有刻度的指标,例如,趋势强度从-1到1 不等。

从确定统计趋势模型(即使是一个简单的模型)开始是一个好主意。主要有两种选择:TS-排或DS-排。这个可能看起来是不必要的复杂情况,但以后可能会有用处。例如,它可能给予一些能力来区分修正和趋势突破。