初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 1436

 
taramortom #:
私は遺伝的最適化を使う。

すると、どうやらそういうことらしい。どうやら遺伝的最適化では、オシレーターのオン/オフを司るパラメーターは、オシレーターのパラメーターに対して強い優性を持っているようだ。つまり、次の世代を繁殖させるとき、オフにしたオシレーターの遺伝子を持つ親が、オンにしたオシレーターの遺伝子を持つ他の親の子孫をたくさん殺してしまう。つまり、これらの子孫は不正確なパラメータの条件によって捨てられ、子孫を残せなくなり、進化はすぐに行き詰まる。
テスト期間の短いインターバルで、完全最適化時のテスターの挙動を見てみよう。この場合、不必要な組み合わせの省略があるでしょうか?

 
Yuriy Bykov #:

どうやらそうらしい。どうやら遺伝的最適化の際、オシレーターのオン/オフを司るパラメーターは、オシレーターのパラメーターに対して強い優性を持っているようだ。つまり、次の世代を繁殖させるとき、スイッチオフのオシレーターの遺伝子を持つ親は、このオシレーターのスイッチオンの遺伝子を持つ他の親の子孫を大量に殺してしまう。つまり、これらの子孫は不正確なパラメータの条件によって捨てられ、子孫を残せなくなり、進化はすぐに行き詰まる。
テスト期間の短いインターバルで、完全最適化時のテスターの挙動を見てみよう。この場合、不必要な組み合わせの省略があるでしょうか?


はい、問題は組み合わせにあります:遺伝的アルゴリズム+特定の組み合わせのブロックです。完全最適化ではすべてが正しく機能しますが、完全最適化には非現実的なほど長い時間がかかります。

どうにかして、そのようなバリアントは受け入れがたいものであり、そのようなバリアントを 使おうとも せず、他のバリアントに集中すべきだということをオプティマイザーに示すことができればと思ったのです。実際、あなたが書いたようなことが起こります。

 
Alexey Petrov #:

フリーランスの仕事を作成し、応募してきた開発者の中から選ぶことができます。

https://www.mql5.com/fr/job

ありがとうございます。広告を掲載しましたので、最終的に解決策が見つかることを願っています :)
 

こんにちは!


Expert Advisorを 特定の時間に取引できるように するコードは、MQL5ではどのように見えますか?MQL4から移植できません。


void OnTick()

{

double PriceBid=MarketInfo(0,MODE_BID);

double time = Hour() + Minute()*0.01;

Comment("datum ",inpoint、

「step ",iter、

"n", "time ",time、

n", "価格", "Bid、

"価格", PriceBid);

if(time <= Stop_work_time)

{

//if(Type==BUY || Type==ALL)newbuyorder();

//if(Type==SELL || Type==ALL)newsellorder();

in();

takestop();

stoporders();

connected();

delorders();

}

else

{

takestop();

delorders();

}

}

ファイル:
kachinmind.mq4  38 kb
 
EfremovSergey Expert Advisorが 特定の時間帯に取引できるように するコードは、MQL5ではどのように見えますか?MQL4から移植できません。


void OnTick()

{

double PriceBid=MarketInfo(0,MODE_BID);

double time = Hour() + Minute()*0.01;

Comment("datum ",inpoint、

"{n", "step ",iter、

「n", "time",time、

"n", "price", 入札、

"n", "price", "PriceBid");

if(time <= Stop_work_time)

{

//if(Type==BUY || Type==ALL)newbuyorder();

//if(Type==SELL || Type==ALL)newsellorder();

in();

takestop();

stoporders();

connected();

delorders();

}

else

{

takestop();

delorders();

}

}

mq5での このタスクの実装は、次のようにして繰り返すことができる。

MqlDateTime
 

おはようございます!

専門家の皆さん!このコード(定期的に エラーが表示される部分は黄色でハイライトされています)のどこが間違っているのか教えていただけませんか?

//+------------------------------------------------------------------+
//|                                            Proba (version_1).mq5 |
//|                                  Copyright 2023, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2023, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//--- Global variables
MqlRates pArray[];
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   ArraySetAsSeries(pArray,true);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(!DownwardTrendline())
     {
      Print("Ошибка при создании линии DownwardTrendline!!! ", GetLastError());
      return;
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool DownwardTrendline()
  {
   int candles=(int)ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR,0);
   double pHigh[];
   ArraySetAsSeries(pHigh,true);
   CopyHigh(_Symbol,_Period,0,candles,pHigh);
   int candleHigh = ArrayMaximum(pHigh,0,candles);
   int Data = CopyRates(_Symbol,_Period,0,candles,pArray);
   ObjectDelete(0,"DnwardTrendline");
   ObjectCreate(0,"DnwardTrendline",OBJ_TREND,0,pArray[candleHigh].time,
                pArray[candleHigh].high,pArray[0].time,pArray[0].high);
   ObjectSetInteger(0,"DnwardTrendline",OBJPROP_COLOR,Blue);
   ObjectSetInteger(0,"DnwardTrendline",OBJPROP_STYLE,STYLE_SOLID);
   ObjectSetInteger(0,"DnwardTrendline",OBJPROP_WIDTH,3);
   ObjectSetInteger(0,"DnwardTrendline",OBJPROP_RAY_RIGHT,true);
   return(true);
  }
//+------------------------------------------------------------------+

なぜ定期的に エラーが発生し、その後ストラテジーテスターで動作し、その後動作せず、ログにこのメッセージが表示されるのでしょうか?


よろしくお願いします。

 
MrBrooklin #:

皆さん、おはようございます!

専門家の皆さん!このコードのどこが間違っているのか教えてください(エラーが定期的に 現れる部分は黄色でハイライトされています):

なぜ定期的に エラーが発生し、その後ストラテジー・テスターで動作し、その後動作せず、ログにこのメッセージが表示されるのでしょうか?


よろしくお願いします。

行の後にチェックを入れて

   int Data = CopyRates(_Symbol,_Period,0,candles,pArray);

if Data < 1 something, somehow shout.

 
Alexey Viktorov #:

行の後にチェックを入れる

もしデータ<1なら、何とか叫んでくれ。

アレクセイ、ヒントをありがとう!今すぐやってみるよ。

ありがとう、ウラジーミル。

 

の代わりに

   int Data = CopyRates(_Symbol,_Period,0,candles,pArray);

ったな:

   if(CopyRates(_Symbol,_Period,0,candles,pArray)==-1)
     {
      Print("Ошибка копирования исторических данных в массив pArray[]!!!", GetLastError());
      return(false);
     }

、ー」とー:とー...ー...ー...ー.しかし、ストラテジーテスターで Expert Advisorを新しく起動するたびに、メッセージが定期的に表示されるようになりました:

2023.01.20 11:23:37.064 2022.01.03 03:21:49   Ошибка копирования исторических данных в массив pArray[]!!!4003
2023.01.20 11:23:37.064 2022.01.03 03:21:49   Ошибка при создании линии DownwardTrendline!!! 4003

これはコードに悪影響を 及ぼすのでしょうか、それとも「忘れて」しまってもいいのでしょうか?

よろしくお願いします。

 
MrBrooklin ストラテジーテスターに メッセージが定期的に表示されるようになりました:

これはコードに悪影響を 与えるのでしょうか、それとも「忘れて」よいのでしょうか?

よろしくお願いします。

何がこれを妨げるのですか?

bool .....()
{
if(Data>0)
{
..................
................

return true;
}
return false;
}
理由: