0
у вас макди отключен? 0 должен быть. по умолчанию 1 стоит включен значит
avatar

AM2

  • 14 ноября 2014, 16:26
+2
Сейчас открывается именно так как вы просили.




//+------------------------------------------------------------------+
//|                                                        Renko.mq4 |
//|                                            Copyright © 2014, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+

#property copyright "Copyright © 2011, AM2"
#property link      "http://www.forexsystems.biz"
#property description "Slope Directional Line expert advisor"

#define MAGICMA  20141111
//--- Inputs
extern double StopLoss    = 500; // стоп лосс ордера
extern double TakeProfit  = 500; // тейк профит ордера
extern double Lots        = 0.1; // объем позиции
//----
extern int period         = 90;  // период средней Slope Directional Line
extern int method         = 2;   // метод средней(SMA=0,EMA=1,SMMA=2,LWMA=3)
extern int price          = 0;   // цена по которой строится средняя
//----
extern int FastPeriod     = 12;  // период быстрого макди 
extern int SlowPeriod     = 26;  // период медленного макди
extern int SignalPeriod   = 9;   // период сигнального макди
//----
extern int MACDAC         = 1;   // включение макди(1-включен,0-отключен)

bool buy=true,sell=true;
//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void CheckForOpen()
  {
   int    res;
//--- go trading only for first tiks of new bar
   if(Volume[0]>1) return;
//--- get Moving Average 
   double SlopeBlue=iCustom(Symbol(),0,"Slope",period,method,price,0,0);
   double SlopeRed=iCustom(Symbol(),0,"Slope",period,method,price,1,0);
   double MACDGreen=iCustom(Symbol(),0,"MACDTraditional",FastPeriod,SlowPeriod,SignalPeriod,1,0);
   double MACDRed=iCustom(Symbol(),0,"MACDTraditional",FastPeriod,SlowPeriod,SignalPeriod,0,0);   

//--- sell conditions
   if(MACDAC==1)
    {
     if(SlopeBlue>SlopeRed && MACDGreen<MACDRed && sell==true)
      {
       res=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point,"",MAGICMA,0,Red);
       sell=false;
       buy=true;
       return;
      }
//--- buy conditions
     if(SlopeRed>SlopeBlue && MACDGreen>MACDRed  && buy==true)
      {
       res=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,"",MAGICMA,0,Blue);
       buy=false;
       sell=true;       
       return;
      }
     }
     else
      {
       if(SlopeBlue>SlopeRed && sell==true)
        {
         res=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point,"",MAGICMA,0,Red);
         sell=false;
         buy=true;         
         return;
        }
//--- buy conditions
       if(SlopeRed>SlopeBlue && buy==true)
        {
         res=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,"",MAGICMA,0,Blue);
         buy=false;
         sell=true;          
         return;
        }      
      }
//---
  }
//+------------------------------------------------------------------+
//| Check for close order conditions                                 |
//+------------------------------------------------------------------+
void CheckForClose()
  {
//--- go trading only for first tiks of new bar
   if(Volume[0]>1) return;
//--- get Moving Average 
   double SlopeBlue=iCustom(Symbol(),0,"Slope",period,method,price,0,0);
   double SlopeRed=iCustom(Symbol(),0,"Slope",period,method,price,1,0);
//---
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continue;
      //--- check order type 
      if(OrderType()==OP_BUY)
        {
         if(SlopeBlue>SlopeRed)
           {
            if(!OrderClose(OrderTicket(),OrderLots(),Bid,3,White))
               Print("OrderClose error ",GetLastError());
           }
         break;
        }
      if(OrderType()==OP_SELL)
        {
         if(SlopeRed>SlopeBlue)
           {
            if(!OrderClose(OrderTicket(),OrderLots(),Ask,3,White))
               Print("OrderClose error ",GetLastError());
           }
         break;
        }
     }
//---
  }
//+------------------------------------------------------------------+
//| OnTick function                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
//--- check for history and trading
   if(Bars<100 || IsTradeAllowed()==false)
      return;
//--- calculate open orders by current symbol
   if(OrdersTotal()<1) CheckForOpen();
   else CheckForClose();
//---
  }
//+------------------------------------------------------------------+

avatar

AM2

  • 14 ноября 2014, 15:36
0
если вы о советнике по ссылке, оформите новый заказ и все сделаю.
avatar

AM2

  • 14 ноября 2014, 13:52
0
что именно не работает? покажите на скринах, подправлю.
avatar

AM2

  • 14 ноября 2014, 13:50
0
Еще один вариант, как протестировать советник на ренко барах.
avatar

AM2

  • 12 ноября 2014, 11:13
0
Здесь советник с кирпичиками ренко для онлайн графиков.



avatar

AM2

  • 12 ноября 2014, 10:44
0
Советник который я написал работает на онлайн графике и в тестере, без построения кирпичиков ренко. Торгует по индикатору Slope Directional Line и MACD.
avatar

AM2

  • 11 ноября 2014, 10:59
+1
Добавил включение макди.
Описание настроек:


//--- Inputs
extern double StopLoss    = 500; // стоп лосс ордера
extern double TakeProfit  = 500; // тейк профит ордера
extern double Lots        = 0.1; // объем позиции
//----
extern int period         = 90;  // период средней Slope Directional Line
extern int method         = 2;   // метод средней(SMA=0,EMA=1,SMMA=2,LWMA=3)
extern int price          = 0;   // цена по которой строится средняя
//----
extern int FastPeriod     = 12;  // период быстрого макди 
extern int SlowPeriod     = 26;  // период медленного макди
extern int SignalPeriod   = 9;   // период сигнального макди
//----
extern int MACDAC         = 1;   // включение макди(1-включен,0-отключен)


avatar

AM2

  • 11 ноября 2014, 10:51
0
Советник Renko.mq4 в папку Experts, индикаторы MACDTraditional.ex4 и Slope.mq4 в папку Indicators. Советник работает на обычном графике.
Эксперт RenkoLiveChart_v3.2 в новых билдах МТ4 не запускается. Для нового билда качайте здесь.
avatar

AM2

  • 10 ноября 2014, 22:37
+1
Сделал предварительную версию эксперта:
www.opentraders.ru/downloads/501/

1. Советник покупает, когда появилась синяя линия и зеленая линия макди ниже красной.
2. Продает когда появилась красная линия и зеленая линия макди выше красной.
3. Эксперт выставляет стопы.
4. Закрытие при смене цвета линии или по стопам.

avatar

AM2

  • 10 ноября 2014, 18:16
0
вы хотите что то подобное?
www.mql5.com/ru/market/product/3454
avatar

AM2

  • 10 ноября 2014, 15:21
+2
советник с трейлингом всех ордеров в базе. скомпилированный файл и исходник.

www.opentraders.ru/downloads/497/
avatar

AM2

  • 9 ноября 2014, 12:20
+3
будьте внимательны, одна и таже формула подходит к различным типам свечей. делал подобный скрипт.

avatar

AM2

  • 8 ноября 2014, 21:55
0
если вас заинтересовал этот советник, давайте оформим отдельный заказ и после выходных сделаю.
avatar

AM2

  • 8 ноября 2014, 21:33
+1
напишите что именно нужно и я добавлю
avatar

AM2

  • 8 ноября 2014, 18:33
+1
переоткрытие сеткой убрал


//+------------------------------------------------------------------+
//|                                                        TWBot.mq4 |
//|                                              Copyright 2014, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+

#property copyright "Copyright 2014, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict

#define MAGIC  20141106

extern int    WavePeriod  = 10;  // период индикатора Trend Wave 
extern int    AvgPeriod   = 23;  // период усреднения индикатора Trend Wave
extern int    TWLelel     = 50;  // уровень индикатора Trend Wave
extern int    Step        = 100; // расстояние между ордерами
extern int    Count       = 10;  // количество выставляемых ордеров 
extern double Lots        = 0.1; // объем позиции
 
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
     
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   if(Volume[0]>1) return 0;
   double TWBull=iCustom(Symbol(),0,"TrendWave",WavePeriod,AvgPeriod,4,1);
   double TWBull1=iCustom(Symbol(),0,"TrendWave",WavePeriod,AvgPeriod,4,2);
   
   double TWBear=iCustom(Symbol(),0,"TrendWave",WavePeriod,AvgPeriod,5,1);
   double TWBear1=iCustom(Symbol(),0,"TrendWave",WavePeriod,AvgPeriod,5,2);
   Comment("\nTWBull: ",TWBull,"\nTWBear: ",TWBear); 
   double StopLimits=MarketInfo(Symbol(),MODE_STOPLEVEL);
   
   if (OrdersTotal()<1 && TWBear > TWLelel && TWBear>TWBull && TWBull1>TWBear1)
    {       
     OpenSellStop();
    }
    
   if (OrdersTotal()<1 && TWBull < -TWLelel && TWBull>TWBear && TWBear1>TWBull1)
    {       
     OpenBuyStop();
    }
    
   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  && ((TWBear>TWLelel && TWBear>TWBull && TWBull1>TWBear1)||(TWBull< 0 && TWBull>TWBear && TWBear1>TWBull1)))
          {
           bool mod=OrderClose(OrderTicket(), OrderLots(), Bid, 3, Blue);
           DeleteOrders();         
          }
         else 
         if(OrderType()==OP_SELL && ((TWBull<-TWLelel && TWBull>TWBear && TWBear1>TWBull1)||(TWBull>0 && TWBull>TWBear && TWBear1>TWBull1)))
          {
           bool mod=OrderClose(OrderTicket(), OrderLots(), Ask, 3, Red);
           DeleteOrders();
          }          
        }
      }
    }  
      
   return(0); 
}
//+------------------------------------------------------------------+
double fND(double d, int n=-1) 
  {  
   if (n<0) return(NormalizeDouble(d, Digits)); 
   return(NormalizeDouble(d, n)); 
  }
//+------------------------------------------------------------------+
void DeleteOrders() 
{ 
 bool del; 
 for (int i=OrdersTotal()-1; i>=0; i--) 
  {
   if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; 
   if (OrderType()==OP_BUYSTOP  ) del=OrderDelete(OrderTicket()); 
   if (OrderType()==OP_SELLSTOP ) del=OrderDelete(OrderTicket());  
  }  
}
//+------------------------------------------------------------------+
void OpenBuyStop()
{
  double StopLimits=MarketInfo(Symbol(),MODE_STOPLEVEL);
  for(int i=0;i<=Count;i++)
   {            
    int res=OrderSend(Symbol(),OP_BUYSTOP,Lots,fND(Ask+StopLimits*Point+i*Step*Point),0,0,0,"",MAGIC,0,Blue);
      if(res<0)
       {
        Print("Ордер выставлен с ошибкой: ",GetLastError());
       }
      else
        Print("Ордер выставлен успешно");
        Sleep(1000);  
      }    
}
//+------------------------------------------------------------------+
void OpenSellStop()
{
  double StopLimits=MarketInfo(Symbol(),MODE_STOPLEVEL);
  for(int i=0;i<=Count;i++)
   {            
    int res=OrderSend(Symbol(),OP_SELLSTOP,Lots,fND(Bid-StopLimits*Point-i*Step*Point),0,0,0,"",MAGIC,0,Blue);
      if(res<0)
       {
        Print("Ордер выставлен с ошибкой: ",GetLastError());
       }
      else
        Print("Ордер выставлен успешно");
        Sleep(1000);  
      }    
}
//+------------------------------------------------------------------+
avatar

AM2

  • 7 ноября 2014, 23:57
+3
Предварительная версия советника в базе:

www.opentraders.ru/downloads/500/

avatar

AM2

  • 7 ноября 2014, 23:43
+2
сейчас сделаю
avatar

AM2

  • 7 ноября 2014, 22:03
+1
сейчас кроемся при болтанке и по сигналу за уровнем. после закрытия выставляем сеть противоположного направления.

файл скомпилировал и заменил в базе.




//+------------------------------------------------------------------+
//|                                                        TWBot.mq4 |
//|                                              Copyright 2014, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+

#property copyright "Copyright 2014, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict

#define MAGIC  20141106

extern int    WavePeriod  = 10;  // период индикатора Trend Wave 
extern int    AvgPeriod   = 23;  // период усреднения индикатора Trend Wave
extern int    TWLelel     = 50;  // уровень индикатора Trend Wave
extern int    Step        = 100; // расстояние между ордерами
extern int    Count       = 10;  // количество выставляемых ордеров 
extern double Lots        = 0.1; // объем позиции
 
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
     
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   if(Volume[0]>1) return 0;
   double TWBull=iCustom(Symbol(),0,"TrendWave",WavePeriod,AvgPeriod,4,1);
   double TWBull1=iCustom(Symbol(),0,"TrendWave",WavePeriod,AvgPeriod,4,2);
   
   double TWBear=iCustom(Symbol(),0,"TrendWave",WavePeriod,AvgPeriod,5,1);
   double TWBear1=iCustom(Symbol(),0,"TrendWave",WavePeriod,AvgPeriod,5,2);
   Comment("\nTWBull: ",TWBull,"\nTWBear: ",TWBear); 
   double StopLimits=MarketInfo(Symbol(),MODE_STOPLEVEL);
   
   if (OrdersTotal()<1 && TWBear > TWLelel && TWBear>TWBull && TWBull1>TWBear1)
    {       
     OpenSellStop();
    }
    
   if (OrdersTotal()<1 && TWBull < -TWLelel && TWBull>TWBear && TWBear1>TWBull1)
    {       
     OpenBuyStop();
    }
    
   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  && ((TWBear>TWLelel && TWBear>TWBull && TWBull1>TWBear1)||(TWBull< 0 && TWBull>TWBear && TWBear1>TWBull1)))
          {
           bool mod=OrderClose(OrderTicket(), OrderLots(), Bid, 3, Blue);
           DeleteOrders();
           OpenSellStop();         
          }
         else 
         if(OrderType()==OP_SELL && ((TWBull<-TWLelel && TWBull>TWBear && TWBear1>TWBull1)||(TWBull>0 && TWBull>TWBear && TWBear1>TWBull1)))
          {
           bool mod=OrderClose(OrderTicket(), OrderLots(), Ask, 3, Red);
           DeleteOrders();
           OpenBuyStop();
          }          
        }
      }
    }  
      
   return(0); 
}
//+------------------------------------------------------------------+
double fND(double d, int n=-1) 
  {  
   if (n<0) return(NormalizeDouble(d, Digits)); 
   return(NormalizeDouble(d, n)); 
  }
//+------------------------------------------------------------------+
void DeleteOrders() 
{ 
 bool del; 
 for (int i=OrdersTotal()-1; i>=0; i--) 
  {
   if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; 
   if (OrderType()==OP_BUYSTOP  ) del=OrderDelete(OrderTicket()); 
   if (OrderType()==OP_SELLSTOP ) del=OrderDelete(OrderTicket());  
  }  
}
//+------------------------------------------------------------------+
void OpenBuyStop()
{
  double StopLimits=MarketInfo(Symbol(),MODE_STOPLEVEL);
  for(int i=0;i<=Count;i++)
   {            
    int res=OrderSend(Symbol(),OP_BUYSTOP,Lots,fND(Ask+StopLimits*Point+i*Step*Point),0,0,0,"",MAGIC,0,Blue);
      if(res<0)
       {
        Print("Ордер выставлен с ошибкой: ",GetLastError());
       }
      else
        Print("Ордер выставлен успешно");
        Sleep(1000);  
      }    
}
//+------------------------------------------------------------------+
void OpenSellStop()
{
  double StopLimits=MarketInfo(Symbol(),MODE_STOPLEVEL);
  for(int i=0;i<=Count;i++)
   {            
    int res=OrderSend(Symbol(),OP_SELLSTOP,Lots,fND(Bid-StopLimits*Point-i*Step*Point),0,0,0,"",MAGIC,0,Blue);
      if(res<0)
       {
        Print("Ордер выставлен с ошибкой: ",GetLastError());
       }
      else
        Print("Ордер выставлен успешно");
        Sleep(1000);  
      }    
}
//+------------------------------------------------------------------+
avatar

AM2

  • 6 ноября 2014, 21:49
0
если последний вариант устраивает, буду смотреть что здесь можно сделать
avatar

AM2

  • 6 ноября 2014, 18:57