[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 674

 

ありがとうございます。
 

そんな悩み。

チュートリアルのExpert Advisor - strings.mq4 (link to experthttp://c.mql4.com/book/mq4/experts/strings.mq4)を改造してみました。

何行か追加しましたが、うまくいきません。間違っているのは明らかなのですが、その間違いを見つけることができません。

だからすべての変更はブロック10に集約されています。

以下は原文です。

//-------------------------------------------------------------- 10 --
int Create(int Ind_Bar, int Line) // カスタム関数...
{ // ...オブジェクトを作成する
色 Color; // オブジェクトの色
datetime T_Bar=Time [Ind_Bar]; // バーのオープン時間
double O_Bar=Open [Ind_Bar]; // バーのオープン価格
double C_Bar=Close[Ind_Bar]; // バーの終値
double H_Bar=High [Ind_Bar]; // バーの最大価格
double L_Bar=Low [Ind_Bar]; // バーの下限価格

string Nom_Lin =Line + "_"; // String - 行番号
// 文字列 Nom_Lin = DoubleToStr(Line,0)+"_"; // これも可
string Str_Time=TimeToStr(T_Bar); // 文字列 - 開いている時間。
string His_Name=Prefix+Nom_Lin+Str_Time;// 作成されたオブジェクトの名前
if (O_Bar < C_Bar) Color=Blue; // 色の選択...による。
if (O_Bar > C_Bar) Color=Red; // ...バーの特性による
if (O_Bar ==C_Bar) Color=Green;

switch(Line) // 細い線か太い線か
{
case 1: // 細い線
ObjectCreate(His_Name,OBJ_TREND,0,T_Bar,H_Bar,T_Bar,L_Bar) を実行します。
break; // 終了スイッチ
case 2: // 太い線
ObjectCreate(His_Name,OBJ_TREND,0,T_Bar,O_Bar,T_Bar,C_Bar) を実行します。
ObjectSet( His_Name, OBJPROP_WIDTH, 3); // スタイル
}
ObjectSet( His_Name,OBJPROP_COLOR,Color); // カラー
ObjectSet( His_Name, OBJPROP_RAY, false); // Beam
ObjectSetText(His_Name, "Object was created by Expert Advisor",10); // 説明
return; // 関数から退出する

}

そして、以下のようにしました(エラーなしでコンパイルできます):(添付ファイルも参照してください)。

//-------------------------------------------------------------- 10 --
int Create(int Ind_Bar, int Line) // カスタム関数...
{ // ...オブジェクトの作成
色 Color; // オブジェクトの色
datetime T_Bar=Time [Ind_Bar]; // バーのオープン時間
double O_Bar=Open [Ind_Bar]; // バーのオープン価格
double C_Bar=Close[Ind_Bar]; // バーの終値
double H_Bar=High [Ind_Bar]; // バーの最大価格
double L_Bar=Low [Ind_Bar]; // バーの下限価格
//-------------------изменения---------------------------------------
double Macd_M_D1=iMACD(NULL,1440,12,26,9,PRICE_CLOSE,MODE_MAIN,0)。
// top - 本線の日にMAACDの計算にアクセスできます。
double Macd_S_D1=iMACD(NULL,1440,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0)。
// MACDを参照し、その日のシグナルラインを計算します。
double Macd_M_H4=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);
// 現在のタイムフレームにおけるMACDの参照と本線の計算を行います。
double Macd_S_H4=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);
// これは、現在のタイムフレームにおけるMACDの参照とシグナルラインの計算です。

string Nom_Lin =Line + "_"; // String - 行の番号
// 文字列 Nom_Lin = DoubleToStr(Line,0)+"_"; // このようにすることができます。
string Str_Time=TimeToStr(T_Bar); // 文字列 - 開いている時間。
string His_Name=Prefix+Nom_Lin+Str_Time;// 作成されたオブジェクトの名前
if ((Macd_M_D1 < Macd_S_D1)&&(Macd_M_H4 < Macd_S_H4))Color=Blue;
if ((Macd_M_D1 > Macd_S_D1)&&(Macd_M_H4 > Macd_S_H4))Color=Red;
//
//if (O_Bar < C_Bar) Color=Blue; //色選択...に依存する。
//if (O_Bar > C_Bar) Color=Red; // ...バーの特性によって異なる
//if (O_Bar ==C_Bar) Color=Green;

//-------------------изменения---------------------------------------

目的は - 日足と現在の時間枠上のMACDの測定値が類似している場合 - 方向に応じてどちらかの赤または青のろうそくを着色することである。

ファイル:
 

このような配列の宣言はできません。

datetime T_Bar=Time [Ind_Bar]; // Время открытия бара
double O_Bar=Open [Ind_Bar]; // Цена открытия бара
double C_Bar=Close[Ind_Bar]; // Цена закрытия бара
double H_Bar=High [Ind_Bar]; // Максимальная цена бара
double L_Bar=Low [Ind_Bar]; // Минимальная цена бара

コンパイラは、配列のサイズの 代わりに変数があることを認識します。将来の配列に割り当てるべきメモリ量がわからないだけです。そのため、あなたのコードは動作しません

 
drknn:

このような配列の宣言はできません。

コンパイラは、配列のサイズの代わりに変数があることを認識します。将来の配列に割り当てるべきメモリ量がわからないだけです。そして、それがあなたのコードが動作しない理由です。

Expert Advisorのその部分には手を付けず、問題なく動作しました。コードの指定部分はMQL4チュートリアルから引用しています。https://c.mql4.com/book/mq4/experts/strings.mq4。

 
victor417:

実は、Expert Advisorのこの部分には手をつけておらず、すべて動作しました。コードの言及した部分は、MQL4チュートリアルから引用しています。https://c.mql4.com/book/mq4/experts/strings.mq4


チュートリアルで配列がそのように宣言されているとしたら、かなり不思議なことです。あなたが貢献したコードの部分をコメントで強調したのでしょうか。

私もその教科書は読んでいないんです。また、アレイ宣言 の正当性を裏付ける著者の根拠は何でしょうか。

 

引用のボリュームが大きくなると、テスターの速度が落ちにくくなるという不思議な現象に気づきました...。1999年からテストを始めると、速く走るのですが、現在に近づくにつれ、ブレーキが強くなって...。2008年、そして「今日」に近づく - ビジュアライゼーション・モードでのテストはまったく不可能です。

テスターのブレーキに全く対抗していないとは......。

 

drknn:

このような配列の宣言はできません。

datetime T_Bar=Time [Ind_Bar]; // Время открытия бара
double O_Bar=Open [Ind_Bar]; // Цена открытия бара
double C_Bar=Close[Ind_Bar]; // Цена закрытия бара
double H_Bar=High [Ind_Bar]; // Максимальная цена бара
double L_Bar=Low [Ind_Bar]; // Минимальная цена бара

コンパイラは、配列のサイズの代わりに変数があることを認識します。将来の配列に割り当てるべきメモリ量がわからないだけです。そして、それがあなたのコードが動作しない理由です。

もし、チュートリアルで配列がこのように定義されているとしたら、本当に不思議なことです。YOUが書いたコードの部分にコメントを入れたりしたのでしょうか?

私もその教科書は読んでいないんです。また、アレイ宣言の正当性を裏付ける著者の根拠は何でしょうか。

変数の初期化が 見えます。アレイはどこにある?

時系列?;)

 
こんにちは、誰かが高いloweから最小偏差で電流を曲げるためにジグザグ指標を 作ることができますが、ピップで...例えば、50ピップの偏差を設定した場合、それ以下のものは、ノイズとみなされます...私は本当にフォーラムでそのような大きなkollichestvoものを検索する方法がわからない... 事前にありがとうございます。
 

テスターの不具合について教えてください。

レポートでは、Total loss = 863、max drawdown = 1427となっていますが、どうしてでしょうか?

バランスカーブを見てみると、最大ドローダウンが863であることがわかります。

どういう不具合なのか、教えてください。それとも、こういうものなのでしょうか?

ありがとうございました。)

 
こんにちは!どなたかここにトレーリングストップを追加していただけませんか?また、ストップロスの設定が毎回違うのですが・・・直してください。
ファイル:
a_sidus_1.mq4  5 kb