Скачать MetaTrader 5

Советники: Simple MA EA

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Automated-Trading
Админ
101216
Automated-Trading 2010.04.27 10:29 

Simple MA EA:

Простой эксперт для тех, кто хочет попробовать новый тестер стратегий.

Эксперт основан на пересечении двух скользящих средних. Покупаем или продаем, если одна из линий пересекает другую.

Автор: outkast

Simple MA Expert Advisor

1Serg
1459
1Serg 2010.04.28 06:29  

В тестере выдает ошибку:

2010.04.28 06:27:44    Core 1    Process creation error [2]



MetaQuotes
Админ
25044
Renat Fatkhullin 2010.04.28 09:38  
1Serg:

В тестере выдает ошибку:

2010.04.28 06:27:44    Core 1    Process creation error [2]

Обновитесь до последнего билда, пожалуйста, а затем проверьте наличие файла metatester.exe в корне каталога программы.
1Serg
1459
1Serg 2010.04.28 17:16  
Renat:
Обновитесь до последнего билда, пожалуйста, а затем проверьте наличие файла metatester.exe в корне каталога программы.

Спасибо, заработало.

Не хватает оптимизатора и визуализации.

MetaQuotes
Админ
25044
Renat Fatkhullin 2010.04.28 17:20  
1Serg:

Не хватает оптимизатора и визуализации.

Оптимизатор есть - просто увеличьте высоту окна тестера.

Визуализация будет позже.

1Serg
1459
1Serg 2010.04.29 11:00  
Renat:

Оптимизатор есть - просто увеличьте высоту окна тестера.

Визуализация будет позже.

Класс!




Arms
143
Arms 2010.05.25 11:43  

Есть:

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.

Andrew Kornishkin
7105
Andrew Kornishkin 2010.07.03 22:24  
 

Подскажите пожалуйста как к этому коду добавть чтобы ко всему торговал по тренду по 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);
      }
   }

  }
//+------------------------------------------------------------------+

 

 

 

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий