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

 
Ещё раз...  int Buy[]; Это динамический массив?То-есть, в нем будет столько элементов, сколько я позже буду задавать?
 
Ну, да...  Тогда как я массиву не могу присвоить значения?? Я ведь уже принтами вывел всё что мог.. 
 
Доброго всем времени суток! Я на форексе совсем новичек, но кое-какие наработки все-таки есть в виде пары сырых советников. Один из них показывает неплохие (для меня) результаты на истории 2010, 2011 и 2012 года. Естественно, при создании подгон делался под историю. Созрел следующий вопрос. Есть ли какая-то статистика по сроку службы стратегий на TF Day? Можно ли не жадничая быть в плюсе с подогнанной под историю стратегией в течение длительного промежутка времени, подгоняя ее (стратегию) под изменения на рынке? Кто имеет опыт, отзовитесь, пожалуйста. Буду очень благодарен!
 
Dimka-novitsek:
Ну, да...  Тогда как я массиву не могу присвоить значения?? Я ведь уже принтами вывел всё что мог.. 


Учёт ордеров
 
Спасибо!!!
 
Dimka-novitsek:

Я же давал пример функции, использующей динамический массив (стр.64).

dim=ArrayResize(Buy,Raz); - устанавливает размерность Raz для массива Buy. Только после этого можно что-то запомнить в элементе массива с номером Raz-1
 
Спасибо!  Извините, не обратил внимания на функцию!
 

Помогите переделать по закрытии бара

Закрытие позиций по рыночной цене

//|  Параметры:                                                                |

//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
void ClosePositions(string sy="", int op=0, int mn=-1) {
  if(last>=Time[0]) return;  // если время бара уже проверено то выходим сразу, т.е. ждем новый бар
  last=Time[0]; //
  int i, k=OrdersTotal();

  if (sy=="0") sy=Symbol();
  for (i=k-1; i>=0; i--) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (mn<0 || OrderMagicNumber()==mn) ClosePosBySelect();
        }
      }
    }
  }
}
 
Macros:

Не надо переделывать чужие функции,- у Кима они сделаны хорошо. Надо просто ими правильно пользоваться.

По закрытию не получится,- откуда Вы знаете, что бар уже закрыт, пока не откроется новый? Вот и вызывайте функцию закрытия ордера в момент начала формирования нового бара. Как распознать этот момент многократно было показано: в учебнике, в FAQ, на форуме. Почитайте что-нибудь.

 
Sepulca:


Ну во первых за десять минут вполне реально напихать 6 гигов. Получается с каждым тиком один принт, зачем Вам это надо?

А во-вторых Вы уверены что меняется?

Какой-нибудь семафор надо ставить, что-бы один раз печатало... 

где-то так....

 


спасибо ребята за помощь, но я так и не смог разобраться что этому while надо. цикл виснет намертво, на условия плюет, "вешает" комп и грузит гигабайты логов....

пришлось ампутировать!

заменил его на серию if...и поставил метки(флаги) там где нужно...  и все заработало. просто код получился длиннее и некрасивее 

прощай функция while.  Больше мы никогда не встретимся! 

:)))) 

Причина обращения: