Помощь - Поиск - Пользователи - Календарь
Полная версия: Пипсовка Советником
Форум трейдеров рынка ФОРЕКС (FOREX). Анализ Форекс > Обсуждение важных аспектов торговли на Форекс (Forex) и фондовых рынках > Механизация
SERGE
Интересно , кто как относится к пипсовке? Желательно поделиться опытом.
Для закваски - код экспериментального пипсовщика.
Цитата

//+------------------------------------------------------------------+
//| FTLM-flat.mq4 |
//| |
//| |
//+------------------------------------------------------------------+
// Оптимизировать для евро -доллар 5 или 15 минут за последний месяц
extern double TakeProfit =12;
extern double tTakeProfit =6; // тейкпрофит меньше 10
extern double Lots =0.1;
extern double StopLoss =30;
extern double sStopLoss =25; // стоплосс меньше 10
extern double limh =0.0005;
extern double ftlimh =0.0005;
extern double stdper =18;
//+------------------------------------------------------------------+

int start()
{

double std;
double ftlm,ftlmz,ftlmzz;
double ftliml=0-ftlimh;
int cnt, ticket, total;

//+------------------------------------------------------------------+
if(Bars<100)
{
Print("bars less than 100");
return(0);
}
//+------------------------------------------------------------------+
if(TakeProfit<10)
{
Print("TakeProfit less than 10");
return(0); // check TakeProfit
}
//+------------------------------------------------------------------+
ftlm=iCustom(NULL,0,"FTLM-STLM",1,0); // индикатор здесь
ftlmz=iCustom(NULL,0,"FTLM-STLM",1,1); //http://www.lightpatch.com/forex/_MT4_Indicators/
ftlmzz=iCustom(NULL,0,"FTLM-STLM",1,2);
std=iStdDev(NULL,0,stdper,0,MODE_EMA,0,0);

//+------------------------------------------------------------------+
total=OrdersTotal();
if(total<1)
{
// no opened orders identified
if(AccountFreeMargin()<(1000*Lots))
{
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
//+------------------------------------------------------------------+
// check for long position (BUY) possibility

if (ftlm >ftlmz&& ftlmz<ftlmzz && std<limh && ftlm < ftliml )

{ ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,2,Bid-StopLoss*Point,Ask+TakeProfit*Point,"ftlm ",12152,0,Red);Sleep(10000);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
}
else Print("Error opening BUY order : ",GetLastError());
return(0);
}
//+------------------------------------------------------------------+
// check for short position (SELL) possibility
if
(ftlm<ftlmz&& ftlmzz<ftlmz && std<limh && ftlm > ftlimh)

{ ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,2,Ask+StopLoss*Point,Bid-TakeProfit*Point,"ftlm ",12152,0,Blue);Sleep(10000);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
}
else Print("Error opening SELL order : ",GetLastError());
return(0);
}
return(0);
}
//+-------------------------------close position-----------------------------------+

for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && // check for opened position
OrderSymbol()==Symbol()) // check for symbol
{
if(OrderType()==OP_BUY) // long position is opened
{
if (Bid<=OrderOpenPrice()-sStopLoss*Point || Bid>=OrderOpenPrice()+tTakeProfit*Point)

{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position

}
return(0); // exit
}
else
{
if (Ask>=OrderOpenPrice()+sStopLoss*Point || Ask<=OrderOpenPrice()-tTakeProfit*Point )

{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // close position
return(0); // exit
}

}
}
}
return(0);
}
//+-----------------------------------------------------------------
NoName
Среди МТС-ников бытует мнение что пипсовать советником - гиблое дело! Начиная от точности генерации тиков в тестере, заканчивая палками в колёсах от ДЦ. Так же рассказывают что результат теста от реала будет очень сильно отличаться, так как будут присутствовать проскальзывания и постоянные реквоты на быстром рынке.
К сожалению личного опыта не имею, пока не было желания проверять на собственной шкуре smile.gif
SERGE
Цитата(NoName @ 1.12.2006, 11:54) *

Среди МТС-ников бытует мнение что пипсовать советником - гиблое дело! Начиная от точности генерации тиков в тестере, заканчивая палками в колёсах от ДЦ. Так же рассказывают что результат теста от реала будет очень сильно отличаться, так как будут присутствовать проскальзывания и постоянные реквоты на быстром рынке.
К сожалению личного опыта не имею, пока не было желания проверять на собственной шкуре smile.gif

Ну это не совсем пипсовка, попытка реализовать точный вход с коротким тейком при внутридневном флэте, время удержания позиции в зависимости от волатильности - от 20 мин до 1-2 часов. Цель пипеток 30-40 в день, на новостях вырубать.
SERGE
Усовершенствованный вариант советника для "тихого" рынка.

Код
//+------------------------------------------------------------------+
//|                                                FTLM-CCI-flat.mq4 |
//|                                      
//|                                      
//+------------------------------------------------------------------+
//для евро -доллар 5-15 мин            
extern double tTakeProfit    =7;
extern double TakeProfit    =10;
extern double Lots          =0.1;
extern double StopLoss      =25;
extern double a             =0;
extern double percci        =9;
extern double ccilimh       =60;
extern double stdlim          =0.0008;
extern double stdper        =7;

int start()
{
   double std;
  
   double ftlm,ftlmz,ftlmzz;
   double cci;    
   double cciliml=0-ccilimh;    
    
   int cnt, ticket, total;
   if(Bars<100)
     {
      Print("bars less than 100");
      return(0);  
     }
   if(TakeProfit<10)
     {
      Print("TakeProfit less than 10");
      return(0);  // check TakeProfit
     }
          
     ftlm=iCustom(NULL,0,"FTLM_STLM",1,0);
     ftlmz=iCustom(NULL,0,"FTLM_STLM",1,1);
     ftlmzz=iCustom(NULL,0,"FTLM_STLM",1,2);

     cci = iCCI(NULL,0,percci   ,PRICE_CLOSE,a)// CCI  
  
     std=iStdDev(NULL,0,stdper,0,MODE_EMA,0,0);
//+------------------------------------------------------------------+  
     total=OrdersTotal();
   if(total<1)
     {
      // no opened orders identified
      if(AccountFreeMargin()<(1000*Lots))
        {
         Print("We have no money. Free Margin = ", AccountFreeMargin());
         return(0);  
        }
      // check for long position (BUY) possibility
      
      if    (ftlm >ftlmz&& ftlmz<ftlmzz  && std<stdlimh && cci < cciliml)
        {
         ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,2,Bid-StopLoss*Point,Ask+TakeProfit*Point,"",0,0,Aqua);Sleep(10000);
         if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
           }
         else Print("Error opening BUY order : ",GetLastError());
         return(0);
        }
      // check for short position (SELL) possibility
      if  
             (ftlm<ftlmz&& ftlmzz<ftlmz    && std<stdlim &&  cci > ccilimh )
        {
         ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,2,Ask+StopLoss*Point,Bid-TakeProfit*Point,"",0,0,Yellow);Sleep(10000);
         if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
           }
         else Print("Error opening SELL order : ",GetLastError());
         return(0);
        }
      return(0);
     }
   for(cnt=0;cnt<total;cnt++)
     {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()<=OP_SELL &&   // check for opened position
         OrderSymbol()==Symbol())  // check for symbol
        {
         if(OrderType()==OP_BUY)   // long position is opened
           {
             if (Bid>=OrderOpenPrice()+tTakeProfit*Point)
                    
                {
                 OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position
                
                }
            return(0); // exit
           }
         else
           {
             if ( Ask<=OrderOpenPrice()-tTakeProfit*Point )
                
             {
              OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // close position
               return(0); // exit
              }
            
           }
        }
     }
   return(0);
  }
  
Mifrill
Проверил на демке... Просадка абсолютная по паре евро\доллар. Может, не в то время проверял?
SERGE
Цитата(Mifrill @ 10.1.2007, 21:56) *

Проверил на демке... Просадка абсолютная по паре евро\доллар. Может, не в то время проверял?

Нужно сначала оптимизировать на последнем месяце двух, перед новостями вырубать.
leonid553
to SERGE:
Я не спец. Подскажите, пож., как переделать текст советника в исходный файл ? - в "ромбик"?
Или надо всё это перепечатывать в METAEDITOR?
-----------------------------------------------------------------------
Вот нашелся тоже пипсовочный советник. Основное достоинство - почти не сливает!
Но работает почему-то только в Seii!(тестировал на м5 по фунту...)
SERGE
Цитата(leonid553 @ 11.1.2007, 20:56) *

to SERGE:
Я не спец. Подскажите, пож., как переделать текст советника в исходный файл ? - в "ромбик"?
Или надо всё это перепечатывать в METAEDITOR?
-----------------------------------------------------------------------
Вот нашелся тоже пипсовочный советник. Основное достоинство - почти не сливает!
Но работает почему-то только в Seii!(тестировал на м5 по фунту...)

Любой код можно воткнуть через МЕ. Выбирарайте в МЕ "файл" - "создать"- "советник", впишите навание , теперь "готово". Вместо появившегося шаблона копируете нужный код и "компилировать". Не забудьте что используемые в советнике индикаторы должны быть среди ваших пользовательских.
leonid553
Прошу прощения за назойливость.
Сделал всё "как велено"!
Даже индикатор поставил FTLM_STLM.
При компиллировании обнаружились ошибки. Устранил!
Кроме одной:
"stdlimh - variable not defined" - file-МТ4/expert/название-(67, 49)
Что можно предпринять?
SERGE
Цитата(leonid553 @ 12.1.2007, 18:16) *

Прошу прощения за назойливость.
Сделал всё "как велено"!
Даже индикатор поставил FTLM_STLM.
При компиллировании обнаружились ошибки. Устранил!
Кроме одной:
"stdlimh - variable not defined" - file-МТ4/expert/название-(67, 49)
Что можно предпринять?

Исправьте в коде stdlimh на stdlim и скомпилируйте , я недоглядел.

Кстати "пипсун"-фуфло сливает "на всех тиках" в ноль.
leonid553
Благодарю!
Нашёл(в одном месте), исправил!
Опять две ошибки:
"std" - an operator expected
"std" - semicolon expected
Что-то про точку с запятой...
Может где-то ещё что исправить?
SERGE
Вот ,вроде все исправил.

Код
//+------------------------------------------------------------------+
//|                                                FTLM-CCI-flat.mq4 |
//|                                      
//|                                      
//+------------------------------------------------------------------+
//для евро -доллар 5-15 мин            
extern double tTakeProfit    =14;
extern double TakeProfit    =14;
extern double Lots          =0.1;
extern double StopLoss      =25;
extern double a             =0;
extern double percci        =9;
extern double ccilimh       =60;
extern double stdlim          =0.0008;
extern double stdper        =7;

int start()
{
   double std;
  
   double ftlm,ftlmz,ftlmzz;
   double cci;    
   double cciliml=0-ccilimh;    
    
   int cnt, ticket, total;
   if(Bars<100)
     {
      Print("bars less than 100");
      return(0);  
     }
   if(TakeProfit<10)
     {
      Print("TakeProfit less than 10");
      return(0);  // check TakeProfit
     }
          
     ftlm=iCustom(NULL,0,"FTLM_STLM",1,0);
     ftlmz=iCustom(NULL,0,"FTLM_STLM",1,1);
     ftlmzz=iCustom(NULL,0,"FTLM_STLM",1,2);

     cci = iCCI(NULL,0,percci   ,PRICE_CLOSE,a);// CCI  
  
     std=iStdDev(NULL,0,stdper,0,MODE_EMA,0,0);
//+------------------------------------------------------------------+  
     total=OrdersTotal();
   if(total<1)
     {
      // no opened orders identified
      if(AccountFreeMargin()<(1000*Lots))
        {
         Print("We have no money. Free Margin = ", AccountFreeMargin());
         return(0);  
        }
      // check for long position (BUY) possibility
      
      if    (ftlm >ftlmz&& ftlmz<ftlmzz  && std<stdlim && cci < cciliml)
        {
         ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,2,Bid-StopLoss*Point,Ask+TakeProfit*Point,"",0,0,Aqua);Sleep(10000);
         if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
           }
         else Print("Error opening BUY order : ",GetLastError());
         return(0);
        }
      // check for short position (SELL) possibility
      if  
             (ftlm<ftlmz&& ftlmzz<ftlmz    && std<stdlim &&  cci > ccilimh )
        {
         ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,2,Ask+StopLoss*Point,Bid-TakeProfit*Point,"",0,0,Yellow);Sleep(10000);
         if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
           }
         else Print("Error opening SELL order : ",GetLastError());
         return(0);
        }
      return(0);
     }
   for(cnt=0;cnt<total;cnt++)
     {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()<=OP_SELL &&   // check for opened position
         OrderSymbol()==Symbol())  // check for symbol
        {
         if(OrderType()==OP_BUY)   // long position is opened
           {
             if (Bid>=OrderOpenPrice()+tTakeProfit*Point)
                    
                {
                 OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position
                
                }
            return(0); // exit
           }
         else
           {
             if ( Ask<=OrderOpenPrice()-tTakeProfit*Point )
                
             {
              OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // close position
               return(0); // exit
              }
            
           }
        }
     }
   return(0);
  }
leonid553
Благодарю! Всё получилось ...
leonid553
Ув. Serge!
Прошу прощения! Но в силу своих скромных познаний при разборе кода вроде бы нашел ошибку :
При проверке условий на вход в BUY, ПЕРВОЕ УСЛОВИЕ выглядит так:
// check for long position (BUY) possibility

if (ftlm >ftlmz&& ftlmz<ftlmzz && std<stdlim && cci < cciliml)
{
Однако. Мне представилось, что во втором неравенстве должно быть:
" ftlmz>ftlmzz " mad.gif
Тем более, если предположить, что условие нА вход в SELL ПОКАЗАНО ПРАВИЛЬНО:
// check for short position (SELL) possibility
if
(ftlm<ftlmz&& ftlmzz<ftlmz && std<stdlim && cci > ccilimh )
rolleyes.gif
miranon
Цитата(SERGE @ 11.1.2007, 21:41) *

Нужно сначала оптимизировать на последнем месяце двух, перед новостями вырубать.


Подскажите, какие параметры нужно оптимизировать?

leonid553
И ещё вот вопрос. Если перед новостями вырубать - то как оптимизировать?
иЗ истории новости не вырежешь?
SERGE
Цитата(leonid553 @ 6.3.2007, 10:04) *

Ув. Serge!
Прошу прощения! Но в силу своих скромных познаний при разборе кода вроде бы нашел ошибку :
При проверке условий на вход в BUY, ПЕРВОЕ УСЛОВИЕ выглядит так:
// check for long position (BUY) possibility

if (ftlm >ftlmz&& ftlmz<ftlmzz && std<stdlim && cci < cciliml)
{
Однако. Мне представилось, что во втором неравенстве должно быть:
" ftlmz>ftlmzz " mad.gif
Тем более, если предположить, что условие нА вход в SELL ПОКАЗАНО ПРАВИЛЬНО:
// check for short position (SELL) possibility
if
(ftlm<ftlmz&& ftlmzz<ftlmz && std<stdlim && cci > ccilimh )
rolleyes.gif

Условия указаны верно, можно еще немного фильтрануть -
if (0>ftlm >ftlmz&& ftlmz<ftlmzz && std<stdlim && cci < cciliml) условие покупки
if (0<ftlm<ftlmz&& ftlmzz<ftlmz && std<stdlim && cci > ccilimh ) условие продажи.

Оптимизировать нужно все параметры - в зависимости от инструмента, сначала набросте индикаторы на график цены и прикиньте в каких примерно пределах они должны изменяться. Советник сам определяет состояние флета (индикатор Стандартная девиация), в зависимости от периода и порога этой функции будет зависеть реакция эксперта на выбросы из флетового канала.
Оптимизировать нужно насквозь , вместе с новостями , просто вероятность ошибочного входа на откатах во время новостей больше - поэтому оптимизированный советник на время выхода новостей лучше отключить.




miranon
Цитата(SERGE @ 10.3.2007, 15:25) *

Оптимизировать нужно все параметры - в зависимости от инструмента, сначала набросте индикаторы на график цены и прикиньте в каких примерно пределах они должны изменяться. Советник сам определяет состояние флета (индикатор Стандартная девиация), в зависимости от периода и порога этой функции будет зависеть реакция эксперта на выбросы из флетового канала.
Оптимизировать нужно насквозь , вместе с новостями , просто вероятность ошибочного входа на откатах во время новостей больше - поэтому оптимизированный советник на время выхода новостей лучше отключить.


Serge
Скажите а сколько времени у вас занимает оптимизация всех параметров по eur/usd по всем тикам за последний месяц?
SERGE
Цитата(miranon @ 11.3.2007, 16:21) *

Цитата(SERGE @ 10.3.2007, 15:25) *

Оптимизировать нужно все параметры - в зависимости от инструмента, сначала набросте индикаторы на график цены и прикиньте в каких примерно пределах они должны изменяться. Советник сам определяет состояние флета (индикатор Стандартная девиация), в зависимости от периода и порога этой функции будет зависеть реакция эксперта на выбросы из флетового канала.
Оптимизировать нужно насквозь , вместе с новостями , просто вероятность ошибочного входа на откатах во время новостей больше - поэтому оптимизированный советник на время выхода новостей лучше отключить.


Serge
Скажите а сколько времени у вас занимает оптимизация всех параметров по eur/usd по всем тикам за последний месяц?

2-3 часа. Чтобы быстрее провести оптимизацию начальный шаг изменения переменных устанавливаю 10-20% от всего диапазона сканирования , затем в пределах найденных оптимальных значений провожу точную оптимизацию с минимальным шагом изменения переменных .
SERGE
2-3 часа. Чтобы быстрее провести оптимизацию начальный шаг изменения переменных устанавливаю 10-20% от всего диапазона сканирования , затем в пределах найденных оптимальных значений провожу точную оптимизацию с минимальным шагом изменения переменных
ForexGamp
Добрый день!

ну что у кого какие результаты его испльзования? на демо и на реале если есть?
поделитесь!
ForexGamp
Пипсовка ведь дейстивтельно считается отдельными трейдерами один из самых выгодных ТС несмотря на сложности с ДЦ и т.д.
ForexGamp
каковы оптимизированные параметры (желательно для ЛАЙТА) - поделитесь?
и ктонибудь на реале работает с этим екпертом?
miranon
Кто нибудь может выложить пример оптимизированных параметров?
Спасибо.
NoName
На форуме этим советником уже давно никто не занимался, врядли у кого-то сохранились результаты.
Ну а если так уж нужно, то нет ничего проще чем запустить оптимизатор wink.gif
CerberusPrime
Предложение:
Возможно пора открыть ветку форума посвящённую поиску работу?
Я думаю что среди форумчан есть такие кто сам ищет работу, или такие кто располагает информацией об открытых вакакнсиях.
Опять же предприятия смогут тут оставлять свои предложения.
Мне кажется что эта ветка приобретёт поулярность. Как Вам моё предложение?
trueneman
Путь к Истине находится по адресу: truenewworld.ru
(Внимание! Это не реклама сайта - это "реклама" Истины).
misha1345
Нашел на просторах инета советник http://projects4you.ru/legkiy-forex/avtomaticheskiy-treyding Запустил две недели назад на демо. Пока результаты не плохие. Кто знает, он пипсовочный?
trueneman
Путь к Истине находится по адресу: snowidenia.ru
(Внимание! Это не реклама сайта - это "реклама" Истины.
Свои ссылки, в качестве обмена, вы можете опубликовать
на странице "Ваши ссылки").
R2010
Мне робота сам брокер дал))) Там несколько стратегий, ночью пипсует днём тренд ловит вроде. брокер loginfx 5000 на роботе ихнем стоит пока + 9% за 3 месяца
IverK
Елки, спамят тут, я уж думал и правда кто-то механизировать пипсовку научился.
Рашид
Это в механизацию выложили потому что радио примешано? smile.gif
Мини-Конь
Хорошую стратегию пипсовкой не назовут. Точно вам говорю. Для самых лучших и прибыльных стратегий припасены красивые, благородные названия. Вот "Мини-Конь" очень благородное животное и прекрасная стратегия.
buffett
Видео-завещание Уоррена Баффета
http://www.youtube.com/watch?v=40Itcm-PK5E&feature=youtu.be
Old School
Это вы не темой ошиблись, это вы форумом ошиблись. Поэтому так не хочется вас расстраивать, но думаю переместят в корзину если только.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.