Помогите вставить звук в советник. Новый комментарий Dmitry Chepik 2010.04.26 18:29 Добый день! Помогите, пожалуйста, вставить в советник звуковое сопровождение: -при открытии позиции; -при закрытии позиции; -при установке нового ордера; //+------------------------------------------------------------------+ //| 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); } // рисуем---> } } Файлы: visualtrading.mq4 11 kb [ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. Грaфические ордера == метаязык графических линий - торговых приказов, доработка советника GTerminal Помогите пожалуйста вставить стоп-лосс в советник Alexander 2010.04.26 18:33 #1 Ты на пиво автору брось, он тебе быстро подправит. :-) Vasily 2010.04.26 19:01 #2 поставь след строчкой после ордерсенд PlaySound("Wait.wav"); Alexander 2010.04.26 19:18 #3 CoreWinTT писал(а) >> поставь след строчкой после ордерсенд Где Вы там увидели ордерсенд? Этот советник не выставляет и не закрывает ордера по своей природе. Он не под это заточен. Новый комментарий
Добый день! Помогите, пожалуйста, вставить в советник звуковое сопровождение:
-при открытии позиции;
-при закрытии позиции;
-при установке нового ордера;