//+------------------------------------------------------------------+ //| Начало программы | //+------------------------------------------------------------------+
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;
}
方案中的交叉点描述。它似乎在工作,但不像它应该的那样。我把变量四舍五入到一位数,这样
,就能抓住交叉点。而这个Alert()鼓动了我,只要手段是在同一个位置。我怎样才能使它被调用一次,以及最多调用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);}
如果在根基上都是错的,建议用方法来追踪交叉点。谢谢。
下午好,请帮助,有一个简单的想法,当三个MAs相交时实现Alert()调用。
方案中的交叉点描述。它似乎在工作,但不像它应该的那样。我将变量四舍五入到一位数,以
来抓取交叉点。而这个Alert()的鼓声对我来说,只要手段是在同一个位置。如何让它被调用一次,好在最多调用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等也是如此。
而指标可以画出多达8条线,从0到7https://docs.mql4.com/ru/customind/indicatorbuffers。
非常感谢 :) 指标仍然没有画出来,我得到了尖峰的线条,如price=iL[k]; 其中iL是我的iLow...前低点。
总之,我发现了很多有用的东西......但我不会再挖下去了......
有一种更简单的方法可以使重绘可视化......不需要自定义指标。
教科书在这里 是怎么说的?
"
要传递的参数 在要调用的函数名称后面的括号中表示,并以逗号分隔列出。传递给函数的参数数量不得超过64个。该函数也可以不使用传递的参数。在这种情况下,表示一个空的参数列表,也就是说,在函数名称后面紧接着放上开括号和闭括号。
在函数调用中传递的参数的数量、类型和顺序必须与函数描述中指定的正式参数的数量、类型和顺序一致(调用一个有默认参数的函数除外--见函数调用 和函数描述及返回操作符)。 如果没有这种一致性,MetaEditor将输出一个错误信息。常量、变量、表达式和 数组 可以作为传递参数。"