Извините, но кнопку SRC (для вставки кода в пост) вы так же не нашли?
P./S.: Вопросы по кодам для МТ4 логичнее задать на форуме по МТ4.
- www.mql5.com
Советник компилируется, но не открывает сделки в тестере
В наименовании инструмента нужно указать явно NULL (или Symbol()) вместо числа 0.
Замените iMA(0,...) на iMA(NULL,...). Аналогично в iWPR и OrderSend.
P.S. Во избежание ошибок при вызове OrderSend для вычисленных уровней Stop Loss/Take Profit нужно использовать нормализованные цены.
В наименовании инструмента нужно указать явно NULL (или Symbol()) вместо числа 0.
Замените iMA(0,...) на iMA(NULL,...). Аналогично в iWPR и OrderSend.
P.S. Во избежание ошибок при вызове OrderSend для вычисленных уровней Stop Loss/Take Profit нужно использовать нормализованные цСсС
Спасибо все работает
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Советник компилируется, но не открывает сделки в тестере
extern int MAGICMA = 777; // магик советника
extern double lot = 0.1; // торговий лот
extern double SL = 0.0000; // стоп
extern double TP = 0.0000; // тейк
extern int Vistavlat_SL = 0; // виставлять стоп да=1, нет=0
extern int Vistavlat_TP = 0; // виставлять стоп да=1, нет=0
extern int WPR_period = 50; // период WPR
extern int Moving_55 = 55; // МА аналізу відкриття/закриття
extern int Moving_1 = 1; // МА відкриття ордеру
extern int Moving_89 = 89; // МА тренда
extern int Moving_21 = 21; // МА ордеру
extern double Pip = 0.0030; // тейк
extern int MovingShift = 0; // Сдвиг МА
extern bool QQQ = true; // последнее место WPR если в зоне 0 - 20 то true если в зоне -80 - 100 то false
//+------------------------------------------------------------------+
bool opnbuy;
string parabuy ;
string parasell ;
int res;
string A1;
string A2;
string A3;
string A4;
string A5;
string D1;
string D2;
string D3;
//+------------------------------------------------------------------+
//| Відкриття сделок |
//+------------------------------------------------------------------+
void CheckForOpen(bool QQ)
{
if(OrdersTotal()>0) return;
//---- Торговля на першому тіку нового бара
if(Volume[0]>1) return;
//---- Moving Average
double ma1_0=iMA(0,0,Moving_1,MovingShift,MODE_EMA,PRICE_CLOSE,0);
double ma1_1=iMA(0,0,Moving_1,MovingShift,MODE_EMA,PRICE_CLOSE,1);
double ma55_0=iMA(0,0,Moving_55,MovingShift,MODE_EMA,PRICE_CLOSE,0);
double ma55_1=iMA(0,0,Moving_55,MovingShift,MODE_EMA,PRICE_CLOSE,1);
double ma89_0=iMA(0,0,Moving_89,MovingShift,MODE_EMA,PRICE_CLOSE,0);
double ma89_1=iMA(0,0,Moving_89,MovingShift,MODE_EMA,PRICE_CLOSE,1);
//---- умова відкриття sell
if(ma55_0<ma89_0 && ma1_1>ma55_1 && ma1_0<ma55_0 && QQ==true)
{
res=OrderSend(0,OP_SELL,lot,Bid,3,(Bid+SL)*Vistavlat_SL,(Bid-TP)*Vistavlat_TP,"",MAGICMA,0,Red);
return;
}
//---- умова відкриття buy
if(ma55_0>ma89_0 && ma1_1<ma55_1 && ma1_0>ma55_0 && QQ==false)
{
res=OrderSend(0,OP_BUY,lot,Ask,3,(Ask-SL)*Vistavlat_SL,(Ask+TP)*Vistavlat_TP,"",MAGICMA,0,Blue);
return;
}
//----
}
//+------------------------------------------------------------------+
//| Закриття сделок |
//+------------------------------------------------------------------+
void CheckForClose()
{
//---- Торговля на першому тіку нового бара
// if(Volume[0]>1) return;
//---- Moving Average
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
//---- Moving Average
double ma1_1=iMA(0,0,Moving_1,MovingShift,MODE_EMA,PRICE_CLOSE,1);
double ma55_1=iMA(0,0,Moving_55,MovingShift,MODE_EMA,PRICE_CLOSE,1);
if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continue;
//---- check order type
if(OrderType()==OP_BUY)
{
if(ma55_1>ma1_1)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
}
break;
}
if(OrderType()==OP_SELL)
{
if(ma55_1<ma1_1)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
}
break;
}
}
//----
}
//+------------------------------------------------------------------+
//| Start function |
//+------------------------------------------------------------------+
void start()
{
//---- check for history and trading
if(Bars<100 || IsTradeAllowed()==false) return;
//----
OrderSend(0,OP_SELL,lot,Bid,3,(Bid+SL)*Vistavlat_SL,(Bid-TP)*Vistavlat_TP,"",MAGICMA,0,Red);
double WPR = iWPR(0,0,WPR_period, MovingShift) ;
if (WPR<-20.00 && WPR>-80.00) QQQ = QQQ;
if (WPR>-20.00 || WPR<-80.00)
{
if (WPR>-20.00) QQQ = true;
if (WPR<-80.00) QQQ = false;
}
CheckForOpen(QQQ);
CheckForClose();
//----
return;
}
//+------------------------------------------------------------------+