//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 01.09.2005 |//| Описание : Выполняет поиск элемента массива по значению |//| и возвращает индекс найденного элемента или -1. |//+----------------------------------------------------------------------------+//| Параметры: |//| m - массив элементов |//| e - значение элемента |//+----------------------------------------------------------------------------+intArraySearchDouble(double& m[], doublee){for(inti=0; i<ArraySize(m); i++){if(m[i]==e)return(i);
}return(-1);
}
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 01.09.2005 |//| Описание : Выполняет поиск элемента массива по значению |//| и возвращает индекс найденного элемента или -1. |//+----------------------------------------------------------------------------+//| Параметры: |//| m - массив элементов |//| e - значение элемента |//+----------------------------------------------------------------------------+intArraySearchInt(int& m[], inte){for(inti=0; i<ArraySize(m); i++){if(m[i]==e)return(i);
}return(-1);
}
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 04.03.2008 |//| Описание : Выполняет поиск элемента массива по значению |//| и возвращает индекс найденного элемента или -1. |//+----------------------------------------------------------------------------+//| Параметры: |//| m - массив элементов |//| e - значение элемента |//+----------------------------------------------------------------------------+intArraySearchString(string& m[], stringe){for(inti=0; i<ArraySize(m); i++){if(m[i]==e)return(i);
}return(-1);
}
intArraySearchDouble(double& array[], doublevalue, doubleprecision = 0.00000000001){// на то, что я перемещаю скобки не обращайте внимания, мне так читабельнейfor(inti = 0; i < ArraySize(array); i++){if(array[i] > value - precision && array[i] < value + precision)return(i);
}return(-1);
}
而如果你想做同样的事情,但要从头开始。
intArrayRevertSearchDouble(double& array[], doublevalue, doubleprecision = 0.00000000001){for(inti = ArraySize(array) - 1; i >= 0; i--){if(array[i] > value - precision && array[i] < value + precision)return(i);
}return(-1);
}
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 16.06.2008 |//| Описание : Возвращает размер лота последней закрытой позиции или -1 |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+doubleGetLotLastClosePos(stringsy="", intop=-1, intmn=-1){datetimeo;
doublel=-1;
inti, k=OrdersHistoryTotal();
if(sy=="0")sy=Symbol();
for(i=0; i<k; i++){if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)){if(OrderSymbol()==sy || sy==""){if(OrderType()==OP_BUY || OrderType()==OP_SELL){if(op<0 || OrderType()==op){if(mn<0 || OrderMagicNumber()==mn){if(o<OrderCloseTime()){o=OrderCloseTime();
l=OrderLots();
}}}}}}}return(l);
}
正是如此。而且,代码越小,就越容易理解。我不能忍受字体在2-3个屏幕上被 "涂抹"。一个功能应该全部在屏幕上,没有翻转。这就是为什么我赞成紧凑性。
我也无法忍受他们 :) 。我的功能适合在屏幕上。
而且,你有很多可有可无的连贯性,顺便又把读者的注意力从你身上引开,这样可以吗?
那么,降低函数的复杂性是编写好代码的基本条件之一。
如果你喜欢这种方式,你有两个选择。
1.你已经习惯了一种糟糕的代码风格,你自己也在使用它,没有什么好的结果,当你不得不写一个真正的基本代码时,你会明白我的正确性。至少在你切换到MQL5时是这样。
2 而我认为这只是关于你的--你使用这段代码,因为你无法正确地写你自己的代码,作为一个程序员你什么都不是,那么你就没有权利判断和讨论我对这个主题的作者的帖子。我更多的是在向作者致辞。
我为我的帖子向作者道歉,我白写了,因为我反正不会使用这段代码,因为我有自己的libc,有我需要的一切。而且因为在这么长的时间里,没有明确的负面反馈,这意味着作者的代码是令人满意的。只是无法忍受:),对不起。
我为我的帖子向作者道歉,我白写了,因为我反正不会使用这段代码,因为我有自己的libc,有我需要的一切。而且因为在这么长的时间里,没有明确的负面反馈,这意味着作者的代码是令人满意的。只是无法忍受:),对不起。
我为自己的写作表示歉意,但我无法忍受。如果你因为一个人的意见而离开支部,你将是徒劳的。特别是作者说谢谢你。
我认为如果一个相同的任务可以由2个(或更多)代码来解决,那就更好了。如果你认为你的代码更好,你可以分享你解决相同任务的代码。
通常情况下,看到别人是如何对同样的东西进行编码的,但风格不同。你可以学到很多东西。
P.S. 伊戈尔,感谢你的工作。
ArraySearchDouble()函数。
该函数使用一个双数类型的值搜索一个数组元素,并返回找到的元素的索引或-1。该函数只找到一个元素,如果结果为正数,则停止搜索。
- m- 搜索该元素的数组。
- e- 双重类型的值,将在数组m 中找到。
附上一个测试ArraySearchDouble()函数的脚本。ArraySearchInt()函数。
该函数通过一个int 类型的值搜索一个数组元素,并返回找到的元素的索引或-1。该函数只找到一个元素,如果结果为正数,则停止搜索。
- m-int类型 的元素数组,在其中进行搜索。
- e-int 类型的值,将在数组m 中找到。
附上一个测试ArraySearchInt()函数的脚本。ArraySearchString()函数。
该函数搜索一个数组元素的字符串 类型的值,并返回找到的元素的索引或-1。该函数只找到一个元素,如果结果为正数,则停止搜索。
- m- 类型为字符串 的元素数组,在其中进行搜索。
- e- 字符串类型的值,它将在数组m 中找到。
附上一个测试 ArraySearchString() 函数的脚本。的确,安德烈,你不应该这样理解。>> 要简单!也不要害怕把我推下去。如果你能做出贡献,纠正我的东西或发表你自己的东西,我不会介意。
好吧,我对事情的看法略有不同,正如我已经写过的,我认为全局性的普遍性是一种邪恶,也就是说,代码至少应该为你所写的东西定制一点,以达到最大的简单性和便利。这就是为什么我认为在这里公布我自己的代码没有任何意义。
当然,如果你不介意的话,我可以充当你的代码的审查员,并提供你自己的版本,或者只是给出评论。
SZZH:谢谢你的支持,说实话,我没有想到你会有这样的反馈。
ArraySearchDouble()函数。
该函数使用一个双数类型的值搜索一个数组元素,并返回找到的元素的索引或-1。该函数只找到一个元素,如果结果为正数,则停止搜索。
- m- 搜索该元素的数组。
- e- 类型为double的值,将在数组m 中找到。
附上一个测试ArraySearchDouble()函数的脚本。双重性是一个棘手的事情,你的代码在某些情况下可能工作不正确。
这里有一个可能的变通办法
而如果你想做同样的事情,但要从头开始。
当然,如果你不介意的话,我可以充当你的代码的审查员,并提供我自己的版本,或者只是给出评论。
有一天,我在写一个EA,我需要根据之前交易的结果和同一交易的手数来改变手数大小。结果发现,我没有一个函数可以返回最后一个平仓的手数。这里有一个更正...
GetLotLastClosePos()函数。
该函数返回最后平仓的手数,或-1。要考虑的位置的选择是由外部参数定义的。
- sy- 市场工具的名称。如果设置了这个参数,函数将只考虑指定仪器的位置。默认值"" 意味着任何市场工具。NULL 值表示当前的仪器。
- op-贸易操作,职位类型。有效值:OP_BUY、OP_SELL 或-1。默认值-1 意味着任何位置。
- mn- 位置标识符,MagicNumber。默认值-1 表示任何标识符。
HH. 附上一个测试GetLastClosePos()函数的脚本。