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

 

助けてください!

4行とも同等のコードなのに、MAHが2行しか表示されないのですが、何が問題なのでしょうか?

#property indicator_separate_window// インジケータは別ウィンドウに描画されます。
#property indicator_buffers 4 // バッファの数
#property indicator_color1 青 // 最初の行の色
#property indicator_color2 赤 // 2行目の色
#プロパティ indicator_color3 Olive
#プロパティ indicator_color4 Teal


double Buf_ROC_MA40[],Buf_ROC_MA20[],Buf_MA40[],Buf_MA20[]; // 配列宣言(インジケータバッファの場合)
//--------------------------------------------------------------------
int init() // 特殊関数 init()
{
SetIndexBuffer(0,Buf_MA40); // バッファに配列を代入する。
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);// ラインスタイル
SetIndexBuffer(1,Buf_MA20); // バッファに配列を代入する。
SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);// ラインのスタイル
SetIndexBuffer(3,Buf_ROC_MA40); // バッファに配列を代入する。
SetIndexStyle(3,DRAW_LINE,STYLE_SOLID,2);// ラインのスタイル
SetIndexBuffer(4,Buf_ROC_MA40); // バッファに配列を代入する。
SetIndexStyle(4,DRAW_LINE,STYLE_SOLID,2);// ラインスタイル
return; // 特殊な init() 関数を終了します。
}
//--------------------------------------------------------------------
int start() // 特殊関数 start()
{
int i, // バーインデックス
歴史=3000年。
counted_bars; // 計算したバーの本数
double ma20,ma40,MA40[],MA20[],MA40_s[],MA20_s[],ma40_s,ma20_s,ROC_MA40[],ROC_MA20[];
//--------------------------------------------------------------------
// Counted_bars=IndicatorCounted(); // カウントされたバーの本数
i=Bars;//Counted_bars-1; // カウントされていない最初の1つのインデックス
while(i>=0) //カウントされていないバーを循環させる
{
ma20=iMA("EURUSD",PERIOD_M1,20,0,MODE_SMA,PRICE_CLOSE,i);
ma20_s=iMA("EURUSD",PERIOD_M1,20,0,MODE_SMA,PRICE_CLOSE,i+20);
ma40=iMA("EURUSD",PERIOD_M1,40,0,MODE_SMA,PRICE_CLOSE,i);
ma40_s=iMA("EURUSD",PERIOD_M1,40,0,MODE_SMA,PRICE_CLOSE,i+40);
Alert("ma20=",ma20, " ma20_s=",ma20_s, " ma40_s=",ma40_s, " ma40=",ma40);
MA40_s[i]=ma40_s;
MA40[i]=ma40です。
MA20[i]=ma20;
MA20_s[i]=ma20_s;
Buf_MA40[i]=ma40。
Buf_MA20[i]=ma20。
ROC_MA40[i]=MA40[i]-MA40_s[i];
Buf_ROC_MA40[i]=ROC_MA40[i];
ROC_MA20[i]=MA20[i]-MA20_s[i];
Buf_ROC_MA20[i]=ROC_MA20[i];
i--;
// 次のバーインデックスの計算
}
//--------------------------------------------------------------------
return; // 特殊関数 start() を終了する。
}

 

1.デバッガを勧めてください(変数の中間値を見ることができるように、ステップバイステップのデバッガが望ましいです)。

2.アラートを使うと不便なので、デバッグデータをどこに(どのウィンドウに)表示させたらいいのでしょうか。

3) MQLのバージョンを更新するにはどうすればよいですか?

 

アドバイスお願いします

Expert Advisorで欧州時間のみ取引する方法を教えてください。

 
VNG писал(а)>>

助けてください!

4行とも同等のコードなのに、MAが2行しか出力されないのですが、何が問題なのでしょうか?

int init() // Специальная функция init()
{
SetIndexBuffer(0, Buf_MA40); // Назначение массива буферу
SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2);// Стиль линии
SetIndexBuffer(1, Buf_MA20); // Назначение массива буферу
SetIndexStyle (1,DRAW_LINE,STYLE_SOLID,2);// Стиль линии
SetIndexBuffer(2, Buf_ROC_MA40); // Назначение массива буферу
SetIndexStyle (2,DRAW_LINE,STYLE_SOLID,2);// Стиль линии
SetIndexBuffer(3, Buf_ROC_MA40); // Назначение массива буферу
SetIndexStyle (3,DRAW_LINE,STYLE_SOLID,2);// Стиль линии
return; // Выход из спец. ф-ии init()
}

1つだけ間違いを見つけた。バッファー1の次はバッファー3。Buffer 2 はスキップされました。

ただ、マッシュと差分を1つのウィンドウで出力してはいけないのです。1桁以上の差があるのです。

 
KoDi писал(а)>>

アドバイスお願いします

欧州時間のみEAで取引するにはどうすればよいですか?

モジュールの最初にstartと入れるだけ

if(Hour()<7 || Hour()>15)return(0)。

 

もう一度コードを見てください。 新たに受信した値のスケールが全く違うので、MAを削除しました。

それでも何も表示されない。

#property indicator_separate_window// インジケータは別ウィンドウに描画されます。
#property indicator_buffers 2 // バッファの数
#property indicator_color1 青 // 最初の行の色
#property indicator_color2 赤色 //2行目の色
//#property indicator_color3 Olive
//#property indicator_color4 ティール色


double Buf_ROC_MA40[],Buf_ROC_MA20[],Buf_MA40[],Buf_MA20[]; // 配列の宣言(インジケータバッファの場合)
//--------------------------------------------------------------------
int init() // 特殊関数 init()
{
//SetIndexBuffer(0,Buf_MA40); // バッファに配列を代入する。
//SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);// ラインスタイル
//SetIndexBuffer(1,Buf_MA20); // バッファに配列を代入する。
//SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);// ラインのスタイル
SetIndexBuffer(0,Buf_ROC_MA40); // バッファに配列を代入する。
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);// ラインのスタイル
SetIndexBuffer(1,Buf_ROC_MA20); // バッファに配列を代入する。
SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);// ラインのスタイル
return; // 特殊な init() 関数を終了します。
}
//--------------------------------------------------------------------
int start() // 特殊関数 start()
{
int i, // バーインデックス
歴史=3000年。
counted_bars; // 計算したバーの本数
double ma20,ma40,MA40[],MA20[],MA40_s[],MA20_s[],ma40_s,ma20_s,ROC_MA40[],ROC_MA20[];
//--------------------------------------------------------------------
// Counted_bars=IndicatorCounted(); // カウントされたバーの本数
i=Bars;//Counted_bars-1; // カウントされていない最初の1つのインデックス
while(i>=0) //カウントされていないバーを循環させる
{
ma20=iMA("EURUSD",PERIOD_M1,20,0,MODE_SMA,PRICE_CLOSE,i);
ma20_s=iMA("EURUSD",PERIOD_M1,20,0,MODE_SMA,PRICE_CLOSE,i+20);
ma40=iMA("EURUSD",PERIOD_M1,40,0,MODE_SMA,PRICE_CLOSE,i);
ma40_s=iMA("EURUSD",PERIOD_M1,40,0,MODE_SMA,PRICE_CLOSE,i+40);
MA40_s[i]=ma40_s;
MA40[i]=ma40です。
MA20[i]=ma20;
MA20_s[i]=ma20_s;
Buf_MA40[i]=ma40。
Buf_MA20[i]=ma20。
ROC_MA40[i]=MA40[i]-MA40_s[i];
Buf_ROC_MA40[i]=ROC_MA40[i];
ROC_MA20[i]=MA20[i]-MA20_s[i];
Buf_ROC_MA20[i]=ROC_MA20[i];
i--;
//次のバーインデックスを計算する
}
//--------------------------------------------------------------------
return; // 特殊関数 start() を終了する。
}

 
VNG писал(а)>>

もう一度コードを見てください。 新たに受信した値のスケールが全く違うので、MAを削除しました。

それでも何も表示されない。

#property indicator_separate_window // インジケータは別ウィンドウに描画されます。
#property indicator_buffers 2 // バッファの数
#property indicator_color1 青 // 最初の行の色
#property indicator_color2 赤色 //2行目の色
//#property indicator_color3 Olive
//#property indicator_color4 ティール色


double Buf_ROC_MA40[],Buf_ROC_MA20[],Buf_MA40[],Buf_MA20[]; // 配列の宣言(インジケータバッファの場合)
//--------------------------------------------------------------------
int init() // 特殊関数 init()
{
//SetIndexBuffer(0,Buf_MA40); // バッファに配列を代入する。
//SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);// ラインスタイル
//SetIndexBuffer(1,Buf_MA20); // バッファに配列を代入する。
//SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);// ラインのスタイル
SetIndexBuffer(0,Buf_ROC_MA40); // バッファに配列を代入する。
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);// ラインのスタイル
SetIndexBuffer(1,Buf_ROC_MA20); // バッファに配列を代入する。
SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);// ラインのスタイル
return; // 特殊な init() 関数を終了します。
}
//--------------------------------------------------------------------
int start() // 特殊関数 start()
{
int i, // バーインデックス
歴史=3000年。
counted_bars; // 計算したバーの本数
double ma20,ma40,MA40[],MA20[],MA40_s[],MA20_s[],ma40_s,ma20_s,ROC_MA40[],ROC_MA20[];
//--------------------------------------------------------------------
// Counted_bars=IndicatorCounted(); // カウントされたバーの本数
i=Bars;//Counted_bars-1; // カウントされていない最初の1つのインデックス
while(i>=0) //カウントされていないバーを循環させる
{
ma20=iMA("EURUSD",PERIOD_M1,20,0,MODE_SMA,PRICE_CLOSE,i);
ma20_s=iMA("EURUSD",PERIOD_M1,20,0,MODE_SMA,PRICE_CLOSE,i+20);
ma40=iMA("EURUSD",PERIOD_M1,40,0,MODE_SMA,PRICE_CLOSE,i);
ma40_s=iMA("EURUSD",PERIOD_M1,40,0,MODE_SMA,PRICE_CLOSE,i+40);
MA40_s[i]=ma40_s;
MA40[i]=ma40です。
MA20[i]=ma20;
MA20_s[i]=ma20_s;
Buf_MA40[i]=ma40。
Buf_MA20[i]=ma20。
ROC_MA40[i]=MA40[i]-MA40_s[i];
Buf_ROC_MA40[i]=ROC_MA40[i];
ROC_MA20[i]=MA20[i]-MA20_s[i];
Buf_ROC_MA20[i]=ROC_MA20[i];
i--;
// 次のバーインデックスの計算
}
//--------------------------------------------------------------------
return; // 特殊関数 start() を終了する。
}

エラーが多すぎる。

主に配列を使った作業でエラーが発生する。

ファイル:
proba.mq4  2 kb
 

この問題を解決するのを助けてください - 買い/売りシグナルがあり、EAは取引を開始し、利益とストップを設定します。また、同じローソク足でストップで取引が終了した場合、アドバイザーは再び取引を開始しますが、私はそれが開かないようにしたい、つまり、一つのシグナルで一つの取引が開かれました。

どうすればいいのか?

 
KoDi >> :

どうすればいいのか?

最後の注文の終了時刻は、現在のバーの開始時刻より短くなければなりません。

そうでない場合は、取引を開始しないでください。

 
TheXpert >> :

最後の注文の終了時刻は、現在のバーの開始時刻より短くなければなりません。

そうでない場合は、取引を開始しない。

>> 混乱しています。

さて、少なくとも1つの取引があるまでエントリーしないと書く条件であれば、彼はどのように最初の取引を開くのでしょうか?

理由: