# Доработка ботов (советников, индикаторов) vol. 2

Раздел: Язык программирования MQL4
Автор темы: chocolate
Создана: 2014-10-02 12:48
Ответов: 33818 | Просмотров: 6674516
Страница 535 из 1691
Источник: https://forexsystemru.com/threads/77111/page-535

---

## Picasso — 2016-11-13 02:24

Коллеги, возможно ли добавить ценовые метки к точкам?

## STARGAZER — 2016-11-13 15:18

Помогите доработать сеточник :facepalm:
Нужно чтобы после того как уже куплено 5 ордеров программа анализировала 6 ордер и последующие ордера следующим образом:
например куплен 6 ордер и он уходит в плюс. Как только он уходит за цену 5-го ордера т.е. у 5-го ордера цена становится плюсовой то 6 ордер нужно чтобы закрывался. аналогично нужно чтобы все последующие ордера которые покупаются после 5-го ордера закрывались аналогичным образом. Также нужно чтобы тейкпрофит тоже смещался
Хотелось бы чтобы эта функция была параметром который можно включить указав нужное количество ордеров

## lavandos — 2016-11-13 19:10

коллеги, может кто нибудь сделать из него МТФ? :please:

## Tankk — 2016-11-13 20:16

**Visual MACD-2 MTF TT**

> Цитата (lavandos):
> коллеги, может кто нибудь сделать из него МТФ? :please:

*hi* сделал на скорую руку..... :D

## mrwaytt — 2016-11-13 22:26

Вечер добрый! Добавьте пожалуйста пункт - сколько учитывать истории по свечам ... не хватает жутко

## serrus — 2016-11-14 10:32

Напомню о просьбе в посте 10744.

## STARGAZER — 2016-11-14 23:51

> Цитата (STARGAZER):
> Помогите доработать сеточник :facepalm:
> Нужно чтобы после того как уже куплено 5 ордеров программа анализировала 6 ордер и последующие ордера следующим образом:
> например куплен 6 ордер и он уходит в плюс. Как только он уходит за цену 5-го ордера т.е. у 5-го ордера цена становится плюсовой то 6 ордер нужно чтобы закрывался. аналогично нужно чтобы все последующие ордера которые покупаются после 5-го ордера закрывались аналогичным образом. Также нужно чтобы тейкпрофит тоже смещался
> Хотелось бы чтобы эта функция была параметром который можно включить указав нужное количество ордеров

Начал дописывать своими силами. Подскажите в коде пожалуйста
Как мне явно указать и проверить что пятый ордер по цене сталбольше нуля чтобы закрыть шестой ордер, или шестой ордер стал больше нуля по цене чтобы можно было закрыть седьмой ордер если он был открыт?

   double opB=2000; double opS=0; double orderProfitbuy=0; double Sum_Profitbuy=0; double orderProfitsel;  double Sum_Profitsel; int orderType;
   double LotB=Lots_New;
   double LotS=Lots_New;
   int total=OrdersTotal();
   int b=0,s=0,n=0;
   for(int i=total-1; i>=0; i--)
     {
      if(OrderSelect(i, SELECT_BY_POS))
        {
         if(OrderSymbol()==Symbol()      )
           {
            n++;
            if(OrderType()==OP_BUY && OrderMagicNumber()==Magic)
              {
               b++;
               LotB=OrderLots();
               double ProfitB=OrderTakeProfit(); double openB=OrderOpenPrice();
               if(openB<opB)
                 {opB=openB;}
              }
            //---------------------------------      
            if(OrderType()==OP_SELL && OrderMagicNumber()==Magic)
              {
               s++;
               LotS=OrderLots();
              double ProfitS=OrderTakeProfit(); double openS=OrderOpenPrice();
               if(openS>opS)
                 {opS=openS;}
              }
           }
        }
     }
   double max = NormalizeDouble(iHigh(Symbol(),1440,0),Digits);
   double min = NormalizeDouble(iLow (Symbol(),1440,0),Digits);
   double opp=NormalizeDouble(iOpen(Symbol(),1440,0),Digits);
   double cl=NormalizeDouble(iClose(Symbol(),1440,0),Digits);
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
   double dis   =NormalizeDouble(Distanciya*Point,Digits);
   double spred =NormalizeDouble(MarketInfo(Symbol(),MODE_SPREAD)*Point,Digits);
   double  CORR=NormalizeDouble(Plus            *Point,Digits);

## Picasso — 2016-11-15 00:40

> Цитата (STARGAZER):
> Начал дописывать своими силами. Подскажите в коде пожалуйста
> Как мне явно указать и проверить что пятый ордер по цене сталбольше нуля чтобы закрыть шестой ордер, или шестой ордер стал больше нуля по цене чтобы можно было закрыть седьмой ордер если он был открыт?
>
>    double opB=2000; double opS=0; double orderProfitbuy=0; double Sum_Profitbuy=0; double orderProfitsel;  double Sum_Profitsel; int orderType;
>    double LotB=Lots_New;
>    double LotS=Lots_New;
>    int total=OrdersTotal();
>    int b=0,s=0,n=0;
>    for(int i=total-1; i>=0; i--)
>      {
>       if(OrderSelect(i, SELECT_BY_POS))
>         {
>          if(OrderSymbol()==Symbol()      )
>            {
>             n++;
>             if(OrderType()==OP_BUY && OrderMagicNumber()==Magic)
>               {
>                b++;
>                LotB=OrderLots();
>                double ProfitB=OrderTakeProfit(); double openB=OrderOpenPrice();
>                if(openB<opB)
>                  {opB=openB;}
>               }
>             //---------------------------------
>             if(OrderType()==OP_SELL && OrderMagicNumber()==Magic)
>               {
>                s++;
>                LotS=OrderLots();
>               double ProfitS=OrderTakeProfit(); double openS=OrderOpenPrice();
>                if(openS>opS)
>                  {opS=openS;}
>               }
>            }
>         }
>      }
>    double max = NormalizeDouble(iHigh(Symbol(),1440,0),Digits);
>    double min = NormalizeDouble(iLow (Symbol(),1440,0),Digits);
>    double opp=NormalizeDouble(iOpen(Symbol(),1440,0),Digits);
>    double cl=NormalizeDouble(iClose(Symbol(),1440,0),Digits);
> //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
>    double dis   =NormalizeDouble(Distanciya*Point,Digits);
>    double spred =NormalizeDouble(MarketInfo(Symbol(),MODE_SPREAD)*Point,Digits);
>    double  CORR=NormalizeDouble(Plus            *Point,Digits);

Наверное, надо сначала понять где  1,2,3,4,5,6 и тд ордер. скорее всего по времени открытия. т.е OrderOpenTime(). Дальше мне и самому разбираться надо. Но может поможет.
И вероятно через массив, заполняем и сравниваем.

## STARGAZER — 2016-11-15 01:22

> Цитата (Picasso):
> Наверное, надо сначала понять где  1,2,3,4,5,6 и тд ордер. скорее всего по времени открытия. т.е OrderOpenTime(). Дальше мне и самому разбираться надо. Но может поможет.
> И вероятно через массив, заполняем и сравниваем.

    
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
   double opB=2000; double opS=0; double orderProfitbuy=0; double Sum_Profitbuy=0; double orderProfitsel;  double Sum_Profitsel; int orderType;
   double LotB=Lots_New;
   double LotS=Lots_New;
   int total=OrdersTotal();
   int totalOrders = OrdersTotal();//все ордера
   int b=0,s=0,n=0;
   
   //проверим превышение максимального количества ордера
   //пропишем цикл как именно вычислить закрытие ордера который по количеству больше чем MaximumOrders 
   //и по цене больше чем цена предыдущего открытого ордера

 for(int sss=total-1; sss>=0; sss--)
 {
   if(MaximumOrders<totalOrders+1 && totalOrders>sss+1) 
         {
         
         Alert(sss);
         Alert(OrderSymbol());
         }
}

   
 я получил количество ордеров и хотел в цикле сравнить превышает ли количество открытых ордеров количество MaximumOrders и после вычислить цену , по принципу если цена более текущего превышающего значение MaximumOrders ордера более цены открытия предыдущего ордера то закрывать ордер

## garry119 — 2016-11-15 14:34

можно убрать привязку к IBFX?

## AlanG — 2016-11-15 16:20

> Цитата (garry119):
> можно убрать привязку к IBFX?

.

## Mamsya — 2016-11-15 20:48

Кто может сделать из него МТФ? :)

## Mamsya — 2016-11-16 09:07

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

## po77itiff — 2016-11-16 17:11

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

## Mamsya — 2016-11-16 17:29

Тут есть программисты, где все? Помощь ведь нужна!))

## AlanG — 2016-11-16 17:32

> Цитата (Mamsya):
> Тут есть программисты, где все?

Где где бухают ;) Выходной по средам

## Mamsya — 2016-11-16 18:16

> Цитата (AlanG):
> Где где бухают ;) Выходной по средам

Аааа...а то я беспокоиться уже начал))))

## Софи — 2016-11-16 19:44

Уважаемые программисты! Можете ли вы добавить к индикатору звуковой сигнал и текстовое сообщение при:
1. пересечении уровня 0,75 сверху вниз - селл, какая пара
2. пересечении уровня -0,75 снизу вверх - бай, какая пара

## kwatuhit — 2016-11-16 20:27

**привет**

Посмотри что в этом есть
а то у меня абру кадабру пишет

## Софи — 2016-11-16 20:40

Спасибо большое

---

Следующая страница: https://forexsystemru.com/threads/77111/page-536
