0
сов открывает кучу ордеров КАК СДЕЛАТЬ ПРИ ПЕРЕСЕЧЕНИИ ИНДИКАТОРА ЧТОБЫ ВЫСТАВЛЯЛСЯ 1 ОРДЕР А НЕ 5 7 29
avatar

div15

  • 10 июня 2014, 16:39
0
&& p<1 && b<1) // <!!!
ну даже с этими параметрами сов открывает кучу ордеров
avatar

div15

  • 10 июня 2014, 14:10
0
//+------------------------------------------------------------------+
//|                                                      ОТЛОЖКИ.mq4 |
//+------------------------------------------------------------------+
extern double StopLoss     = 100; //Стоплосс ордера  
extern double TakeProfit   = 150; //Тейкпрофит ордера
extern double TrailingStop = 100; // трал 
extern int    Delta        = 100; //Расстояние от цены для установки ордера
extern double LOT          = 0.1; //Объём позиции
extern int    Magic        =2;
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
  if (TrailingStop!=0) Trailing(); 
  
   //ИНДИКАТОР RSI 
   double RSI0=iRSI(NULL,0,5,PRICE_CLOSE,0);
   double RSI1=iRSI(NULL,0,5,PRICE_CLOSE,1);
  
   int b,s,p,res; 
   double BuyPrice=Ask+Delta*Point; 
   double SellPrice=Bid-Delta*Point;
   
   for (int i=0; i<OrdersTotal(); i++)
    {
     if (OrderSelect(i, SELECT_BY_POS)==true)
      {  
        if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue;
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) p++;
        if (OrderType()==OP_BUYSTOP) b++;
        if (OrderType()==OP_SELLSTOP) s++;        
      }   
    }
      double SL,TP;
//---- buy stop
   if(RSI0>50&&RSI1<50) 
     {
           
      res=OrderSend(Symbol(),OP_BUYSTOP,LOT,BuyPrice,0,BuyPrice-StopLoss*Point,BuyPrice+TakeProfit*Point,"ОТЛОЖКИ",Magic,OP_SELLSTOP,Blue);
     }        
//---- sell stop  
   if(RSI0<50&&RSI1>50) 
     {

      res=OrderSend(Symbol(),OP_SELLSTOP,LOT,SellPrice,0,SellPrice+StopLoss*Point,SellPrice-TakeProfit*Point,"ОТЛОЖКИ",Magic,OP_BUYSTOP,Red );
     }
//---- buy stop делете
      if(RSI0<50&&RSI1>50)
    {
     OrderDelete( OrderTicket());
     
    }
//---- sell stop делете
      if(RSI0>50&&RSI1<50)
    {
     OrderDelete( OrderTicket());
     
    }
//----
   return(0);
  }
//--------------------------------------------------------------------
//---------ФУНКЦИЯ ТРАЛА----------------------------------------------
//--------------------------------------------------------------------

void Trailing()
{
   for(int i=0; i<OrdersTotal(); i++) 
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      if(OrderSymbol()==Symbol()||OrderMagicNumber()==Magic)
       if(OrderType()==OP_BUY)
         {
          if(TrailingStop>0)  
            {                 
              if(Bid-OrderOpenPrice()>TrailingStop)
               {
                 if(OrderStopLoss()<Bid-TrailingStop)
                  {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop,OrderTakeProfit(),0,Green);
                  }
               }
            }
         }
         
        if(OrderType()==OP_SELL)
         {
           if(TrailingStop>0)  
            {                 
              if((OrderOpenPrice()-Ask)>TrailingStop)
               {
                 if((OrderStopLoss()>(Ask+TrailingStop)) || (OrderStopLoss()==0))
                  {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Ask+TrailingStop,OrderTakeProfit(),0,Red);
                  }
               }
            }
         }   
   }
}
//+------------------------------------------------------------------------------------+
//+------------------------------------------------------------------------------------+--------------------------------------------------------------------+
avatar

div15

  • 10 июня 2014, 11:47
0
вот *girlcry* *wall*  сов открывает ордера пачками а надо всего 1 при пересечении индикатора.
avatar

div15

  • 7 июня 2014, 06:09
0
можно сделать так или нет
int start()
  {
  if (TrailingStop!=0) Trailing(); 
  
   //ИНДИКАТОР RSI 
   double RSI0=iRSI(NULL,0,14,PRICE_CLOSE,0);
   double RSI1=iRSI(NULL,0,14,PRICE_CLOSE,1);
   
   int b,s,p,res; 
   double BuyPrice=Ask+Delta*Point; 
   double SellPrice=Bid-Delta*Point;
   
   for (int i=0; i<OrdersTotal(); i++)
    {
     if (OrderSelect(i, SELECT_BY_POS)==true)
      {  
        if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue;
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) p++;
        if (OrderType()==OP_BUYSTOP) b++;
        if (OrderType()==OP_SELLSTOP) s++;        
      }   
    }
      double SL,TP;
//---- buy stop делете
      if(RSI0<50&&RSI1>50)
    {
     OrderDelete(OP_BUYSTOP);
     
    }
//---- sell stop делете
      if(RSI0>50&&RSI1<50)
    {
     OrderDelete(OP_SELLSTOP);
     
    }

//---- buy stop
   if(RSI0>50&&RSI1<50) //&& Hour()==StartHour Close[1]-Open[1]>0  &&p<1 && b<1
     {
           
      res=OrderSend(Symbol(),OP_BUYSTOP,LOT,BuyPrice,0,BuyPrice-StopLoss*Point,BuyPrice+TakeProfit*Point,"ОТЛОЖКИ",Magic,OP_SELLSTOP,Blue);
     }        
//---- sell stop  
   if(RSI0<50&&RSI1>50) // && Hour()==StartHourOpen[1]-Close[1]>0  && p<1 && s<1
     {

      res=OrderSend(Symbol(),OP_SELLSTOP,LOT,SellPrice,0,SellPrice+StopLoss*Point,SellPrice-TakeProfit*Point,"ОТЛОЖКИ",Magic,OP_BUYSTOP,Red );
     }   
//----
   return(0);
  }
avatar

div15

  • 6 июня 2014, 08:56
0
OrderClose(OrderTicket(), OrderLots(), (type == OP_BUY) ? Bid: Ask, 3, CLR_NONE)) ||
И ВОПРОС В КОДЕ
avatar

div15

  • 6 июня 2014, 08:06
0
а для удаления отложенных ордеров должна быть другая функция или нет разницы
avatar

div15

  • 6 июня 2014, 04:01
0
как написать функцию закрытия отложенных ордеров при встречном сигнале например рси спасибо
avatar

div15

  • 5 июня 2014, 03:54
0
СПАСИБО ЗА ПРОДЕЛАННУЮ РАБОТУ, Я ОЧЕНЬ РАД ЧТО ВЫ НЕ ОТКАЗАЛИ В МОЕЙ ПРОСЬБЕ.
avatar

div15

  • 28 февраля 2013, 21:30
0
extern double MovingShift = -10;
у меня только смешение вперед. если ставлю смешение назад советник не работает.
avatar

div15

  • 12 сентября 2012, 13:16
0
здравствуйте как сделать чтобы можно было машку смещать назад.
avatar

div15

  • 12 сентября 2012, 05:29
0
у меня не получается вставить все это в советник выдает ошибку
avatar

div15

  • 4 сентября 2012, 20:48
0
предлагаю написать еще как к советнику приделать мартингейл.
avatar

div15

  • 4 сентября 2012, 19:34
0
да я не спорю 50 тыс баксов не плохо входи в сделки и бабло руби. но тем не менее все прогнозы неточные и в некоторых случаях надо торговать по тренду в некоторых нет. и пойди разбери когда тренд а когда нет.
на истории все очень хорошо получается, а что будет через минуту через час?.. и вообще с моей точки зрения оптимизация советников пустая трата времени. рынок меняется каждую минуту а алгоритм советника остается стандартным (здесь селл здесь бай сколько бы на истории его не гоняли) если даже у кого есть что то путевое я думаю что он этим не поделится если может сам бабло рубить. к сожалению святого грааля пока еще нет.
и к то муже нервы и меня не железные сидеть с 3000 рублями.
кто найдет граадь прошу поделиться.
avatar

div15

  • 22 марта 2012, 23:37
0
принцип заключается в следующем.
когда цена доходит до какого нибудь уровня сверху вниз например.1.3100 то по этой цене входим в сделку на продажу. если с низу вверх то на покупку.да бывают такие моменты что цена топчется на определенном уровне продолжительное время в этом случае надо к советнику приделать вывод в без убыток, но чтоб закрывалась сделка не в 0 а хотя бы в 5 10 пунктов.
по истории конечно все красиво где войти где выйти. форекс это своеобразная лотерея (угадай куда пойдет цена, или какой шар выпадет)
avatar

div15

  • 22 марта 2012, 19:21
Начать торговлю с Альпари