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

 
vovander:
какого типа значение, возвращает функция OrderType()? Спасибо

int OrderType( )
 

вопрос чайника. есть в сове внешние переменные extern. если я вешаю её на две разных пары и меняю этот  extern на одном из них, то на другом она тоже почему то меняется(

а как бы их разделить? со строковыми параметрами нашёл выход  - дописываю в конце имя символа при инициализации. а как быть с целыми и даблами? 

---

ещё вопрос по функциям кима.

имеем

//| sy - наименование инструмента ( "" - любой символ, |
//| NULL - текущий символ) |
//| op - операция ( -1 - любая позиция) |
//| mn - MagicNumber ( -1 - любой магик) |
//+----------------------------------------------------------------------------+
void SimpleTrailing(string sy="", int op=-1, int mn=-1) 

 

т.е. если я вызываю   SimpleTrailing(), то фунция работает для всех пар

а если   SimpleTrailing(NULL), то только для той на графике чьей висит сова?

это какое-то недокументированное свойство или чего? не нашёл в фунции привязки к этому NULL. 

или   SimpleTrailing(NULL) и   SimpleTrailing() - одно и тоже? 

 
Omm:

вопрос чайника. есть в сове внешние переменные extern. если я вешаю её на две разных пары и меняю этот  extern на одном из них, то на другом она тоже почему то меняется(

а как бы их разделить? со строковыми параметрами нашёл выход  - дописываю в конце имя символа при инициализации. а как быть с целыми и даблами? 

---

ещё вопрос по функциям кима.


т.е. если я вызываю   SimpleTrailing(), то фунция работает для всех пар

а если   SimpleTrailing(NULL), то только для той на графике чьей висит сова?

это какое-то недокументированное свойство или чего? не нашёл в фунции привязки к этому NULL. 

или   SimpleTrailing(NULL) и   SimpleTrailing() - одно и тоже? 

1. Вы рассказываете невозможное! - а, значит, что-то "недо" рассказываете. Могу предположить, что советник не использует идентификатор - OrderMagicNumber().

2. Глянул код - что-то мне подсказывает, что использование SimpleTrailing() будет идентично SimpleTrailing (NULL). Вам осталось это проверить. А чтобы функция работала на инструменте графика, вызывайте так: SimpleTrailing (Symbol()).

 

1. Этот советник http://www.kimiv.ru/index.php?option=com_remository&Itemid=13&func=fileinfo&id=42 

 Magic там есть формально(тоже зачем то в extern), но пока не понимаю как его заставить работать. 

просто пытаюсь прикрутить безубыток и трал. 

2.вопрос снят 

нашел в другой ф-ии  if (sy=="0") sy=Symbol();

видимо в эту автор забыл добавить.

 

собственно мне надо, чтобы  ф-ия  безубыток https://forum.mql4.com/ru/11287/page55#11315

отрабатывала один раз на конкретной позиции конкретного символа

что подправить в консерватории?

 

if(ExistPositions(Symbol()) )
  { 
    for (int i=0; i<OrdersTotal(); i++)
         {
          if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) 
             if(OrderSymbol()==Symbol() )
               MovingInWL(Symbol());

         }

  } 

 

Ребята есть у кого то функция. Есть несколько ордеров разного объема.

например ордер1=0.1, ордер2=0.2, ордер3=0.3, ордер4=0.4 - итого сделок на 1 лот.

В один момент времени мне нужно закрыть часть ордеров на общую сумму определенного лота. 

Например на 0.5 лота мне надо закрыть. Ну так вот нужная функция которая закрыла бы получается ордер4=0.4 и оставшуюся часть например с ордера3. ну или ордер1, ордер2 и остаток у ордера3.

 
Omm:

собственно мне надо, чтобы  ф-ия  безубыток https://forum.mql4.com/ru/11287/page55#11315

отрабатывала один раз на конкретной позиции конкретного символа

что подправить в консерватории?

В данной функции есть проверка на однократное срабатывание - ничего выдумывать не нужно:

    if (ExistPositions (Symbol(), -1, Magic))
    {MovingInWL (Symbol(), -1, Magic);}

А функцию MovingInWL() немножко подправить:

void MovingInWL (string sy = "", int op = -1, int mn = -1)
{
    double po, pp, ld_BU;
    int    i, k = OrdersTotal();
//----
    if (sy = "0") sy = Symbol();
    for (i = k - 1; i >= 0; i--)
    {
        if (!OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) continue;
        if (sy != "") if (OrderSymbol() != sy) continue;
        if (mn >= 0) if (mn != OrderMagicNumber()) continue;
        po = MarketInfo (OrderSymbol(), MODE_POINT);
        if (OrderType() == OP_BUY)
        {
            //---- Это условие выполняется однократно (пока БУ не установлен)
            if (OrderStopLoss() - OrderOpenPrice() < LevelWLoss * po)
            {
                pp = MarketInfo (OrderSymbol(), MODE_BID);
                if (pp - OrderOpenPrice() > LevelProfit * po)
                {
                    ld_BU = NormalizeDouble (OrderOpenPrice() + LevelWLoss * po, MarketInfo (OrderSymbol(), MODE_DIGITS));
                    ModifyOrder (-1, ld_BU, -1);
                    continue;
                }
            }
        }
        else if (OrderType() == OP_SELL)
        {
            //---- Это условие выполняется однократно (пока БУ не установлен)
            if (OrderStopLoss() == 0 || OrderOpenPrice() - OrderStopLoss() < LevelWLoss * po)
            {
                pp = MarketInfo (OrderSymbol(), MODE_ASK);
                if (OrderOpenPrice() - pp > LevelProfit * po)
                {
                    ld_BU = NormalizeDouble (OrderOpenPrice() - LevelWLoss * po, MarketInfo (OrderSymbol(), MODE_DIGITS));
                    ModifyOrder (-1, ld_BU, -1);
                }
            }
        }
    }
//----
}
 

Помогите пожалуйста изменить функцию, в индикаторе High Low недельной свечи она выглядит так 

 if (TimeDay(Time[i])!=TimeDay(Time[i+1]))
{
if(TimeDayOfWeek(Time[i])==1)

а нужно  High Low месячной свечи. Спасибо  

 

TarasBY, не работает так.

в e-TFL_V2 добавляю эти две строчки в start() и саму ф-ию MovingInWL.

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

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

при этом величина безубытка как я писал в первом сообщении одинаковая для всех символов, хотя я задаю разные числа через окно настроек советника.

а где там  проверка на однократное срабатывание?

 

p.s. спасибо за исправленную ф-ию. тестю на пятизнаке, но вроде большинство кимовских ф-ий и так работает. 

p.s.s. немного погонял. вроде заработало.  дело было в кривой  MovingInWL. спасибо ещё раз. а то я уже второй день над этим бьюсь)) 

p.s.s. не могу понять зачем  Magic выносить во внешние параметры советника?

 
как создать собственный сервер для метатрейдера, то есть сервер к которому может подключиться другой человек со своего мт ??