+1
Придерживаюсь правил стратегии, на той неделе большая недельная свеча на EURUSD 329 п. открыл ордер на продажу- заработал 50 п. На этой неделе по GBPCHF 286 п. недельная свеча — ордер на покупку — заработал 50п.
Думаю, если без особого фанатизма торговать по правилам — можно стать олигархом*victory* 
avatar

levs01

  • 30 марта 2015, 20:43
+2
Что-то тема совсем завяла.
Тестил на следующих парах USDCHF, USDJPY, EURJPY, GBPJPY
Таймфрейм 1минута, настройки без изменений.
С парами EURUSD и GBPUSD упорно сливает…

Две недели тестирования.
avatar

levs01

  • 29 марта 2015, 18:02
0

Тест закончился.
64 свечи, депозит слит.
Всем спасибо!
avatar

levs01

  • 4 февраля 2015, 00:02
+1
Процесс продолжается!!!



avatar

levs01

  • 23 января 2015, 01:34
+1
Два месяца спустя…
С Новым Годом дамы и господа, трейдеры и не очень!
Отчет за прошедшие два месяца.

11% прироста, а в турнирной таблице — «буксую на месте»!
avatar

levs01

  • 4 января 2015, 18:03
+2
Месяц прошел, прирост к депо +7% (+173.57 USC), просадка почти 4%
На начало следующей недели терминал чистый.

avatar

levs01

  • 7 декабря 2014, 14:51
+1
Терминал чистый, все ордера закрылись.
Итоги торговли:
avatar

levs01

  • 21 ноября 2014, 23:27
+1
На недели закрылись 3 ордера с увеличеным лотом.
В сетке 3 ордера
avatar

levs01

  • 16 ноября 2014, 14:14
+1
Мало что меняет, но думаю можно добавить условие перед открытием ордеров:
На продажу добавляем

if(iOpen(Symbol(),0,0)<=TP) return;

на покупку

if(iOpen(Symbol(),0,0)>=TP) return;

Хуже этому советнику уже не будет, за-то избавим его от ошибок модификации ордеров.
avatar

levs01

  • 16 ноября 2014, 02:32
+2
Советник к паттерну ГЭП

//+------------------------------------------------------------------+
//|                                                          GAP.mq4 |
//|                                                           Lapot' |
//|                                               goja2008@yandex.ru |
//+------------------------------------------------------------------+
#property copyright "Lapot'"
#property link      "goja2008@yandex.ru"
#property version   "1.00"
extern double  LOT  =1; // размер торгуемого лота
extern int     step   = 3; 
extern int  MagicNumber  =66778;// Магик ордеров советника
  int rast,popolam,stop,ticet;double TP,SL;
datetime time;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
    Modify();
    if(time==Time[0]) return;
    else time=Time[0];
    Comment("");
    int g = GAP();
    if(Count_Buy()==0 && Count_Sell()==0)
    {
      if(GAP()==1)
      {
       TP=NormalizeDouble((iHigh(Symbol(),0,2)+step*Point),Digits);
       rast=NormalizeDouble((iOpen(Symbol(),0,0)-TP*Point),Digits);
       popolam=rast/2;
       rast=rast+popolam;
       stop=rast*0.5;
       SL=NormalizeDouble((iOpen(Symbol(),0,0)+stop*Point),Digits);
       Comment("тейкпрофит="+TP," стоплос="+SL,"  растояние="+rast);
       ticet=OrderSend(Symbol(),OP_SELL,LOT,Bid,5,0,0,"GAP_Sell",MagicNumber,0,Red);
      /* if (OrderSelect(ticet,SELECT_BY_TICKET,MODE_TRADES )) 
       {
         if(OrderModify(ticet,OrderOpenPrice(),SL,TP,0,0)) Print("ордер изменен");
       }*/
      }
      if(GAP()==2)
      {
       TP=NormalizeDouble((iLow(Symbol(),0,2)-step*Point),Digits);
       rast=NormalizeDouble(TP-(iOpen(Symbol(),0,0))*Point,Digits);
       popolam=rast/2;
       rast=rast+popolam;
       stop=rast*0.5;
       SL=NormalizeDouble((iOpen(Symbol(),0,0)-stop*Point),Digits);
       Comment("тейкпрофит="+TP," стоплос="+SL);
       ticet=OrderSend(Symbol(),OP_BUY,LOT,Ask,5,0,0,"GAP_Byu",MagicNumber,0,Blue);
      /* if (OrderSelect(ticet,SELECT_BY_TICKET,MODE_TRADES )) 
       {
         if(OrderModify(ticet,OrderOpenPrice(),SL,TP,0,0)) Print("ордер изменен");
       }*/
      }
    }
  }
//+------------------------------------------------------------------+
//+---------------------- GAP -------------------------------------------------------+
int GAP()
{
 int gap=0;// переменная в которую запишем значение ГЭПа ; 1- разрыв цены вверх;
                                                         //2- разрыв цены вниз
                                                         //0- ГЭП не подтвержден
  int shag; // запишем сюда разрыв цены в пунктах между ценой открытия 
            // текущей свечи и ценой закрытия пред идущей свечи
  // прроверяем разрыв вверх
  if(iOpen(Symbol(),0,1)>iClose(Symbol(),0,2))
  {
  // вычисляем и записываем переменную shag
  shag=NormalizeDouble((iOpen(Symbol(),0,1)-iClose(Symbol(),0,2))/Point,Digits); 
  // Проверяем разрыв по правилу паттерна
  if(shag>=20)gap=1;
  } 
  // прверяем разрыв вниз                                                                
  if(iOpen(Symbol(),0,1)<iClose(Symbol(),0,2))
  {
  // вычисляем и записываем переменную shag
  shag=NormalizeDouble((iClose(Symbol(),0,2)-iOpen(Symbol(),0,1))/Point,Digits); 
  // Проверяем разрыв по правилу паттерна
  if(shag>=20)gap=2;
  }                                                                 
return(gap);
}
//+-----------------Количество Byu ордеров------------------------------------------+
 int Count_Buy()
 {
   int count =0;
   int Total = OrdersTotal();
   for(int i=0;i<Total; i++)
    {
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {
        if(OrderSymbol()==Symbol() && OrderMagicNumber()== MagicNumber)
        { 
           if(OrderType()!=OP_SELL || OrderType()!=OP_SELLSTOP)
          {
          if (OrderType()==OP_BUY || OrderType()==OP_BUYSTOP)
          count++;
          }
        } 
      }
    }
   return(count);   
 }
//+--------------------Количество Sell ордеров----------------------------------------------+
 int Count_Sell()
 {
   int count =0;
   int Total = OrdersTotal();
   for(int i=0;i<Total; i++)
    {
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {
        if(OrderSymbol()==Symbol() && OrderMagicNumber()== MagicNumber)
        { 
         if (OrderType()!=OP_BUY || OrderType()!=OP_BUYSTOP)
          {
          if (OrderType()==OP_SELL || OrderType()==OP_SELLSTOP)
          count++;
          }
        } 
      }
    }
   return(count);   
 }
 //+--------------------------Модификация ордеров------------------------------------------------+
 void Modify()
{
   for (int i=0; i<OrdersTotal(); i++) 
    {
     if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {
        if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
         {
           if (OrderType()==OP_BUY)
           { 
            if(OrderModify(ticet,OrderOpenPrice(),SL,TP,0,0)) Print("ордер изменен");
           }
           if (OrderType()==OP_SELL)
           { 
            if(OrderModify(ticet,OrderOpenPrice(),SL,TP,0,0)) Print("ордер изменен");
           }
         }
       }
     }        
}

Результаты не фонтан, в умелых руках может и что-нибудь получится.
Желаю удачи!!!
avatar

levs01

  • 16 ноября 2014, 00:40
+2
Редкий, но эффективный паттерн ГЭП.
ГЭП — разрыв цены между открытием текущей свечи и закрытием пред идущей.
По правилам паттерна ГЭПом можно считать разрыв цены от 20 пунктов и более.
Функция на MQL простенькая.

//+---------------------- GAP -------------------------------------------------------+
int GAP()
{
 int gap=0;// переменная в которую запишем значение ГЭПа ; 1- разрыв цены вверх;
                                                         //2- разрыв цены вниз
                                                         //0- ГЭП не подтвержден
  int shag; // запишем сюда разрыв цены в пунктах между ценой открытия 
            // текущей свечи и ценой закрытия пред идущей свечи
  // прроверяем разрыв вверх
  if(iOpen(Symbol(),0,0)>iClose(Symbol(),0,1))
  {
  // вычисляем и записываем переменную shag
  shag=NormalizeDouble((iOpen(Symbol(),0,0)-iClose(Symbol(),0,1))/Point,Digits); 
  // Проверяем разрыв по правилу паттерна
  if(shag>=20)gap=1;
  } 
  // прверяем разрыв вниз                                                                
  if(iOpen(Symbol(),0,0)<iClose(Symbol(),0,1))
  {
  // вычисляем и записываем переменную shag
  shag=NormalizeDouble((iClose(Symbol(),0,1)-iOpen(Symbol(),0,0))/Point,Digits); 
  // Проверяем разрыв по правилу паттерна
  if(shag>=20)gap=2;
  }                                                                 
return(gap);
}

Чуть позже выложу код советника.
avatar

levs01

  • 15 ноября 2014, 14:48
+3
Очередной паттерн — Модель поглащения: сигнальная свеча полностью поглощает пред идущую.
По аналогии с внутренним баром написал интовую функцию
<code>
//+-----------Модель поглащения---------------------------------------------+
int Poglashenie()
{
  int Pogl=0;/* Переменная в которую будем записывать тип модели поглащения 
   присвоим 1 если паттерн бычий, присвоим 2 если паттерн медвежий.
   вернем 0 если паттерн не состоялся.*/
  
   // Проверим направление материнской свечи
   int mat_buch=0; // Бычая свеча
   int mat_med=0;  // Медвежья свеча
     if (iOpen(Symbol(),0,2)>iClose(Symbol(),0,2))   mat_med++;
     if (iOpen(Symbol(),0,2)<iClose(Symbol(),0,2))   mat_buch++; 
   // Проверяем направление сигнальной свечи
   int in_buch=0; // Бычий бар
   int in_med =0; // Медвежий бар
     if (iOpen(Symbol(),0,1)>iClose(Symbol(),0,1))   in_med++;
     if (iOpen(Symbol(),0,1)<iClose(Symbol(),0,1))   in_buch++; 
  // Бычий сетап : Материнская свеча - меньше сигнальной, сигнальная свеча - бычья
     if(in_buch>0)  
     {
       /* Проверяем ценовой диапозон материнской свечи, чтоб он не выходил
        за ценовой диапазон сигнальной свечи и присваеваем переменной 
        Pogl значение 1*/
        if(iHigh(Symbol(),0,2)<iHigh(Symbol(),0,1) && iLow(Symbol(),0,2)>iLow(Symbol(),0,1))Pogl=1;     
     }
 // Медвежий сетап : Материнская свеча - меньше сигнальной, сигнальная свеча - Медвежья
     if(in_med>0)    
     {
  /* проверим ценовой дипазон материнской свечи, что б он не выходил за ценовой диапазон 
     сигнальной свечи и присвоим переменной Pogl значение 2*/
     if(iHigh(Symbol(),0,2)<iHigh(Symbol(),0,1) && iLow(Symbol(),0,2)>iLow(Symbol(),0,1))Pogl=2;     
     }  
return(Pogl);
}
</code>

Ну и вот чего показал тестер с этим паттерном:

тестил EURUSD D1 очень быстро, впрочем как и писал сову.

Вот советник, заработал на D1. В любом случае нужны подтверждения на вход (индикаторы, лини поддержки и сопративления).

//+------------------------------------------------------------------+
//|                                     Price_Action_Poglascenie.mq4 |
//|                                                           Lapot' |
//|                                               goja2008@yandex.ru |
//+------------------------------------------------------------------+
#property copyright "Lapot'"
#property link      "goja2008@yandex.ru"
#property version   "1.00"
//#include  "Price Action.mq4"  // Добовление функций из личной библиотеки 


//--- input parameters
extern double   LOT         =0.01;  // Размер лота
extern int      Step        =5;     // шаг отступа от экстремума для отложки и стоплоса
extern int      MagicNumber = 567888;  // Магик
double pb/*цена в бай*/,ps/*цена в сел*/, tp,sl,svecha,ticet;
datetime time;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   if(Digits==5 || Digits==3) Step  *=10; // увеличиваем шаг на 5-ти знаке
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
        
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
     if (time==Time[0]) return;
     else time=Time[0];
     if(Poglashenie()>0)DeleteOrder(MagicNumber);
     {
    if(Count_Buy()==0 && Count_Sell()==0)// Проверка рыночных ордеров
    {
      if(Poglashenie()==1) // Проверка Бычьего сетапа полащения
      {
        pb=PriceBuy(Step);   // Определяем цену отложного ордера
        //Ставим Стоповый Бай
        ticet=OrderSend(Symbol(),OP_BUYSTOP,LOT,pb,5,0,0,"поглащение Быки",MagicNumber,0);// Print("OK");
       if (OrderSelect(ticet,SELECT_BY_TICKET,MODE_TRADES )) 
       {
          // Получаем цену для стоплоса
          sl=NormalizeDouble(iLow(Symbol(),0,1)-Step*Point,Digits);
          // считаем профит
          svecha=NormalizeDouble((iHigh(Symbol(),0,1)-sl)/Point,Digits);// размер от хая сигнальной
                                                                          // свечи до стоплоса в пунктах
          tp= NormalizeDouble(pb+svecha*Point,Digits);
          // Ставим ордеру Стоп и профит
          if(OrderModify(ticet,OrderOpenPrice(),sl,tp,0)) Print("ордер изменен");
        }
      }
      if(Poglashenie()==2) // Проверка Медвежьего сетапа полащения
      {
        ps=PriceSell(Step);   // Определяем цену отложного ордера
        //Ставим Стоповый Сел
        ticet=OrderSend(Symbol(),OP_SELLSTOP,LOT,ps,5,0,0,"поглащение Медведи",MagicNumber,0);// Print("OK");
       if (OrderSelect(ticet,SELECT_BY_TICKET,MODE_TRADES )) 
       {
          // Получаем цену для стоплоса
          sl=NormalizeDouble(iHigh(Symbol(),0,1)+Step*Point,Digits);
          // считаем профит
          svecha=NormalizeDouble((sl-iLow(Symbol(),0,1))/Point,Digits);// размер от стоплоса до
                                                                          //до лоя сигнальной свечи в пунктах
          tp= NormalizeDouble(OrderOpenPrice()-svecha*Point,Digits);                                                               
          // Ставим орднру Стоп и профит
          if(OrderModify(ticet,OrderOpenPrice(),sl,tp,0)) Print("ордер изменен");
        }
      }
    }   
  }
  }
//+------------------------------------------------------------------+
void DeleteOrder(int Mag)
{
  
   for (int i = 0; i < OrdersTotal(); i++)
   {
     if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {
        if (Symbol()==OrderSymbol() && OrderMagicNumber()==Mag)
         {
           if (OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP)
            if(OrderDelete(OrderTicket())) Print("Delete");
         }
      }
   }
}
//+------------------------------------------------------------------+
 int Count_Buy()
 {
   int count =0;
   int Total = OrdersTotal();
   for(int i=0;i<Total; i++)
    {
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {
        if(OrderSymbol()==Symbol() && OrderMagicNumber()== MagicNumber)
        { 
           if(OrderType()!=OP_SELL || OrderType()!=OP_SELLSTOP)
          {
          if (OrderType()==OP_BUY || OrderType()==OP_BUYSTOP)
          count++;
          }
        } 
      }
    }
   return(count);   
 }
//+--------------------Количество Sell ордеров----------------------------------------------+
 int Count_Sell()
 {
   int count =0;
   int Total = OrdersTotal();
   for(int i=0;i<Total; i++)
    {
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {
        if(OrderSymbol()==Symbol() && OrderMagicNumber()== MagicNumber)
        { 
         if (OrderType()!=OP_BUY || OrderType()!=OP_BUYSTOP)
          {
          if (OrderType()==OP_SELL || OrderType()==OP_SELLSTOP)
          count++;
          }
        } 
      }
    }
   return(count);   
 }
 double PriceBuy(int Otstup)
{
   double price = NormalizeDouble(High[1]+Otstup*Point,Digits);
  return(price);
}
//+------------------------------------------------------------------+
double PriceSell(int Otstup)
{
 double  price = NormalizeDouble(Low[1]-Otstup*Point,Digits);
  return(price);
}
int Poglashenie()
{
  int Pogl=0;/* Переменная в которую будем записывать тип модели поглащения 
   присвоим 1 если паттерн бычий, присвоим 2 если паттерн медвежий.
   вернем 0 если паттерн не состоялся.*/
  
   // Проверим направление материнской свечи
   int mat_buch=0; // Бычая свеча
   int mat_med=0;  // Медвежья свеча
     if (iOpen(Symbol(),0,2)>iClose(Symbol(),0,2))   mat_med++;
     if (iOpen(Symbol(),0,2)<iClose(Symbol(),0,2))   mat_buch++; 
   // Проверяем направление сигнальной свечи
   int in_buch=0; // Бычий бар
   int in_med =0; // Медвежий бар
     if (iOpen(Symbol(),0,1)>iClose(Symbol(),0,1))   in_med++;
     if (iOpen(Symbol(),0,1)<iClose(Symbol(),0,1))   in_buch++; 
  // Бычий сетап : Материнская свеча - меньше сигнальной, сигнальная свеча - бычья
     if(in_buch>0)  
     {
       /* Проверяем ценовой диапозон материнской свечи, чтоб он не выходил
        за ценовой диапазон сигнальной свечи и присваеваем переменной 
        Pogl значение 1*/
        if(iHigh(Symbol(),0,2)<iHigh(Symbol(),0,1) && iLow(Symbol(),0,2)>iLow(Symbol(),0,1))Pogl=1;     
     }
 // Медвежий сетап : Материнская свеча - меньше сигнальной, сигнальная свеча - Медвежья
     if(in_med>0)    
     {
  /* проверим ценовой дипазон материнской свечи, что б он не выходил за ценовой диапазон 
     сигнальной свечи и присвоим переменной Pogl значение 2*/
     if(iHigh(Symbol(),0,2)<iHigh(Symbol(),0,1) && iLow(Symbol(),0,2)>iLow(Symbol(),0,1))Pogl=2;     
     }  
return(Pogl);
}
avatar

levs01

  • 10 ноября 2014, 00:26
+4
Продолжим описание сетапов Price Action.
3 Внутренний бар. Бар, ценовой диапазон которого, от хая до лоя, не выходит за ценовой диапазон пред идущей (материнской) свечи.
написал интовую функцию которая возвращает либо бычий паттерн либо медвежий, если паттерн не состоялся возвращает 0
<code>//+---------------------Внутрений бар------------------------------------+
int Inside_Bar()
{
  int In_bar=0; // Переменная в которую будем записывать тип внутреннего бара 
  // присвоим 1 если паттерн бычий, присвоим 2 если паттерн медвежий.
  // вернем 0 если паттерн не состоялся.
   
   // Проверим направление материнской свечи
   int mat_buch=0; // Бычая свеча
   int mat_med=0;  // Медвежья свеча
     if (iOpen(Symbol(),0,2)>iClose(Symbol(),0,2))   mat_med++;
     if (iOpen(Symbol(),0,2)<iClose(Symbol(),0,2))   mat_buch++; 
   // Проверяем направление внутреннего бара
   int in_buch=0; // Бычий бар
   int in_med =0; // Медвежий бар
     if (iOpen(Symbol(),0,1)>iClose(Symbol(),0,1))   in_med++;
     if (iOpen(Symbol(),0,1)<iClose(Symbol(),0,1))   in_buch++; 
  // Бычий сетап : Материнская свеча - медвежья, внутренний бар - бычий
     if(mat_med>0 && in_buch>0)    
     {
  // проверим ценовой дипазон внутреннего бара, что б он не выходил за ценовой диапазон 
  // материнской свечи и присвоим переменной In_bar значение 1
     if(iHigh(Symbol(),0,1)<=iHigh(Symbol(),0,2) && iLow(Symbol(),0,1)>=iLow(Symbol(),0,2))In_bar=1;     
     }
  // Медвежий сетап : Материнская свеча - Бычья, внутренний бар - Медвежий
     if(mat_buch>0 && in_med>0)    
     {
  // проверим ценовой дипазон внутреннего бара, что б он не выходил за ценовой диапазон 
  // материнской свечи и присвоим переменной In_bar значение 2
     if(iHigh(Symbol(),0,1)<=iHigh(Symbol(),0,2) && iLow(Symbol(),0,1)>=iLow(Symbol(),0,2))In_bar=2;     
     }
 return(In_bar);     
  }</code>
avatar

levs01

  • 9 ноября 2014, 00:03
0
Настройки в студии, немного выше!
avatar

levs01

  • 6 ноября 2014, 21:35
0


Вот еще немного…
avatar

levs01

  • 6 ноября 2014, 20:11
+2


Первая прибыль!!!
avatar

levs01

  • 5 ноября 2014, 19:19
0
3.11.2014 советник поставили на сервер!!!*budenov* 
Для чистоты эксперимента, кому интересно, номер счета и пароль инвестора от счета прилагаю.
Да, кстати, счет пополнил на целую тысячу рублей!
Надеюсь скоро сниму две...$ *good* 
№ счета — 1630761
Пароль инвестора — 0skkraQ
Alpari-nano.
avatar

levs01

  • 3 ноября 2014, 22:50
+1
//--- input parameters
extern int Hourstart =0; // Время начала работы советника
extern int Hourend =22; // Время окончания работы советника
extern int Svecha =40; // Размер пред идущей свечи
extern double LOT =0.00; // Размер торгового Лота
extern int Otstup =0; // Отступ от экстремума для отложных ордеров
extern double proc =80; // Процент от серии открытых ордеров
extern int Takeprofit =30; // Цель по прибыли
extern int Step =80; // Шаг каждого последующего ордера
extern int Open_Ord =0; // Максимальное количество ордеров в серии
extern double Risk =5; // Риск контроль (ММ)
extern int MagicNumber =123961; // Уникальный номер
extern int slippage =5; // Проскальзывание

Пробуем, торгуем, зарабатываем.<img src='http://opentraders.ru/templates/skin/g6h/images/smilies/002.gif' alt=' :) '>&nbsp; 
avatar

levs01

  • 31 октября 2014, 20:15
+1
Ну вот и результат. Долго ждать не пришлось.
Протестировал этот советник с динамическим лотом на фунте — результаты превосходные!
avatar

levs01

  • 8 ноября 2013, 01:59
0
Советник обречен на неизбежный слив, в один прекрасный момент, после серии стоплосов на депо не останется средств для выставления отложников… Как-то так!!! Желаю удачи! ;) 
avatar

levs01

  • 4 ноября 2013, 20:05