dd$

  • *****
  • 6139
  • 234
    • Просмотр профиля
Из Академии
« Topic Start: 11 Апреля 2008, 13:24:51 »
Цитировать
Думаю, если использовать такого эксперта на нескольких парах, то можно просто запутаться. Чтобы быстро реагировать на состояние всего портфеля я сделал эксперта-ликвидатора. Он проверяет все ордера выставленные на счете и считает их суммарный профит независимо от того какой эксп выставлял ордера. Когда общая сумма достигает определенного значения - указывается в настройках, то эксперт исправно закрывает все позиции на счету ипродолжает следить за общим профитом. Также в настройках должен быть указан
рабочий лот портфеля, а точнее рабочий лот экспертов. Код привожу ниже. Почему сую код а не архив? Пока не знаю как это здесь делается - разберусь, а пока так.


Код
//+------------------------------------------------------------------+
//|                                           LicvidationExp-T01.mq4 |
//|                        Copyright © 2007, HomeSoft - Tartan Corp. |
//|                                              spiky@transkeino.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007, HomeSoft - Tartan Corp."
#property link      "spiky@transkeino.ru"

extern double Lots = 1.0;
extern double Stop = 500;

double ssum,bsum,sum;
int    s,b,cnt,pl,k,j;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
        j=j+1;
    if (j==100) j=1;
        ssum=0;bsum=0;sum=0;s=0;b=0;
   for (cnt=OrdersTotal()-1;cnt>=0 ;cnt--)
    {
        OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
    if (OrderType()==OP_SELL && (OrderMagicNumber()==121 || OrderMagicNumber()==122 || OrderMagicNumber()==123 || OrderMagicNumber()==124))
    {   s=s+1;ssum=ssum+OrderProfit()+OrderSwap();}
    if (OrderType()==OP_BUY && (OrderMagicNumber()==121 || OrderMagicNumber()==122  || OrderMagicNumber()==123 || OrderMagicNumber()==124))
    {   b=b+1;bsum=bsum+OrderProfit()+OrderSwap();}
    }
        ssum=MathRound(ssum);
        bsum=MathRound(bsum);
        sum=ssum+bsum;
   
    if (s+b==0) {k=0;pl=0;}
   
    if (sum>=Stop*Lots) {pl=1;if (k==0) {k=1;PlaySound("Curants.wav");}}
   
        Comment("\n","  Time=",Hour(),":",Minute(),"  Tiks=",j,"  Orders=",s+b,"  Flag=",pl,"  GlobalStop=",Stop,"  GlobalProfit=",sum);
   
    if ( pl==1 )
    {
   for (cnt=OrdersTotal()-1;cnt>=0 ;cnt--)
    {
        OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
    if (OrderType()==OP_SELL && (OrderProfit()+OrderSwap())>0 &&
       (OrderMagicNumber()==121 || OrderMagicNumber()==122  || OrderMagicNumber()==123 || OrderMagicNumber()==124))
    {   RefreshRates();             
        OrderClose(OrderTicket(),OrderLots(),Ask,3,Red);
        Sleep(10000);
    }
    if (OrderType()==OP_BUY && (OrderProfit()+OrderSwap())>0 &&
       (OrderMagicNumber()==121 || OrderMagicNumber()==122  || OrderMagicNumber()==123 || OrderMagicNumber()==124))
    {   RefreshRates();
        OrderClose(OrderTicket(),OrderLots(),Bid,3,Red);
        Sleep(10000);
    }
    }
    }
               
//----
   return(0);
  }
//+------------------------------------------------------------------+

Эксп работал некоректно пришлось править код - Магики пришлось вставить. Мелодию оповещения вставил и просто почистил код.

 

Отметьте интересные вам фрагменты текста и они станут доступны по уникальной ссылке в адресной строке браузера.