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

 

こんにちは、皆さん!)

ニューラルネットワークの 学習用データを用意しようとする。その課題とは

例えば各行(時間の瞬間-バー)が入力ベクトル、列が例えば10000のような行列を用意します。動的データ(rows1, rows2の数)があり、異なる時点で数が変化する場合はどうすればよいのか。

例えば、ネットワークに行列が読み込まれ、各行が学習のためのベクトルであるが、各行に対して、時間的に動的に変化する行がn個存在するとする。

可能な解決策の推測は、動的な行の列の数と同じ行列に追加の列を追加することです、それは、各ベクトルがdenamicから列を持つことが判明したが、1行のように、ちょうど仮定されます。

例えば

第1ベクトル

1.365 0 1 0 0 1 0 1 0 1 0 0 0 1 1 0 0 1 ...「line1 dynamic" 1 1 1 1 1 1

ssssssssssssssssssssssssssss"line2 dynamic" 1 1 1 1 1 1

解決策

1.365 0 1 0 0 1 0 1 0 1 0 0 0 1 1 0 0 1 ...「line1 dynamic" 2 2 2 2 2 2

 
Top2n:

こんにちは、皆さん!)

ニューラルネットワークの学習用データを用意しようとする。その課題とは

例えば各行(時間の瞬間-バー)が入力ベクトル、列が例えば10000のような行列を用意します。動的データ(rows1, rows2の数)があり、異なる時点で数が変化する場合はどうすればよいのか。

例えば、ネットワークに行列が読み込まれ、各行が学習のためのベクトルであるが、各行に対して、時間的に動的に変化する行がn個存在するとする。

可能な解決策の推測は、動的な行の列の数と同じ行列に追加の列を追加することです、それは、各ベクトルがdenamicから列を持つことが判明したが、1行のように、ちょうど仮定されます。

例えば

第1ベクトル

1.365 0 1 0 0 1 0 1 0 1 0 0 0 1 1 0 0 1 ...「line1 dynamic" 1 1 1 1 1 1

ssssssssssssssssssssssssssss"line2 dynamic" 1 1 1 1 1 1

解決策

1.365 0 1 0 0 1 0 1 0 1 0 0 0 1 1 0 0 1 ...「line1 dynamic" 2 2 2 2 2 2

また、ダイナミックに(例えば1時間に1回)語彙が変化する言語をどのように学ぶのか?それがニューラルネットワークのやり方です。
 
MQL5があるんですね、私の理解では。それとも同一なのでしょうか?
 
Andrey Sokolov:
MQL5があるんですね、私の理解では。それとも同一なのでしょうか?
全く同じです。
 
こんにちは。EAを作成 し、正常に動作していますが、EAが動作している状態で端末の電源を切り、再度端末の電源を入れると、EAが再びカウントを開始するのですが、どうすればよいですか?そこで、質問です。起動時に入力パラメータをリセットするようにするには、EAに何を記述すればよいですか?
 
XFaost:
こんにちは。EAを作成 し、正常に動作していますが、EAが動作している状態で端末の電源を切り、再度端末の電源を入れると、EAが再びカウントを開始するのですが、どうすればよいですか?そこで、質問です。EA起動時に入力パラメータをリセットするようにするには、EAに何を規定すればよいのでしょうか?
Expert Advisor で入力パラメータをリセットするのではなく、閉じる前に開かれた注文の情報を収集したいのです。
 
XFaost:
こんにちは。EAを作成 し、正常に動作していますが、EAが動作している状態で端末の電源を切り、再度端末の電源を入れると、EAが再びカウントを開始するのですが、どうすればよいですか?そこで質問です。EAを起動したときに入力パラメータをリセットするようにするには、EAに何を書けばよいのでしょうか。
EAの仕組みについて教えてください。おそらく、別の原理を使う必要があるのでしょう。そして、それでもリセットする必要があるのなら、まず「スタート時」の意味を定義する必要があります。また、一般的にリセットとは、初期位置への移行を意味します。初期設定をメモしておき、タイミングを見計らって設定する。
 

ごあいさつ何が問題なのか、教えてください。

EAは、価格の上下にストップを設定した注文を出します。どちらかがトリガーした場合、価格がストップから設定以上に離れればストップが調整され、ストップまで動けば変更されることはありません。

最初はBuy orderだけを 書きましたが、期待通りに動作しています。売りのミラーイメージを追加すると、価格がどう動いても設定した値でストップが修正されます。

一般的に、別々に、または購入または販売する場合 - すべてが一緒にそれが、両方の部分として動作します - バグがあります。

#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

extern double Lot             = 0.01;
extern int    StopLoss        = 50;
extern int    Slippage        = 5;
extern int    Delta           = 60;
extern int    Delta2          = 170;
extern int    Magic           = 321;

int ticket;
double price, sl, sl2;
datetime counted_bar = 0;

int OnInit()
  {
    if (Digits == 3 || Digits == 5)
   {

       StopLoss      *= 10;
       Delta         *= 10;
       Delta2        *= 10;
      
   }

  
   return(INIT_SUCCEEDED);
  }


void OnTick() {
//////        ПРОДАЖА  ///////////////////////////////////////////////////////
if (SellLimitCount()==0 && SellCount()==0)
{    
  price = NormalizeDouble(Bid - Delta*Point, Digits);
  sl = NormalizeDouble(price + StopLoss*Point, Digits);
  ticket = OrderSend (Symbol(), OP_SELLSTOP, Lot, price, Slippage, sl, 0, "", Magic, 0, Red);
}

if (SellCount()!=0)
  {
   if (Bid < (OrderStopLoss() - NormalizeDouble (StopLoss*Point, Digits)))
     {
     sl = NormalizeDouble (Bid + StopLoss*Point, Digits);
     if (OrderModify(ticket, price, sl, 0, 0, Red)) Print ("Sell_Order_Modify_Ok");
     else Print ("ERROR_Sell_Order_Modify");
     }  
  }
if (SellLimitCount()!=0)
{
  if(Bid > (OrderOpenPrice() + NormalizeDouble (Delta2*Point, Digits)))
   {    
    if (OrderDelete(ticket, Red)) Print ("BuyLimit_Order_Delete_Ok");
    else Print ("ERROR_BuyLimit_Odrer_Delete");
   }  
}
/////////////////////////////////////////////////////////////////////////////////
///////       ПОКУПКА ////////////////////////////////////////////////////////
if (BuyLimitCount()==0 && BuyCount()==0)
{
  price = NormalizeDouble(Ask + Delta*Point, Digits);
  sl = NormalizeDouble(price - StopLoss*Point, Digits);
  ticket = OrderSend (Symbol(), OP_BUYSTOP, Lot, price, Slippage, sl, 0, "", Magic, 0, Blue);
}

if (BuyCount()!=0)
  {
    if (Ask > (OrderStopLoss() + NormalizeDouble (StopLoss*Point, Digits)))
     {
     sl = NormalizeDouble (Ask - StopLoss*Point, Digits);
     if (OrderModify(ticket, price, sl, 0, 0, Blue)) Print ("Buy_Order_Modify_Ok");
     else Print ("ERROR_Buy_Order_Modify");
     }  
  }
if (BuyLimitCount()!=0)
{
  if(Ask < (OrderOpenPrice() - NormalizeDouble (Delta2*Point, Digits)))
   {
    if (OrderDelete(ticket, Blue)) Print ("BuyLimit_Order_Delete_Ok");
    else Print ("ERROR_BuyLimit_Orde_Delete");
   }  
}
///////////////////////////////////////////////////////////////////////////////

}
//+------------------------------------------------------------------+
int BuyLimitCount(){
int count=0;
for(int i=OrdersTotal()-1; i>=0; i--){
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true){
if(OrderMagicNumber()==Magic){
if(OrderType()==OP_BUYSTOP)
count++;}}}return(count);}

int BuyCount(){
int count=0;
for(int i=OrdersTotal()-1; i>=0; i--){
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true){
if(OrderMagicNumber()==Magic){
if(OrderType()==OP_BUY)
count++;}}}return(count);}

int SellLimitCount(){
int count=0;
for(int i=OrdersTotal()-1; i>=0; i--){
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true){
if(OrderMagicNumber()==Magic){
if(OrderType()==OP_SELLSTOP)
count++;}}}return(count);}

int SellCount(){
int count=0;
for(int i=OrdersTotal()-1; i>=0; i--){
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true){
if(OrderMagicNumber()==Magic){
if(OrderType()==OP_SELL)
count++;}}}return(count);}
 
Andrey Sokolov:

ごあいさつ何が問題なのか、教えてください。

EAは、価格の上下にストップを設定した注文を出します。どちらかがトリガーした場合、価格がストップから設定以上に離れればストップが調整され、ストップまで動けば変更されることはありません。

最初はBuy orderだけを 書きましたが、期待通りに動作しています。売りのミラーイメージを追加すると、価格がどう動いても設定した値でストップが修正されます。

一般的に、別々に、または購入または販売する場合は、すべてがあるべきように動作しているが、一緒に両方の部分 - バグがあります。

...

見せていただいたコード全体がバグなんですよね?少なくとも、OnTick関数は ほとんどバグです...。

 
Vitalie Postolache:

バグというのは、表示されているコード全体のことでしょうか?

買い用と売り用の両方の部分がある場合、保留中の注文が 発動した後、そのストップが何らかの理由でどの価格方向にも修正されます。また、買いまたは売りの部分しかない場合、価格がそこから離れたときだけ、意図したとおりにストップが修正されます。