ell75

 
Уровень 7

  Торгую в компаниях:

  Моя торговля


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


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

Рейтинг 2146



РЕКОМЕНДУЮ



советник

Прошу написать советника по индикатору TrendWave_hvs99.rar (1 Kb)
открывать и закрывать ордер по сигналу точки индикатора.если цена пошла дальше сигнала и появился ещё сигнал, доливаемся без удвоение лотности и закрываем все открытые ордера при обратном сигнале. лот, м\м трал и пусть будет возможность по т\п и с\л закрываться. спасибо.
  • 0
  • Просмотров: 4139
  • 19 октября 2015, 15:51
  • ell75
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Создание советника
Следующая запись в группе  
Нужен советник- платформа МТ4
18 октября 2015
19 октября 2015

Брокер для ваших роботов, 15 лет на рынке

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

+
0
Посмотрю завтра.
avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 19 октября 2015, 19:49
+
0
спасибо. буду ждать
avatar

  7  ell75 Автор Сообщений: 195

  • 20 октября 2015, 10:24
+
0
Индикатор декомпилированый. Предлагаю заменить на любой стандартный осциллятор. По сути будет все тоже самое, но проще работать, оптимизировать и д.р.
avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 20 октября 2015, 13:13
+
0
Вот например на рисунке трендвейв и стохастик, один в один.

avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 20 октября 2015, 13:21
+
0
да. но стохастик это не то он слабоват. а если его заменить моим прошлым одним индюком Drake Delay Stochastic. сделать его тоже с сигналом ( точка) при пересечении уровня ( 20 и 80)и по этому сигналу открываются и закрываются ордера. как Вы на это смотрите?
Редактирован: 20 октября 2015, 15:13
avatar

  7  ell75 Автор Сообщений: 195

  • 20 октября 2015, 15:07
+
0
Если вам так важна точка на индикаторе, то я ее нарисую на обычном стохастике.
avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 20 октября 2015, 15:47
+
0
хорошо. если это не возможно. тогда давайте на стохе. покупка и продажа в зонах перепроданности и перекупленности и пересечение стоха. (период 9,3,3. тех задание остаётся тоже
Редактирован: 20 октября 2015, 17:03
avatar

  7  ell75 Автор Сообщений: 195

  • 20 октября 2015, 16:37
+
0
Это радует, что вы прислушиваетесь к мнению окружающих. После ужина начну делать на стохе. Потом для сравнения сделаю на трендвейв.
avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 20 октября 2015, 16:45
+
0
На стохе сделал.




//+------------------------------------------------------------------+
//|                                                    TrendWave.mq4 |
//|                                              Copyright 2015, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2015, AM2"
#property link      "http://www.forexsystems.biz"
#property description "HMA Color simple expert advisor"

#define MAGIC  20141020
//--- Inputs
extern int StopLoss     = 500;
extern int TakeProfit   = 500;
extern int BULevel      = 300;
extern int TrailingStop = 300;
extern int Slip         = 30;
extern double Lots      = 0.1;
//----
extern int MPeriod      = 5;
extern int SPeriod      = 3;
extern int Slow         = 10;
extern int Level        = 30;

int s=0,b=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void OpenPos()
  {
   int    res;
//--- get Ind
   double main1=iStochastic(NULL,0,MPeriod,SPeriod,Slow,0,0,0,1);
   double sig1=iStochastic(NULL,0,MPeriod,SPeriod,Slow,0,0,1,1);
   double main2=iStochastic(NULL,0,MPeriod,SPeriod,Slow,0,0,0,2);
   double sig2=iStochastic(NULL,0,MPeriod,SPeriod,Slow,0,0,1,2);
//--- sell conditions
   if(main1>100-Level && main1<sig1 && main2>sig2 && AllProfit()>=0)
     {
      res=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slip,Bid+StopLoss*Point,Bid-TakeProfit*Point,"",MAGIC,0,Red);
      s++;
      return;
     }
//--- buy conditions
   if(main1<Level && main1>sig1 && main2<sig2 && AllProfit()>=0)
     {
      res=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slip,Ask-StopLoss*Point,Ask+TakeProfit*Point,"",MAGIC,0,Blue);
      b++;
      return;
     }
//---
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double AllProfit()
  {
   double profit=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      bool sel=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=MAGIC) continue;
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC)
         if(OrderType()==OP_BUY || OrderType()==OP_SELL) profit+=OrderProfit();
     }
   return (profit);
  }
//+------------------------------------------------------------------+
//| Check for close order conditions                                 |
//+------------------------------------------------------------------+
void ClosePos()
  {
//--- get Ind
   double main1=iStochastic(NULL,0,MPeriod,SPeriod,Slow,0,0,0,1);
   double sig1=iStochastic(NULL,0,MPeriod,SPeriod,Slow,0,0,1,1);
   double main2=iStochastic(NULL,0,MPeriod,SPeriod,Slow,0,0,0,2);
   double sig2=iStochastic(NULL,0,MPeriod,SPeriod,Slow,0,0,1,2);
//---
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderMagicNumber()==MAGIC || OrderSymbol()==Symbol())
           {
            //--- check order type 
            if(OrderType()==OP_BUY)
              {
               if(main1>100-Level && main1<sig1 && main2>sig2)
                 {
                  bool c=OrderClose(OrderTicket(),OrderLots(),Bid,Slip,White);                  
                 }
              }
            if(OrderType()==OP_SELL)
              {
               if(main1<Level && main1>sig1 && main2<sig2)
                 {
                  c=OrderClose(OrderTicket(),OrderLots(),Ask,Slip,White);
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
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);
  }
//+------------------------------------------------------------------+
bool NewBar()
  {
   static datetime lastbar=0;
   datetime curbar=Time[0];
   if(lastbar!=curbar)
     {
      lastbar=curbar;
      return (true);
     }
   else
     {
      return(false);
     }
  }
//+------------------------------------------------------------------+
void Trailing()
  {
   bool mod;
   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(TrailingStop>0)
                 {
                  if(Bid-OrderOpenPrice()>TrailingStop*Point)
                    {
                     if(OrderStopLoss()<Bid-TrailingStop*Point)
                       {
                        mod=OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*Point,OrderTakeProfit(),0,Yellow);
                        return;
                       }
                    }
                 }
              }

            if(OrderType()==OP_SELL)
              {
               if(TrailingStop>0)
                 {
                  if((OrderOpenPrice()-Ask)>TrailingStop*Point)
                    {
                     if((OrderStopLoss()>(Ask+TrailingStop*Point)) || (OrderStopLoss()==0))
                       {
                        mod=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+TrailingStop*Point,OrderTakeProfit(),0,Yellow);
                        return;
                       }
                    }
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
void BU()
  {
   bool m;
   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(OrderOpenPrice()<=(Bid-(BULevel+20)*Point) && OrderOpenPrice()>OrderStopLoss())
                 {
                  m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+20*Point,OrderTakeProfit(),0,Green);
                  return;
                 }
              }

            if(OrderType()==OP_SELL)
              {
               if(OrderOpenPrice()>=(Ask+(BULevel+20)*Point) && OrderOpenPrice()<OrderStopLoss())
                 {
                  m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-20*Point,OrderTakeProfit(),0,Green);
                  return;
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| OnTick function                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(NewBar())
     {
      OpenPos();
      ClosePos();
     }

   if(BULevel!=0) BU();
   if(TrailingStop!=0) Trailing();
//---
  }
//+------------------------------------------------------------------+

avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 20 октября 2015, 18:35
+
0
к сожалению протестировать не могу, так как не понимаю куда и как этот код вставлять. но по вашему скрину вижу не совсем то что я хотела. ордера должны браться от каждого пересечения стохастика в зонах перекупленности и перепроданности и важно только после пересечение этого же стохастика в сторону сигнала. я надеюсь понятно обьяснила
avatar

  7  ell75 Автор Сообщений: 195

  • 20 октября 2015, 20:22
+
0
Вот файлик: www.opentraders.ru/downloads/899/
И покажите на скрине, что неправильно.
avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 20 октября 2015, 21:28
+
0
если цена пошла дальше сигнала и появился ещё сигнал, доливаемся без удвоение лотности


Делал исходя из этого пункта.
Каждый сигнал не отрабатывается, потому что доливка идет в положительной зоне, т.е. когда поза в профите, а иначе это уже будет усреднение.
avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 20 октября 2015, 21:40
+
0

и добавьте туда м\м. спасибо. попробуем так
Редактирован: 21 октября 2015, 10:09
avatar

  7  ell75 Автор Сообщений: 195

  • 21 октября 2015, 10:08
+
0
Сейчас есть стоха с оптимизируемыми параметрами, доливка и ММ:
www.opentraders.ru/downloads/899/


Редактирован: 21 октября 2015, 12:45
avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 21 октября 2015, 12:44
+
0
я завтра сделаю скрин Вам
avatar

  7  ell75 Автор Сообщений: 195

  • 20 октября 2015, 22:07
+
0
сделала
avatar

  7  ell75 Автор Сообщений: 195

  • 21 октября 2015, 11:34

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