+1
Вот простейшая реализация вашей системы:


//+------------------------------------------------------------------+
//|                                               Moving Average.mq4 |
//|                      Copyright © 2005, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#define MAGICMA  20050610

extern double Lots               = 0.1;
extern double MaximumRisk        = 0.02;
extern double DecreaseFactor     = 3;
extern double MovingPeriod       = 12;
extern double MovingShift        = 6;
//+------------------------------------------------------------------+
//| Calculate open positions                                         |
//+------------------------------------------------------------------+
int CalculateCurrentOrders(string symbol)
  {
   int buys=0,sells=0;
//----
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
        {
         if(OrderType()==OP_BUY)  buys++;
         if(OrderType()==OP_SELL) sells++;
        }
     }
//---- return orders volume
   if(buys>0) return(buys);
   else       return(-sells);
  }
//+------------------------------------------------------------------+
//| Calculate optimal lot size                                       |
//+------------------------------------------------------------------+
double LotsOptimized()
  {
   double lot=Lots;
   int    orders=HistoryTotal();     // history orders total
   int    losses=0;                  // number of losses orders without a break
//---- select lot size
   lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,1);
//---- calcuulate number of losses orders without a break
   if(DecreaseFactor>0)
     {
      for(int i=orders-1;i>=0;i--)
        {
         if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error in history!"); break; }
         if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continue;
         //----
         if(OrderProfit()>0) break;
         if(OrderProfit()<0) losses++;
        }
      if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);
     }
//---- return lot size
   if(lot<0.1) lot=0.1;
   return(lot);
  }
//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void CheckForOpen()
  {
   double ma;
   int    res;
//---- go trading only for first tiks of new bar
   if(Volume[0]>1) return;
//---- get Moving Average 
   ma=iCustom(NULL,0,"Moving Averages",0,0);
//---- sell conditions
   if(Close[1]<ma)  
     {
      res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,0,0,"",MAGICMA,0,Red);
      return;
     }
//---- buy conditions
   if(Close[1]>ma)  
     {
      res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,0,"",MAGICMA,0,Blue);
      return;
     }
//----
  }
//+------------------------------------------------------------------+
//| Check for close order conditions                                 |
//+------------------------------------------------------------------+
void CheckForClose()
  {
   double ma;
//---- go trading only for first tiks of new bar
   if(Volume[0]>1) return;
//---- get Moving Average 
   ma=iCustom(NULL,0,"Moving Averages",0,0);
//----
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)        break;
      if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continue;
      //---- check order type 
      if(OrderType()==OP_BUY)
        {
         if(Close[1]<ma) OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
         break;
        }
      if(OrderType()==OP_SELL)
        {
         if(Close[1]>ma) OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
         break;
        }
     }
//----
  }
//+------------------------------------------------------------------+
//| Start function                                                   |
//+------------------------------------------------------------------+
void start()
  {
//---- check for history and trading
   if(Bars<100 || IsTradeAllowed()==false) return;
//---- calculate open orders by current symbol
   if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
   else                                    CheckForClose();
//----
  }
//+------------------------------------------------------------------+


Только заменяете в строчке название индикатора и можете потестить, если с индикатором все в порядке.


   ma=iCustom(NULL,0,"Moving Averages",0,0);


avatar

AM2

  • 7 мая 2011, 22:38
0
Как то писал подобный советник на MQL5. Такое ощущение как будто все снова повторяется… *улыбается*

Это очень прибыльная система проверенно на реале!

Стратегия проста! Если линия голубая, надо чтоб советник продал, как только линия поменяет цвет на синий то надо чтоб он закрыл предидущую и купил!

Кто сможет бесплатно! Это советник не лично мне, а всему форуму!


www.mql5.com/ru/forum/2522/33012#comment_33012
avatar

AM2

  • 7 мая 2011, 19:16
+1
Тестирование советника на демо счете остановлено. В ближайшее время продолжим на реальном центовом счете.
В настоящее время средств на счете 14119.86$.

Итоги (02.17.2011-06.05.2011): 41% за 79 дней.
Т.е. 41/(79/30) = 15.7% в месяц.

Сделки можно посмотреть здесь:

Сервер 62.213.101.145:443 (Alpari-Demo)
Логин 3001388
Пароль инвестора vijv2sy
Начальный депозит 10 000

Торговля велась со следующими настройками:

2011.02.17 10:18:15 bobsley EURUSD,M5 inputs: StopLoss=350; TakeProfit=700; MovingPeriod=44;
avatar

AM2

  • 7 мая 2011, 11:38
0
Давайте все оформим через сервис работа на форуме MQL5. Вы напишете ТЗ, укажете цену, сроки, отметите что для AM2 и я сделаю.
www.mql5.com/ru/job

Вот правила использования сервиса 'Работа':
www.mql5.com/ru/job/rules
avatar

AM2

  • 7 мая 2011, 09:11
0
Давайте все оформим через сервис работа на форуме MQL5. Вы укажете цену, сроки, отметите что для AM2 и я сделаю.
www.mql5.com/ru/job
avatar

AM2

  • 7 мая 2011, 09:00
0
Почему сегодня торг? Нонфармы на носу. Такая движуха может быть!
avatar

AM2

  • 6 мая 2011, 13:38
0
Делал советник, который торгует на новостях сразу. Результат не очень, частенько оба стопа срывает. А когда торгуем уже после выхода новостей, уже совсем другое дело.
avatar

AM2

  • 6 мая 2011, 07:29
0
По описанию похоже на то. Можете посмотреть сделки и все проанализировать.
avatar

AM2

  • 6 мая 2011, 07:15
0
Дмитрий, а не стоит ли нам сейчас по евре закупиться? Т.к. откат обратно очень вероятен.
avatar

AM2

  • 5 мая 2011, 17:22
+1
Кто то результатами поделиться обещал… *улыбается*
avatar

AM2

  • 4 мая 2011, 21:08
0
Если система прибыльная, что подтверждается стейтом с реала, то могут и помочь…
avatar

AM2

  • 4 мая 2011, 21:02
0
Можно просто протестировать оба варианта и сравнить.
avatar

AM2

  • 28 апреля 2011, 17:59
+1
Для меня кодинг только хобби.
Если интересует что то большее обратитесь к профессионалам:
www.mql5.com/ru/job
avatar

AM2

  • 26 апреля 2011, 21:16
+2
У вас будет еще сотни идей. Так что учитесь кодить чтобы попасть в заветные 3%.
Вот набросок.


//+------------------------------------------------------------------+
//|                                                        Basal.mq4 |
//|                                            Copyright © 2011, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, AM2"
#property link      "http://www.forexsystems.biz"

#define MAGIC  20110406

extern int StopLoss    = 1000;   //Стоплосс ордера
extern int TakeProfit  = 1000;   //Тейкпрофит ордера
extern int Trailing    = 500;    //Трейлингcтоп ордера
extern int StartHour   = 0;      //Час начала торговли(терминальное время)
extern int EndHour     = 23;     //Час окончания торговли(терминальное время)
extern int Distance    = 50;     //Расстояние от цены для установки ордера
extern int Expiration  = 4;      //Время истечения ордера
extern double Lots     = 1;      //Лот

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   int b,s,p,res;
   datetime expiration = TimeCurrent()+3600*Expiration;
   double BuyPrice=fND(Open[0]+Distance*Point);
   double SellPrice=fND(Open[0]-Distance*Point);   
   for (int i=OrdersTotal()-1;i>=0;i--)
     {
      if (OrderSelect(i, SELECT_BY_POS))
        {  
         if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=MAGIC) continue;
         if (OrderType()==OP_BUYSTOP) b++;
         if (OrderType()==OP_SELLSTOP) s++;
         if (OrderType()==OP_BUY||OrderType()==OP_SELL) p++;
        }   
     }
   if(p>0) DelAllStop(); 
   if(Trailing>0) Trail();
   if(Hour()==EndHour) ClosePositions();  
   if(Hour()==StartHour && b<1 && p<1)
     {               
      res=OrderSend(Symbol(),OP_BUYSTOP,Lots,BuyPrice,0,fND(BuyPrice-StopLoss*Point),fND(BuyPrice+TakeProfit*Point),"",MAGIC,expiration,Blue);      
     }  
         
   if(Hour()==StartHour && s<1 && p<1) 
     {               
      res=OrderSend(Symbol(),OP_SELLSTOP,Lots,SellPrice,0,fND(SellPrice+StopLoss*Point),fND(SellPrice-TakeProfit*Point),"",MAGIC,expiration,Red );
     }   
//----   
   return(0);
  }
//+------------------------------------------------------------------+
double fND(double d, int n=-1) 
  {  
   if (n<0) return(NormalizeDouble(d, Digits)); 
   return(NormalizeDouble(d, n)); 
  }
//+------------------------------------------------------------------+
void ClosePositions()
  {
   for (int i=OrdersTotal()-1;i>=0;i--)
    {
      OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() == Symbol())
       {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == MAGIC)
          {
            if (OrderType() == OP_BUY) OrderClose(OrderTicket(), OrderLots(), Bid, 3, Blue);
            if (OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), Ask, 3, Red);
          }
         Sleep(1000);
      }
    }
  }
//+------------------------------------------------------------------+
void DelAllStop()
{
  for (int i=0; i<OrdersTotal(); i++)
   {                                               
      if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
      {
         if (OrderSymbol()!=Symbol()||OrderMagicNumber()!=MAGIC) continue;
         if (OrderType()==OP_BUYSTOP||OrderType()==OP_SELLSTOP) OrderDelete(OrderTicket());
      }   
   }
}
//-------------------------------------------------------------------+
void Trail()
{
   for (int i=0; i<OrdersTotal(); i++) 
     {
      if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      if (OrderSymbol()==Symbol()||OrderMagicNumber()==MAGIC)
       if(OrderType()==OP_BUY)
         {
           if(Trailing>0)  
            {                 
               if(Bid-OrderOpenPrice()>Point*Trailing)
               {
                  if(OrderStopLoss()<Bid-Point*Trailing)
                  {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*Trailing,OrderTakeProfit(),0,Green);
                  }
               }
            }
         }
         
        if(OrderType()==OP_SELL)
         {
           if(Trailing>0)  
            {                 
               if((OrderOpenPrice()-Ask)>(Point*Trailing))
               {
                  if((OrderStopLoss()>(Ask+Point*Trailing)) || (OrderStopLoss()==0))
                  {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*Trailing,OrderTakeProfit(),0,Red);
                  }
               }
            }
         }   
   }
}
//+------------------------------------------------------------------+


avatar

AM2

  • 26 апреля 2011, 16:33
0
Вот советник на пробой дня:
codebase.mql4.com/ru/7382

Или мой настройте как вам нужно:
codebase.mql4.com/ru/7494
avatar

AM2

  • 26 апреля 2011, 13:15
0
Дмитрий, подскажите пожалуйста, где можно найти ленту экономических новостей для сайта?
Также может быть знаете откуда брать экономический календарь и котировки без рекламы.
avatar

AM2

  • 22 апреля 2011, 10:12