Помогите сделать последние шаги в написании первого советника
Показано с 1 по 2 из 2

Тема: Помогите сделать последние шаги в написании первого советника

  1. #1
    Уже не гость
    Регистрация
    17.05.2016
    Сообщений
    3
    Promo (¢)
    1,520
    Благодарности
    Получено: 0
    Отправлено: 0

    Помогите сделать последние шаги в написании первого советника

    В общем у меня появилась такая проблема. По задумке,советник должен открывать один ордер (допустим OrderSend("AUDUSD", OP_SELL, 0.1, Bid, 3, 0.71100, 0.70500, "", 123, 0, Red); и открывать его заново только по достижению лося или профита. И такое условие должно быть для каждого указанного OrderSend.
    Проблема в чем,из-за условия "if (OrdersTotal() >= 1)" открывается один ордер(допустим на продажу) а на покупку уже не открывается,пока не закроется тот.

    Очень прошу,помогите исправить код так,что бы каждый ордер был в коде самостоятельным,и условие "if (OrdersTotal() >= 1)" относилось только к одному ордеру.

    Вот код

    void OnTick()
    {

    if (OrdersTotal() >= 1)
    {
    return;
    }
    if (Bid < 0.71000 && Bid > 0.70998)
    {
    int ticket;
    ticket = OrderSend("AUDUSD", OP_SELL, 0.1, Bid, 3, 0.71100, 0.70500, "", 123, 0, Red);
    }

    //-------------------------------------------------------------------------------------------//
    if (OrdersTotal() >= 1)
    {
    return;
    }
    if (Ask > 0.71000 && Ask < 0.71002)
    {
    int ticket;
    ticket = OrderSend("AUDUSD", OP_BUY, 0.1, Ask, 3, 0.70900, 0.71500, "", 123, 0, Blue);
    }
    }

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

  2. #2
    Теоретик Аватар для Aleksandr_Nik
    Регистрация
    08.11.2015
    Сообщений
    612
    Promo (¢)
    9,765
    Благодарности
    Получено: 47
    Отправлено: 124
    Думаю, что подойдет вот это (считает количество ордеров на покупку и на продажу):
    Код:
       int b = 0;
       int s = 0; 
       
       for (int i=0; i<OrdersTotal(); i++) //цикл по количеству ордеров
       {
         if (OrderSelect(i, SELECT_BY_POS) == true) //выбираем ордер
         if (OrderMagicNumber()==Magic) //если ордер открыт был этой программой
         {      
          if (OrderType()==OP_BUY) //если открыта позиция на покупку
           b++;
          if (OrderType()==OP_SELL) //если открыта позиция на продажу
           s++;
         }
       }    
       
       if (b==0)
       {
        //... здесь открываем ордер на покупку ...
        }
        if (s==0)
       {
        //...открываем ордер на продажу...
        }
    Обычно я так проверяю, сколько уже открыто ордеров на покупку и продажу.

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

Похожие темы

  1. Александр Элдер - Трейдинг. Первые шаги
    от writer в разделе Библиотека трейдера
    Ответов: 11
    Последнее сообщение: 05.09.2018, 21:16
  2. Помогите в создании советника по свечным паттернам
    от g1f3 в разделе Софт для автоматизации торговли
    Ответов: 22
    Последнее сообщение: 15.12.2016, 18:37
  3. Помогите сделать советник на отложенных ордерах
    от cashyra в разделе Программирование на MQL
    Ответов: 14
    Последнее сообщение: 22.11.2016, 21:33
  4. Помогите из ТС сделать советника для автоматической торговли
    от kos_681 в разделе Софт для автоматизации торговли
    Ответов: 201
    Последнее сообщение: 14.05.2016, 10:24
  5. Ответов: 1
    Последнее сообщение: 18.09.2012, 14:13

Ваши права

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