int global1 = 1;
int global2 = 2;
void myfunction(int g1, int g2)
{
global1 = g1;
global2 = g2;
}
int start()
{
// До выполнения функции: global1=1, global2=2 <--- то что объявили в начале кода
myfunction(3, 4);
// После выполнения функции: global1=3, global2=4 <--- то что присвоили в функции
}
MaxZ: Единственная проблема состоит в том, что если советник с данным кодом запустить в тестере, а переменной PERIOD присвоить значение PERIOD_M1, то обе функции iBarShift возвращают -1, т.е. функции не удалось найти в истории бар на ТФ M1 с таким временем...Почему так происходит, не знаю.
好吧,让我们尝试用另一种方式来看待它。
vteor12可以写成(dVolume+vback1)/k1(系数1)。
vrealUP12可以写成(dVolume+vback1)/k2(系数2)。
正如我试图描述的指标意识形态,它包括一些理论和实际水平的比较。为了获得这些水平,我将同一数值(dVolume+vback1)与一些理论值(k1)和实际值(k2)进行比较(即划分)。很明显,K1我只是在编造,把事情放在正确的名称里。或者,如果你愿意的话,做一个假设。现在,这必须与一些东西进行比较。在这种情况下,没有什么比图表本身更客观和真实。因此,我把开盘和收盘的差异,作为特定时间段的底线。而这里唯一的任务是把它带到相同的数字,这就是为什么它要乘以1000。
试着在计算器上计算几个不同的相邻烛台的变体,根据这个非常简单的公式,你可能会对各种结果感到惊讶。
而在学校的逻辑方面,你是对的。我加了量+量/价,你在学校不能这样做。:))
我将通过...:)))
你最初不是在显示方面有问题吗?你解决了吗?
我将通过...:)))
你最初不是在显示方面有一些问题吗?你解决了吗?
是的,我做到了,顺便说一下。我没有考虑到这是一条线,而不是一个直方图。这条线应该有2个点。由于代码没有描述所有的变体,而只是描述了连续上升的2根蜡烛,在第二个上升的蜡烛之后是一个下降的蜡烛的情况下,指标没有画出任何东西。而这是正确的。当我想明白后,我把它修改为直方图。
顺便说一下,不要把我关于加减法规则的推理放在心上。:)))
如果你能帮助我继续编写代码,我将非常感激。那是最开始的时候。在连续两个烛台之后,我想按照同样的原则连续计算3个、4个等等的烛台。显然,这段代码应该是循环的,有蜡烛图的搜索,对吗?我还做不到这一点。但不要纠结于被什么划分的问题。:)))
移植自
你好。我终于写出了我的第一个EA!我不太明白它是如何运作的。当某些条件得到满足时,该EA设置了2个挂单。两个订单的止损等于卖出(买入)挂单的高点[1](低点[1]),止盈总是等于止损的点数。我注意到在策略测试器中,利润并不总是等于以点为单位的止损。 请告诉我这是如何发生的。这是计算止损单的代码(程序中没有其他改变止损的地方)。
你好,请你告诉我,是否可以在一个函数中给多个全局变量赋值, 在这种情况下,这些变量需要在哪里声明?
你可以。
全局声明变量--在start()函数之前。在EA函数内,随心所欲地改变它们的值--从函数返回后,这些变量将拥有你在函数内分配给它们的值,直到你在某处再次改变它们。
下午好!请你告诉我,是否可以在一个函数中为多个全局变量赋值,在这种情况下,这些变量需要在哪里声明?
例子。在myfunction里面,我们给两个全局变量 赋值。你也可以用这种方式为三个、四个或n个变量赋值。
但我认为你的问题中存在一个陷阱......
是的,顺便说一句,我自己已经把它整理好了。我没有考虑到这是一条线,不是一个直方图。而这条线需要2个点。由于代码没有描述所有的变体,而只是描述了连续上升的2根蜡烛,在第二个上升的蜡烛之后是一个下降的蜡烛的情况下,指标没有画出任何东西。而这是正确的。当我弄明白后,我把它转换成直方图。
顺便说一句,你不要把我关于加减法规则的推理放在心上,把它当作一个实验。:)))
如果你能帮助我继续编写代码,我将非常感激。那是最开始的时候。在连续两个烛台之后,我想按照同样的原则连续计算3个、4个等等的烛台。显然,这段代码应该是循环的,有蜡烛图的搜索,对吗?我还做不到这一点。但不要纠结于被什么划分的问题。:)))
是的,但解决这个问题的最好方法是使用带有后置 前提条件的 "while "循环,而不是带有计数器的 "for "循环。因为你不知道你会连续遇到多少个看涨或看跌的烛台。
如果你觉得很困难,就从一个更简单的问题开始。例如,以s为增量显示从a到b的数字。或者用一个循环找到n的阶乘。
为了练习,使用两种类型的循环("for "和 "while")解决这些问题。然后你可以开始改善你的指标。
语言中没有post-while循环,MaxZ。
你帮助别人的愿望是值得赞扬的,但你自己仍然需要更好地了解这门语言。
语言中没有后while循环。
如果你对循环进行如下组织,你将得到恰到好处的后置条件。
但我接受你的纠正。谢谢你。由于MQL4中确实有两种循环类型。"for"(有一个计数器)和 "while"(有一个前提条件)。第三种类型(有后置条件)只能有意地组织。
你帮助别人的愿望是值得赞扬的,但你自己仍然需要更好地了解这门语言。
我不知道的东西,我不去那里。
而其他所有的错误都是在不经意间犯下的。我最近一直心不在焉......我只是想帮助人们。
MaxZ: Единственная проблема состоит в том, что если советник с данным кодом запустить в тестере, а переменной PERIOD присвоить значение PERIOD_M1, то обе функции iBarShift возвращают -1, т.е. функции не удалось найти в истории бар на ТФ M1 с таким временем... Почему так происходит, не знаю.
最有可能的是,这个功能在测试器中没有被建模(没有检查)。特别是精确(第四个函数参数)在默认情况下被设置为假。