Программирование на MQL4 - это очень просто! - Страница 172
Страница 172 из 172 ПерваяПервая ... 72 122 162 168 169 170 171 172
Показано с 1,711 по 1,718 из 1718

Тема: Программирование на MQL4 - это очень просто!

  1. #1711
    Новичок
    Регистрация
    12.10.2015
    Сообщений
    83
    Promo (¢)
    660
    Благодарности
    Получено: 2
    Отправлено: 15
    Граждане помогите!!!

    Нашел я подходящий код под свое описание:
    Траллинг должен срабатывать через X пунктов в сторону открытия ордера и фиксированно сдвигать SL и TP на N количество пунктов заданным значением!!! и все это дело должно происходить каждые X пунктов....
    Но он проверяет количество пунктов на следующей свече, а мне хотелось бы на текущей!!! Может как то можно исправить?

    Код HTML:
    void Tralling()
    {
       for(int i = OrdersTotal() - 1; i >= 0; i--)
       {
        if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
          {
           if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
             {
              if(OrderType() == OP_BUY)
                {
                  if(Bid - OrderOpenPrice() > TrallingStop * Point || OrderStopLoss() == 0)
                    {
                     if(OrderStopLoss() < Bid - (TrallingStep + TrallingStop)  * Point || OrderStopLoss() == 0)
                       {
                       if(!OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(OrderStopLoss() + TrallingStop * Point, Digits), NormalizeDouble(OrderTakeProfit() + TrallingStop * Point, Digits), 0, clrAzure))
                       Print("Error modify BUY");
                       }
                    }
                }
                
               if(OrderType() == OP_SELL)
                { 
                 if(OrderOpenPrice() - Ask > TrallingStop * Point || OrderStopLoss() == 0)
                   {
                    if(OrderStopLoss() > Ask + (TrallingStep + TrallingStop)  * Point || OrderStopLoss() == 0)
                      {
                       if(!OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(OrderStopLoss() - TrallingStop * Point, Digits), NormalizeDouble(OrderTakeProfit() - TrallingStop * Point, Digits), 0, clrAzure))
                       Print("Error modify SELL");
                      }
                   }
                }
             }
          }
         }
         
    }

    Вы не можете благодарить!

  2. #1712
    Программист
    Регистрация
    16.08.2012
    Адрес
    Челябинск
    Сообщений
    1,269
    Promo (¢)
    29,600
    Благодарности
    Получено: 431
    Отправлено: 42
    Цитата Сообщение от SviteR Посмотреть сообщение
    Но он проверяет количество пунктов на следующей свече, а мне хотелось бы на текущей!!! Может как то можно исправить?
    с чего вы взяли, что процедура проверяет количество пунктов по свечам? Нет этого в коде. А вот у вас запуск этой процедуры вполне возможно выполняется раз при открытии свечи. Вызов функции вынесите в область работы по тикам и будет то что вам надо.

    Вы не можете благодарить!
    Делаю под заказ советники, индикаторы для форекс и опционы под МТ4, цены в рублях, все доступно, пишите в личку.

  3. #1713
    Новичок
    Регистрация
    12.10.2015
    Сообщений
    83
    Promo (¢)
    660
    Благодарности
    Получено: 2
    Отправлено: 15
    Цитата Сообщение от wayfarer Посмотреть сообщение
    с чего вы взяли, что процедура проверяет количество пунктов по свечам? Нет этого в коде. А вот у вас запуск этой процедуры вполне возможно выполняется раз при открытии свечи. Вызов функции вынесите в область работы по тикам и будет то что вам надо.
    Верняк!))) Спасибо! Очень помогли!

    Вы не можете благодарить!
    Последний раз редактировалось SviteR; 14.06.2018 в 16:18.

  4. #1714
    Новичок
    Регистрация
    12.10.2015
    Сообщений
    83
    Promo (¢)
    660
    Благодарности
    Получено: 2
    Отправлено: 15
    А вот еще вопросик!!! А как сделать что бы SL и TP передвигались на X пунктов, через каждые N тиков???? Ато у меня щас работает вот так = проходит N пунктов, смещает SL и TP на X пунктов, и потом идет за ценой!!

    Вы не можете благодарить!

  5. #1715
    Программист
    Регистрация
    16.08.2012
    Адрес
    Челябинск
    Сообщений
    1,269
    Promo (¢)
    29,600
    Благодарности
    Получено: 431
    Отправлено: 42
    Цитата Сообщение от SviteR Посмотреть сообщение
    А как сделать что бы SL и TP передвигались на X пунктов, через каждые N тиков?
    Используйте iVolume(NULL.0,i); как источник количества тиков на свече с номером i. При достижении требуемого значения тиков запускайте процедуру трала.

    Вы не можете благодарить!
    Делаю под заказ советники, индикаторы для форекс и опционы под МТ4, цены в рублях, все доступно, пишите в личку.

  6. #1716
    Уже не гость
    Регистрация
    15.06.2018
    Сообщений
    1
    Promo (¢)
    500
    Благодарности
    Получено: 0
    Отправлено: 0
    Здравствуйте уважаемые программисты!!
    Делаю счетчик тиков для свечи и что то у меня видимо пошло не так!!! Хочу сделать что бы считало тики, когда цена только растет, а он считает, и когда растет и когда падает (тоесть все тики, а надо только растущие тики) Гляньте плз...

    Код HTML:
    double CountTick()
    {
    double old_price;
    
    double delta; 
    double price = 0;
    double old_open_price = 0;
    
    for(int i = OrdersTotal() - 1; i >= 0; i--)
       {
       if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
          {
             if(OrderSymbol() == _Symbol && OrderMagicNumber() == Magic && OrderType() == OP_BUY)
             {
             old_price = iClose(NULL, 0 ,i);
             price = iOpen(NULL, 0 ,i);
             delta = old_price - price ;
             if(delta > 0) 
             {
             count_plus++; 
             }
             }
          }
       }
        return(count_plus);
    }
    }

    Вы не можете благодарить!
    Последний раз редактировалось Anddje; 15.06.2018 в 20:51.

  7. #1717
    Программист
    Регистрация
    16.08.2012
    Адрес
    Челябинск
    Сообщений
    1,269
    Promo (¢)
    29,600
    Благодарности
    Получено: 431
    Отправлено: 42
    Цитата Сообщение от Anddje Посмотреть сообщение
    Делаю счетчик тиков для свечи и что то у меня видимо пошло не так
    Что делает в коде подсчета тиков выражение "if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))"? Чтобы различать тики изменения цены нужно иметь два значения - предыдущее и текущее,- разница цен >0 цена растет, <0 цена падает.

    Вы не можете благодарить!
    Делаю под заказ советники, индикаторы для форекс и опционы под МТ4, цены в рублях, все доступно, пишите в личку.

  8. #1718
    Уже не гость
    Регистрация
    22.10.2017
    Сообщений
    2
    Promo (¢)
    1,540
    Благодарности
    Получено: 0
    Отправлено: 5
    Здравствуй. Пробовал сам написать, но знаний не хватает. Понимаю только что делаю что-то не так. Идея заключается в том, чтобы робот открывал сделки на "БАЙ" когда рыночная "БИД" поднимается выше предыдущего бара "ХАЙ", а зокрывается по профиту когда цена опускается ниже предыдушего бара "ЛОУ" и автоматически открывалась позиция на продажу (реверсом). Аналогично если первая сделка на "СЕЛЛ" когда рыночная БИД опускается ниже предидущего бара "ЛОУ", а закрывается когда цена "БИД" поднимается выше предидущего бара "ХАЙ" и автоматом открывается позиция на покупку (тоже реверсом). - Можеш помочь, или хотябы подсказать что мне нужно исправить в коде и/или дописать? Буду очень признателен.
    extern double Lot = 0.01; //лот
    extern int Slip = 3; //проскальзывание
    extern int Count = 1; //количество ордеров
    extern int Magic = 123; //магик
    //+------------------------------------------------------------------+
    //| expert start function |
    //+------------------------------------------------------------------+
    int start ()
    {
    if
    (OrdersTotal()==0)
    {
    if((Volume[0]>High[1])&&Volume[0]>=Low[1])
    OrderSend(Symbol(),OP_BUY,Lot,High[1],20,0,0,NULL,Magic,0,Red);
    {
    else if(Volume[0]<Low[1])&&Volume[0]=<High[1])
    OrderSend(Symbol(),OP_SELL,Lot,Low[1],20,0,0,NULL,Magic,0,Green);
    }
    }
    }
    (OrdersTotal()==1)
    {
    bool OrderCloseBy
    int ticket =1; // номер ордера для закрытия
    int opposite =2;// номер противоположного ордера
    color arrow_color =Orange; // цвет
    (Bid<Low[1]){OrderCloseBy(Symbol(),0,1,Orange,OP_SELL,Lot,Low[1],20,0,0,NULL,Magic,0,Green);)
    OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
    (OrderType()==OP_SELL)
    {
    (Bid>High[1]){OrderCloseBy(Symbol(),1,0,Orange,OP_BUY,Lot,High[1],20,0,0,NULL,Magic,0,Red);)
    {
    OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
    (OrderType()==OP_BUY)
    }
    }
    }
    }
    //-------------
    return(0)
    }
    //+----------------------------------------------------------------------------------------------+

    Вы не можете благодарить!

Страница 172 из 172 ПерваяПервая ... 72 122 162 168 169 170 171 172

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •