extern bool UseSound = true; // Использовать звуковой сигнал extern string NameSound = "expert.wav"; // Наименование звукового файла ......................................... ......................................... .......................................... if(OrderSend( Symbol(), OP_SELL, 0.1, Bid, 5, 0.0, 0.0, "MACD_test", _MagicNumber, 0, Red )==true){ if(UseSound==true){PlaySound(NameSound);} }Принцип, думаю, понятен.
drknn:
extern bool UseSound = true; // Использовать звуковой сигнал extern string NameSound = "expert.wav"; // Наименование звукового файла ......................................... ......................................... .......................................... if(OrderSend( Symbol(), OP_SELL, 0.1, Bid, 5, 0.0, 0.0, "MACD_test", _MagicNumber, 0, Red )==true){ if(UseSound==true){PlaySound(NameSound);} }Принцип, думаю, понятен.
Спасибо за ответ но у меня не получается ,звука нет,во время
тестирования должен быть звук или нет?
//---- открываем СЕЛЛ позицию if((OrderSend( Symbol(), OP_SELL, Lots, Bid, 5, Ask+StopLoss*Point,Bid-TakeProfit*Point,"eurusdm15",_MagicNumber, 0, Red ) ==true)< 0) { _GetLastError = GetLastError(); Alert( "Ошибка OrderSend № ", _GetLastError ); { if(UseSound==true) { PlaySound(NameSound); } } return(-1); } return(0); } return(0); }
К сожалению звука нет
Проверьте пожалуйста правильно я написал здесь или нет
//---- открываем СЕЛЛ позицию if((OrderSend( Symbol(), OP_SELL, Lots, Bid, 5, Ask+StopLoss*Point,Bid-TakeProfit*Point,"eurusdm15",_MagicNumber, 0, Red ) ==true)< 0) { _GetLastError = GetLastError(); Alert( "Ошибка OrderSend № ", _GetLastError ); { if(UseSound==true) { PlaySound(NameSound); } } return(-1); } return(0); } return(0); }И если можно на закрытие позиции подскажите как правильно написать
string SMB=Symbol(); double SL,TP,Prise; int digits=MarketInfo(SMB,MODE_DIGITS); Prise=MarketInfo(SMB,MODE_BID); Prise=NormalizeDouble(Prise,digits); SL=Ask+StopLoss*Point; SL=NormalizeDouble(SL,digits); TP=Bid-TakeProfit*Point; TP=NormalizeDouble(TP,digits); if(!(OrderSend(SMB,OP_SELL,Lots,Prise,5,SL,TP,"eurusdm15",_MagicNumber,0,Red )){ _GetLastError = GetLastError(); Alert("Ошибка OrderSend № ", _GetLastError," при установке Sell-ордера"); } else{ if(UseSound){ PlaySound(NameSound); } }В Вашем коде если установка Селл-ордера удачна, то функция ни как не может вернуть значение меньше нуля. Сама конструкция if() у Вас написана не верно - знак "<" явно лишний, а чтоб Ваша конструкция сработала, нужно было писать не true, а false и убрать знак сравнения.
Ставьте фигурные скобки красиво, ровно - иначе запутаться в них
раз плюнуть.
drknn:
Ставьте фигурные скобки красиво, ровно - иначе запутаться в них раз плюнуть.
Ставьте фигурные скобки красиво, ровно - иначе запутаться в них раз плюнуть.
Спасибо за ответ
Я переделал
//+------------------------------------------------------------------+ //| Gbpusdm5fast.mq4 | //| Copyright © 2006, Mirakhmedov Anvar | //| | //+------------------------------------------------------------------+ #property copyright "Copyright © 2007, Mirakhmedov Anvar" extern int _MagicNumber = 23; extern double Lots =0.1; extern double step0 = 0.00021; extern double step1 = 0.001; extern double rsibuy = 70; extern double rsisell = 30; extern double _point =5; extern double StopLoss = 500; extern double TakeProfit = 500; extern double _point1 =80; int start() { int ticket; int _GetLastError = 0, _OrdersTotal = OrdersTotal(); //---- перебираем все открытые позиции for ( int z = _OrdersTotal - 1; z >= 0; z -- ) { //---- если при выборе позиции возникла ошибка, переходим к следующей if ( !OrderSelect( z, SELECT_BY_POS ) ) { _GetLastError = GetLastError(); continue; } // если позиция открыта не по текущему инструменту, пропускаем её if ( OrderSymbol() != Symbol() ) continue; // если MagicNumber не равен _MagicNumber, пропускаем // эту позицию if ( OrderMagicNumber() != _MagicNumber ) continue; //---- если открыта БАЙ-позиция, if ( OrderType() == OP_BUY ) { //---- если МАКД пересёк 0-ю линию вниз, if((Open[0]-Close[0])> _point1*Point || iSAR(NULL,0,step0,0.1,0)>Close[0]) { //---- закрываем позицию if ( !OrderClose( OrderTicket(), OrderLots(), Bid, 5, Green ) ) { _GetLastError = GetLastError(); Alert( "Ошибка OrderClose № ", _GetLastError ); return(-1); } } // если сигнал не изменился, выходим - пока рано открывать // новую позицию else { return(0); } } //---- если открыта СЕЛЛ-позиция, if ( OrderType() == OP_SELL ) { if((Close[0]-Open[0])> _point1*Point|| iSAR(NULL,0,step0,0.1,0)<Close[0]) { //---- закрываем позицию if(!OrderClose( OrderTicket(), OrderLots(), Ask, 5, Red ) ) { _GetLastError = GetLastError(); Alert( "Ошибка OrderClose № ", _GetLastError ); return(-1); } } // если сигнал не изменился, выходим - пока рано открывать // новую позицию else return(0); } } //+------------------------------------------------------------------+ //| если выполнение дошло до этого места, значит открытой позиции нет| //| проверяем, есть ли возможность открыть позицию | //+------------------------------------------------------------------+ if(iSAR(NULL,0,step0,0.1,0)<Close[0] && iRSI(NULL,0,14,PRICE_CLOSE,0)>rsibuy && (Close[0]-Open[0])> _point*Point) { ticket = (OrderSend( Symbol(), OP_BUY, Lots, Ask, 5, 0.0, 0.0, "Gbpusdm5fast", _MagicNumber, 0, Green ) ); if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Alert("BUY orders opened : ",OrderOpenPrice()); } else Print("Error opening BUY orders : ",GetLastError()); return(0); } if(iSAR(NULL,0,step0,0.1,0)>Close[0] && iRSI(NULL,0,14,PRICE_CLOSE,0)<rsisell && (Open[0]-Close[0])> _point*Point) { //---- открываем СЕЛЛ позицию ticket = (OrderSend( Symbol(), OP_SELL, Lots, Bid, 5, 0.0, 0.0, "Gbpusdm5fast", _MagicNumber, 0, Red )); if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Alert("SELL orders opened : ",OrderOpenPrice()); } else Print("Error opening SELL orders : ",GetLastError()); return(0); } return(0); }
Теперь мне нужно что бы при закрытии позиции срабатывал Alert()
Помогите пожалуйста.
Чтобы срабатывал Аlert при закрытии позиции в каком случае? В смысле, при наступлении каких условий должен сработать алерт?
drknn:
Чтобы срабатывал Аlert при закрытии позиции в каком случае? В смысле, при наступлении каких условий должен сработать алерт?
Чтобы срабатывал Аlert при закрытии позиции в каком случае? В смысле, при наступлении каких условий должен сработать алерт?
В момент закрытия позиции
В момент закрытия позиции советник ожидает ответ сервера и ни каких иных действий делать не будет. Алерт можно вызвать либо до отдачи приказа на сервер, либо после.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Здраствуйте! подскажите пожалуйста как заставить советник воспроизводить звуковой сигнал PLaySound при окрытии Buy,Sell и при закрытии Buy,Sell