В тестере выдает ошибку:
2010.04.28 06:27:44 Core 1 Process creation error [2]
В тестере выдает ошибку:
2010.04.28 06:27:44 Core 1 Process creation error [2]
Обновитесь до последнего билда, пожалуйста, а затем проверьте наличие файла metatester.exe в корне каталога программы.
Спасибо, заработало.
Не хватает оптимизатора и визуализации.
Не хватает оптимизатора и визуализации.
Оптимизатор есть - просто увеличьте высоту окна тестера.
Визуализация будет позже.
Есть:
trReq.sl=tick.ask-_Point*sl; // Stop Loss level of the order
trReq.tp=tick.ask+_Point*tp; // Take Profit level of the order
нужно:
trReq.sl=tick.bid-_Point*sl; // Stop Loss level of the order
trReq.tp=tick.bid+_Point*tp; // Take Profit level of the order
и соответственно поменять для SELL.
Покупка совершается по цене ask, но закрывается по цене bid.
Если Вы хотите ограничить прибыль и убыток, например, 20 пунктами, то точно 20 пунктов нужно считать от цены bid (цены закрытия) для BUY и ask (цены закрытия) для SELL.
Подскажите пожалуйста как к этому коду добавть чтобы ко всему торговал по тренду по MACD без стопов.
Лонг: MACD растет быстрая МА пересекла медленную сверху вниз
Кроем лонг: MACD растет быстрая МА пересекла медленную снизу вверх
Шорт: MACD убывает быстрая МА пересекла медленную сверху вниз
Кроем шорт: MACD убывает быстрая МА пересекла медленную снизу вверх
Я пробовал так:
//+------------------------------------------------------------------+
//| MACD&DEMA.mq5 |
//| Copyright 2010, AM2 Group. |
//| http://www.am2_group.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2010, AM2 Group."
#property link "http://www.am2_group.net"
#property version "1.00"
//--- входные параметры
input int Periods=2; // Период 1-й Moving Average
input int Shift=38; // Период 2-й Moving Average
input int SL=30; // Stop Loss
input int TP=100; // Take Profit
input int MAGIC=3072010; // Magic Number советника
MqlTradeRequest trReq;
MqlTradeResult trRez;
int ma1Handle;
int ma2Handle;
int macdHandle; // хэндл индикатора MACD
double ma1Val[];
double ma2Val[];
double macdVal[]; // динамический массив для хранения численных значений MACD для дневных баров
int sl;
int tp;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//Set default vaules for all new order requests
trReq.action=TRADE_ACTION_DEAL;
trReq.magic=MAGIC;
trReq.symbol=Symbol(); // Trade symbol
trReq.volume=0.1; // Requested volume for a deal in lots
trReq.deviation=1; // Maximal possible deviation from the requested price
trReq.type_filling=ORDER_FILLING_AON; // Order execution type
trReq.type_time=ORDER_TIME_GTC; // Order execution time
trReq.comment="MA Sample";
//end
//Create handle for 2 MA indicators
ma1Handle=iMA(Symbol(),PERIOD_CURRENT,Periods,0,MODE_EMA,PRICE_CLOSE);
ma2Handle=iMA(Symbol(),PERIOD_CURRENT,Periods+Shift,0,MODE_EMA,PRICE_CLOSE);
//---Получить хэндл индикатора MACD
macdHandle=iMACD(NULL,PERIOD_D1,15,26,1,PRICE_CLOSE);
//end
//input parameters are ReadOnly
tp=0;
sl=0;
//end
//Suppoprt for acount with 5 decimals
if(_Digits==5)
{
sl*=10;
tp*=10;
}
//end
return(0);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
MqlTick tick; //variable for tick info
if(!SymbolInfoTick(Symbol(),tick))
{
Print("Failed to get Symbol info!");
return;
}
//Copy latest MA indicator values into a buffer
int copied=CopyBuffer(ma1Handle,0,0,4,ma1Val);
if(copied>0)
copied=CopyBuffer(ma2Handle,0,0,4,ma2Val);
copied=CopyBuffer(macdHandle,0,0,4,macdVal);
if(copied>0)
{
//If MAPeriod > MAPeriod + Shift -> BUY
if(ma1Val[1]>ma2Val[1] && macdVal[1]>macdVal[2])
{
trReq.price=tick.bid; // SymbolInfoDouble(NULL,SYMBOL_BID);
trReq.sl=tick.bid-_Point*sl; // Stop Loss level of the order
trReq.tp=tick.bid+_Point*tp; // Take Profit level of the order
trReq.type=ORDER_TYPE_BUY; // Order type
OrderSend(trReq,trRez);
}
//If MAPeriod < MAPeriod + Shift -> SELL
else if(ma1Val[1]<ma2Val[1] && macdVal[1]<macdVal[2])
{
trReq.price=tick.ask;
trReq.sl=tick.ask+_Point*sl; // Stop Loss level of the order
trReq.tp=tick.ask-_Point*tp; // Take Profit level of the order
trReq.type=ORDER_TYPE_SELL; // Order type
OrderSend(trReq,trRez);
}
}
}
//+------------------------------------------------------------------+
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Simple MA EA:
Простой эксперт для тех, кто хочет попробовать новый тестер стратегий.
Эксперт основан на пересечении двух скользящих средних. Покупаем или продаем, если одна из линий пересекает другую.
Автор: outkast