[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 928

 
Techno:

какие ошибки выдает, когда не открывает позицию? Можно попробовать сделать так

вообще никакие ошибки не выдает.в том то и дело
хорошо,буду пробовать,спасибо
 
Vinin:

Если открыта хотя бы одна позиция (любая - руками, другим советником) этот советник работать не будет


это я знаю, не дурак, тогда бы не ставил бы total<1, ведь сам же пытаюсь программировать,

естественно пытаюсь соображать что я пишу в эксперте,но и на этом спасибо )

 
Roman.:

Возможно Ваш ДЦ не разрешает явно указывать тейки и стопы проверьте - пропишите нули в ф-ии открытия ордеров на их местах.

тоже не плохая мысля, обязательно проверю,спасибо
 

В документации пишется что:

double OrderClosePrice( )
Возвращает цену закрытия выбранного ордера.
Ордер должен быть предварительно выбран с помощью функции OrderSelect().

Пример:
  if(OrderSelect(10,SELECT_BY_POS,MODE_HISTORY)==true)
    {
     datetime ctm=OrderOpenTime();
     if(ctm>0) Print("Open time for the order 10 ", ctm);
     ctm=OrderCloseTime();
     if(ctm>0) Print("Close time for the order 10 ", ctm);
    }
  else
    Print("OrderSelect failed error code is",GetLastError());
 

Но нет примера самого "OrderClosePrice()" ?

Допустим он вернул значения закрытия выбранного ордера,но как узнать что это была позиция стопа или профита?

 
gheka:

В документации пишется что:

double OrderClosePrice( )
Возвращает цену закрытия выбранного ордера.
Ордер должен быть предварительно выбран с помощью функции OrderSelect().
Пример:

Но нет примера самого "OrderClosePrice()" ?

Допустим он вернул значения закрытия выбранного ордера,но как узнать что это была позиция стопа или профита?

Здесь ответ на многие ваши вопросы http://www.vedikhin.ru/2006/06/expert-advisors-overview.html 

А в прицепе все тоже самое только в ворд формате . 

Файлы:
 
gheka:

В документации пишется что:

double OrderClosePrice( )
Возвращает цену закрытия выбранного ордера.
Ордер должен быть предварительно выбран с помощью функции OrderSelect().
Пример:

Но нет примера самого "OrderClosePrice()" ?

Допустим он вернул значения закрытия выбранного ордера,но как узнать что это была позиция стопа или профита?

Это полный звиздец!!! Простите, но я в первый раз вижу такую чудовищную невнимательность, лень подумать и полнейшее отсутствие логического мышления. Думаю вам не стоит заниматься программированием... ИМХО конечно. Без обид, но на предыдущей странице, в самом её начале я вставил требуемый именно вам код, который возвращает флаг закрытия последней позиции по стопу. Предвещая ваш вопрос о том, а что такое предыдущая страница, я дам вам его ещё и тут:

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.05.2008                                                     |
//|  Описание : Возвращает флаг закрытия последней позиции по стопу.           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
bool isCloseLastPosByStop(string sy="", int op=-1, int mn=-1) {
  datetime t;
  double   ocp, osl;
  int      dg, i, j=-1, 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 (t<OrderCloseTime()) {
                t=OrderCloseTime();
                j=i;
              }
            }
          }
        }
      }
    }
  }
  if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
    dg=MarketInfo(sy, MODE_DIGITS);
    if (dg==0) if (StringFind(OrderSymbol(), "JPY")<0) dg=4; else dg=2;
    ocp=NormalizeDouble(OrderClosePrice(), dg);
    osl=NormalizeDouble(OrderStopLoss(), dg);
    if (ocp==osl) return(True);
  }
  return(False);
}

Если сможете, разберёте. Тут есть и поиск ордера и его выбор и сравнение цены закрытия с его значением СтопЛосс...

Хотя... думаю - не поможет...

 
artmedia70:

Это полный звиздец!!! Простите, но я в первый раз вижу такую чудовищную невнимательность, лень подумать и полнейшее отсутствие логического мышления. Думаю вам не стоит заниматься программированием... ИМХО конечно. Без обид, но на предыдущей странице, в самом её начале я вставил требуемый именно вам код, который возвращает флаг закрытия последней позиции по стопу. Предвещая ваш вопрос о том, а что такое предыдущая страница, я дам вам его ещё и тут:

Если сможете, разберёте. Тут есть и поиск ордера и его выбор и сравнение цены закрытия с его значением СтопЛосс...

Хотя... думаю - не поможет...


     Все когда-то начинали и еще не так тупили, товарисч просто может не проснулся еще...

     Хотя вы забыли добавить, что возвращает флаг, но не тот, который развевается на зданиями и кораблями... :-)  

 

понеслась....лучше снесу, а то сейчас 8-мь страниц накатаете

 

МНе вот всегда было бы интересно узнать в чем выражается благодарность за помощь. Я ее конечно получал пару раз, а может и больше. Кто знает какие варианты благодарости существуют?

 

Класическая фраза: Моя благодарность будет безгранична в пределах разумного.

Здраствуйте народ.

Рылся по поиску и ничего не смог.Прошу помощи.

Нужно посчитать среднюю свечу за период и средний размах Зигзага.

Ссылочку бы мне. Искал... Нашел токо такое.

Индюков-бы... 

Файлы:
elu.zip  3101 kb
Причина обращения: