MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 975

 
Alexandr Sokolov:

思いついたのは、多くのサイクルが必要なので、この方法で速度を確認することにしました。

...その結果、MT5が動作しなくなり、グリッチして、タスクマネージャーで閉じなければならなくなりました。


これは私のpcのパワーか何かの問題なのでしょうか?


*PS - ニューラルネットワークを書いてみたいのですが、何十億サイクルもあるでしょうし、ここでは100万で行っています。

しかし、2回ほどは不具合なくキャッチできたが、もう一度繰り返すと不具合が発生する(添付ファイルのスクリプト)

ファイル:
zsbh.mq5  7 kb
 
Alexandr Sokolov:

思いついたのは、多くのサイクルが必要なので、この方法で速度を確認することにしました。

...その結果、MT5が動作しなくなり、グリッチして、タスクマネージャーで閉じなければならなくなりました。


これは私のpcのパワーか何かの問題なのでしょうか?


*PS - ニューラルネットワークを書いてみたいのですが、何十億サイクルになるかというと、ここでは100万サイクルまでに寝かせます。

やめておけ)

っていうか、先にもっと簡単なものを書けよ

書いている内容や一般的な仕組みが理解できていないところに問題があるからです。

 
Maxim Kuznetsov:

やめておけ)

というか、まず簡単なものを書く

というのは、書いている内容や一般的な仕組みの理解不足に問題があるのです。

このスクリプトはニューラルネットワークではありません)) 100万サイクルがどれだけ速く進むかを見るために作りました。


しかし、なぜ端末が不具合を起こすのでしょうか?スクリプトは動き出すが(桁は動いている)、最後までたどり着けない(少なくとも私の場合は)。

 
プログラマーの皆さん、こんにちは。アドバイスをお願いします。反転パターンなどを元に矢印のインジケータを書こうとしています。 問題ないようです。ただし、4本のローソク足ではなく、最初の2本のローソク足のみを考慮します。コンパイル時に、異なるデータ型を割り当てた場合、精度が 落ちる可能性があるとエディターが悪口を言う。しかもiVolumeだけでありがとうございました。
 
35vas35:
プログラマーの皆さん、こんにちは。 アドバイスをお願いします。反転パターンなどを元に矢印のインジケータを書こうとしています。問題ないようです。ただし、4本のローソク足ではなく、最初の2本のローソク足のみを考慮します。コンパイル時に、異なるデータ型を割り当てた場合、精度が 落ちる可能性があるとエディターが悪口を言う。しかも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以上から規定されています。

将来的には、メールやSMSを添付したい。この原理を利用して、MACD、MA、RSIの指標を 使ったEAを書いてみました。誤信号はほとんどない。しかし、そのプロセスを自分でコントロールしたいのです。
 
35vas35:
将来的には、メールやSMSとメルマガを連動させたい。この原理でMACD、MA、RSIの指標を使ったEAを書いてみました。誤信号はほとんどない。しかし、そのプロセスを自分でコントロールしたいのです。
ハラミ、2本ローソク足吸収、ハンマー、ギャップとベール、反撃のパターンを基本にしました。
 
これについてのアドバイスをお願いしますhttps://www.mql5.com/ru/forum/160683/page974#comment_13308277