[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 501 1...494495496497498499500501502503504505506507508...631 新评论 asasusa 2012.11.11 14:55 #5001 你能告诉我如何计算期货保证金吗? Viktar Dzemikhau 2012.11.11 18:38 #5002 Roman.:"我想这样做是为了不在不同的f函数中得到相同的数据。 在我看来,在2个或更多的f函数中计算相同的掩码是不合理的。计算一次就可以了,这比较容易。为什么要在这上面浪费额外的资源?按照文件中的规定去做,不要重新发明轮子。这个周期与什么有关系呢? 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); //..стохастика }自己去看看这些步骤,当你退出时,会发生什么,接下来你会怎么做? 这是无稽之谈。你像教程中那样 做--所有的交易信号 在这个交易标准的定义中--串联起来(你可以把它们包裹在不同的函数中,在检查这些交易标准是否起作用时与它们一起工作),然后你得到它们工作的条件。 关于周期,这是因为我将检查指标参数的交集。这里都是初级的。我读了它,它是按照我的想法写的。一般的教科书https://book.mql4.com/ru/build/conditions,都是捆绑式的。我已经把MACD和随机指数放在一个函数中,我不需要它。事实上,链接中的所有指标值都应该被转移到相应的函数中。为什么不呢?这是符合逻辑的。 Viktar Dzemikhau 2012.11.11 18:52 #5003 TarasBY: 你所说的和你所 "画 "的--两个巨大的区别!!! :))我已经有点糊涂了。这里有3个函数,每个函数都接收一个特定指标的特定信号。//+---------------------------------------------------------------------------------------+ //| Проверка пересечения скользящих средних | //+---------------------------------------------------------------------------------------+ 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) { 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(i_maFast1, i_maFast2, i_maSlow1, i_maSlow2)==CROSSINGTOUP || i_maFast1>i_maSlow1 ) return(SIGNAL_BUY); } 这是接收一般信号的主函数;在这里,我们通过循环获得指数值,当然是要通过所有的条形图。而后将获得的值通过引用传递给需要这些值的适当的函数,也就是传递给函数。int GetCrossingMa(double& i_maFast1, double& i_maFast2, double& i_maSlow1, double& i_maSlow2)int GetStochSignal(double& stochD1, double& stochD2, double& stochK1, double& stochK2)void GetMomentumSignal() ,原则上也可以放在这里。因此,所有指数的计算都将在一个主要功能中得到信号。这里的一切都很有逻辑性。 fore-x 2012.11.11 20:18 #5004 在附加到图表之后,程序立即启动init()函数。附属顾问或自定义指标 的 init()函数 在 客户终端启动和加载 (只涉及顾问,不涉及指标)历史数据 后,在改变符号和/或图表周期后,在MetaEditor中重新编译程序后,在改变EA或自定义指标设置窗口中的输入参数后立即 启动。专家顾问在更换账户后也会被初始化。你能解释一下它是如何工作的吗?在后台,或者可以以某种方式追踪到这一点?或者指标中的init函数,当我在长时间空闲后启动终端时,根本不会启动? Viktar Dzemikhau 2012.11.11 20:37 #5005 fore-x:在附加到图表之后,程序立即启动init()函数。附属顾问或自定义指标的 init()函数 在 客户终端启动和加载 (只涉及顾问,不涉及指标)历史数据 后,在改变符号和/或图表周期后,在MetaEditor中重新编译程序后,在改变EA或自定义指标设置窗口中的输入参数后立即 启动。专家顾问在更换账户后也会被初始化。你能解释一下它是如何工作的吗?在后台,或者可以以某种方式追踪到这一点?或者终端开始时指示器中的init功能在长时间闲置后不会启动? init 函数是用来存储在整个EA运行过程中不会被改变的数据。这可以是一些数据,在程序加载后只计算一次,不需要再重新计算。我是这样理解的。如果变量的值需要重新计算,例如,每到一个新条形 的到来,那么我们就不应该在init 函数中声明这些变量,因为它们不会在那里被重新计算。为了更容易理解,这就是可以和应该在init 中声明的内容。 Tick = MarketInfo(Symbol(), MODE_TICKSIZE); // минимальный тик Spread = ND(MarketInfo(Symbol(), MODE_SPREAD)*Point); // текущий спрэд StopLevel = ND(MarketInfo(Symbol(), MODE_STOPLEVEL)*Point); // текущий уровень стопов MinLot = MarketInfo(Symbol(), MODE_MINLOT); // минимальный разрешенный объем сделки MaxLot = MarketInfo(Symbol(), MODE_MAXLOT); // максимальный разрешенный объем сделки LotStep = MarketInfo(Symbol(), MODE_LOTSTEP); // шаг приращения объема сделки这是从市场上收集的数据,而这些数据是不会改变的。虽然这是一个关于Spread 变量的问题......如果spread不是固定的,最好把它放在单独的函数中。 fore-x 2012.11.11 20:41 #5006 hoz: init 函数用于存储在整个EA期间不会被改变的数据。你的回答又一次偏离了主题--init()函数是 在加载历史数据 后启动 的(这只适用于Expert Advisors,不适用于指标)--你怎么理解(我想感受一下)? 过牌时吃卒子--我知道有这样一条规则,但我不知道如何应用它(它更清楚)? Viktar Dzemikhau 2012.11.11 21:07 #5007 我在上面回答了我的理解。我并没有真正理解你的观点。也许其他人会。 Nikolay Grygoryev 2012.11.11 23:52 #5008 大家好!请帮助,我有一个蜡烛图的组合,我想让它们在不同的时间尺度上工作。举例来说如果(iHigh("EURUSD",PERIOD_M5,1)>iLow("EURUSD",PERIOD_M5,1)+8*kio*Point){go_s=true。}我想我可以用iHigh, iLow, iOpen等来绑定我的组合。但当在M5上测试时,它显示了一个结果,但在其他时间段却显示了另一个结果。请帮助我做错了什么。谢谢你! Роман 2012.11.12 00:40 #5009 hoz:...教科书https://book.mql4.com/ru/build/conditions,都是束之高阁。它把MACD和随机指数放在一个功能中,而我不需要这种方式。而事实上,所有的指标值都应该由链接传递给相应的函数。为什么不呢?这是符合逻辑的。因此,事实证明, 所有的指数计算都将在一个获取信号的主f函数中 进行。 这一切都很有意义。 对不起,但看起来你仍然处于食物链的最开始,那正是 "一切都符合逻辑 "的地方。:-)让它像STUDY BOOK和DOCI一样,然后用独立的函数包裹它,在结果中得到一个交易标准。在教程中--所有的东西都是一次性注册在结果中的,你可以注册你的f-i-tions--单独的,而结果是像教程中那样画出来的!在这里不需要通过引用来进行循环或参数值的转移。P.S. 一般来说,首先要拆解代码公开--所有在教程中的代码和一些在kodobase中的代码--只是一切都落到实处。 TarasBY 2012.11.12 07:33 #5010 fore-x:在附加到图表之后,程序立即启动init()函数。附属顾问或自定义指标的 init()函数 在 客户终端启动和加载 (只涉及顾问,不涉及指标)历史数据 后,在改变符号和/或图表周期后,在MetaEditor中重新编译程序后,在改变EA或自定义指标设置窗口中的输入参数后立即启动。专家顾问在更换账户后也会被初始化。你能解释一下它是如何工作的吗?在后台,或者可以以某种方式追踪到这一点?或者指标中的init功能,当你在长时间闲置后启动终端时,它根本不会启动? 我不知道你想要什么。在你对init()的描述中,有一些不太正确的 "点 "用红色标出。例如,客户终端的启动伴随着历史数据的加载,突出 "加载 "一词是不正确的--它不是启动初始化的过程。而生活中并非所有的东西都能被触及:最多是--沉思。:)))) 你想修复初始化过程,即启动init()函数--在这个函数里面打印一个通知行。 1...494495496497498499500501502503504505506507508...631 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
"我想这样做是为了不在不同的f函数中得到相同的数据。 在我看来,在2个或更多的f函数中计算相同的掩码是不合理的。计算一次就可以了,这比较容易。为什么要在这上面浪费额外的资源?
按照文件中的规定去做,不要重新发明轮子。
这个周期与什么有关系呢?
自己去看看这些步骤,当你退出时,会发生什么,接下来你会怎么做? 这是无稽之谈。
你像教程中那样 做--所有的交易信号 在这个交易标准的定义中--串联起来(你可以把它们包裹在不同的函数中,在检查这些交易标准是否起作用时与它们一起工作),然后你得到它们工作的条件。
关于周期,这是因为我将检查指标参数的交集。这里都是初级的。我读了它,它是按照我的想法写的。
一般的教科书https://book.mql4.com/ru/build/conditions,都是捆绑式的。我已经把MACD和随机指数放在一个函数中,我不需要它。
事实上,链接中的所有指标值都应该被转移到相应的函数中。为什么不呢?这是符合逻辑的。
你所说的和你所 "画 "的--两个巨大的区别!!! :))
我已经有点糊涂了。这里有3个函数,每个函数都接收一个特定指标的特定信号。
这个功能接收来自所有指数的一般信号,并做出买入 或卖出 的决定。
这是接收一般信号的主函数;在这里,我们通过循环获得指数值,当然是要通过所有的条形图。而后将获得的值通过引用传递给需要这些值的适当的函数,也就是传递给函数。
int GetCrossingMa(double& i_maFast1, double& i_maFast2, double& i_maSlow1, double& i_maSlow2)
int GetStochSignal(double& stochD1, double& stochD2, double& stochK1, double& stochK2)
void GetMomentumSignal() ,原则上也可以放在这里。
因此,所有指数的计算都将在一个主要功能中得到信号。这里的一切都很有逻辑性。
在附加到图表之后,程序立即启动init()函数。附属顾问或自定义指标 的 init()函数 在 客户终端启动和加载 (只涉及顾问,不涉及指标)历史数据 后,在改变符号和/或图表周期后,在MetaEditor中重新编译程序后,在改变EA或自定义指标设置窗口中的输入参数后立即 启动。专家顾问在更换账户后也会被初始化。
你能解释一下它是如何工作的吗?在后台,或者可以以某种方式追踪到这一点?或者指标中的init函数,当我在长时间空闲后启动终端时,根本不会启动?
在附加到图表之后,程序立即启动init()函数。附属顾问或自定义指标的 init()函数 在 客户终端启动和加载 (只涉及顾问,不涉及指标)历史数据 后,在改变符号和/或图表周期后,在MetaEditor中重新编译程序后,在改变EA或自定义指标设置窗口中的输入参数后立即 启动。专家顾问在更换账户后也会被初始化。
你能解释一下它是如何工作的吗?在后台,或者可以以某种方式追踪到这一点?或者终端开始时指示器中的init功能在长时间闲置后不会启动?
init 函数是用来存储在整个EA运行过程中不会被改变的数据。这可以是一些数据,在程序加载后只计算一次,不需要再重新计算。我是这样理解的。
如果变量的值需要重新计算,例如,每到一个新条形 的到来,那么我们就不应该在init 函数中声明这些变量,因为它们不会在那里被重新计算。
为了更容易理解,这就是可以和应该在init 中声明的内容。
这是从市场上收集的数据,而这些数据是不会改变的。虽然这是一个关于Spread 变量的问题......如果spread不是固定的,最好把它放在单独的函数中。
init 函数用于存储在整个EA期间不会被改变的数据。
你的回答又一次偏离了主题--init()函数是 在加载历史数据 后启动 的(这只适用于Expert Advisors,不适用于指标)--你怎么理解(我想感受一下)?
过牌时吃卒子--我知道有这样一条规则,但我不知道如何应用它(它更清楚)?
大家好!请帮助,我有一个蜡烛图的组合,我想让它们在不同的时间尺度上工作。举例来说
如果(iHigh("EURUSD",PERIOD_M5,1)>iLow("EURUSD",PERIOD_M5,1)+8*kio*Point)
{
go_s=true。
}
我想我可以用iHigh, iLow, iOpen等来绑定我的组合。但当在M5上测试时,它显示了一个结果,但在其他时间段却显示了另一个结果。请帮助我做错了什么。谢谢你!
...
教科书https://book.mql4.com/ru/build/conditions,都是束之高阁。它把MACD和随机指数放在一个功能中,而我不需要这种方式。
而事实上,所有的指标值都应该由链接传递给相应的函数。为什么不呢?这是符合逻辑的。
因此,事实证明, 所有的指数计算都将在一个获取信号的主f函数中 进行。 这一切都很有意义。
对不起,但看起来你仍然处于食物链的最开始,那正是 "一切都符合逻辑 "的地方。:-)
让它像STUDY BOOK和DOCI一样,然后用独立的函数包裹它,在结果中得到一个交易标准。
在教程中--所有的东西都是一次性注册在结果中的,你可以注册你的f-i-tions--单独的,而结果是像教程中那样画出来的!在这里不需要通过引用来进行循环或参数值的转移。
P.S. 一般来说,首先要拆解代码公开--所有在教程中的代码和一些在kodobase中的代码--只是一切都落到实处。
在附加到图表之后,程序立即启动init()函数。附属顾问或自定义指标的 init()函数 在 客户终端启动和加载 (只涉及顾问,不涉及指标)历史数据 后,在改变符号和/或图表周期后,在MetaEditor中重新编译程序后,在改变EA或自定义指标设置窗口中的输入参数后立即启动。专家顾问在更换账户后也会被初始化。
你能解释一下它是如何工作的吗?在后台,或者可以以某种方式追踪到这一点?或者指标中的init功能,当你在长时间闲置后启动终端时,它根本不会启动?
我不知道你想要什么。在你对init()的描述中,有一些不太正确的 "点 "用红色标出。例如,客户终端的启动伴随着历史数据的加载,突出 "加载 "一词是不正确的--它不是启动初始化的过程。
而生活中并非所有的东西都能被触及:最多是--沉思。:)))) 你想修复初始化过程,即启动init()函数--在这个函数里面打印一个通知行。