Советники, эксперты, форекс роботы Обсуждение, поиск и тестирование форекс советников, роботов, экспертов и МТС

Ответить
15.08.2013, 07:15
Аватар для Ruslan2010
Ruslan2010 Ruslan2010 вне форума Новичок форума
Регистрация: 23.08.2010 / Адрес: Москва) / Сообщений: 50
Поблагодарили 4 раз(а) / Репутация: 5

Плохо Cross MA

Добрый день коллеги.

Покопавшись с старом архиве роботов, выудил Cross MA.
В процессе оптимизации показал себя более чем достойно.

Я знаю что это советник на карманах средних, но прочесть его код затрудняюсь.

Можете помочь прочесть его код?

Скрытый текст

PHP код:
//+------------------------------------------------------------------+
//|                                                      CrossMa.mq4 |
//|                      Copyright © 2005, George-on-Don             |
//|                                       http://www.forex.aaanet.ru |
//+------------------------------------------------------------------+
#include <stdlib.mqh>
#include <stderror.mqh>
 
#define MAGICMA  20050610
 
extern double Lots               0.1;
extern double MaximumRisk        0.02;
extern double DecreaseFactor     3;
extern double MovingPeriod       12;
extern double MovingShift        0;
extern double MovingPeriod1      4;
extern double AtrPer             6;
extern bool   SndMl              True ;
//+------------------------------------------------------------------+
//| Расчет открытия позиции                                          |
//+------------------------------------------------------------------+
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)
        {
         
int order_type;
           
// ....
           
order_type=OrderType();
           if (
order_type==OP_BUYbuys++; else
           if (
order_type==OP_SELLsells++;
        }
     }
//---- return orders volume
   
if(buys>0) return(buys);
   else       return(-
sells);
  }
//+------------------------------------------------------------------+
//| Расчет оптимальной величины лота                                 |
//+------------------------------------------------------------------+
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()<0losses++;
        }
      if(
losses>1lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);
     }
//---- return lot size
   
if(lot<0.1lot=0.1;
   return(
lot);
  }
//+------------------------------------------------------------------+
//| Проверка для открытия позиции с первым тиком нового бара.        |
//+------------------------------------------------------------------+
void CheckForOpen()
  {
   
double mas;
   
double maf;
   
double mas_p;
   
double maf_p;
   
double Atr;
   
int    res;
   
string sHeaderLetter;
   
string sBodyLetter;
//---- go trading only for first tiks of new bar
   
if(Volume[0]>1) return;
//---- get Moving Average 
   
mas=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,1); // динный мувинг 12
   
maf=iMA(NULL,0,MovingPeriod1,MovingShift,MODE_SMA,PRICE_CLOSE,1);// короткий мувинг 4
   
mas_p=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,2); // динный мувинг 12
   
maf_p=iMA(NULL,0,MovingPeriod1,MovingShift,MODE_SMA,PRICE_CLOSE,2);// короткий мувинг 4
   
Atr iATR(NULL,0,AtrPer,0);
//---- Условие продажи
   
if(maf<mas && maf_p>=mas_p)  
     {
      
res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,Ask+Atr,0,"",MAGICMA,0,Red);
       if (
SndMl == True && res != -1
         {
         
sHeaderLetter "Operation SELL by" Symbol()+"";
         
sBodyLetter "Order Sell by"Symbol() + " at " DoubleToStr(Bid,4)+ ", and set stop/loss at " DoubleToStr(Ask+Atr,4)+"";
         
sndMessage(sHeaderLettersBodyLetter);
         }
      return;
     }
//---- Условие покупки
   
if(maf>mas && maf_p<=mas_p)  
     {
      
res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,Bid-Atr,0,"",MAGICMA,0,Blue);
      if ( 
SndMl == True && res != -1)
      { 
      
sHeaderLetter "Operation BUY at" Symbol()+"";
      
sBodyLetter "Order Buy at"Symbol() + " for " DoubleToStr(Ask,4)+ ", and set stop/loss at " DoubleToStr(Bid-Atr,4)+"";
      
sndMessage(sHeaderLettersBodyLetter);
      }
      return;
     }
//----
  
}
//+------------------------------------------------------------------+
//| ПРоверка для закрытия открытой позиции                           |
//+------------------------------------------------------------------+
void CheckForClose()
  {
   
double mas;
   
double maf;
   
double mas_p;
   
double maf_p;
   
string sHeaderLetter;
   
string sBodyLetter;
   
bool rtvl;
//---- 
   
if(Volume[0]>1) return;
//----  
   
mas=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,1); // динный мувинг 12
   
maf=iMA(NULL,0,MovingPeriod1,MovingShift,MODE_SMA,PRICE_CLOSE,1);// короткий мувинг 4
   
mas_p=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,2); // динный мувинг 12
   
maf_p=iMA(NULL,0,MovingPeriod1,MovingShift,MODE_SMA,PRICE_CLOSE,2);// короткий мувинг 4
//----
   
for(int i=0;i<OrdersTotal();i++)
     {
      if(
OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)        break;
      if(
OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continue;
      
//----  
      
if(OrderType()==OP_BUY)
        {
         if(
maf<mas && maf_p>=mas_prtvl=OrderClose(OrderTicket(),OrderLots(),Bid,3,Lime);
            if ( 
SndMl == True && rtvl != False )
            {
            
sHeaderLetter "Operation CLOSE BUY at" Symbol()+"";
            
sBodyLetter "Close order Buy at"Symbol() + " for " DoubleToStr(Bid,4)+ ", and finish this Trade";
            
sndMessage(sHeaderLettersBodyLetter);
            }
         break;
        }
      if(
OrderType()==OP_SELL)
        {
         if(
maf>mas && maf_p<=mas_prtvl=OrderClose(OrderTicket(),OrderLots(),Ask,3,Lime);
         if ( 
SndMl == True && rtvl != False 
         {
         
sHeaderLetter "Operation CLOSE SELL at" Symbol()+"";
         
sBodyLetter "Close order Sell at"Symbol() + " for " DoubleToStr(Ask,4)+ ", and finish this Trade";
         
sndMessage(sHeaderLettersBodyLetter);
         }
         break;
        }
     }
//----
  
}
 
//--------------------------------------------------------------------
// функция отправки ссобщения об отрытии или закрытии позиции
//--------------------------------------------------------------------
void sndMessage(string HeaderLetterstring BodyLetter)
{
   
int RetVal;
   
SendMailHeaderLetterBodyLetter );
   
RetVal GetLastError();
   if (
RetVal!= ERR_NO_MQLERROR) Print ("Ошибка, сообщение не отправлено: "ErrorDescription(RetVal));
}
//+------------------------------------------------------------------+
//| Майн функция                                                     |
//+------------------------------------------------------------------+
void start()
  {
//---- check for history and trading
   
if(Bars<25 || IsTradeAllowed()==false) return;
//---- calculate open orders by current symbol
   
if(CalculateCurrentOrders(Symbol())==0CheckForOpen();
   else                                    
CheckForClose();
//----
  
}
//+------------------------------------------------------------------+ 
[свернуть]


Сова и рез-ы оптимизации во вложении.

Последний раз редактировалось NSerega; 15.08.2013 в 13:30.
15.08.2013, 07:23
Аватар для 165
165 165 вне форума Местный знаток
Регистрация: 30.06.2010 / Адрес: 24 регион / Сообщений: 1,305
Поблагодарили 811 раз(а) / Репутация: 816
  • Отправить сообщение для 165 с помощью ICQ
а что тебе не понятно? обычные машки, открытие на пересечение
15.08.2013, 07:35
Аватар для FXTS
FXTS FXTS вне форума Местный знаток
Регистрация: 04.02.2012 / Сообщений: 607
Поблагодарили 605 раз(а) / Репутация: 608
Слишком простые входы и выходы, этот советник будет показывать хорошие результаты в тестере только при подгонке под историю, на форварде картина будет другая.
15.08.2013, 07:48
Аватар для Ruslan2010
Ruslan2010 Ruslan2010 вне форума Новичок форума
Регистрация: 23.08.2010 / Адрес: Москва) / Сообщений: 50
Поблагодарили 4 раз(а) / Репутация: 5
ДА, на истории действительно хорошие рез-ы, сделал уже более 10 прогонов с 2009 до текущего года. НА форварде еще не обкатывал... СТоит далее делать формард или похоронить и забыть?
15.08.2013, 07:52
Аватар для FXTS
FXTS FXTS вне форума Местный знаток
Регистрация: 04.02.2012 / Сообщений: 607
Поблагодарили 605 раз(а) / Репутация: 608
ДА, на истории действительно хорошие рез-ы, сделал уже более 10 прогонов с 2009 до текущего года. НА форварде еще не обкатывал... СТоит далее делать формард или похоронить и забыть?
Ну попробуйте, например сделайте оптимизацию с 2009.01.01 по 2013.01.01, потом с оптимизированными параметрами прогоните с 2013.01.01 по текущий день, и посмотрите сколько дней/недель/месяцев советник будет показывать ту же тенденцию. Потом по результатам можно подумать как работать с ним, например для подобных систем можно использовать автооптимизатор.
Ещё можно и бак-тест прогнать, с 2007.01.01 по 2009.01.01. Но все равно, даже если все будет красиво в тестере, нужен обязательный тест на демо или реале, все таки советник на МА-шках.

Последний раз редактировалось FXTS; 15.08.2013 в 08:02.
15.08.2013, 08:09
Аватар для Ruslan2010
Ruslan2010 Ruslan2010 вне форума Новичок форума
Регистрация: 23.08.2010 / Адрес: Москва) / Сообщений: 50
Поблагодарили 4 раз(а) / Репутация: 5
Согласен. Но правда с ходу вы меня озадачили. Я прогоняю по М15, предыдущие 3 месяца с 10 мая по 10 августа, в годах 2001-2013. Если у Вас есть опыт, оцените мою методику оптимизации (во вложении) + Приложил 15000 прогонов стандартной МА-шки в Excel. И обязательно использовать корректор входа, пропускать 1-2 бара?
15.08.2013, 08:11
Аватар для Ale-xander
Ale-xander Ale-xander вне форума Местный житель
Регистрация: 14.12.2011 / Адрес: дома / Сообщений: 346
Поблагодарили 195 раз(а) / Репутация: 196

По умолчанию какой ТФ

Ну попробуйте, например сделайте оптимизацию с 2009.01.01 по 2013.01.01, потом с оптимизированными параметрами прогоните с 2013.01.01 по текущий день, и посмотрите сколько дней/недель/месяцев советник будет показывать ту же тенденцию. Потом по результатам можно подумать как работать с ним, например для подобных систем можно использовать автооптимизатор.
Ещё можно и бак-тест прогнать, с 2007.01.01 по 2009.01.01. Но все равно, даже если все будет красиво в тестере, нужен обязательный тест на демо или реале, все таки советник на МА-шках.
Добрый день. Какой ТФ тестируете?
15.08.2013, 08:14
Аватар для Ruslan2010
Ruslan2010 Ruslan2010 вне форума Новичок форума
Регистрация: 23.08.2010 / Адрес: Москва) / Сообщений: 50
Поблагодарили 4 раз(а) / Репутация: 5
Добрый день. Какой ТФ тестируете?
У каждого своя фантазия, ты нас сколько будешь робота включать?

Последний раз редактировалось Ruslan2010; 15.08.2013 в 08:26.
15.08.2013, 08:19
Аватар для FXTS
FXTS FXTS вне форума Местный знаток
Регистрация: 04.02.2012 / Сообщений: 607
Поблагодарили 605 раз(а) / Репутация: 608
Согласен. Но правда с ходу вы меня озадачили. Я прогоняю по М15, предыдущие 3 месяца с 10 мая по 10 августа, в годах 2001-2013. Если у Вас есть опыт, оцените мою методику оптимизации (во вложении) + Приложил 15000 прогонов стандартной МА-шки в Excel. И обязательно использовать корректор входа, пропускать 1-2 бара?
Не могу оценить, каждый тестирует и оптимизирует так, как считает нужным, для меня просадка больше 10% это катастрофа, а у вас тут ....
15.08.2013, 08:21
Аватар для Ruslan2010
Ruslan2010 Ruslan2010 вне форума Новичок форума
Регистрация: 23.08.2010 / Адрес: Москва) / Сообщений: 50
Поблагодарили 4 раз(а) / Репутация: 5
Не могу оценить, каждый тестирует и оптимизирует так, как считает нужным, для меня просадка больше 10% это катастрофа, а у вас тут ....
Согласен при депоз для теста в 100 долл, риск в 50% нормально, а при депо в 10 000 долл, риск в 10% максимален)
Ответить


Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.



Текущее время: 07:33. Часовой пояс GMT.


Перевод: zCarot
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
SEO by vBSEO