Попробовал лет 5 назад, а счастья все нет :-)
MagicNumber - нужен для того, чтобы отличать "свои" ордера от "чужих"(
открытых другим советником).
MathAbs - у вас же с ссылкой на объяснение, что тут имено не понятно?
Перепишите условия так, будут отрабатываться ВСЕ сигналы :
if(MACD2 < Signal2 && MACD1 > Signal1)
и
if(MACD2 > Signal2 && MACD1 < Signal1)
MagicNumber - нужен для того, чтобы отличать "свои" ордера от "чужих"(
открытых другим советником).
MathAbs - у вас же с ссылкой на объяснение, что тут имено не понятно?
Перепишите условия так, будут отрабатываться ВСЕ сигналы :
if(MACD2 < Signal2 && MACD1 > Signal1)
и
if(MACD2 > Signal2 && MACD1 < Signal1)
Спасибо!!!все работает
MagicNumber - нужен для того, чтобы отличать "свои" ордера от "чужих"(
открытых другим советником).
MathAbs - у вас же с ссылкой на объяснение, что тут имено не понятно?
Перепишите условия так, будут отрабатываться ВСЕ сигналы :
if(MACD2 < Signal2 && MACD1 > Signal1)
и
if(MACD2 > Signal2 && MACD1 < Signal1)
Спасибо!!!все работает
Снова нужна помощь! Попробовал в писать в этот же советник StopLoss и TakeProfit, но не получается намудрил...:( В таком виде баиться не хочет, только продает и невидать ни ST TP.Вот такие вот дела. ...
Подскажите что не так
//---- input parameters extern int MAFastPeriod=12; extern int MASlowPeriod=26; extern int MASignalPeriod=9; extern int MACDOpenLevel=5; extern double Lots=0.1; extern int StopLoss=20; extern int TakeProfit=50; extern int MagicNumber=501; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } bool CheckOrders(int Type) { bool Result=True; for(int i=0;i<OrdersTotal();i++) if(OrderSelect(i,SELECT_BY_POS)) if(OrderMagicNumber()==MagicNumber && OrderSymbol() == Symbol()) if(OrderType()==Type) { if(Type==OP_BUY) if(!OrderClose(OrderTicket(),OrderLots(),Bid,0)) Result=False; if(Type==OP_SELL) if(!OrderClose(OrderTicket(),OrderLots(),Ask,0)) Result=False; } else Result=False; return(Result); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- int Spread = MarketInfo(Symbol(), MODE_SPREAD); int StopLevel = MarketInfo(Symbol(), MODE_STOPLEVEL); double MACD1 = iMACD(NULL, 0, MAFastPeriod, MASlowPeriod, MASignalPeriod, PRICE_CLOSE, MODE_MAIN, 1); double MACD2 = iMACD(NULL, 0, MAFastPeriod, MASlowPeriod, MASignalPeriod, PRICE_CLOSE, MODE_MAIN, 2); double Signal1 = iMACD(NULL, 0, MAFastPeriod, MASlowPeriod, MASignalPeriod, PRICE_CLOSE, MODE_SIGNAL, 1); double Signal2 = iMACD(NULL, 0, MAFastPeriod, MASlowPeriod, MASignalPeriod, PRICE_CLOSE, MODE_SIGNAL, 2); if(MACD2 < Signal2 && MACD1 > Signal1 ) if(CheckOrders(OP_SELL)) { if(StopLoss <= StopLevel+Spread) double StopLoss = 0; else StopLoss = Ask - StopLoss*Point; if(TakeProfit <= StopLevel-Spread) double TakeProfit = 0; else TakeProfit = Ask + TakeProfit*Point; if(!OrderSend(Symbol(), OP_BUY, Lots, Ask, 10, StopLoss, TakeProfit,NULL, MagicNumber)) Print("Не открыт ордер Buy. Ошибка №", GetLastError()); } if(MACD2 > Signal2 && MACD1 < Signal1 ) if(CheckOrders(OP_BUY)) { if(StopLoss <= StopLevel+Spread) StopLoss = 0; else StopLoss = Bid + StopLoss*Point; if(TakeProfit <= StopLevel-Spread) TakeProfit = 0; else TakeProfit = Bid - TakeProfit*Point; if(!OrderSend(Symbol(), OP_SELL, Lots, Bid, 10, StopLoss, TakeProfit, NULL, MagicNumber)) Print("Не открыт ордер Sell. Ошибка №", GetLastError()); } //---- return(0); } //+----------------------------------------------------------------
Снова нужна помощь! Попробовал в писать в этот же советник StopLoss и TakeProfit, но не получается намудрил...:( В таком виде баиться не хочет, только продает и невидать ни ST TP.Вот такие вот дела. ...
Подскажите что не так
//---- input parameters extern int StopLoss=20; extern int TakeProfit=50; ............ //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- ... double StopLoss = 0; ... double TakeProfit = 0; ...} //+----------------------------------------------------------------
Переменные объявлены сначала на глобальном уровне, а потом внутри ф-ции Start(), а это не правильно. Причем только для OP_SELL, для OP_BUY остаются переменные с типом int.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Не как не получается сделать так что бы открывался по всем сигналам MACD в основе советник SimpleMACD не только по этим ...
но и по этим..