[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3. - страница 547

 

Alp:

Я извиняюсь за глупый вопрос, но все таки.

Я вот понять не могу. Допустим в паре евро доллар я куплю (т.е. сделаю сделку buy) на 1 000 000 долларов ну или на другую любую сумму чтобы график заметно прыгнул.

И вот вопрос куда он пойдет после такой сделки в верх или вниз (одинарный скачек от моей сделке)? Я думаю что в верх. Правильно ли я думаю?

Dimka-novitsek:

Да ну да, я так вижу. Ведь вот допустим вы купили евру, на рынке ее стало меньше, ведь часть ее лижит у вас в шкапчике. Стало быть, цена на ние на рынке вазрастет!!

Тогда становиться еще более не понятно. Допустим я покупаю евро на 1 000 000 (1кк) долларов (брокер это умножает на 100 в итоге сделка идет на 100кк) график прыгает на 100 пунктов в верх тут же их продаю и я в плюсе на 10 000 долларов ну там комиссия брокера и спред в итоге 6000$ чистыми у меня в кармане. (Ну понятно что после продажи он снова упадет на 100 пунктов.) Это бред!!!! Может он все-таки в низ упадет? А иначе очень крупные игроки так бы зарабатывали миллиарды, ничего по сути не делая.

 
Roman.:

Ребята подскажите по такому вопросу:

Вот скрипт поиска максимального размера безотката по зиг-загу от хренфх - см. здесь:

Бросаю его на график инструмента на М5 - считает нормально при умолчательном временном диапазоне

это максимальная глубина истории по инструменту в конторе Альпари, при ее закачке через F2 - я проверял, т.е. имеет вид содержимо вкладки "Эксперты" клиентского терминала - вроде похоже на правду:

При использовании этой же конструкции скрипта у себя в советнике на том же временном интервале на том же периоде графика М5 считает не правильно, т.е.

пишет совсем другие (меньшие, чем в скрипте) числа или вообще 0. В чем может быть ошибка или это какая-то несогласованность истории? Благодарю.

Т.е. я стартую в тестере совом позже расчетного времени для нахождения безотката, по идее - все нормально и цифры по итогам работы скрипта и сова - должны быть ОДИНАКОВЫ... В чем может быть ошибка?


Количество баров в тестере проверьте. При старте должно быть 1000, если она конечно есть
 
Vinin:

Количество баров в тестере проверьте. При старте должно быть 1000, если она конечно есть

Как это можно проверить?
 
Print("Bars=", Bars);
 
Vinin:
Print("Bars=", Bars);

Понял.Благодарю. Проверю.
 
Господа кто нить может привести пример функции переводящая в безубыток открытую позицию (работа по тику), в советнике имеется трал, старт этого трала только после выполнения функции переноса в б\у. Заранее спасибо.
 

Подскажите почему в этом куске кода внешняя переменная Lots111 постоянно увеличивает свое значение, умножается на неизвестное число, и становится таким 4354354664500000000000000.

Кроме этого куска кода переменная Lots111 больше нигде не используется. Lots111 у меня равна 0.01, а переменная dcou равна 2-3. Точнее я заметил что она увеличивается с каждым новым баром, не могу понять почему. Как такое вообще возможно что внешняя переменная, которая больше нигде не учавствует, сохраняет свое значение и увеличивается на каждом баре, скорее всего перемножается на 2.

double fGetLots(int a_cmd_0) {
   int dcou;
   dcou = AccountBalance()/2000;
   Lots111 = Lots111*dcou;
   int i11;
   int orders;
   
   for(i11=0;i11<OrdersTotal();i11++)
     {
     if(OrderSelect(i11,SELECT_BY_POS,MODE_TRADES) == true)
       {
       if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
         {
         orders++;
         }
       }
     }
   static double Lots2;
   
   if(orders == 0)
     {
     Lots2 = Lots111;
     }
   Comment(Lots111,"\n",Lots2,"\n",orders,"\n",dcou);
   double l_lots_4;
   int l_datetime_12;
   switch (gi_256) {
   case 0:
      l_lots_4 = Lots2;
      break;
   case 1:
      l_lots_4 = NormalizeDouble(Lots2 * MathPow(MultiLotsFactor, gi_360), gd_240);
      break;
   case 2:
      l_datetime_12 = 0;
      l_lots_4 = Lots2;
      for (int l_pos_20 = OrdersHistoryTotal() - 1; l_pos_20 >= 0; l_pos_20--) {
         if (OrderSelect(l_pos_20, SELECT_BY_POS, MODE_HISTORY)) {
            if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
               if (l_datetime_12 < OrderCloseTime()) {
                  l_datetime_12 = OrderCloseTime();
                  if (OrderProfit() < 0.0) l_lots_4 = NormalizeDouble(OrderLots() * MultiLotsFactor, gd_240);
                  else l_lots_4 = Lots2;
               }
            }
         } else return (-3);
      }
   }
   if (AccountFreeMarginCheck(Symbol(), a_cmd_0, l_lots_4) <= 0.0) return (-1);
   if (GetLastError() == 134/* NOT_ENOUGH_MONEY */) return (-2);
   return (l_lots_4);
}
 
sss2019:

Подскажите почему в этом куске кода внешняя переменная Lots111 постоянно увеличивает свое значение, умножается на неизвестное число, и становится таким 4354354664500000000000000.

Кроме этого куска кода переменная Lots111 больше нигде не используется. Lots111 у меня равна 0.01, а переменная dcou равна 2-3.

Попробуйте переменные иногда инициализировать. Иногда помогает. Особенно когда их по умолчанию используют. То есть значение не совсем определенное, а на них умножают, делят. Так же можно и деление на ноль заработать
 
Vinin:
Попробуйте переменные иногда инициализировать. Иногда помогает. Особенно когда их по умолчанию используют. То есть значение не совсем определенное, а на них умножают, делят. Так же можно и деление на ноль заработать


Это сделать, объясните пожалуйста подробней. А ну кажется понял, выставил всем переменным исходные значения, но проблема не устранилась.
 
sss2019:

Это сделать, объясните пожалуйста подробней. А ну кажется понял, выставил всем переменным исходные значения, но проблема не устранилась.

Вы выдрали код из какого-то советника (предварительно его взломав), но это не важно (хотя бы попытались его понять). Но нужно было создать свой на его основе, в котором бы Вы легко бы ориентировались. И тогда проблем бы не было. Поработайте своей головой.
Причина обращения: