新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 975

 
Alexandr Sokolov:

我有一个想法,我需要大量的循环,所以我决定用这种方式来检查速度

...结果,MT5停止工作,出现故障,我不得不通过任务管理器关闭它。


这是我的电脑电源的问题还是其他问题?


*PS--我想尝试写一个神经网络,会有几十亿个周期,这里我按一百万来算。

但我抓了两次,没有任何故障,但如果我再次重复,就会出现故障(脚本在附件中)。

附加的文件:
zsbh.mq5  7 kb
 
Alexandr Sokolov:

我有一个想法,我需要大量的循环,所以我决定用这种方式来检查速度

...结果,MT5停止工作,出现故障,我不得不通过任务管理器关闭它。


这是我的电脑电源的问题还是其他问题?


*PS--我想尝试写一个神经网络,它将是数十亿次的循环,在此我要躺下的是一百万。

请勿尝试 :-)

或者说,先写点更简单的东西

因为问题出在对你所写的东西和一般的工作方式缺乏了解。

 
Maxim Kuznetsov:

请勿尝试 :-)

或者说,先写点简单的东西

因为问题出在对你所写的东西和一般的工作方式缺乏了解。

这个脚本不是一个神经网络))我做它是为了看看一百万个周期的速度有多快。


但为什么终端会出现故障呢?脚本开始工作(数字在运行),但我没有走到最后(至少对我来说)。

 
下午好,各位程序员。请告知。我正试图根据反转模式和其他模式来写一个箭头指标。 这似乎是可以的。然而,它只考虑前两个烛台,而不是4个。在编译时,编辑发誓在分配不同的数据类型时可能会失去准确性。而且只在iVolume上。提前感谢。
 
35vas35:
下午好,各位程序员。 请告知。我正试图根据反转模式和其他模式来写一个箭头指标。这似乎是可以的。然而,它只考虑前两个烛台,而不是4个。在编译时,编辑发誓在分配不同的数据类型时可能会失去准确性。而且只在iVolume上。提前感谢。

在这里

 
Artyom Trishkin:

在这里

以下是该指标的代码。
//+------------------------------------------------------------------+
//|                                                       Figaro.mq4 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 2     
#property indicator_color1 Blue   
#property indicator_color2 Red    
double Buy[];                   
double Sell[];                  
#define  BUY 0
#define  SELL 1
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
{

SetIndexBuffer (0, Buy);
SetIndexBuffer (1, Sell);  

SetIndexEmptyValue (0, 0);
SetIndexEmptyValue (1, 0);

SetIndexStyle (0, DRAW_ARROW);
SetIndexStyle (1, DRAW_ARROW); 
SetIndexArrow(0, 233);  // Стрелка "вверх" для покупок
SetIndexArrow(1, 234);  // Стрелка "вниз" для продаж

IndicatorDigits (Digits);

IndicatorShortName ("FIGARO");

SetIndexLabel(0, "Покупаем");
SetIndexLabel(1, "Продаём");

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[])
{

int counted_bars = IndicatorCounted();
int limit, signal;

if (counted_bars>0) 
counted_bars-- ;

limit=Bars-counted_bars;

for(int i = 2; i < limit; i++) 
{
signal = Signal(i-1);
if (signal == BUY)
{ 
Buy[i-1] = low[i-1];
}
else
if (signal == SELL)
{
Sell[i-1] = high[i-1];
}
}
return(rates_total); } 
//+------------------------------------------------------------------+
int Signal(int i)
{
     double O_1 = iOpen(Symbol(), 0, 1);
     double O_2 = iOpen(Symbol(), 0, 2);
     double O_3 = iOpen(Symbol(), 0, 3);
     double O_4 = iOpen(Symbol(), 0, 4);
     double C_1 = iClose(Symbol(), 0, 1);
     double C_2 = iClose(Symbol(), 0, 2);
     double C_3 = iClose(Symbol(), 0, 3);
     double C_4 = iClose(Symbol(), 0, 4);
     double H_1 = iHigh(Symbol(), 0, 1);
     double H_2 = iHigh(Symbol(), 0, 2);
     double L_1 = iLow(Symbol(), 0, 1);
     double L_2 = iLow(Symbol(), 0, 2);
     double S_1 = iVolume(NULL, 0, 1);
     double S_2 = iVolume(NULL, 0, 2);
     double S_3 = iVolume(NULL, 0, 3);
if ((O_1<C_1 && S_1>=8 && S_2==0 && O_3>C_3 && O_4>C_4 && (H_2-O_2)>=6 && (C_2-L_2)>=6) || (O_1<C_1 && S_1>=10 && O_2>C_2 && S_2>=8 && O_3>C_3 &&
O_4>C_4 && S_3>=8 && O_1<=C_2 && O_1<C_3 && O_2<C_1 && O_3<C_1) || (O_1<C_1 && O_2>C_2 && O_3>C_3 && O_4>C_4 && S_1<=1 && (O_1-L_1)>=5 && (H_1-C_1)<=2) || (O_1<C_1 && S_1>=10 &&
O_2>C_2 && O_3>C_3 && S_2>=10 && S_1>=S_2*0.6 && O_1<C_2 && (H_1-C_1)<=2 && (O_1-L_1)<=2 && (H_2-O_2)<=2 && (C_2-L_2)<=2) || (O_1<C_1 && S_1>=10 && O_2>C_2 &&
S_2>=8 && C_1<=C_2 && (H_1-C_1)<=2 && (O_1-L_1)<=2 && (H_2-O_2)<=2 && (C_2-L_2)<=2))
     
     return (BUY);
     
if ((O_1>C_1 && S_1>=8 && S_2==0 && O_3<C_3 && O_4<C_4 && (H_2-O_2)>=6 && (C_2-L_2)>=6) || (O_1>C_1 && S_1>=10 && O_2<C_2 && O_3<C_3 && O_4<C_4 &&
S_2>=8 && S_3>=8 && O_1>=C_2 && O_1>C_3 && O_2>C_1 && O_3>C_1) || (O_1>C_1 && O_2<C_2 && O_3<C_3 && O_4<C_4 && S_1<=1 && (C_1-L_1)>=5 && (H_1-O_1)<=2) || (O_1>C_1 && S_1>=10 && 
O_2<C_2 && O_3<C_3 && O_4<C_4 && S_2>=10 && S_1>=S_2*0.6 && O_1>C_2 && (H_1-O_1)<=2 && (C_1-L_1)<=2 && (H_2-C_2)<=2 && (O_2-L_2)<=2) || (O_1>C_1 && S_1>=10 && O_2<C_2 &&
O_3<C_3 && O_4<C_4 && S_2>=8 && C_1>=C_2 && (H_1-O_1)<=2 && (C_1-L_1)<=2 && (H_2-C_2)<=2 && (O_2-L_2)<=2))

     return (SELL);
     
     return(-1);
     
}
 

35vas35:
Вот код индикатора.

问题是,正如你在图表上看到的,从买入信号开始的3根蜡烛的成交量是3点。但在代码中,体积是由8和以上规定的。

 
35vas35:

问题是,正如你在图表上看到的,从买入信号开始的3根蜡烛的成交量是3点。但在代码中,体积是由8和以上规定的。

在未来,我想附加一个邮件或短信。我试着用这个原理写了一个带有MACD、MA和RSI指标 的EA。几乎没有错误的信号。但我希望能自己控制这个过程。
 
35vas35:
在未来,我想把通讯与电子邮件或短信联系起来。我试着用这个原理写了一个带有MACD、MA和RSI指标的EA。几乎没有错误的信号。但我希望能自己控制这个过程。
我使用harami、两根蜡烛吸收、锤子、缺口和面纱、反击模式作为基础。
原因: