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

 
Boris.45:
こんにちは、私はMT5用のEAを作成しています。MT5でEAを書いていて、必要なパターンを自動的に検索して手動でポジションを建てるのに使いたいと考えていました。つまり、EAにトレーディング機能はありません。私の問題は、このEAをチャートにインストールできないことです。EAにインジケーターコールはありません。 すべての指標はプログラムで記述されています。コンパイルしてストラテジーテスターで動かしてみました。特に問題はなかった。チャートにEAを置いて、画面上、設定、ポップアップするEAウインドウで取引できるように したところです。チャート上のスマイリーフェイスの代わりに、Expert Advisorのアイコンが価格チャート上に表示され、緑の円の中に白い三角形が表示されます。この手順を何度か試しましたが、やはり同じ結果になりました。価格チャートで期間を変更したところ、OnDeinit()のメッセージがモニターに表示され、つまりプログラム内で1本のローソク足が処理されて作業が停止します。

ログブックを見てみた。

- EAをインストールしようとすると、プロファイル変更のメッセージが表示されることがある。

- 他のすべての試行では、EAは問題なくロードされます。

以前はプロファイルを使って作業していました。プロファイルの数を増やし、プロファイルごとに異なるチャートを設定しました。もし、そこに何か問題があったとしても、残念ながら私はそれを知りません。プログラムがプロファイル変更のメッセージを出すために、何が壊れなければならないのかがわかりません。他の原因による故障の可能性もありますが。私にはよくわかりません。

テストのために、今日、新しいEA(テンプレート)を作り、OnInit()、OnDeinit(const int reason)、OnTick()関数には何も書かず、このEAをチャート上に置いて取引できるようにしてみました。

以前と同じ状況になりました。

どうかよろしくお願いします。 ありがとうございます !!!!

ひとつひとつ見ていきましょう。以下はそのテンプレートです。

//+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//|                              Copyright © 2016, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2016, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Trade function                                                   |
//+------------------------------------------------------------------+
void OnTrade()
  {
//---
   
  }
//+------------------------------------------------------------------+

チャートとスタジオでのチャートのスクリーンショット、そして「ジャーナル」タブと「アドバイザー」タブのエントリ(そこに表示される場合)を添付してください。

ファイル:
Test.mq5  2 kb
 
ここにもプロはいないんだなあ......残念。
 
Mihail Marchukajtes:
ここにもプロはいないんですね......残念。
そこで、テスターの誰かのチャートからMomentumの値を転載する
 
Artyom Trishkin:
そこで、テスターの誰かのチャートからMomentumの値を転載する
Printは、バッファが描画する内容を表示します。情報がない。どなたか、賢明なお答えをお願いします。意味不明な憶測ではなく・・・。
 
Mihail Marchukajtes:
Printは、バッファが描画する内容を表示します。情報がない。どなたか、賢明なお答えをお願いします。よくわからない憶測ではなく・・・。
だから、情報量がゼロなんですね。コードはどこだ?それとも、ここの皆さんは超能力者か何かですか?それなら十中八九、マジシャンのフォーラムに行くべき...。
 

同僚、与えられた範囲内でローソク足のパラメータを比較する方法を教えてください。

最大値、最小値の算出方法、了解しました。

以下はそのコードです。

void OnTick()

{

double H = 0;

for ( shift = Search_Period; shift >0; shift--)

{

if (ハイ[シフト] > H)

{ H = High[shift]; }.

アラート(H)。

}

}

しかし、問題は、変数の値を上書きしてしまうことです。

私の目的は、例えば、同じ値段のHighのローソク足が2つ以上あるのを見つけることです。つまり、アイデアとしては、各反復の後に、値を格納する変数を作成し、次に別の変数を作成し、全区間をチェックするまで、その変数を作成する必要があります。そして、さらに比較することができるようになるのです。

でも、どうすればいいのか全くわからない((.

 
Andrey Koldorkin:

同僚、あなたは与えられた範囲内のキャンドルパラメータを比較する方法を教えてもらえますか?

最大値、最小値の算出方法、了解しました。

以下はそのコードです。



しかし、問題は、変数の値を上書きしてしまうことです。

そして、私の目的は、例えば、同じ値「高」のローソク足が2本以上あることを見つけることです。つまり、アイデアとしては、各反復の後、値を格納する変数を作成し、次に別の変数を作成し、全区間がチェックされるまで、それを繰り返す必要があります。そして、さらに比較することができるようになるのです。

でも、どうすればいいのか全くわからない((

こんな感じです。

//+------------------------------------------------------------------+
//|                                                     TestCopy.mq4 |
//|              Copyright 2016, Artem A. Trishkin, Skype artmedia70 |
//|                       https://login.mql5.com/ru/users/artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, Artem A. Trishkin, Skype artmedia70"
#property link      "https://login.mql5.com/ru/users/artmedia70"
#property version   "1.00"
#property strict
#property script_show_inputs
//--- input parameters
input int Search_Period=100;  // Количество копируемых High
int searchPeriod=(Search_Period<1)?1:Search_Period;
double mass_high[][2];        // массив значений High и их времени
MqlRates array[];             // Массив для копирования Open, High, Low, Close, Time
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   int copy_bars=(int)fmin(Search_Period,Bars(Symbol(),Period()));
   if(CopyRates(Symbol(),PERIOD_CURRENT,1,copy_bars,array)>0) {
      double H=0;
      int size_h=0;
      for(int i=0; i<copy_bars; i++) {
         if(array[i].high>H) {
            H=array[i].high;
            size_h++;
            ArrayResize(mass_high,size_h);
            mass_high[size_h-1][0]=H;
            mass_high[size_h-1][1]=(int)array[i].time;
            }
         }
      }
   for(int i=0; i<ArrayRange(mass_high,0); i++) {
      printf("Время: %s, High: %.5f",TimeToString((int)mass_high[i][1],TIME_DATE|TIME_MINUTES),mass_high[i][0]);
      }
  }
//+------------------------------------------------------------------+
 
2つあるアドバイザーを1つにまとめるには?
 
Сергей Зырянов:
2つのEAを1つにまとめるにはどうしたらいいのでしょうか?
興味を持った目的は何ですか?あなたは、1つのEAから別のコードをコピーしますが、あなたはそれを行う方法を理解していない場合は、フリーランサーにそれを注文し、正しくそれをコピーする必要があります.
 
Artyom Trishkin:

こんな感じです。

何とかしてみます。ありがとうございます。

理由: