MQL4 - automated forex trading   /  

Форум

Советник перевода позиций в БУ...

К списку тем Авторизуйтесь или зарегистрируйтесь, чтобы создать новую тему

avatar
310
ALex2008 07.02.2012 08:53 

Вырезал с советника, который сам давно писал, всё лишнее, но что-то не работает, посмотрите плиз..

#include <stdlib.mqh>

//extern double  Profit   = 1000;
extern int     BU       = 1;
extern double  BUenter  = 100;
extern double  BUstop   = 10;


int Type,Ticket;
double TP,OpenPrise,EnterBU,SLmax,StopLossBU,Stop,StopLevel,b1,s1,b0,s0,StopLoss,Enter;
bool CheckBU;
static bool mod;

int init(){
   //Profit*=Point; 
   BUenter*=Point;
   BUstop*=Point;
return(0);
}

int deinit() {
return(0);
}

int start() { 
      
   if(WorkOrders()){                                     //если есть ордера
      if ((BU==1)&&(Type<=1)&&(!CheckBU))             SetBU();
   }

return(0);
}

//-------Вычисление бу и установка
void SetBU(){
      if(Type==0){
         EnterBU=OpenPrise+BUenter;
         StopLossBU=OpenPrise+BUstop;
         RefreshRates();
         if(Bid>=EnterBU) OrderModify(Ticket,OpenPrise,StopLossBU,OrderTakeProfit(),0,Red);
      }
      if(Type==1){
         EnterBU=OpenPrise-BUenter;
         StopLossBU=OpenPrise-BUstop;
         RefreshRates();
         if(Ask<=EnterBU) OrderModify(Ticket,OpenPrise,StopLossBU,OrderTakeProfit(),0,Red);
      }
}
   
//-------Поиск ордера текущей пары
bool WorkOrders(){
      for (int i=OrdersTotal()-1;i>=0;i--){
      if (!OrderSelect(i,SELECT_BY_POS))  continue;
      if (OrderSymbol()!=Symbol())        continue;
      OpenPrise=OrderOpenPrice();
      Type     =OrderType();
      Ticket   =OrderTicket();
      Stop     =OrderStopLoss();
      CheckBU  =false;
      if(Type==0 && Stop>OpenPrise) CheckBU=true;
      if(Type==1 && Stop<OpenPrise) CheckBU=true;
      return(true);}
return(false);
}

Организуйте багтрекинг и техсаппорт для своей компании

В TeamWox имеются все для того чтобы организовать багтрекинг. Интегрировав модуль Сервисдеск с веб-сайтом, Вы сможете получать заявки своих клиентов напрямую в TeamWox. Более того, вся переписка с клиентами автоматически распознается и попадает в архив, где ее без труда можно найти в будущем.


avatar
3672
IgorM 07.02.2012 09:28 

avatar
381
AM2 07.02.2012 09:29 
ALex2008:

Вырезал с советника, который сам давно писал, всё лишнее, но что-то не работает, посмотрите плиз..

Если БУ не пашет, вот этот можешь взять.
//------------------------------------------------------------------+
void No_Loss(int NoLoss)
{
   double OOP,OSL;
   int tip;
   bool error;
   for (int i=0; i<OrdersTotal(); i++) 
   {
      if (OrderSelect(i, SELECT_BY_POS)==true)
      {
         tip = OrderType();
         if (tip<2 && OrderSymbol()==Symbol())
         {
            if (OrderMagicNumber()!=magic) continue;
            if (tip==0) //Bay               
            {   
               OOP = NormalizeDouble(OrderOpenPrice(),Digits);
               OSL = NormalizeDouble(OrderStopLoss(),Digits);      
               if ((Bid-OOP)/Point>=NoLoss && OOP > OSL)
                  {error=OrderModify(OrderTicket(),OOP,OOP,OrderTakeProfit(),0,White);Sleep(500);}
            }                                         
            if (tip==1) //Sell               
            { 
               OOP = NormalizeDouble(OrderOpenPrice(),Digits);
               OSL = NormalizeDouble(OrderStopLoss(),Digits);                                                     
               if ((OOP-Ask)/Point>=NoLoss && (OOP < OSL || OSL ==0)) 
                  {error=OrderModify(OrderTicket(),OOP,OOP,OrderTakeProfit(),0,White);Sleep(500);}
            } 
         }
      }
   }
}
//------------------------------------------------------------------+

К списку тем  

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий