//+------------------------------------------------------------------+ //| Начало программы | //+------------------------------------------------------------------+
intinit(){return(0);} intEURUSD() {
if(SMA_Green_EURUSD == SMA_Orange_EURUSD && SMA_Blue_EURUSD > SMA_Orange_EURUSD) { // Если зеленая МА пересекает оранжевую МА и при этом синяя МА выше - сигнал к покупке. Alert("Cигнал на ПОКУПКУ паре EURUSD"); return(11); // 11 - на первой паре сигнал на покупку. }
if(SMA_Green_EURUSD == SMA_Orange_EURUSD && SMA_Blue_EURUSD < SMA_Orange_EURUSD) { // Если зеленая МА пересекает оранжевую МА и при этом синяя МА ниже - сигнал к продаже. Alert("Cигнал на ПРОДАЖУ паре EURUSD"); return(10); // 20 - на первой паре сигнал на продажу. } } int start()
{
//+------------------------------------------------------------------+ //| Блок работы с EURUSD | //+------------------------------------------------------------------+ if(EURUSD() != 11 || EURUSD() != 10) { // Если функция EURUSD() не зафиксировала ни один из сигналов, обрабатываем данные дальше. MA_Blue_EURUSD = iMA("EURUSD",PERIOD_H1,Period_MA_Blue,0,MODE_EMA,PRICE_CLOSE,0); MA_Green_EURUSD = iMA("EURUSD",PERIOD_H1,Period_MA_Green,0,MODE_EMA,PRICE_CLOSE,0); MA_Orange_EURUSD = iMA("EURUSD",PERIOD_H1,Period_MA_Orange,0,MODE_EMA,PRICE_CLOSE,0);
SMA_Blue_EURUSD = MA_Blue_EURUSD; // Преобразование int в string SMA_Blue_EURUSD = StringSetChar(SMA_Blue_EURUSD, 6, ''); // Округление до х.хххх SMA_Green_EURUSD = MA_Green_EURUSD; // Преобразование int в string SMA_Green_EURUSD = StringSetChar(SMA_Green_EURUSD, 6, ''); // Округление до х.хххх SMA_Orange_EURUSD = MA_Orange_EURUSD; // Преобразование int в string SMA_Orange_EURUSD = StringSetChar(SMA_Orange_EURUSD, 6, ''); // Округление до х.хххх
//+------------------------------------------------------------------+//| Глобальные переменные |//+------------------------------------------------------------------+externint Period_MA_Blue = 4; // Период 4-х расчётной синей МА (4 часа)externint Period_MA_Green = 13; // Период 13-ти расчётной зеленой МА (13 часов)externint Period_MA_Orange = 50; // Период 50-ти расчётной оранжевой МА (2 дня 2 часа)double MA_Blue_EURUSD, MA_Green_EURUSD, MA_Orange_EURUSD;
string SMA_Blue_EURUSD,SMA_Green_EURUSD,SMA_Orange_EURUSD;
int БАРАБАНИТЬ = 1; // Сколько раз подавать сигналint ПОКУПКА=0,ПРОДАЖА=0;
//+------------------------------------------------------------------+//| Начало программы |//+------------------------------------------------------------------+int init(){return(0);}
int EURUSD()
{
if(SMA_Green_EURUSD == SMA_Orange_EURUSD && SMA_Blue_EURUSD > SMA_Orange_EURUSD)
{
// Если зеленая МА пересекает оранжевую МА и при этом синяя МА выше - сигнал к покупке.if(ПОКУПКА<БАРАБАНИТЬ) {Alert("Cигнал на ПОКУПКУ паре EURUSD");ПОКУПКА++;}
return(11); // 11 - на первой паре сигнал на покупку.
}
else ПОКУПКА=0;
if(SMA_Green_EURUSD == SMA_Orange_EURUSD && SMA_Blue_EURUSD < SMA_Orange_EURUSD)
{
// Если зеленая МА пересекает оранжевую МА и при этом синяя МА ниже - сигнал к продаже.if(ПРОДАЖА<БАРАБАНИТЬ) {Alert("Cигнал на ПРОДАЖУ паре EURUSD");ПРОДАЖА++;}
return(10); // 20 - на первой паре сигнал на продажу.
}
else ПРОДАЖА=0;
}
プログラム内の交差点についての説明。動くようでいて、思うように動かない。変数を1桁に丸めるのは、
が交差点をキャッチするようにするためです。そして、このAlert()は、手段が同じ位置にある限り、私を太鼓判で叩きます。どうすれば1回、いや5回まで呼ばれるようになるのでしょうか。
//| Глобальные переменные |
//+------------------------------------------------------------------+
extern int Period_MA_Blue = 4; // Период 4-х расчётной синей МА (4 часа)
extern int Period_MA_Green = 13; // Период 13-ти расчётной зеленой МА (13 часов)
extern int Period_MA_Orange = 50; // Период 50-ти расчётной оранжевой МА (2 дня 2 часа)
double MA_Blue_EURUSD, MA_Green_EURUSD, MA_Orange_EURUSD;
string SMA_Blue_EURUSD,SMA_Green_EURUSD,SMA_Orange_EURUSD;
//+------------------------------------------------------------------+
//| Начало программы |
//+------------------------------------------------------------------+
int init(){return(0);}
int EURUSD()
{
if(SMA_Green_EURUSD == SMA_Orange_EURUSD && SMA_Blue_EURUSD > SMA_Orange_EURUSD)
{
// Если зеленая МА пересекает оранжевую МА и при этом синяя МА выше - сигнал к покупке.
Alert("Cигнал на ПОКУПКУ паре EURUSD");
return(11); // 11 - на первой паре сигнал на покупку.
}
if(SMA_Green_EURUSD == SMA_Orange_EURUSD && SMA_Blue_EURUSD < SMA_Orange_EURUSD)
{
// Если зеленая МА пересекает оранжевую МА и при этом синяя МА ниже - сигнал к продаже.
Alert("Cигнал на ПРОДАЖУ паре EURUSD");
return(10); // 20 - на первой паре сигнал на продажу.
}
}
int start()
{
//+------------------------------------------------------------------+
//| Блок работы с EURUSD |
//+------------------------------------------------------------------+
if(EURUSD() != 11 || EURUSD() != 10)
{
// Если функция EURUSD() не зафиксировала ни один из сигналов, обрабатываем данные дальше.
MA_Blue_EURUSD = iMA("EURUSD",PERIOD_H1,Period_MA_Blue,0,MODE_EMA,PRICE_CLOSE,0);
MA_Green_EURUSD = iMA("EURUSD",PERIOD_H1,Period_MA_Green,0,MODE_EMA,PRICE_CLOSE,0);
MA_Orange_EURUSD = iMA("EURUSD",PERIOD_H1,Period_MA_Orange,0,MODE_EMA,PRICE_CLOSE,0);
SMA_Blue_EURUSD = MA_Blue_EURUSD; // Преобразование int в string
SMA_Blue_EURUSD = StringSetChar(SMA_Blue_EURUSD, 6, ''); // Округление до х.хххх
SMA_Green_EURUSD = MA_Green_EURUSD; // Преобразование int в string
SMA_Green_EURUSD = StringSetChar(SMA_Green_EURUSD, 6, ''); // Округление до х.хххх
SMA_Orange_EURUSD = MA_Orange_EURUSD; // Преобразование int в string
SMA_Orange_EURUSD = StringSetChar(SMA_Orange_EURUSD, 6, ''); // Округление до х.хххх
}
}
int deinit(){return(0);}
根本から間違っている場合は、交差点を追跡する方法を提案する。ありがとうございます。
こんにちは、助けてください、3つのMAが交差したときにAlert()コールを実装するための簡単なアイデアがあります。
プログラム内の交差点についての説明。動くようでいて、思うように動かない。私は、変数を1桁に丸めることで
をクリックすると、交差点をキャッチすることができます。そして、このAlert()のドラムは、手段が同じ位置にある限り、私のところに上がってくるのです。どうすれば1回、まあ最大5回まで呼ばれるようになるのか。もし根元がおかしいのであれば、交差点を追跡する方法を提案してください。ありがとうございます。
一目でわかるように、こんなところに...。
私がバカなのか、端末に問題があるのか、どちらかです。EAを最適化したいのですが、EAのプロパティに「入力パラメータ」タブがありません。EAを最適化しようとしているのですが、プロパティに「入力パラメータ」タブがないのです。
https://forum.mql4.com/ru/46980/page417#702426
https://www.mql5.com/ru/forum/138609/page417#702426
関数のパラメータに配列を使用することは可能ですか?例えば、配列の中の情報を扱う関数を作りたい。
関数のパラメータに配列を使用することは可能ですか?例えば、配列の中の情報を扱う関数を作りたい。
チュートリアルはここで 何を言っているのでしょうか?
"
渡すべきパラメータは、呼び出すべき関数名の後に括弧で囲み、カンマで区切って列挙する。関数に渡されるパラメータの数は64個以下でなければならない。また、この関数は渡されたパラメータを使用しないこともできます。この場合、空のパラメータリストが表示されます。つまり、関数名の直後に開閉括弧が置かれます。
関数呼び出しで渡されるパラメータの数、型、順序は、関数の説明で指定された正式なパラメータの数、型、順序と一致しなければなりません(例外はデフォルトパラメータを持つ関数の呼び出しで、関 数の説明と戻り値の演算 子を参照)。 このような一致がない場合、MetaEditorはエラーメッセージを表示します。定数、変数、式、 配列は、渡されたパラメータとして使用することができます。"
関数のパラメータに配列を使用することは可能ですか?例えば、配列の中の情報を扱う関数を作りたい。
これを試してみてください。
https://docs.mql4.com/ru/basis/variables/formalClose - iClose, Open - iOpen, Time - iTime Volume - iVolume 等も同様です。
また、インジケータは0から7まで最大8本のラインを描くことができますhttps://docs.mql4.com/ru/customind/indicatorbuffers
価格=iL[k];ここでiLは私のiLow...以前の安値です。
とにかく、いろいろと役に立つことがわかったのですが...これ以上は掘り下げません...。
カスタムインジケータを使わずに、もっとシンプルに再描画を視覚化する方法があります。
ここで 教科書に書かれていることは?
"
渡すべきパラメータは、呼び出すべき関数名の後の括弧内に、カンマで区切って列挙する。関数に渡されるパラメータの数は64個以下でなければならない。また、この関数は渡されたパラメータを使用しないこともできます。この場合、空のパラメータリストが表示されます。つまり、関数名の直後に開閉括弧が置かれます。
関数呼び出しで渡されるパラメータの数、型、順序は、関数の説明で指定された正式なパラメータの数、型、順序と一致しなければなりません(例外はデフォルトパラメータを持つ関数の呼び出しで、関 数の説明と戻り値の演算 子を参照)。 そのような一致がない場合、MetaEditorはエラーメッセージを表示します。定数、変数、式、 配列は、渡されたパラメータとして使用することができます。"