Не торгующий эксперт - сопровождение. - страница 2

 
Reshetov >>:

Может быть человек хочет получить полностью автоматический помощник сливатора?

Может я непрвильно выражаюсь? Могу и повториться - "..такого эксперта, чтобы он только сопровождал сделки, а НЕ ТОРГОВАЛ"

 
SK. >>:
Всё это есть в AutoGraf 4.

Моя версия будет отличаться бесплатностью!)))

 

Люди проверьте на 5-знаке советника...

//+------------------------------------------------------------------+
//|                                              20090614_Orders.mq4 |
//|                                                Ш. Александр В.   |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Ш. Александр В."
#property link      ""

extern int profit=1000;              //установка профита
extern int sloss=100;                //установка стопа
extern double slFAKE=500;               //установка лже-стопа

extern int PowerBU = 1;              //Использование БУ: 1-Power, 0-Off
extern double BU_Enter = 120;        //отклонение цены после открытия для перехода в БУ
extern double BU_Stop = 10;          //0-чистый БУ, 1,2,3... - БУ в плюсе)

int LEV,SPR;
double p,sl,SLBU,BUPrise;
bool Modify,ModifyBU;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   BU_Enter*=Point;                                //сколько ждать пп до перехода в БУ
   BU_Stop*=Point;                                 //на сколько пп закрывать БУ в плюс
   slFAKE*=Point;                                  //установка лже-стопа
   Modify=false;
   ModifyBU=false;   
   
//----
   return(0);
  }


//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   INFO();
    
    if (OrderSelect(0,SELECT_BY_POS)==true)                          // Если есть открытый ордер
      {       
         if (Modify==false) ModifySL();
         if (PowerBU==1)                                             //Если использование БУ включено
            {        
               if (ModifyBU==false)
                  {
                     ModifySLinBU();
                     ClosePOS();
                  }
            }
      }     
    else 
      {
         Modify=false;
         ModifyBU=false;
      }


//----
   return(0);
  }

void INFO()
   {
         double хайдня=iHigh(NULL,PERIOD_D1,0);
         double лоудня=iLow(NULL,PERIOD_D1,0);
         double хл=хайдня-лоудня;
         LEV =MarketInfo(Symbol(),MODE_STOPLEVEL);
         SPR =MarketInfo(Symbol(),MODE_SPREAD);
         Comment( "STOPLEVEL:  "+ LEV,"\n",
         "СПРЕД:  "+ SPR,"\n",
         "МИНИМАЛЬНЫЙ СТОП:  "+ (LEV+SPR),
         "\n","День в пп:  "+ DoubleToStr(хл,4));
   }

//+------------------------------------------------------------------+
//| Проверка стоплевела и TP,SL
//+------------------------------------------------------------------+
void LEV()
   {
      if ((sloss-SPR)<= LEV) sl=LEV*Point;      // проверка стопа на стоплевел
      else sl=((sloss-SPR)*Point);
      
      if (profit<= LEV) p=LEV*Point;            // проверка профита на стоплевел
      else p=profit*Point;
   }
   
//+------------------------------------------------------------------+
//| Модификация ордера на установку SL и TP                                                                 |
//+------------------------------------------------------------------+
void ModifySL()
   {
      LEV();
      RefreshRates();
      if (OrderType()==OP_BUY)
         {
            Modify = OrderModify(OrderTicket(),OrderOpenPrice(),Bid-slFAKE, Ask+p,0,Red);
            if (Modify == false) Print("Ошибка изменения ордера #",OrderTicket(), " при попытке установить СТОП ",Bid-slFAKE,". Текущая цена- ",Bid,", код ошибки ="+GetLastError());
            else
               {
                  BUPrise = OrderOpenPrice()+BU_Enter;         //цена для перехода в БУ
                  SLBU = OrderOpenPrice()+BU_Stop;             //БУ или БУ+
               }
         }
      else
         {
            Modify = OrderModify(OrderTicket(),OrderOpenPrice(),Ask+slFAKE, Bid-p,0,Red);
            if (Modify == false) Print("Ошибка изменения ордера #",OrderTicket(), " при попытке установить СТОП ",Ask+slFAKE,". Текущая цена- ",Ask,", код ошибки ="+GetLastError());
            else
               {
                  BUPrise = OrderOpenPrice()-BU_Enter;         //цена для перехода в БУ
                  SLBU = OrderOpenPrice()-BU_Stop;             //БУ или БУ+
               }
         }
   }
   
//+------------------------------------------------------------------+
//| Закрытие позиции                                                                 |
//+------------------------------------------------------------------+
void ClosePOS()
   {
      LEV();
      RefreshRates();
      if (OrderType()==OP_BUY)
         {
            if (Bid<=OrderOpenPrice()-sl) OrderClose(OrderTicket(), OrderLots(), Bid, 0, Blue);
         }
      else
         {
            if (Ask>=OrderOpenPrice()+sl) OrderClose(OrderTicket(), OrderLots(), Ask, 0, Red);
         }   
   } 

//+------------------------------------------------------------------+
//| Модификация ордера на установку БУ                                                                 |
//+------------------------------------------------------------------+
void ModifySLinBU()   //перевод позы в БУ при профите равном или большем BU
   {
      RefreshRates();
      if (OrderType()==OP_BUY)
         {
            if (Bid>=BUPrise)
               {
                  ModifyBU = OrderModify(OrderTicket(),OrderOpenPrice(),SLBU,OrderTakeProfit(),0,Red);
                  if (ModifyBU == false) Print("Ошибка изменения ордера #",OrderTicket(), " при попытке установить БУ ",SLBU," Текущая цена- ",Bid," код ошибки ="+GetLastError());
               }
         }
      else
         {
            if (Ask<=BUPrise)
               {  
                  ModifyBU = OrderModify(OrderTicket(),OrderOpenPrice(),SLBU,OrderTakeProfit(),0,Red);
                  if (ModifyBU == false) Print("Ошибка изменения ордера #",OrderTicket(), "при попытке установить  БУ ",SLBU," Текущая цена- ",Ask," код ошибки ="+GetLastError());
               }
         }
   }
   
   
   
//+------------------------------------------------------------------+


//----
   return(0);
 
Проверьте код профи!....
 

Впринципе и скальперам кодик не помешает.. т.к. можно поставить тейк в 0 и он поставится минимальный по Стоплевелу..

(Снова Тихо Сам С Собой Я Веду Беседу)

 

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

//+------------------------------------------------------------------+
//|                                              20090614_Orders.mq4 |
//|                                                Ш. Александр В.   |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Ш. Александр В."
#property link      ""

extern int profit=1000;              //установка профита
extern int sloss=100;                //установка стопа
extern double slFAKE=500;               //установка лже-стопа

extern int PowerBU = 1;              //Использование БУ: 1-Power, 0-Off
extern double BU_Enter = 120;        //отклонение цены после открытия для перехода в БУ
extern double BU_Stop = 10;          //0-чистый БУ, 1,2,3... - БУ в плюсе)

int LEV,SPR;
double p,sl,SLBU,BUPrise;
bool Modify,ModifyBU;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   BU_Enter*=Point;                                //сколько ждать пп до перехода в БУ
   BU_Stop*=Point;                                 //на сколько пп закрывать БУ в плюс
   slFAKE*=Point;                                  //установка лже-стопа
   Modify=false;
   ModifyBU=false;   
   
//----
   return(0);
  }


//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   INFO();
    
    if (OrderSelect(0,SELECT_BY_POS)==true)                          // Если есть открытый ордер
      {       
         if (Modify==false) ModifySL();
         if (PowerBU==1)                                             //Если использование БУ включено
            {        
               if (ModifyBU==false)
                  {
                     ModifySLinBU();
                     ClosePOS();
                  }
            }
      }     
    else 
      {
         Modify=false;
         ModifyBU=false;
      }


//----
   return(0);
  }

void INFO()
   {
         double хайдня=iHigh(NULL,PERIOD_D1,0);
         double лоудня=iLow(NULL,PERIOD_D1,0);
         double хл=хайдня-лоудня;
         LEV =MarketInfo(Symbol(),MODE_STOPLEVEL);
         SPR =MarketInfo(Symbol(),MODE_SPREAD);
         Comment( "STOPLEVEL:  "+ LEV,"\n",
         "СПРЕД:  "+ SPR,"\n",
         "МИНИМАЛЬНЫЙ СТОП:  "+ (LEV+SPR),
         "\n","День в пп:  "+ DoubleToStr(хл,4));
   }

//+------------------------------------------------------------------+
//| Проверка стоплевела и TP,SL
//+------------------------------------------------------------------+
void LEV()
   {
      if ((sloss-SPR)<= LEV) sl=LEV*Point;      // проверка стопа на стоплевел
      else sl=((sloss-SPR)*Point);
      
      if (profit<= LEV) p=LEV*Point;            // проверка профита на стоплевел
      else p=profit*Point;
   }
   
//+------------------------------------------------------------------+
//| Модификация ордера на установку SL и TP                                                                 |
//+------------------------------------------------------------------+
void ModifySL()
   {
      LEV();
      RefreshRates();
      if (OrderType()==OP_BUY)
         {
            Modify = OrderModify(OrderTicket(),OrderOpenPrice(),Bid-slFAKE, Ask+p,0,Red);
            if (Modify == false) Print("Ошибка изменения ордера #",OrderTicket(), " при попытке установить СТОП ",Bid-slFAKE,". Текущая цена- ",Bid,", код ошибки ="+GetLastError());
            else
               {
                  BUPrise = OrderOpenPrice()+BU_Enter;         //цена для перехода в БУ
                  SLBU = OrderOpenPrice()+BU_Stop;             //БУ или БУ+
               }
         }
      else
         {
            Modify = OrderModify(OrderTicket(),OrderOpenPrice(),Ask+slFAKE, Bid-p,0,Red);
            if (Modify == false) Print("Ошибка изменения ордера #",OrderTicket(), " при попытке установить СТОП ",Ask+slFAKE,". Текущая цена- ",Ask,", код ошибки ="+GetLastError());
            else
               {
                  BUPrise = OrderOpenPrice()-BU_Enter;         //цена для перехода в БУ
                  SLBU = OrderOpenPrice()-BU_Stop;             //БУ или БУ+
               }
         }
   }
   
//+------------------------------------------------------------------+
//| Закрытие позиции                                                                 |
//+------------------------------------------------------------------+
void ClosePOS()
   {
      LEV();
      RefreshRates();
      if (OrderType()==OP_BUY)
         {
            if (Bid<=OrderOpenPrice()-sl) OrderClose(OrderTicket(), OrderLots(), Bid, 0, Blue);
         }
      else
         {
            if (Ask>=OrderOpenPrice()+sl) OrderClose(OrderTicket(), OrderLots(), Ask, 0, Red);
         }   
   } 

//+------------------------------------------------------------------+
//| Модификация ордера на установку БУ                                                                 |
//+------------------------------------------------------------------+
void ModifySLinBU()   //перевод позы в БУ при профите равном или большем BU
   {
      RefreshRates();
      if (OrderType()==OP_BUY)
         {
            if (Bid>=BUPrise)
               {
                  ModifyBU = OrderModify(OrderTicket(),OrderOpenPrice(),SLBU,OrderTakeProfit(),0,Red);
                  if (ModifyBU == false) Print("Ошибка изменения ордера #",OrderTicket(), " при попытке установить БУ ",SLBU," Текущая цена- ",Bid," код ошибки ="+GetLastError());
               }
         }
      else
         {
            if (Ask<=BUPrise)
               {  
                  ModifyBU = OrderModify(OrderTicket(),OrderOpenPrice(),SLBU,OrderTakeProfit(),0,Red);
                  if (ModifyBU == false) Print("Ошибка изменения ордера #",OrderTicket(), "при попытке установить  БУ ",SLBU," Текущая цена- ",Ask," код ошибки ="+GetLastError());
               }
         }
   }
   
   
   
//+------------------------------------------------------------------+


//----
   return(0);
 
Неужели никто не использует советников для помощи в торговле?))
Причина обращения: