Помогите вставить звук в советник.

 

Добый день! Помогите, пожалуйста, вставить в советник звуковое сопровождение:

-при открытии позиции;

-при закрытии позиции;

-при установке нового ордера;



//+------------------------------------------------------------------+
//|                                                 VisualTrading.mq4 |
//|                   Dmitry Yakovlev, Russia,Omsk, WM R865705290089 |
//|                                       dmitry_yakovlev@rambler.ru |
//+------------------------------------------------------------------+
#property copyright "Dmitry Yakovlev, Russia,Omsk, WM R865705290089"
#property link      "dmitry_yakovlev@rambler.ru"

extern color      OpenColor=Yellow;
extern color      TakeProfitColor=Lime;
extern color      StopLossColor=Red;
extern bool       lShowTargets=true;
extern string     _donate1="На жизнь и пиво :-) WebMoney если не жалко";
extern string     _donate2="R865705290089";

int cnt=0;
int awh[];
//int aTF[9];

void init()
{
   int i=0,j=0;
   string n;
   
   /*aTF[0]=PERIOD_M1;
   aTF[1]=PERIOD_M5;
   aTF[2]=PERIOD_M15;
   aTF[3]=PERIOD_M30;
   aTF[4]=PERIOD_H1;
   aTF[5]=PERIOD_H4;
   aTF[6]=PERIOD_D1;
   aTF[7]=PERIOD_W1;
   aTF[8]=PERIOD_MN1;*/
   
   //if(!AllTF) {ArrayResize(awh,1);awh[0]=0;}
   //else FindWindows();

   DeleteHistory();
   for(i=0;i<OrdersTotal();i++)
   if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && (OrderSymbol()==Symbol()))
   {
      //for(j=0;j<ArraySize(awh);j++)
      {
         //n=OrderSymbol()+"_"+DoubleToStr(OrderTicket(),0)+"_"+DoubleToStr(awh[j],0);
         n=OrderSymbol()+"_"+DoubleToStr(OrderTicket(),0)+"_"+DoubleToStr(Period(),0);
         if(ObjectFind(n+"open")==-1)
            {ObjectCreate(n+"open",OBJ_HLINE,awh[j],Time[0],OrderOpenPrice()); ObjectSet(n+"open",OBJPROP_COLOR,OpenColor);}
         
         if(ObjectFind(n+"stop")==-1)
            {ObjectCreate(n+"stop",OBJ_HLINE,awh[j],Time[0],OrderStopLoss()); ObjectSet(n+"stop",OBJPROP_COLOR,StopLossColor);}
         
         if(ObjectFind(n+"take")==-1)
            {ObjectCreate(n+"take",OBJ_HLINE,awh[j],Time[0],OrderTakeProfit()); ObjectSet(n+"take",OBJPROP_COLOR,TakeProfitColor);}
      } // for j (win handles)
   }
   cnt=OrdersTotal();
}

void deinit()
{
   string n;
   int i=0,j=0;
   
   //if(!AllTF) {ArrayResize(awh,1);awh[0]=0;}
   //else FindWindows();

   for(i=0;i<OrdersTotal();i++)
   if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && (OrderSymbol()==Symbol()))
   {
      //for(j=0;j<ArraySize(awh);j++)
      {
         //n=OrderSymbol()+"_"+DoubleToStr(OrderTicket(),0)+"_"+DoubleToStr(awh[j],0);
         n=OrderSymbol()+"_"+DoubleToStr(OrderTicket(),0)+"_"+DoubleToStr(Period(),0);
         if(ObjectFind(n+"open")!=-1) ObjectDelete(n+"open");
         if(ObjectFind(n+"stop")!=-1) ObjectDelete(n+"stop");
         if(ObjectFind(n+"take")!=-1) ObjectDelete(n+"take");
      }
   }
   DeleteHistory();
   for(i=0;i<30;i++)
   {
      ObjectDelete(Symbol()+DoubleToStr(Period(),0)+"open"+i);
      ObjectDelete(Symbol()+DoubleToStr(Period(),0)+"take"+i);
      ObjectDelete(Symbol()+DoubleToStr(Period(),0)+"stop"+i);
   }
}

void start()
{
   string n;
   int i=0,j=0;

   if(cnt!=OrdersTotal()) init();
   
   if(lShowTargets) fShowTargets();

   //if(!AllTF) {ArrayResize(awh,1);awh[0]=0;}
   //else FindWindows();

   double popen, ptake, pstop;
   for(i=0;i<OrdersTotal();i++)
   if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && (OrderSymbol()==Symbol()))
   {
      //for(j=0;j<ArraySize(awh);j++)
      {
         //n=OrderSymbol()+"_"+DoubleToStr(OrderTicket(),0)+"_"+DoubleToStr(awh[j],0);
         n=OrderSymbol()+"_"+DoubleToStr(OrderTicket(),0)+"_"+DoubleToStr(Period(),0);

         if((ObjectFind(n+"stop")==-1) && (OrderStopLoss()!=0))
         if(MessageBox("Убрать стоп лосс?","Убрать?",4)==6)
         {
            OrderModify(OrderTicket(),OrderOpenPrice(),0,OrderTakeProfit(),0,CLR_NONE);
            ObjectDelete(n+"stop");
            continue;
         }
         else
         {
            ObjectCreate(n+"stop",OBJ_HLINE,awh[j],Time[0],OrderStopLoss()); ObjectSet(n+"stop",OBJPROP_COLOR,StopLossColor);
         }
         
         if((ObjectFind(n+"take")==-1) && (OrderTakeProfit()!=0))
         if(MessageBox("Убрать тейк профит?","Убрать?",4)==6)
         {
            OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),0,0,CLR_NONE);
            ObjectDelete(n+"take");
            continue;
         }
         else
         {
            ObjectCreate(n+"take",OBJ_HLINE,awh[j],Time[0],OrderTakeProfit()); ObjectSet(n+"take",OBJPROP_COLOR,TakeProfitColor);
         }
      
         if(ObjectFind(n+"open")==-1)
         if(MessageBox("Закрыть ордер "+OrderTicket()+"?","Закрыть?",4)==6)
         {
            if(OrderType()==OP_BUY) popen=Bid;
            if(OrderType()==OP_SELL) popen=Ask;
            OrderClose(OrderTicket(),OrderLots(),popen,3,CLR_NONE);
            OrderDelete(OrderTicket());
            ObjectDelete(n+"take");
            ObjectDelete(n+"stop");
            continue;
         }
         else
         {
            ObjectCreate(n+"open",OBJ_HLINE,awh[j],Time[0],OrderOpenPrice()); ObjectSet(n+"open",OBJPROP_COLOR,OpenColor);
         }
      
         popen=NormalizeDouble(ObjectGet(n+"open",OBJPROP_PRICE1),Digits);
         ptake=NormalizeDouble(ObjectGet(n+"take",OBJPROP_PRICE1),Digits);
         pstop=NormalizeDouble(ObjectGet(n+"stop",OBJPROP_PRICE1),Digits);
         //Comment("");
         if((popen!=NormalizeDouble(OrderOpenPrice(),Digits)) || (pstop!=NormalizeDouble(OrderStopLoss(),Digits)) || (ptake!=NormalizeDouble(OrderTakeProfit(),Digits)))
         {
            if((OrderType()!=OP_BUY) && (OrderType()!=OP_SELL) && (NormalizeDouble(popen,Digits)!=NormalizeDouble(OrderOpenPrice(),Digits)))
            {
               OrderModify(OrderTicket(),popen,OrderStopLoss(),OrderTakeProfit(),0,CLR_NONE);//continue;
            }
            if(((OrderType()==OP_BUY) || (OrderType()==OP_SELL)) && (NormalizeDouble(popen,Digits)!=NormalizeDouble(OrderOpenPrice(),Digits)))
            {
               ObjectSet(n+"open",OBJPROP_PRICE1,OrderOpenPrice());//continue;
            }
            if((OrderType()==OP_BUY) && (NormalizeDouble(pstop,Digits)>Bid))
            {
               ObjectSet(n+"stop",OBJPROP_PRICE1,OrderStopLoss());//continue;
            }
            if((OrderType()==OP_SELL) && (NormalizeDouble(pstop,Digits)<Ask))
            {
               ObjectSet(n+"stop",OBJPROP_PRICE1,OrderStopLoss());//continue;
            }
            
            if((NormalizeDouble(ptake,Digits)!=NormalizeDouble(OrderTakeProfit(),Digits)) && (OrderTakeProfit()!=0) && (ptake!=0))
            {
               OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),ptake,0,CLR_NONE);//continue;
            }
            if((NormalizeDouble(pstop,Digits)!=NormalizeDouble(OrderStopLoss(),Digits)) && (OrderStopLoss()!=0) && (pstop!=0))
            {
               OrderModify(OrderTicket(),OrderOpenPrice(),pstop,OrderTakeProfit(),0,CLR_NONE);//continue;
            }
         }
      } // for j
   } 
}

void DeleteHistory()
{
   string n;
   int i=0,j=0;
   
   //if(!AllTF) {ArrayResize(awh,1);awh[0]=0;}
   //else FindWindows();

   for(i=0;i<OrdersHistoryTotal();i++)
   if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) && (OrderSymbol()==Symbol()))
   {
      //for(j=0;j<ArraySize(awh);j++)
      {
         //n=OrderSymbol()+"_"+DoubleToStr(OrderTicket(),0)+"_"+DoubleToStr(awh[j],0);
         n=OrderSymbol()+"_"+DoubleToStr(OrderTicket(),0)+"_"+DoubleToStr(Period(),0);

         if(ObjectFind(n+"open")!=-1) ObjectDelete(n+"open");
         if(ObjectFind(n+"stop")!=-1) ObjectDelete(n+"stop");
         if(ObjectFind(n+"take")!=-1) ObjectDelete(n+"take");
      }
   }
}

/*void FindWindows()
{
   int wh=0,k=0;
   ArrayResize(awh,1); awh[0]=0;
   for(k=0;k<9;k++)
   {
      wh=WindowHandle(Symbol(),aTF[k]);
      if(wh>0)
      {
         ArrayResize(awh,ArraySize(awh)+1);
         awh[ArraySize(awh)-1]=wh;
      }
   }
}*/

void fShowTargets()
{
   int      i=0, prof_pts=0, ticket=0; 
   double   dist_stop_pts, dist_stop;
   double   dist_take_pts, dist_take;
   double   pr=(Ask+Bid)/2, prof=0;
   datetime CT=Time[0]+Period()*60*10; // time shift
   double   CP=5*Point; // price shift
   int      FS=10; // font size
   color    prof_clr=Blue;
   string   txt="";
   //-------------------------------------------------------------
   for(i=0;i<10;i++)
   {
      ObjectDelete(Symbol()+DoubleToStr(Period(),0)+"open"+i);
      ObjectDelete(Symbol()+DoubleToStr(Period(),0)+"take"+i);
      ObjectDelete(Symbol()+DoubleToStr(Period(),0)+"stop"+i);
   }
   for(i=0;i<OrdersTotal();i++)
   if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
   {
      // <---считаем
      RefreshRates();
      prof=OrderProfit();
      if(OrderType()==OP_BUY || OrderType()==3 || OrderType()==4) 
      {
         pr=Bid;
         prof_pts=(pr-OrderOpenPrice())/Point;
      }
      if(OrderType()==OP_SELL || OrderType()==2 || OrderType()==5)
      {
         pr=Ask;
         prof_pts=(OrderOpenPrice()-pr)/Point;
      }
      prof_clr=Blue;
      if(prof_pts<0) prof_clr=Red;
      if(prof_pts>0) prof_clr=Green;
      ObjectCreate(Symbol()+DoubleToStr(Period(),0)+"open"+i,OBJ_TEXT,0,CT,OrderOpenPrice()+CP);
      txt="";
      if(OrderType()==0 || OrderType()==1) txt=" ("+DoubleToStr(MathAbs(prof),2)+"$)";
      ObjectSetText(Symbol()+DoubleToStr(Period(),0)+"open"+i,DoubleToStr(MathAbs(prof_pts),0)+txt,FS,"Arial",prof_clr);

      dist_take_pts=0;dist_take=0;
      if(OrderTakeProfit()!=0) 
      {
         dist_take_pts=MathAbs(pr-OrderTakeProfit())/Point;
         ObjectCreate(Symbol()+DoubleToStr(Period(),0)+"take"+i,OBJ_TEXT,0,CT,OrderTakeProfit()+CP);
         ObjectSetText(Symbol()+DoubleToStr(Period(),0)+"take"+i,DoubleToStr(dist_take_pts,0),FS,"Arial",Green);
      }
      
      dist_stop_pts=0;dist_stop=0;
      if(OrderStopLoss()!=0)
      {
         dist_stop_pts=MathAbs(pr-OrderStopLoss())/Point;
         ObjectCreate(Symbol()+DoubleToStr(Period(),0)+"stop"+i,OBJ_TEXT,0,CT,OrderStopLoss()+CP);
         ObjectSetText(Symbol()+DoubleToStr(Period(),0)+"stop"+i,DoubleToStr(dist_stop_pts,0),FS,"Arial",Red);
      }
      
      // рисуем--->
   }
}


Файлы:
 

Ты на пиво автору брось, он тебе быстро подправит. :-)

 
поставь след строчкой после ордерсенд
 PlaySound("Wait.wav");
 
CoreWinTT писал(а) >>
поставь след строчкой после ордерсенд


Где Вы там увидели ордерсенд? Этот советник не выставляет и не закрывает ордера по своей природе. Он не под это заточен.

Причина обращения: