странно что местные знатоки тервера не воскликнули хором "Йобтв"..
раз уж изучаете программирование тут - проверьте сколько времени до факапа. Какие шансы получить дубликат magic в боле-менее реальных условиях ? и стоит ли наступать на такие грабли
странно что местные знатоки тервера не воскликнули хором "Йобтв"..
раз уж изучаете программирование тут - проверьте сколько времени до факапа. Какие шансы получить дубликат magic в боле-менее реальных условиях ? и стоит ли наступать на такие грабли
Из справки: "Для гарантированного получения неповторяющейся последовательности используйте вызов MathSrand(GetTickCount()), так как значение GetTickCount() увеличивается с момента запуска операционной системы и не повторяется в течение 49 дней"
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+enum EResult {Ok,AllocError};
template<typename T>
EResult GetRepeat(const T &arr[],T &ret[],uint count)
{
int size=ArraySize(arr); // Присваиваем переменной количество элементов массива arrif(ArrayResize(ret,size)!=size)
return AllocError;// Устанавливаем новый размер массиву ret, равный sizeint ii=0;
for(int i=0; i<size;)
{
T tmp=arr[i]; // переменная перегруженной функции с значениями массива arruint repeatCount=1; // будем считать одинаковые подряд значения массива arrwhile(++i<size&&arr[i]==tmp) // если следующее значение то же
++repeatCount; // плюсуем repeatCountif(repeatCount>=count)
ret[ii++]=tmp;
}
returnArrayResize(ret,ii)==ii?Ok:AllocError;// новый размер массива ret
}
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+voidOnStart()
{
int si=0;
int arr[]= {1,2,4,4,4,4,4,4,7,55,55,7,7,7,7,79,77,66,66,2,2,2,2,2};
int ret[];
if(!GetRepeat(arr,ret,cou))
si=ArraySize(ret);
for(int i=0; i<si; i++)
Print(si," ret[i] =",ret[i]);
}
//+------------------------------------------------------------------+
лучше использовать IsVisualMode вместо IsTesting
Можно и без IsVisualMode и без IsTesting
Вопрос был о другом
про magic=rand()
странно что местные знатоки тервера не воскликнули хором "Йобтв"..
раз уж изучаете программирование тут - проверьте сколько времени до факапа. Какие шансы получить дубликат magic в боле-менее реальных условиях ? и стоит ли наступать на такие грабли
Так тоже можно. Вероятность совпадения мала.
ещё дополнительная проверка есть на совпадение, так что всё оки доки.
про magic=rand()
странно что местные знатоки тервера не воскликнули хором "Йобтв"..
раз уж изучаете программирование тут - проверьте сколько времени до факапа. Какие шансы получить дубликат magic в боле-менее реальных условиях ? и стоит ли наступать на такие грабли
Из справки:
"Для гарантированного получения неповторяющейся последовательности используйте вызов MathSrand(GetTickCount()), так как значение GetTickCount() увеличивается с момента запуска операционной системы и не повторяется в течение 49 дней"
сделал так
странно что местные знатоки тервера не воскликнули хором "Йобтв"..
убеждать-спорить - никто не хочет, человек учится пусть учится.. сам до всего дойдет
про magic=rand()
странно что местные знатоки тервера не воскликнули хором "Йобтв"..
///
Дак, а сколько можно?
о, так работает, спасибо... ахах, только теперь по кнопке у меня открывается 150 ордеров каждый тик без остановки...
сделал так
Сделай так
Скрипт с просторов этой ветки
Не понимаю эту строку
if(!GetRepeat(arr,ret,cou))Почему с "!" ? Почему выбран перечислимый тип?
Не знаю зачем так сделано, но по своей сути это функция булева.
Наверное, автор думал как-то так:
В enum элементы начинаются с нуля: Ok=0, AllocError=1
то есть GetRepeat возвращает либо 0, либо 1,
а в языке срр: 0-это ложь, 1-истина,
соответственно ! GetRepeat - это отрицание возвращаемого значения
Голову можно сломать, ведь так просто не морочить себе и людям голову: