beton2011

 
Уровень 14

  Моя торговля


График торгового счета beton2011


Группа "Стол заказов MQL"

Рейтинг 2081



РЕКОМЕНДУЮ



Советник по фракталам

Здравствуйте Андрей, моно вас попросить сделать советника. Я Т3 где то потерял.

Условие для открытия ордеров.

Индикатор МА находится ниже цены, и появляется фрактал в верх, открывается ордер на продажу.

Если цена пошла не в ту сторону, тогда за фрокталом выставляется стопордер но уже с увеличенным лотом. Закрываются все ордера по тейкрофиту.

Все.
  • +1
  • Просмотров: 5910
  • 6 ноября 2015, 10:32
  • beton2011
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
trend value+fibo
Следующая запись в группе  
эксперт для ручной торговли
04 ноября 2015
06 ноября 2015

Комментарии (29)

+
+1
И чтобы торговал сов в обеденный перерыв брокера.*tipatogo* 
avatar

  17  MrFiks Сообщений: 76 - Freelancer

  • 6 ноября 2015, 11:17
+
+2
Фракалы! Они как шакалы
Всегда голодны и злы.
И даже худые лосяры
Желанны для них, как торты!
avatar

  45  Bishop Сообщений: 5719 - АЛЬФАХАМЕЦ-Машковод

  • 6 ноября 2015, 12:03
+
0
Если можете измените пожалуйста.
avatar

  14  beton2011 Автор Сообщений: 895

  • 6 ноября 2015, 13:05
+
0
Ну а как же мой стих тогда (  Окажется не в тему

ЗЫ: лады, изменил *spokuha* 
avatar

  45  Bishop Сообщений: 5719 - АЛЬФАХАМЕЦ-Машковод

  • 6 ноября 2015, 13:30
+
0
Опишите все подробнее, желательно с картинками. Этого описания недостаточно.
avatar

  34  AM2 Сообщений: 15871 - Андрей

  • 6 ноября 2015, 14:22
+
0
Попробовал сделать картинку



Только надо чтобы за открытым ордером шел отложенный ордер по фракталам. И закрытие всех ордеров происходило по закрытию любого ордера по тейкпрофиту.
avatar

  14  beton2011 Автор Сообщений: 895

  • 6 ноября 2015, 15:25
+
0
Попробовал сделать картинку



Только надо чтобы за открытым ордером шел отложенный ордер по фракталам. И закрытие всех ордеров происходило по закрытию любого ордера по тейкпрофиту.

То есть открылся ордер на продажу, сразу открылся отложенный лимитный ордер за фракталом. Этот ордер тянется за фракталом. У отложенного ордера лот увеличен, и если этот ордер заденит цена, то следующий ордер с удвоенным лотом открывается за последним фрактолом. Закрываются все ордера по закрытию любого ордера по тейку.
avatar

  14  beton2011 Автор Сообщений: 895

  • 6 ноября 2015, 15:44
+
0
особенно это место на графике(?) радует :D 

На мгновение заскочили в прошлое *ninja* 
avatar

  27  Oxy Сообщений: 3418 - ..ιllιlι.lι.ιllι.ιlι..

  • 6 ноября 2015, 15:59
+
0
На мгновение заскочили в прошлое

Это калябушки :D  Люди празднуют *drinks*  И похоже что уже давно :D 
avatar

  34  AM2 Сообщений: 15871 - Андрей

  • 6 ноября 2015, 16:25
+
0
То есть открылся ордер на продажу, сразу открылся отложенный лимитный ордер за фракталом. Этот ордер тянется за фракталом.


Если цена пошла не в ту сторону, тогда за фрокталом выставляется стопордер но уже с увеличенным лотом.


Вот открылся ордер на продажу.



За какой фрактал ставим лимитный ордер? Ставим байлимит или селллимит или стоповый как первоначально в ТЗ? Куда тянется? Просьба показать все на скринах. Помните какое будет ТЗ такой получите и результат.
Вот набросок с входами с рынка по условию:


//+------------------------------------------------------------------+
//|                                                      Fractal.mq4 |
//|                                              Copyright 2015, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property description "Simple expert advisor"

//--- Inputs
extern int    StopLoss      = 500; // лось 
extern int    TakeProfit    = 500; // язь
extern int    MAPeriod      = 12;  // период МА
extern double Lots          = 0.1; // лот
extern double MaxLot        = 5;   // максимальный лот
extern double KLot          = 2;   // увеличение лота
extern int    Slip          = 30;  // проскальзывание
extern int    Shift         = 3;   // сдвиг баров назад
extern int    Count         = 1;   // количество открываемых ордеров
extern int    MAGIC         = 20150531;
//+------------------------------------------------------------------+
int CountTrades()
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC)
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void OpenPos()
  {
   double up,dn,ma;
   int    res;
//--- get ind
   up=iFractals(NULL,0,MODE_UPPER,Shift);
   dn=iFractals(NULL,0,MODE_LOWER,Shift);
   ma=iMA(NULL,0,MAPeriod,0,MODE_SMA,PRICE_CLOSE,1);
//--- sell conditions
   if(up>0 && Close[0]<ma)
     {
      res=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slip,Bid+StopLoss*Point,Bid-TakeProfit*Point,"",MAGIC,0,Red);
      return;
     }
//--- buy conditions
   if(dn>0 && Close[0]>ma)
     {
      res=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slip,Ask-StopLoss*Point,Ask+TakeProfit*Point,"",MAGIC,0,Blue);
      return;
     }
//---
  }
//+------------------------------------------------------------------+
//| OnTick function                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
   double up,dn;
//--- get ind
   up=iFractals(NULL,0,MODE_UPPER,Shift);
   dn=iFractals(NULL,0,MODE_LOWER,Shift);

   if(CountTrades()<Count) OpenPos();

   Comment("\n  UP Fractal ",up,
           "\n  DN Fractal ",dn);
//---
  }
//+------------------------------------------------------------------+

avatar

  34  AM2 Сообщений: 15871 - Андрей

  • 6 ноября 2015, 16:12
+
0
За прошлый фрактал.
avatar

  14  beton2011 Автор Сообщений: 895

  • 6 ноября 2015, 16:59
+
0
Cам код дает прибил. Не знаю что делать, или доделывать до конца, или обращаться в личку.

Давайте сделаем так как надо было.

Сейчас советник открывает ордера по фракталам и по индикатору. На до что бы открывал ордера наоборот, и если ордер уходит в минус, тогда выставляется, еще один ордер за последний фрактал.
Редактирован: 6 ноября 2015, 17:47
avatar

  14  beton2011 Автор Сообщений: 895

  • 6 ноября 2015, 17:30
+
0
Доделаю конечно, это набросок только.

На до что бы открывал ордера наоборот, и если ордер уходит в минус, тогда выставляется, еще один ордер за последний фрактал.


Покажите на скрине какой ордер, куда ставить и как тянуть?
avatar

  34  AM2 Сообщений: 15871 - Андрей

  • 6 ноября 2015, 20:07
+
0

Все ордера открываются на продажу. Скажем открылся первый ордер на продажу, сразу за ним открылся ордер лимит на продажу с удвоенным лотом. Если любой ордер закроется по тейку, тогда все ордера.
avatar

  14  beton2011 Автор Сообщений: 895

  • 6 ноября 2015, 20:36
+
0
Мне не удалось вытянуть из вас четкого ТЗ. За такие заказы я не берусь.
avatar

  34  AM2 Сообщений: 15871 - Андрей

  • 6 ноября 2015, 23:40
+
0
Извините. Вот составил ТЗ.

Условие для открытия ордера sell limit.

Цена выше индикатора МА и появился фрактал вверх, над фракталом выставляется ордер sell limit на расстоянии заданном в советнике.

Условие для открытия ордера buy limit.

Цена ниже индикатора МА и появился фрактал вниз, под фракталом выставляется ордер buy limit на расстоянии заданном в советнике.

Ордера выставляются без тейкпрофита и стоплоса.

Закрытие открытых и отложенных ордеров происходит по достижению профита в валюте депозита или если цена коснется индикатора МА.

Прошу вас сделать такой советник.
avatar

  14  beton2011 Автор Сообщений: 895

  • 16 ноября 2015, 18:37
+
0
Советник наставил лимитников и закрыл все по профиту:



//+------------------------------------------------------------------+
//|                                                 BetonFractal.mq4 |
//|                                              Copyright 2015, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property description "Simple expert advisor"

//--- Inputs
extern double Lots          = 0.1; // лот
extern int    StopLoss      = 500; // лось 
extern int    TakeProfit    = 500; // язь
extern int    Profit        = 500; // язь в рублях
extern int    Delta         = 100; // расстояние от фрактала
extern int    MAPeriod      = 12;  // период МА
extern int    Slip          = 30;  // проскальзывание
extern int    Shift         = 3;   // сдвиг баров назад
extern int    Count         = 100; // количество открываемых ордеров
extern int    Magic         = 123; // магик

int t=0;
//+------------------------------------------------------------------+
int CountTrades()
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double AllProfit()
  {
   double profit=0;

   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL) profit+=OrderProfit();
           }
        }
     }
   return (profit);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseAll()
  {
   bool cl;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY) cl=OrderClose(OrderTicket(),OrderLots(),Bid,Slip,Blue);
            if(OrderType()==OP_SELL) cl=OrderClose(OrderTicket(),OrderLots(),Ask,Slip,Red);
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void OpenPos()
  {
   double up=0,dn=0,ma=0,pr=0,sl=0,tp=0;
   int    res;
//--- get ind
   up=iFractals(NULL,0,MODE_UPPER,Shift);
   dn=iFractals(NULL,0,MODE_LOWER,Shift);
   ma=iMA(NULL,0,MAPeriod,0,MODE_SMA,PRICE_CLOSE,1);
//--- sell conditions
   if(up>0 && Bid>ma)
     {
      pr=NormalizeDouble(up+Delta*Point,Digits);
      if(StopLoss>0) sl=NormalizeDouble(pr+StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(pr-TakeProfit*Point,Digits);
      res=OrderSend(Symbol(),3,Lots,pr,Slip,sl,tp,"",Magic,0,Red);
      return;
     }
//--- buy conditions
   if(dn>0 && Ask<ma)
     {
      pr=NormalizeDouble(dn-Delta*Point,Digits);
      if(StopLoss>0) sl=NormalizeDouble(pr-StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(pr+TakeProfit*Point,Digits);      
      res=OrderSend(Symbol(),2,Lots,pr,Slip,sl,tp,"",Magic,0,Blue);
      return;
     }
//---
  }
//+------------------------------------------------------------------+
//| OnTick function                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
   double up,dn;
//--- get ind
   up=iFractals(NULL,0,MODE_UPPER,Shift);
   dn=iFractals(NULL,0,MODE_LOWER,Shift);

   if(CountTrades()<Count && t!=Time[0])
     {
      OpenPos();
      t=Time[0];
     }

   if(AllProfit()>Profit) CloseAll();

   Comment("\n  UP Fractal ",up,
           "\n  DN Fractal ",dn,
           "\n  Profit: ",AllProfit());
//---
  }
//+------------------------------------------------------------------+

Редактирован: 16 ноября 2015, 23:13
avatar

  34  AM2 Сообщений: 15871 - Андрей

  • 16 ноября 2015, 22:37
+
0
Да все правильно. Надо еще закрытие всех открытых и отложенных ордеров при пересечение цены индикатора МА, что бы не было много ордеров.
avatar

  14  beton2011 Автор Сообщений: 895

  • 17 ноября 2015, 06:45
+
0
Полюбуйтесь: www.opentraders.ru/downloads/935/

avatar

  34  AM2 Сообщений: 15871 - Андрей

  • 17 ноября 2015, 08:10
+
0
Да, все так как и было задумано. Спасибо :) 
avatar

  14  beton2011 Автор Сообщений: 895

  • 17 ноября 2015, 10:01
+
0
Я извиняюсь. После долгих тестированний и оптимизаций советника, у меня что то не так выходило.

Только после визуального тестирования я заметил один недочет. Сейчас советник закрывает все ордера по профиту от депозита и по индикатору МА. По индикатору закрывает ордера только если есть открытый ордер, а надо что бы закрывал все ордера после пересечения МА если даже нет открытого ордера.

Подправьте пожалуйсто :) 
avatar

  14  beton2011 Автор Сообщений: 895

  • 26 ноября 2015, 20:06
+
0
Что конкретно вы имеете ввиду, можно нагляднее на скринах?
avatar

  34  AM2 Сообщений: 15871 - Андрей

  • 27 ноября 2015, 02:01
+
0
Извините, как только отойду от пьаки, сразу напишу нормальный Т3.
avatar

  14  beton2011 Автор Сообщений: 895

  • 7 ноября 2015, 13:15
+
0
По индикатору закрывает ордера только если есть открытый ордер, а надо что бы закрывал все ордера после пересечения МА если даже нет открытого ордера.


Закрывает позы и удаляет лимитники после пересечения МА. Что именно неверно?

avatar

  34  AM2 Сообщений: 15871 - Андрей

  • 27 ноября 2015, 08:56
+
0
Вы попробуйте сделать большое расстояние выставление лимитных ордеров. Советник будет выставлять лимитные ордера и когда цена пересечет МА, лимитные ордера не закроются. Вот в чем проблемка.

Вот на скрине видно что цена пересекала МА несколько раз а лимитные ордера не закрываются


Редактирован: 27 ноября 2015, 10:46
avatar

  14  beton2011 Автор Сообщений: 895

  • 27 ноября 2015, 10:40
+
0
Какое условие написать для удаления отложек, цена пересекает МА? Или просто сделать время истечения для них?
avatar

  34  AM2 Сообщений: 15871 - Андрей

  • 27 ноября 2015, 11:14
+
0
Цена пересекает МА. Если можно еще добавить закрытие по истечению времени.
Редактирован: 27 ноября 2015, 13:28
avatar

  14  beton2011 Автор Сообщений: 895

  • 27 ноября 2015, 11:34
+
0
Добавил:


//+------------------------------------------------------------------+
//|                                                 BetonFractal.mq4 |
//|                                              Copyright 2015, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property description "Simple expert advisor"

//--- Inputs
extern double Lots          = 0.1; // лот
extern int    StopLoss      = 500; // лось 
extern int    TakeProfit    = 500; // язь
extern int    Profit        = 500; // язь в рублях
extern int    Delta         = 100; // расстояние от фрактала
extern int    MAPeriod      = 12;  // период МА
extern int    Slip          = 30;  // проскальзывание
extern int    Shift         = 2;   // сдвиг баров назад
extern int    Expiration    = 44;  // время истечения в часах
extern int    Count         = 100; // количество открываемых ордеров
extern int    Magic         = 123; // магик

int t=0;
//+------------------------------------------------------------------+
int CountTrades()
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double AllProfit()
  {
   double profit=0;

   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL) profit+=OrderProfit();
           }
        }
     }
   return (profit);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseAll()
  {
   bool cl;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY)       cl=OrderClose(OrderTicket(),OrderLots(),Bid,Slip,Blue);
            if(OrderType()==OP_SELL)      cl=OrderClose(OrderTicket(),OrderLots(),Ask,Slip,Red);
            if(OrderType()==OP_BUYLIMIT)  cl=OrderDelete(OrderTicket());
            if(OrderType()==OP_SELLLIMIT) cl=OrderDelete(OrderTicket());
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void ClosePos()
  {
   double up=iFractals(NULL,0,MODE_UPPER,Shift);
   double dn=iFractals(NULL,0,MODE_LOWER,Shift);
   double ma=iMA(NULL,0,MAPeriod,0,MODE_SMA,PRICE_CLOSE,1);
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY)
              {
               if(up>0 && Bid>ma)
                 {
                  CloseAll();
                 }
              }
            if(OrderType()==OP_SELL)
              {
               if(dn>0 && Ask<ma)
                 {
                  CloseAll();
                 }
              }
           }
        }
     }
   return;
  }
//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void OpenPos()
  {
   double up=0,dn=0,ma=0,pr=0,sl=0,tp=0;
   int    res;
//--- get ind
   up=iFractals(NULL,0,MODE_UPPER,Shift);
   dn=iFractals(NULL,0,MODE_LOWER,Shift);
   ma=iMA(NULL,0,MAPeriod,0,MODE_SMA,PRICE_CLOSE,1);
//--- sell conditions
   if(up>0 && Bid>ma)
     {
      pr=NormalizeDouble(up+Delta*Point,Digits);
      if(StopLoss>0) sl=NormalizeDouble(pr+StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(pr-TakeProfit*Point,Digits);
      res=OrderSend(Symbol(),3,Lots,pr,Slip,sl,tp,"",Magic,TimeCurrent()+Expiration*3600,Red);
      return;
     }
//--- buy conditions
   if(dn>0 && Ask<ma)
     {
      pr=NormalizeDouble(dn-Delta*Point,Digits);
      if(StopLoss>0) sl=NormalizeDouble(pr-StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(pr+TakeProfit*Point,Digits);
      res=OrderSend(Symbol(),2,Lots,pr,Slip,sl,tp,"",Magic,TimeCurrent()+Expiration*3600,Blue);
      return;
     }
//---
  }
//+------------------------------------------------------------------+
//| OnTick function                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
   double up=0,dn=0,ma=0;
//--- get ind
   up=iFractals(NULL,0,MODE_UPPER,Shift);
   dn=iFractals(NULL,0,MODE_LOWER,Shift);
   ma=iMA(NULL,0,MAPeriod,0,MODE_SMA,PRICE_CLOSE,1);

   if(CountTrades()<Count && t!=Time[0])
     {
      OpenPos();
      t=Time[0];
     }
     
   if(CountTrades()<1 && ((Close[1]>ma && Close[2]<ma)||(Close[1]<ma && Close[2]>ma))) CloseAll();
   if(CountTrades()>0) ClosePos();
   if(AllProfit()>Profit) CloseAll();

   Comment("\n  UP Fractal ",up,
           "\n  DN Fractal ",dn,
           "\n  Profit: ",AllProfit());
//---
  }
//+------------------------------------------------------------------+

avatar

  34  AM2 Сообщений: 15871 - Андрей

  • 27 ноября 2015, 13:50
+
0
Спасибо :) 
avatar

  14  beton2011 Автор Сообщений: 895

  • 27 ноября 2015, 14:10

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