Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 129

 
Roman.:

На танки посмотрите, перегрузитесь, может поможет... :-)

П.С. Я щас - по доброму.

Не. Танки это не вариант. Если уж очень хочется что-нибудь этакое. Успакоит тока результат))
 
hoz:
Не. Танки это не вариант. Если уж очень хочется что-нибудь этакое. Успакоит тока результат))

:-)
 

Нифига себе. В общем, получается странный момент. У меня не был нормализован лот. Вот есть функция нормализации лота:

//+-------------------------------------------------------------------------------------+
//| Проверка объема на корректность и округление                                        |
//+-------------------------------------------------------------------------------------+
double LotFloor(double value)
{
   return(MathFloor(MathMin(MathMax(value, g_minLot), g_maxLot)/g_lotStep)*g_lotStep);

Проверяя, где косяк, в самой торговой функции, от куда вызываются функции открытия ордеров, уже везде в параметрах вызывающей функции посылпющих ордера добавил в параметр лотности данную функцию. Ошибка не убралась.

И, как только, я добавил в первую же ругающуюся функцию, а это функция, устанавливающая отложенники, прямо в неё функцию нормализации, то ругань прекратилась. Как это понимать?

//+-------------------------------------------------------------------------------------+
//| Открытие отложенной короткой позиции                                                |
//+-------------------------------------------------------------------------------------+
bool OpenPendingSell(double lot, double price)
{
   int g_ticket = -1;
   double OOP = price - i_distanceFromLastPos * pt;
      
   if (OOP < Bid)
   {
       fCheck_ValidPendingOOP(Symbol(), OP_SELLSTOP, OOP);
       
       g_ticket = OrderSend(Symbol(), OP_SELLSTOP, LotFloor(lot), ND(OOP), 30, 0, 0, NULL, i_magic, 0, CLR_NONE);
   }
   if (g_ticket > 0)
   {
       return (true);
   }
   else
       pr ("OpenPendingSell(): Ордер послать не удалось " + GetLastError());
   
   return (false);
}

Ведь в первом варианте я сразу посылаю уже проверенный лот, а во втором варианте я проверяю в самой функции OrderSend() лотность. Но разница то какая?

 
chief2000:
Такая задачка - есть одномерный массив, размер которого может изменяться.
Как в цикле перебрать все возможные комбинации элементов массива друг с другом?
Порядок элементов роли не играет, т.е. 123==213==321..

Вот пример для массива с 4-мя элементами:

Ну, друг с другом, вроде бы не сложно

int k = ArraySize(array);
for(int i=0;i<k-1;i++)
for(int ii=i+1;ii<k;ii++)
   {
   ...
   }
Но, вот, когда больше двух, непонятно каким образом сравнивать. Покажите метод, как сравнить три числа 1, 2 и 3 одновременно,
 
Ребят никто не скажет, как сделать так чтобы не нужно было переоткрывать окна оптимизации..... Кас стедать что это окно было с другими настройками фона, свечи и т.д.
 
Может скрипты есть такие!!!
 
Всем привет! подскажиите пожалуйста такое дело... вот к индикатору МА можно в вкладке уровни приписать уровень ну скажем 20 это означает что скользящая средняя сдвинется по оси у на 20 пунктов, но в окне данных цена этого уровня не показывается и кпримеру если сдвинуть хочу на 798, это геморойно щитать для многих пар, вот как написать индикатор чтоб или выводил на шрафик цену сдвинутой скользящей или чтобы в окне данных цену видно было и не надо было вручную подсчитывать?уровни к МА
 
Roger:

Ну, друг с другом, вроде бы не сложно

Но, вот, когда больше двух, непонятно каким образом сравнивать. Покажите метод, как сравнить три числа 1, 2 и 3 одновременно,


Если не ошибаюсь количество циклов должно соответствовать количеству элементов в массиве. Проблема в том что количество элементов не фиксированное и может быть значительно больше 4-х, надо подумать как бы это оформить. Так же интересно, может есть другие варианты реализации, которые влияют на скорость, расход памяти и т.п.?
 
paladin80:



Спасибо! А разве не имеет значения с какой стороны начинать подсчет, то есть с 3-го бара?
 
Хочу перефразировать и дополнить свой предыдущий вопрос.
Ниже приведен код для массива из 4-х элементов. В реальности, количество элементов в массиве переменная величина.
Как изменить код чтобы количество вложенных циклов 'for' стало переменным, по одному 'for' на элемент массива?
Спасибо!

int start() { 

   int Array[4]                                       = {1, 2, 3, 4};
   int x1, x2, x3, x4;
   int Array_Size                                  = ArrayRange(Array,0);


   for(x1=0; x1<Array_Size; x1++) {
      Print("Combination                       = ", Array[x1]);

      for(x2=x1+1; x2<Array_Size; x2++) {
         Print("Combination                    = ", Array[x1] + "   " + Array[x2]);

         for(x3=x2+1; x3<Array_Size; x3++) {
            Print("Combination                 = ", Array[x1] + "   " + Array[x2] + "   " + Array[x3]);

            for(x4=x3+1; x4<Array_Size; x4++) {
               Print("Combination              = ", Array[x1] + "   " + Array[x2] + "   " + Array[x3] + "   " + Array[x4]);
            }
         }
      }
   }


   return(0);
}
Причина обращения: