[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 498 1...491492493494495496497498499500501502503504505...631 新评论 Юсуфходжа 2012.11.10 18:57 #4971 TarasBY: 你可以在谷歌上搜索 "Windows任务调度程序"。你可以在这里 查看。 你是否需要创建单独的程序(任务)来禁用已启用的终端? Yury Reshetov 2012.11.10 20:17 #4972 yosuf: 你必须创建单独的程序(任务)来禁用启用的终端吗? 讲师,请仔细阅读TarasBY 的链接中的文件,不要胡乱编造。 Viktar Dzemikhau 2012.11.10 21:08 #4973 这是我的测试原始猫头鹰的教程。 //+---------------------------------------------------------------------------------------+ //| Strategy №1 for H1.mq4 | //| hoz | //| | //+---------------------------------------------------------------------------------------+ #property copyright "hoz" #property link "" //----- Входные параметры ----------- extern string H1 = "___ Общие параметры индикаторов ___"; extern int i_TF = 60; extern string H2 = "_____ Параметры быстрой машки _____"; extern int i_maFastPeriod = 5, i_maFastShift = 0, i_maFastMethod = 1; extern string H3 = "____ Параметры медленной машки ____"; extern int i_maSlowPeriod = 19, i_maSlowShift = 0, i_maSlowMethod = 1; extern string H4 = "_______ Параметры Моментума _______"; extern int i_momPeriod = 18; extern string H5 = "_______ Параметры Стохастика ______"; extern int i_stoch_D = 3, // Сигнальная линия i_stoch_K = 13, // Главная линия i_stoch_slowing = 3; // Замедление int g_ticket, // Тикет текущей позиции g_type; // Тип текущей позиции //Иднентификаторы типов сигналов #define CROSSINGTOUP 1 // Пересечение быстрой медленную снизу вверх #define CROSSINGTODOWN -1 // Пересечение быстрой медленную сверху вниз #define CROSSINGWAIT 0 // Отсуствие пересечения машек #define SIGNAL_BUY 1 // Сигнал покупки #define SIGNAL_SELL -1 // Сигнал продажи #define SIGNAL_NO 0 // Отсуствие сигнала //+---------------------------------------------------------------------------------------+ //| Функция инициализации эксперта | //+---------------------------------------------------------------------------------------+ int init() { return(0); } //+---------------------------------------------------------------------------------------+ //| Функция деинициализации эксперта | //+---------------------------------------------------------------------------------------+ int deinit() { return(0); } //+---------------------------------------------------------------------------------------+ //| Проверка пересечения скользящих средних | //+---------------------------------------------------------------------------------------+ int GetCrossingMa(double& i_maFast1, double& i_maFast2, double& i_maSlow1, double& i_maSlow2) { if ((i_maFast2<i_maSlow2) && (i_maFast1>i_maSlow1)) // Если быстрая скользящая пересекла медленную снизу вверх.. return(CROSSINGTOUP); //.. значит, - пересечение вверх if ((i_maFast2>i_maSlow2) && (i_maFast1<i_maSlow1)) // Если быстрая скользящая средняя пересекла медленную сверху вниз.. return(CROSSINGTODOWN); //..значит, - пересечение вниз return(CROSSINGWAIT); // Ожидаем пересечения } //+---------------------------------------------------------------------------------------+ //| Получение сигнала от Стохастика | //+---------------------------------------------------------------------------------------+ int GetStochSignal(double& stochD1, double& stochD2, double& stochK1, double& stochK2) { for(int i=1;i<=Bars;i++) { if((stochD2<stochK2) && (stochD1>stochK1)) // Если сигнальная линия пересекла главную снизу вверх.. return(CROSSINGTOUP); //..значит, - пересечение вверх if((stochD2>stochK2) && (stochD1<stochK1)) // Если сигнальная линия пересекла главную сверху вниз.. return(CROSSINGTODOWN); // ..значит, - пересечение вниз } return(CROSSINGWAIT); // Ожидаем пересечения } //+---------------------------------------------------------------------------------------+ //| Получение сигнала от Моментума | //+---------------------------------------------------------------------------------------+ void GetMomentumSignal() { double momentum = iMomentum(Symbol(),i_TF,i_momPeriod,0,0); } //+---------------------------------------------------------------------------------------+ //| Получение общего сигнала для входа в рынок | //+---------------------------------------------------------------------------------------+ int GetSignal() { for(int i=1;i<=Bars;i++) { double i_maFast1 = iMA(Symbol(),i_TF,i_maFastPeriod,i_maFastShift,i_maFastMethod,0,i); // Вычисляем быстрые скользящие.. double i_maFast2 = iMA(Symbol(),i_TF,i_maFastPeriod,i_maFastShift,i_maFastMethod,0,i+1); //..средние double i_maSlow1 = iMA(Symbol(),i_TF,i_maSlowPeriod,i_maSlowShift,i_maSlowMethod,0,i); // Вычисляем медленные скользящие.. double i_maSlow2 = iMA(Symbol(),i_TF,i_maSlowPeriod,i_maSlowShift,i_maSlowMethod,0,i+1); //..средние double stochD1 = iStochastic(Symbol(),i_TF,i_stoch_D,i_stoch_K,i_stoch_slowing,0,0,1,i); // Вычисляем значения сигнальной линии.. double stochD2 = iStochastic(Symbol(),i_TF,i_stoch_D,i_stoch_K,i_stoch_slowing,0,0,1,i+1); //..стохастика double stochK1 = iStochastic(Symbol(),i_TF,i_stoch_D,i_stoch_K,i_stoch_slowing,0,0,0,i); // Вычисляем значения главной линии.. double stochK2 = iStochastic(Symbol(),i_TF,i_stoch_D,i_stoch_K,i_stoch_slowing,0,0,0,i+1); //..стохастика } if( GetCrossingMa(double& i_maFast1, double& i_maFast2, double& i_maSlow1, double& i_maSlow2)==CROSSINGTOUP || i_maFast1>i_maSlow1 ) return(SIGNAL_BUY); } //+---------------------------------------------------------------------------------------+ //| Поиск своих ордеров | //+---------------------------------------------------------------------------------------+ void FindOrders() { } //+---------------------------------------------------------------------------------------+ //| Функция start эксперта | //+---------------------------------------------------------------------------------------+ int start() { //---- //---- return(0); } intGetCrossingMa(double& i_maFast1, double& i_maFast2, double& i_maSlow1, double& i_maSlow2) 函数获得穿越信号。intGetStochSignal(double& stochD1, double& stochD2, double& stochK1, double& stochK2) 函数接收来自随机的信号。空白的GetMomentumSignal() 函数获取动量的值。intGetSignal() 将在前3个函数的基础上获得一般信号,而不仅仅是它们。问题是这样的。由于int GetSignal() 函数是主函数,可以说它得到了主信号,我得到了所有的襟翼(i_maFast1,i_maFast2,i_maSlow1和i_maSlow2)和随机数(stochD1,stochD2,stochK1,stochK2)的值。我对代码的优化 是否正确?当然,在函数GetSignal() 中获得的所有参数都通过引用传递给相应的函数。但在这里,这个片断 if( GetCrossingMa(double& i_maFast1, double& i_maFast2, double& i_maSlow1, double& i_maSlow2)==CROSSINGTOUP || i_maFast1>i_maSlow1 ) return(SIGNAL_BUY);编译时出现了错误。'&' - variable expected E:\Insall'd soft's\Forex\Admiral Markets\experts\Strategy №1 for H1.mq4 (109, 31) '&' - variable expected E:\Insall'd soft's\Forex\Admiral Markets\experts\Strategy №1 for H1.mq4 (109, 50) '&' - variable expected E:\Insall'd soft's\Forex\Admiral Markets\experts\Strategy №1 for H1.mq4 (109, 69) '&' - variable expected E:\Insall'd soft's\Forex\Admiral Markets\experts\Strategy №1 for H1.mq4 (109, 88) 4 ошибок, 0 предупреждений 为什么? Boris 2012.11.10 23:31 #4974 我不喜欢在左手边的代码中打探,但我马上想到,为什么在函数中的double后面会有一个&(!)。这就是造成错误的原因! Vadim Zhunko 2012.11.10 23:32 #4975 hoz:这是我的测试原始猫头鹰的教程。编译时弹出一个错误。为什么? 因为。//+---------------------------------------------------------------------------------------+ //| Получение общего сигнала для входа в рынок | //+---------------------------------------------------------------------------------------+ int GetSignal() { for(int i=1;i<=Bars;i++) { double i_maFast1 = iMA(Symbol(),i_TF,i_maFastPeriod,i_maFastShift,i_maFastMethod,0,i); // Вычисляем быстрые скользящие.. double i_maFast2 = iMA(Symbol(),i_TF,i_maFastPeriod,i_maFastShift,i_maFastMethod,0,i+1); //..средние double i_maSlow1 = iMA(Symbol(),i_TF,i_maSlowPeriod,i_maSlowShift,i_maSlowMethod,0,i); // Вычисляем медленные скользящие.. double i_maSlow2 = iMA(Symbol(),i_TF,i_maSlowPeriod,i_maSlowShift,i_maSlowMethod,0,i+1); //..средние double stochD1 = iStochastic(Symbol(),i_TF,i_stoch_D,i_stoch_K,i_stoch_slowing,0,0,1,i); // Вычисляем значения сигнальной линии.. double stochD2 = iStochastic(Symbol(),i_TF,i_stoch_D,i_stoch_K,i_stoch_slowing,0,0,1,i+1); //..стохастика double stochK1 = iStochastic(Symbol(),i_TF,i_stoch_D,i_stoch_K,i_stoch_slowing,0,0,0,i); // Вычисляем значения главной линии.. double stochK2 = iStochastic(Symbol(),i_TF,i_stoch_D,i_stoch_K,i_stoch_slowing,0,0,0,i+1); //..стохастика } if( GetCrossingMa(i_maFast1, i_maFast2, i_maSlow1, i_maSlow2)==CROSSINGTOUP || i_maFast1>i_maSlow1 ) return(SIGNAL_BUY); } Viktar Dzemikhau 2012.11.11 06:25 #4976 borilunad: 我不喜欢挖掘自定义代码,但我立即注意到为什么在函数的双倍数后面有&(!)。这就是造成错误的原因! 所以这很有意义。它意味着通过链接传输参数。为了避免详细解释代码,我将简单解释一下。有3个函数:(int GetCrossingMa,int GetStochSignal 和int GetSignal()intGetSignal()函数获得襟翼和其他指标的值,这些值通过引用传递给非核心 函数(int GetCrossingMa 和int GetStochSignal),以获得它们中的相应信号。我想这样做是为了避免在不同的函数中得到相同的数据。我认为在2个或更多的函数中计算同一个掩码是不明智的。只 要计算一次就可以了,这样做比较容易。为什么要在这上面浪费额外的资源? Роман 2012.11.11 06:44 #4977 hoz:所以这很有意义。它意味着通过链接传输参数。为了避免详细解释代码,我将简单解释一下。有3个函数:(int GetCrossingMa,int GetStochSignal 和int GetSignal()intGetSignal()函数获得襟翼和其他指标的值,这些值通过引用传递给非核心 函数(int GetCrossingMa 和int GetStochSignal),以获得它们中的相应信号。我想这样做是为了避免在不同的函数中得到相同的数据。我认为在2个或更多的函数中计算同一个掩码是不明智的。只 要计算一次就可以了,这样比较容易。为什么要在这上面浪费额外的资源? 你是否用μl4以外的语言进行过编程? TarasBY 2012.11.11 06:50 #4978 hoz:这是我的测试原始猫头鹰的教程。 intGetCrossingMa(double& i_maFast1, double& i_maFast2, double& i_maSlow1, double& i_maSlow2) 函数获得穿越信号。intGetStochSignal(double& stochD1, double& stochD2, double& stochK1, double& stochK2) 函数接收来自随机的信号。空白的GetMomentumSignal() 函数可以获得动量的值。intGetSignal() 将在前3个函数的基础上获得一般信号,而不仅仅是它们。问题是这样的。由于int GetSignal() 函数是主函数,可以说它得到了主信号,我得到了所有的襟翼(i_maFast1,i_maFast2,i_maSlow1和i_maSlow2)和随机数(stochD1,stochD2,stochK1,stochK2)的值。我对代码的优化是否正确?当然,在函数GetSignal() 中获得的所有参数都通过引用传递给相应的函数。但在这里,这个片断 错误将在编译时弹出。 为什么?这可能是我们需要的信号搜索的一个变种吧。//+---------------------------------------------------------------------------------------+ //| Проверка пересечения скользящих средних | //+---------------------------------------------------------------------------------------+ int GetCrossingMa (int fi_Bar = 1) { double i_maFast1 = iMA (Symbol(), i_TF, i_maFastPeriod, i_maFastShift, i_maFastMethod, 0, fi_Bar), // Вычисляем быстрые скользящие.. i_maFast2 = iMA (Symbol(), i_TF, i_maFastPeriod, i_maFastShift, i_maFastMethod, 0, fi_Bar + 1), //..средние i_maSlow1 = iMA (Symbol(), i_TF, i_maSlowPeriod, i_maSlowShift, i_maSlowMethod, 0, fi_Bar), // Вычисляем медленные скользящие.. i_maSlow2 = iMA (Symbol(), i_TF, i_maSlowPeriod, i_maSlowShift, i_maSlowMethod, 0, fi_Bar + 1); //..средние //---- if (i_maFast2 < i_maSlow2) if (i_maFast1 > i_maSlow1) // Если быстрая скользящая пересекла медленную снизу вверх.. return (CROSSINGTOUP); //.. значит, - пересечение вверх if (i_maFast2 > i_maSlow2) if (i_maFast1 < i_maSlow1) // Если быстрая скользящая средняя пересекла медленную сверху вниз.. return (CROSSINGTODOWN); //..значит, - пересечение вниз //---- return (CROSSINGWAIT); // Ожидаем пересечения } //+---------------------------------------------------------------------------------------+ //| Получение сигнала от Стохастика | //+---------------------------------------------------------------------------------------+ int GetStochSignal (int fi_Bar = 1) { double stochD1 = iStochastic (Symbol(), i_TF, i_stoch_D, i_stoch_K, i_stoch_slowing, 0, 0, 1, fi_Bar), // Вычисляем значения сигнальной линии.. stochD2 = iStochastic (Symbol(), i_TF, i_stoch_D, i_stoch_K, i_stoch_slowing, 0, 0, 1, fi_Bar + 1), //..стохастика stochK1 = iStochastic (Symbol(), i_TF, i_stoch_D, i_stoch_K, i_stoch_slowing, 0, 0, 0, fi_Bar), // Вычисляем значения главной линии.. stochK2 = iStochastic (Symbol(), i_TF, i_stoch_D, i_stoch_K, i_stoch_slowing, 0, 0, 0, fi_Bar + 1); //..стохастика //---- if (stochD2 < stochK2) if (stochD1 > stochK1) // Если сигнальная линия пересекла главную снизу вверх.. return (CROSSINGTOUP); //..значит, - пересечение вверх if (stochD2 > stochK2) if (stochD1 < stochK1) // Если сигнальная линия пересекла главную сверху вниз.. return (CROSSINGTODOWN); // ..значит, - пересечение вниз } //---- return (CROSSINGWAIT); // Ожидаем пересечения } //+---------------------------------------------------------------------------------------+ //| Получение сигнала от Моментума | //+---------------------------------------------------------------------------------------+ double GetMomentumSignal (int fi_Bar = 0) {return (iMomentum (Symbol(), i_TF, i_momPeriod, 0, fi_Bar));} //+---------------------------------------------------------------------------------------+ //| Получение общего сигнала для входа в рынок | //+---------------------------------------------------------------------------------------+ int GetSignal (int fi_Bar = 1) { int li_Signal; //---- double ld_SignalMomentum = GetMomentumSignal (fi_Bar); int li_SignalStoch = GetStochSignal (fi_Bar), li_CrossingMA = GetCrossingMa (fi_Bar); //---- return (li_Signal); }在最后一个函数GetSignal()中,你对所有的信号进行了 "添加"(由你自己)。P.S. 在从指标上 获得信号 时,有一个 "微妙 "的时刻。例如,你可以修复发现maSlow超过/低于maFast的事实,或者你可以 "抓住 "它们相交的时刻。方法和代码是不同的。 Viktar Dzemikhau 2012.11.11 06:51 #4979 Roman.:你是否用μl4以外的语言进行过编程? 有一点是用Perl,有一点是用Pxp。但我没有认真接触过其他语言,因为我没有必要。这有什么关系吗? TarasBY 2012.11.11 06:54 #4980 hoz:所以这很有意义。它意味着通过链接传输参数。为了避免详细解释代码,我将简单解释一下。有3个函数:(int GetCrossingMa,int GetStochSignal 和int GetSignal()intGetSignal()函数获得襟翼和其他指标的值,这些值通过引用传递给非核心 函数(int GetCrossingMa 和int GetStochSignal),以获得它们中的相应信号。我想这样做是为了避免在不同的函数中得到相同的数据。我认为在2个或更多的函数中计算同一个掩码是不明智的。只 要计算一次就可以了,这样比较容易。为什么要在这上面浪费额外的资源? 解释很清楚,但行动却不清楚。 这些是这些。你的变体中的 "intGetSignal() 函数获取刻度和其他指标的值 "的操作是 "有问题的",说得不好听,因为没有必要做这样的操作。 这个代码。 for(int i=1;i<=Bars;i++) { double i_maFast1 = iMA(Symbol(),i_TF,i_maFastPeriod,i_maFastShift,i_maFastMethod,0,i); // Вычисляем быстрые скользящие.. double i_maFast2 = iMA(Symbol(),i_TF,i_maFastPeriod,i_maFastShift,i_maFastMethod,0,i+1); //..средние double i_maSlow1 = iMA(Symbol(),i_TF,i_maSlowPeriod,i_maSlowShift,i_maSlowMethod,0,i); // Вычисляем медленные скользящие.. double i_maSlow2 = iMA(Symbol(),i_TF,i_maSlowPeriod,i_maSlowShift,i_maSlowMethod,0,i+1); //..средние double stochD1 = iStochastic(Symbol(),i_TF,i_stoch_D,i_stoch_K,i_stoch_slowing,0,0,1,i); // Вычисляем значения сигнальной линии.. double stochD2 = iStochastic(Symbol(),i_TF,i_stoch_D,i_stoch_K,i_stoch_slowing,0,0,1,i+1); //..стохастика double stochK1 = iStochastic(Symbol(),i_TF,i_stoch_D,i_stoch_K,i_stoch_slowing,0,0,0,i); // Вычисляем значения главной линии.. double stochK2 = iStochastic(Symbol(),i_TF,i_stoch_D,i_stoch_K,i_stoch_slowing,0,0,0,i+1); //..стохастика }完整的P....你知道这里 "发生了什么 "吗?- 整个 "条形行 "的搜索是徒劳的,在循环结束时,变量的值被留下......。猜猜接下来会发生什么。 1...491492493494495496497498499500501502503504505...631 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
你可以在谷歌上搜索 "Windows任务调度程序"。你可以在这里 查看。
你必须创建单独的程序(任务)来禁用启用的终端吗?
这是我的测试原始猫头鹰的教程。
intGetCrossingMa(double& i_maFast1, double& i_maFast2, double& i_maSlow1, double& i_maSlow2) 函数获得穿越信号。
intGetStochSignal(double& stochD1, double& stochD2, double& stochK1, double& stochK2) 函数接收来自随机的信号。
空白的GetMomentumSignal() 函数获取动量的值。
intGetSignal() 将在前3个函数的基础上获得一般信号,而不仅仅是它们。问题是这样的。由于int GetSignal() 函数是主函数,可以说它得到了主信号,我得到了所有的襟翼(i_maFast1,i_maFast2,i_maSlow1和i_maSlow2)和随机数(stochD1,stochD2,stochK1,stochK2)的值。
我对代码的优化 是否正确?
当然,在函数GetSignal() 中获得的所有参数都通过引用传递给相应的函数。
但在这里,这个片断
编译时出现了错误。
这是我的测试原始猫头鹰的教程。
编译时弹出一个错误。
因为。
我不喜欢挖掘自定义代码,但我立即注意到为什么在函数的双倍数后面有&(!)。这就是造成错误的原因!
所以这很有意义。它意味着通过链接传输参数。
为了避免详细解释代码,我将简单解释一下。
有3个函数:(int GetCrossingMa,int GetStochSignal 和int GetSignal()
intGetSignal()函数获得襟翼和其他指标的值,这些值通过引用传递给非核心 函数(int GetCrossingMa 和int GetStochSignal),以获得它们中的相应信号。我想这样做是为了避免在不同的函数中得到相同的数据。我认为在2个或更多的函数中计算同一个掩码是不明智的。只 要计算一次就可以了,这样做比较容易。为什么要在这上面浪费额外的资源?
所以这很有意义。它意味着通过链接传输参数。
为了避免详细解释代码,我将简单解释一下。
有3个函数:(int GetCrossingMa,int GetStochSignal 和int GetSignal()
intGetSignal()函数获得襟翼和其他指标的值,这些值通过引用传递给非核心 函数(int GetCrossingMa 和int GetStochSignal),以获得它们中的相应信号。我想这样做是为了避免在不同的函数中得到相同的数据。我认为在2个或更多的函数中计算同一个掩码是不明智的。只 要计算一次就可以了,这样比较容易。为什么要在这上面浪费额外的资源?
你是否用μl4以外的语言进行过编程?
这是我的测试原始猫头鹰的教程。
intGetCrossingMa(double& i_maFast1, double& i_maFast2, double& i_maSlow1, double& i_maSlow2) 函数获得穿越信号。
intGetStochSignal(double& stochD1, double& stochD2, double& stochK1, double& stochK2) 函数接收来自随机的信号。
空白的GetMomentumSignal() 函数可以获得动量的值。
intGetSignal() 将在前3个函数的基础上获得一般信号,而不仅仅是它们。问题是这样的。由于int GetSignal() 函数是主函数,可以说它得到了主信号,我得到了所有的襟翼(i_maFast1,i_maFast2,i_maSlow1和i_maSlow2)和随机数(stochD1,stochD2,stochK1,stochK2)的值。
我对代码的优化是否正确?
当然,在函数GetSignal() 中获得的所有参数都通过引用传递给相应的函数。
但在这里,这个片断
错误将在编译时弹出。
这可能是我们需要的信号搜索的一个变种吧。
在最后一个函数GetSignal()中,你对所有的信号进行了 "添加"(由你自己)。
P.S. 在从指标上 获得信号 时,有一个 "微妙 "的时刻。例如,你可以修复发现maSlow超过/低于maFast的事实,或者你可以 "抓住 "它们相交的时刻。方法和代码是不同的。
你是否用μl4以外的语言进行过编程?
所以这很有意义。它意味着通过链接传输参数。
为了避免详细解释代码,我将简单解释一下。
有3个函数:(int GetCrossingMa,int GetStochSignal 和int GetSignal()
intGetSignal()函数获得襟翼和其他指标的值,这些值通过引用传递给非核心 函数(int GetCrossingMa 和int GetStochSignal),以获得它们中的相应信号。我想这样做是为了避免在不同的函数中得到相同的数据。我认为在2个或更多的函数中计算同一个掩码是不明智的。只 要计算一次就可以了,这样比较容易。为什么要在这上面浪费额外的资源?
解释很清楚,但行动却不清楚。
这些是这些。你的变体中的 "intGetSignal() 函数获取刻度和其他指标的值 "的操作是 "有问题的",说得不好听,因为没有必要做这样的操作。
这个代码。
完整的P....你知道这里 "发生了什么 "吗?- 整个 "条形行 "的搜索是徒劳的,在循环结束时,变量的值被留下......。猜猜接下来会发生什么。