1. InstaForex

    Скрыть объявление
  2. Уважаемый гость! Чтобы просмотреть скрытую часть информации Вам нужно зарегистрироваться.

    Быстрая регистрация!

В а ж н о ! Ваши пожелания, предложения, советы и рекомендации ...

Тема в разделе "Ваши вопросы, пожелания, отзывы", создана пользователем Admin, 12 янв 2013.

  1. Александр 771

    Александр 771 Новичок

    Регистрация:
    16 янв 2018
    Сообщения:
    5
    Симпатии:
    2
    Пол:
    Мужской
    Спасибо за ответ. Куда Вам выслать код?
     
    Admin нравится это.
  2. Admin

    Admin Администратор Команда форума

    Регистрация:
    3 янв 2013
    Сообщения:
    1.864
    Симпатии:
    369
    Пол:
    Мужской
    Сюда
     
  3. Александр 771

    Александр 771 Новичок

    Регистрация:
    16 янв 2018
    Сообщения:
    5
    Симпатии:
    2
    Пол:
    Мужской
    Код:
    #property version   "1.00"
    #property strict
    
    input int    MagicNumber   = 3;
    input int    Second        = 14400;// 3600-1h;14400 4h;
    input double Lots          = 0.01;
    input int    Orders        = 4;
    input int    StopLoss      = 25;
    input int    TakeProfit    = 50;
    input int    Otstyp        = 20;
    //+------------------------------------------------------------------+
    //| Expert initialization function                                   |
    //+------------------------------------------------------------------+
    int OnInit()
      {
       return(INIT_SUCCEEDED);
      }
    //+------------------------------------------------------------------+
    //| Calculate open positions                                         |
    //+------------------------------------------------------------------+
    int CalculateCurrentOrders(string symbol)
      {
       int buys=0,sells=0;
    //---
       for(int i=0;i<OrdersTotal();i++)
         {
          if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
          if(OrderSymbol()==Symbol() && OrderMagicNumber()== MagicNumber)
            {
             if(OrderType()==OP_BUY)  buys++;
             if(OrderType()==OP_SELL) sells++;
            }
         }
    //--- return orders volume
       if(buys>0) return(buys);
       else       return(-sells);
      }
    //+------------------------------------------------------------------+
    
    //+------------------------------------------------------------------+
    //| Check for open order conditions                                  |
    //+------------------------------------------------------------------+
    void CheckForOpen()
    {
      int  total, res;
      double ma;
       total = OrdersTotal();
        if(total > Orders)return;//СРАВНИВАЕМ КОЛИЧЕСТВО ОРДЕРОВ
     //  if(Volume[0]>1) return;
    //----   
     double Spred = MarketInfo(Symbol(),MODE_SPREAD);
     
    //-------------РАСЧЁТ МА---------------------------------
      ma = (Close[20]+Close[19]+Close[18]+Close[17]+Close[16]+Close[15]+Close[14]+Close[13]+Close[12]+Close[11]+Close[10]+Close[9]+Close[8]+Close[7]+Close[6]+Close[5]+Close[4]+Close[3]+Close[2]+Close[1])/20;
     
     //---- sell ----------------------------------------------открывается по Bid
     /*  if(Bid <= ma) */if(Open[2] < Close[2] && High[2]>=ma && Open[1] > Close[1])//Эти условия не работают как хочется,т.е. не работает это High[2]>=ma,все остальные срабатывают
         {
         if((OrderType()==OP_SELL)>1)return;
          res=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask +( StopLoss * Point),Ask-(TakeProfit*Point),"",MagicNumber,0,Red);
          
          if((OrderType()==OP_SELLSTOP)>1)return;
           res = OrderSend(Symbol(),OP_BUYSTOP,Lots, Bid-(Otstyp*Point),5, Ask+(StopLoss*Point),Ask-(TakeProfit*Point),"",MagicNumber,TimeCurrent()+Second,Blue);
          return;
         }
     //---- buy ----------------------------------------------------------открывается по Ask
      /* if( Ask >= ma)*/if(Open[2] > Close[2] && Low[2] <= ma && Open[1] < Close[1]) //Эти тоже
         {
         if((OrderType()==OP_BUY)> 1)return;   
          res=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid -( StopLoss * Point),Bid+(TakeProfit*Point),"",MagicNumber,0,Blue);
          
          if((OrderType()==OP_BUYSTOP)> 1)return;
             res = OrderSend(Symbol(),OP_SELLSTOP,Lots,Ask +(Otstyp*Point), 5,Bid-(StopLoss*Point),Bid+(TakeProfit*Point),"",MagicNumber,TimeCurrent()+Second,Red);
          return;
         }   
    //------------------------------------------------------------------------------------------------
      }
    //+------------------------------------------------------------------+
    
    //+------------------------------------------------------------------+
    //| Expert tick function                                             |
    //+------------------------------------------------------------------+
    void OnTick()
      {
    //--- check for history and trading
       if(Bars<100 || IsTradeAllowed()==false)
          return;
    //--- calculate open orders by current symbol
       if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
    //   else                                    CheckForClose();
    //---
      }
    //+------------------------------------------------------------------+
    Теперь и стоповые ордера не открываются.
     
  4. Admin

    Admin Администратор Команда форума

    Регистрация:
    3 янв 2013
    Сообщения:
    1.864
    Симпатии:
    369
    Пол:
    Мужской
    ma = (Close[20]+Close[19]+Close[18]+Close[17]+Close[16]+Close[15]+Close[14]+Close[13]+Close[12]+Close[11]+Close[10]+Close[9]+Close[8]+Close[7]+Close[6]+Close[5]+Close[4]+Close[3]+Close[2]+Close[1])/20;

    Мувинг по закрытию считается по другому iMA(NULL,0,20,0,MODE_SMMA,PRICE_CLOSE,1); //

    И еще Вы создали очень редкое условие. Оно редко встречается на графике.

    if((OrderType()==OP_SELL)>1)return; так не правильно OrderType() вызывается только в пределах ордер селект, за пределами возвращает бред..
     
  5. Александр 771

    Александр 771 Новичок

    Регистрация:
    16 янв 2018
    Сообщения:
    5
    Симпатии:
    2
    Пол:
    Мужской
    Спасибо.Завтра буду пробовать по другому.
     
  6. Александр 771

    Александр 771 Новичок

    Регистрация:
    16 янв 2018
    Сообщения:
    5
    Симпатии:
    2
    Пол:
    Мужской
    Здравствуйте Владимир.Подправил код, в местах где Вы указали ошибки. На счёт iMA ,мне показалось неоднократно ,что работает не совсем корректно поэтому вписал внутрь.Условие на открытие подправил,входов стало больше, но всё-же не срабатывает как написано.
    Код:
     ma = (/*Close[20]+Close[19]+Close[18]+Close[17]+Close[16]+Close[15]+Close[14]+Close[13]+Close[12]+Close[11]+*/Close[10]+Close[9]+Close[8]+Close[7]+Close[6]+Close[5]+Close[4]+Close[3]+Close[2]+Close[1])/10;
     
     //---- sell ----------------------------------------------открывается по Bid
     /*  if(Bid <= ma) */if(Open[3] > Close[3] &&Open[2]>ma && Close[2]<ma && Open[1] > Close[1])
         {
       //  if((OrderType()==OP_SELL)>1)return;
          res=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask +( StopLoss * Point),Ask-(TakeProfit*Point),"",MagicNumber,0,Red);
          
       //   if((OrderType()==OP_SELLSTOP)>1)return;
           res = OrderSend(Symbol(),OP_BUYSTOP,Lots, Bid-(Otstyp*Point),5, Ask+(StopLoss*Point),Ask-(TakeProfit*Point),"",MagicNumber,TimeCurrent()+Second,Blue);
    
          return;
         }
     //---- buy ----------------------------------------------------------открывается по Ask
      /* if( Ask >= ma)*/if(Open[3] < Close[3] &&Open[2]<ma && Close[2]> ma && Open[1] < Close[1])
         {
     //    if((OrderType()==OP_BUY)> 1)return;   
          res=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid -( StopLoss * Point),Bid+(TakeProfit*Point),"",MagicNumber,0,Blue);
    
          
     //     if((OrderType()==OP_BUYSTOP)> 1)return;
             res = OrderSend(Symbol(),OP_SELLSTOP,Lots,Ask +(Otstyp*Point), 5,Bid-(StopLoss*Point),Bid+(TakeProfit*Point),"",MagicNumber,TimeCurrent()+Second,Red);
          return;
         } 
    Попробую ещё с Линиями Боллинджера может вход будет как хотелось-бы.Вы можете подсказать где ошибаюсь.Спасибо.

    форум.png
     

Поделиться этой страницей