beton2011

 
Уровень 14

  Моя торговля


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


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

Рейтинг 2146



РЕКОМЕНДУЮ



Советник -AltrTrend-

Здравствуйте. Можно попросить сделать советника для индикатора на МТ4 терминал. Ниже выкладываю сам индикатор, индикатор вроде бы не перерисовывается. Все просто, надо что бы советник открывал ордера по точкам индикатора, но надо чтобы советник открывал ордер когда по всем таймфреймам от М1 до MN появятся точки в одном направлении, тогда советник открывает ордер с настраиваемым текпрофитом и стоплоссом и можно еще тралл. Если ордер закрывается по стопу, тогда советник в следующий раз открывает увеличенный лот на Klot. Еще хотелось бы чтобы стоплосс и тейкпрофит выставлялся за максимум и минимум прошлого дня, но так что бы эту функцию можно было бы отключать и самому вписывать сколько должен быть стоп и сколько тейк. Да и если можно напишите в настройках советника на английском языке, а то у меня русские слова не корректно отображаются.Вроде все, спасибо.

AltrTrend_Signal_v2_2.mq4 (3 Kb)
AltrTrend_Signal_v2_2.ex4 (9 Kb)
  • 0
  • Просмотров: 2700
  • 27 января 2015, 11:11
  • beton2011
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

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

+
0
Займусь вечером.
avatar

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

  • 27 января 2015, 11:25
+
0
Спасибо :) 
avatar

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

  • 27 января 2015, 11:34
+
0
Извините забыл дописать важную настройку в советнике. Очень хочется что бы в советнике можно было бы выбирать таймфреймы по которым советник будет ждать сигналы для открытия ордера, скажем оставить только два таймфрейма Н1 и D1 и когда на этих графиках появятся точки в одном направлении, советник сразу открывает ордер в том направлении. Спасибо
avatar

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

  • 27 января 2015, 20:19
+
0
Этот код позволяет открывать позу если индикатор в одну сторону с М1 по Д1:


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

#define MAGICMA  20150127
//--- Inputs
extern double StopLoss     = 500;
extern double TakeProfit   = 500;
extern double Slip         = 100;
extern double Lots         = 0.1;
//----
extern int    M1           = 0;
extern int    M5           = 0;
extern int    M15          = 0;
extern int    M30          = 0;
extern int    H1           = 0;
extern int    H4           = 0;
extern int    D1           = 0;
extern int    W1           = 0;
extern int    MN           = 0;
//----
extern int    K            = 30;
extern double Kstop        = 0.5;
extern int    Kperiod      = 150;
extern int    PerADX       = 7;
extern int    CountBars    = 350;
//----
int bm1,rm1,bm5,rm5,bm15,rm15,bm30,rm30,bh1,rh1,bh4,rh4,bd1,rd1,bw1,rw1,bmn1,rmn1;
//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void CheckForOpen()
  {
   int    res;
//--- go trading only for first tiks of new bar
   if(Volume[0]>1) return;                        

//--- sell conditions
   if(rm1>0 && rm5>0 && rm15>0 && rm30>0  && rh1>0 && rh4>0 && rd1>0)
     {
      res=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slip,Bid+StopLoss*Point,Bid-TakeProfit*Point,"",MAGICMA,0,Red);
     }
//--- buy conditions
   if(bm1>0 && bm5>0 && bm15>0 && bm30>0  && bh1>0 && bh4>0 && bd1>0)
     {
      res=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slip,Ask-StopLoss*Point,Ask+TakeProfit*Point,"",MAGICMA,0,Blue);
     }    
//---
  }
//+------------------------------------------------------------------+
//| Check for close order conditions                                 |
//+------------------------------------------------------------------+
void CheckForClose()
  {
//--- go trading only for first tiks of new bar
   if(Volume[0]>1) return;
//--- get Indicators 
   double AlBlue=iCustom(Symbol(),0,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,1,1);
   double AlRed=iCustom(Symbol(),0,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,0,1);

//---
   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(AlBlue>AlRed)
           {
            if(!OrderClose(OrderTicket(),OrderLots(),Bid,Slip,White))
               Print("OrderClose error ",GetLastError());
           }
         break;
        }
      if(OrderType()==OP_SELL)
        {
         if(AlRed>AlBlue)
           {
            if(!OrderClose(OrderTicket(),OrderLots(),Ask,Slip,White))
               Print("OrderClose error ",GetLastError());
           }
         break;
        }
     }
//---
  }
//+------------------------------------------------------------------+
//| OnTick function                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
   double AlBlueM1=iCustom(Symbol(),PERIOD_M1,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,0,1);
   double AlRedM1=iCustom(Symbol(),PERIOD_M1,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,1,1);
   
   double AlBlueM5=iCustom(Symbol(),PERIOD_M5,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,0,1);
   double AlRedM5=iCustom(Symbol(),PERIOD_M5,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,1,1);
   
   double AlBlueM15=iCustom(Symbol(),PERIOD_M15,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,0,1);
   double AlRedM15=iCustom(Symbol(),PERIOD_M15,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,1,1);
   
   double AlBlueM30=iCustom(Symbol(),PERIOD_M30,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,0,1);
   double AlRedM30=iCustom(Symbol(),PERIOD_M30,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,1,1);
              
   double AlBlueH1=iCustom(Symbol(),PERIOD_H1,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,0,1);
   double AlRedH1=iCustom(Symbol(),PERIOD_H1,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,1,1);
   
   double AlBlueH4=iCustom(Symbol(),PERIOD_H4,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,0,1);
   double AlRedH4=iCustom(Symbol(),PERIOD_H4,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,1,1);
   
   double AlBlueD1=iCustom(Symbol(),PERIOD_D1,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,0,1);
   double AlRedD1=iCustom(Symbol(),PERIOD_D1,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,1,1);
   
   double AlBlueW1=iCustom(Symbol(),PERIOD_W1,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,0,1);
   double AlRedW1=iCustom(Symbol(),PERIOD_W1,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,1,1);
   
   double AlBlueMN1=iCustom(Symbol(),PERIOD_MN1,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,0,1);
   double AlRedMN1=iCustom(Symbol(),PERIOD_MN1,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,1,1);            
   
   if(AlBlueM1>0) {bm1=1;rm1=0;}
   if(AlRedM1>0) {rm1=1;bm1=0;} 
   
   if(AlBlueM5>0) {bm5=1;rm5=0;}
   if(AlRedM5>0) {rm5=1;bm5=0;} 
   
   if(AlBlueM15>0) {bm15=1;rm15=0;}
   if(AlRedM15>0) {rm15=1;bm15=0;} 
   
   if(AlBlueM30>0) {bm30=1;rm30=0;}
   if(AlRedM30>0) {rm30=1;bm30=0;} 
               
   if(AlBlueH1>0) {bh1=1;rh1=0;}
   if(AlRedH1>0) {rh1=1;bh1=0;} 
   
   if(AlBlueH4>0) {bh4=1;rh4=0;}
   if(AlRedH4>0) {rh4=1;bh4=0;} 
   
   if(AlBlueD1>0) {bd1=1;rd1=0;}
   if(AlRedD1>0) {rd1=1;bd1=0;} 
   
   if(AlBlueW1>0) {bw1=1;rw1=0;}
   if(AlRedW1>0) {rw1=1;bw1=0;} 
   
   if(AlBlueMN1>0) {bmn1=1;rmn1=0;}
   if(AlRedMN1>0) {rmn1=1;bmn1=0;}             
   
   Comment(
   "\n BlueM1 ",bm1,
   "\n RedM1 ",rm1, 
   "\n BlueM5 ",bm5,
   "\n RedM5 ",rm5, 
   "\n BlueM15 ",bm15,
   "\n RedM15 ",rm15, 
   "\n BlueM30 ",bm30,
   "\n RedM30 ",rm30,            
   "\n BlueH1 ",bh1,
   "\n RedH1 ",rh1,
   "\n BlueH4 ",bh4,
   "\n RedH4 ",rh4, 
   "\n BlueD1 ",bd1,
   "\n RedD1 ",rd1, 
   "\n BlueW1 ",bw1,
   "\n RedW1 ",rw1, 
   "\n BlueMN1 ",bmn1,
   "\n RedMN1 ",rmn1); 
      
   if(OrdersTotal()<1) CheckForOpen();
   //else CheckForClose();
//---
  }
//+------------------------------------------------------------------+

avatar

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

  • 28 января 2015, 09:53
+
0
Спасибо. А советник в тестере можно прогнать? Я пробовал но выдает ошибку, выкладываю скрин ошибки. Пробовал тестировать с разными настройками но все равно ошибка. Можно еще в советник добавить увеличение лота следующего ордера после закрытия ордера по стопу первого ордера и после закрытия ордера по тейкпрофиту советник начинает все заново. Добавьте пожалуйста настройку magicnumbr.


Редактирован: 28 января 2015, 10:59
avatar

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

  • 28 января 2015, 10:56
+
0
Последняя версия тестируется без ошибок, но сигнал еще нужно подрегулировать :)  Магик там есть. Мартина добавлю.

avatar

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

  • 28 января 2015, 11:11
+
0
Переименуйте индикатор чтобы такое было название: «AltrTrend». Тогда нормально пойдет.
avatar

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

  • 28 января 2015, 11:15
+
0
Данный вариант откроет позу только при совпадении сигналов в настройках с теми что в реале:


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

#define MAGICMA  20150127
//--- Inputs
extern double StopLoss     = 500;
extern double TakeProfit   = 500;
extern double Slip         = 100;
extern double Lots         = 0.1;
//----
extern int    BuyM1        = 0;// signal = 1
extern int    BuyM5        = 0;
extern int    BuyM15       = 0;
extern int    BuyM30       = 0;
extern int    BuyH1        = 0;
extern int    BuyH4        = 0;
extern int    BuyD1        = 0;
extern int    BuyW1        = 0;
extern int    BuyMN1       = 0;
//----
extern int    SellM1       = 0;// signal = 1
extern int    SellM5       = 0;
extern int    SellM15      = 0;
extern int    SellM30      = 0;
extern int    SellH1       = 0;
extern int    SellH4       = 0;
extern int    SellD1       = 0;
extern int    SellW1       = 0;
extern int    SellMN1      = 0;
//----
extern int    K            = 30;
extern double Kstop        = 0.5;
extern int    Kperiod      = 150;
extern int    PerADX       = 7;
extern int    CountBars    = 350;
//----
int bm1,rm1,bm5,rm5,bm15,rm15,bm30,rm30,bh1,rh1,bh4,rh4,bd1,rd1,bw1,rw1,bmn1,rmn1;
//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void CheckForOpen()
  {
   int    res;
//--- go trading only for first tiks of new bar
   if(Volume[0]>1) return;                        

//--- sell conditions
   if(rm1==SellM1 && rm5==SellM5 && rm15==SellM15 && rm30==SellM30 && rh1==SellH1 && rh4==SellH4 && rd1==SellD1 && rw1==SellW1 && rmn1==SellMN1)
     {
      res=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slip,Bid+StopLoss*Point,Bid-TakeProfit*Point,"",MAGICMA,0,Red);
     }
//--- buy conditions
   if(bm1==BuyM1 && bm5==BuyM5 && bm15==BuyM15 && bm30==BuyM30 && bh1==BuyH1 && bh4==BuyH4 && bd1==BuyD1 && bw1==BuyW1 && bmn1==BuyMN1)
     {
      res=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slip,Ask-StopLoss*Point,Ask+TakeProfit*Point,"",MAGICMA,0,Blue);
     }    
//---
  }
//+------------------------------------------------------------------+
//| Check for close order conditions                                 |
//+------------------------------------------------------------------+
void CheckForClose()
  {
//--- go trading only for first tiks of new bar
   if(Volume[0]>1) return;
//--- get Indicators 
   double AlBlue=iCustom(Symbol(),0,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,1,1);
   double AlRed=iCustom(Symbol(),0,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,0,1);

//---
   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(AlBlue>AlRed)
           {
            if(!OrderClose(OrderTicket(),OrderLots(),Bid,Slip,White))
               Print("OrderClose error ",GetLastError());
           }
         break;
        }
      if(OrderType()==OP_SELL)
        {
         if(AlRed>AlBlue)
           {
            if(!OrderClose(OrderTicket(),OrderLots(),Ask,Slip,White))
               Print("OrderClose error ",GetLastError());
           }
         break;
        }
     }
//---
  }
//+------------------------------------------------------------------+
//| OnTick function                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
   double AlBlueM1=iCustom(Symbol(),PERIOD_M1,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,0,1);
   double AlRedM1=iCustom(Symbol(),PERIOD_M1,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,1,1);
   
   double AlBlueM5=iCustom(Symbol(),PERIOD_M5,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,0,1);
   double AlRedM5=iCustom(Symbol(),PERIOD_M5,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,1,1);
   
   double AlBlueM15=iCustom(Symbol(),PERIOD_M15,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,0,1);
   double AlRedM15=iCustom(Symbol(),PERIOD_M15,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,1,1);
   
   double AlBlueM30=iCustom(Symbol(),PERIOD_M30,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,0,1);
   double AlRedM30=iCustom(Symbol(),PERIOD_M30,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,1,1);
              
   double AlBlueH1=iCustom(Symbol(),PERIOD_H1,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,0,1);
   double AlRedH1=iCustom(Symbol(),PERIOD_H1,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,1,1);
   
   double AlBlueH4=iCustom(Symbol(),PERIOD_H4,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,0,1);
   double AlRedH4=iCustom(Symbol(),PERIOD_H4,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,1,1);
   
   double AlBlueD1=iCustom(Symbol(),PERIOD_D1,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,0,1);
   double AlRedD1=iCustom(Symbol(),PERIOD_D1,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,1,1);
   
   double AlBlueW1=iCustom(Symbol(),PERIOD_W1,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,0,1);
   double AlRedW1=iCustom(Symbol(),PERIOD_W1,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,1,1);
   
   double AlBlueMN1=iCustom(Symbol(),PERIOD_MN1,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,0,1);
   double AlRedMN1=iCustom(Symbol(),PERIOD_MN1,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,1,1);            
   
   if(AlBlueM1>0) {bm1=1;rm1=0;}
   if(AlRedM1>0) {rm1=1;bm1=0;} 
   
   if(AlBlueM5>0) {bm5=1;rm5=0;}
   if(AlRedM5>0) {rm5=1;bm5=0;} 
   
   if(AlBlueM15>0) {bm15=1;rm15=0;}
   if(AlRedM15>0) {rm15=1;bm15=0;} 
   
   if(AlBlueM30>0) {bm30=1;rm30=0;}
   if(AlRedM30>0) {rm30=1;bm30=0;} 
               
   if(AlBlueH1>0) {bh1=1;rh1=0;}
   if(AlRedH1>0) {rh1=1;bh1=0;} 
   
   if(AlBlueH4>0) {bh4=1;rh4=0;}
   if(AlRedH4>0) {rh4=1;bh4=0;} 
   
   if(AlBlueD1>0) {bd1=1;rd1=0;}
   if(AlRedD1>0) {rd1=1;bd1=0;} 
   
   if(AlBlueW1>0) {bw1=1;rw1=0;}
   if(AlRedW1>0) {rw1=1;bw1=0;} 
   
   if(AlBlueMN1>0) {bmn1=1;rmn1=0;}
   if(AlRedMN1>0) {rmn1=1;bmn1=0;}             
   
   Comment(
   "\n BlueM1 ",bm1,
   "\n RedM1 ",rm1, 
   "\n BlueM5 ",bm5,
   "\n RedM5 ",rm5, 
   "\n BlueM15 ",bm15,
   "\n RedM15 ",rm15, 
   "\n BlueM30 ",bm30,
   "\n RedM30 ",rm30,            
   "\n BlueH1 ",bh1,
   "\n RedH1 ",rh1,
   "\n BlueH4 ",bh4,
   "\n RedH4 ",rh4, 
   "\n BlueD1 ",bd1,
   "\n RedD1 ",rd1, 
   "\n BlueW1 ",bw1,
   "\n RedW1 ",rw1, 
   "\n BlueMN1 ",bmn1,
   "\n RedMN1 ",rmn1); 
      
   if(OrdersTotal()<1) CheckForOpen();
   //else CheckForClose();
//---
  }
//+------------------------------------------------------------------+

avatar

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

  • 28 января 2015, 10:44
+
0
Большое спасибо за помощь *good* 
avatar

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

  • 28 января 2015, 11:19
+
0
Мартина добавил: www.opentraders.ru/downloads/572/

avatar

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

  • 28 января 2015, 23:12
+
0
Здравствуйте. Советник отлично работает, вот только я не могу понять как настроить Magic. Я поставил советника на 12 валютных пар, и надо что бы советник работал по каждой паре отдельно. А сейчас получается он ждет закрытия ордера по одной валютной паре что бы открыть ордер по другой валютной паре. С увеличением лота тоже непонятно, то есть если закрылся ордер по стопу по паре GBPUSD тогда он следующий ордер увеличивает но уже по другой валютной паре по которой совпали сигналы. Выкладываю скрин ошибки

avatar

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

  • 29 января 2015, 20:17
+
0
Посмотрите как сейчас будет?


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

#define MAGICMA  20150127
//--- Inputs
extern double StopLoss     = 500;
extern double TakeProfit   = 500;
extern double Slip         = 100;
extern double Lots         = 0.1;
extern double KLot         = 2;
extern double MaxLot       = 5;
//----
extern int    BuyM1        = 0;// signal = 1
extern int    BuyM5        = 0;
extern int    BuyM15       = 0;
extern int    BuyM30       = 0;
extern int    BuyH1        = 0;
extern int    BuyH4        = 0;
extern int    BuyD1        = 0;
extern int    BuyW1        = 0;
extern int    BuyMN1       = 0;
//----
extern int    SellM1       = 1;// signal = 1
extern int    SellM5       = 1;
extern int    SellM15      = 1;
extern int    SellM30      = 1;
extern int    SellH1       = 0;
extern int    SellH4       = 0;
extern int    SellD1       = 0;
extern int    SellW1       = 0;
extern int    SellMN1      = 0;
//----
extern int    K            = 30;
extern double Kstop        = 0.5;
extern int    Kperiod      = 150;
extern int    PerADX       = 7;
extern int    CountBars    = 350;
//----
int bm1,rm1,bm5,rm5,bm15,rm15,bm30,rm30,bh1,rh1,bh4,rh4,bd1,rd1,bw1,rw1,bmn1,rmn1;
//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void CheckForOpen()
  {
   int res,p;
//--- go trading only for first tiks of new bar
   if(Volume[0]>1) return;                        
   for(int i=OrdersTotal()-1;i>=0;i--)
    {
     if(OrderSelect(i, SELECT_BY_POS))
      {  
       if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=MAGICMA) continue;       
       if (OrderType()==OP_BUY) p++;
       if (OrderType()==OP_SELL) p++;                  
      }   
    }
//--- sell conditions
   if(rm1==SellM1 && rm5==SellM5 && rm15==SellM15 && rm30==SellM30 && rh1==SellH1 && rh4==SellH4 && rd1==SellD1 && rw1==SellW1 && rmn1==SellMN1 && p<1)
     {
      res=OrderSend(Symbol(),OP_SELL,Lot(),Bid,Slip,Bid+StopLoss*Point,Bid-TakeProfit*Point,"",MAGICMA,0,Red);
     }
//--- buy conditions
   if(bm1==BuyM1 && bm5==BuyM5 && bm15==BuyM15 && bm30==BuyM30 && bh1==BuyH1 && bh4==BuyH4 && bd1==BuyD1 && bw1==BuyW1 && bmn1==BuyMN1 && p<1)
     {
      res=OrderSend(Symbol(),OP_BUY,Lot(),Ask,Slip,Ask-StopLoss*Point,Ask+TakeProfit*Point,"",MAGICMA,0,Blue);
     }    
//---
  }
//+------------------------------------------------------------------+
//| Calculate optimal lot size                                       |
//+------------------------------------------------------------------+
double Lot()
  {
   double lot;   
   if(OrdersHistoryTotal()==0)
    {
     lot=Lots;
    }             
   if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))      
     {
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)                                       
      if(OrderProfit()>0)                     
       {
        lot=Lots;  
       }
      if(OrderProfit()<=0)
        {
         lot=OrderLots()*KLot;  
        }
     }
    if(lot>MaxLot)lot=MaxLot;            
   return(lot);
  }   
//+------------------------------------------------------------------+
//| Check for close order conditions                                 |
//+------------------------------------------------------------------+
void CheckForClose()
  {
//--- go trading only for first tiks of new bar
   if(Volume[0]>1) return;
//--- get Indicators 
   double AlBlue=iCustom(Symbol(),0,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,1,1);
   double AlRed=iCustom(Symbol(),0,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,0,1);

//---
   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(AlBlue>AlRed)
           {
            if(!OrderClose(OrderTicket(),OrderLots(),Bid,Slip,White))
               Print("OrderClose error ",GetLastError());
           }
         break;
        }
      if(OrderType()==OP_SELL)
        {
         if(AlRed>AlBlue)
           {
            if(!OrderClose(OrderTicket(),OrderLots(),Ask,Slip,White))
               Print("OrderClose error ",GetLastError());
           }
         break;
        }
     }
//---
  }
//+------------------------------------------------------------------+
//| OnTick function                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
   double AlBlueM1=iCustom(Symbol(),PERIOD_M1,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,0,1);
   double AlRedM1=iCustom(Symbol(),PERIOD_M1,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,1,1);
   
   double AlBlueM5=iCustom(Symbol(),PERIOD_M5,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,0,1);
   double AlRedM5=iCustom(Symbol(),PERIOD_M5,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,1,1);
   
   double AlBlueM15=iCustom(Symbol(),PERIOD_M15,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,0,1);
   double AlRedM15=iCustom(Symbol(),PERIOD_M15,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,1,1);
   
   double AlBlueM30=iCustom(Symbol(),PERIOD_M30,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,0,1);
   double AlRedM30=iCustom(Symbol(),PERIOD_M30,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,1,1);
              
   double AlBlueH1=iCustom(Symbol(),PERIOD_H1,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,0,1);
   double AlRedH1=iCustom(Symbol(),PERIOD_H1,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,1,1);
   
   double AlBlueH4=iCustom(Symbol(),PERIOD_H4,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,0,1);
   double AlRedH4=iCustom(Symbol(),PERIOD_H4,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,1,1);
   
   double AlBlueD1=iCustom(Symbol(),PERIOD_D1,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,0,1);
   double AlRedD1=iCustom(Symbol(),PERIOD_D1,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,1,1);
   
   double AlBlueW1=iCustom(Symbol(),PERIOD_W1,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,0,1);
   double AlRedW1=iCustom(Symbol(),PERIOD_W1,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,1,1);
   
   double AlBlueMN1=iCustom(Symbol(),PERIOD_MN1,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,0,1);
   double AlRedMN1=iCustom(Symbol(),PERIOD_MN1,"AltrTrend",K,Kstop,Kperiod,PerADX,CountBars,1,1);            
   
   if(AlBlueM1>0) {bm1=1;rm1=0;}
   if(AlRedM1>0) {rm1=1;bm1=0;} 
   
   if(AlBlueM5>0) {bm5=1;rm5=0;}
   if(AlRedM5>0) {rm5=1;bm5=0;} 
   
   if(AlBlueM15>0) {bm15=1;rm15=0;}
   if(AlRedM15>0) {rm15=1;bm15=0;} 
   
   if(AlBlueM30>0) {bm30=1;rm30=0;}
   if(AlRedM30>0) {rm30=1;bm30=0;} 
               
   if(AlBlueH1>0) {bh1=1;rh1=0;}
   if(AlRedH1>0) {rh1=1;bh1=0;} 
   
   if(AlBlueH4>0) {bh4=1;rh4=0;}
   if(AlRedH4>0) {rh4=1;bh4=0;} 
   
   if(AlBlueD1>0) {bd1=1;rd1=0;}
   if(AlRedD1>0) {rd1=1;bd1=0;} 
   
   if(AlBlueW1>0) {bw1=1;rw1=0;}
   if(AlRedW1>0) {rw1=1;bw1=0;} 
   
   if(AlBlueMN1>0) {bmn1=1;rmn1=0;}
   if(AlRedMN1>0) {rmn1=1;bmn1=0;}             
   
   Comment(
   "\n BlueM1 ",bm1,
   "\n RedM1 ",rm1, 
   "\n BlueM5 ",bm5,
   "\n RedM5 ",rm5, 
   "\n BlueM15 ",bm15,
   "\n RedM15 ",rm15, 
   "\n BlueM30 ",bm30,
   "\n RedM30 ",rm30,            
   "\n BlueH1 ",bh1,
   "\n RedH1 ",rh1,
   "\n BlueH4 ",bh4,
   "\n RedH4 ",rh4, 
   "\n BlueD1 ",bd1,
   "\n RedD1 ",rd1, 
   "\n BlueW1 ",bw1,
   "\n RedW1 ",rw1, 
   "\n BlueMN1 ",bmn1,
   "\n RedMN1 ",rmn1); 
      
   if(OrdersTotal()<1) CheckForOpen();
   //else CheckForClose();
//---
  }
//+------------------------------------------------------------------+

avatar

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

  • 29 января 2015, 23:16
+
0
Здравствуйте. Сейчас советник вообще не открывает ордера, уже по 5 валютным парам совпали сигналы. Я все перепробовал. Пробовал менять цифры в настройке #define MAGICMA 20150127 и компилировал под каждую валютную пару, советник молчит.
avatar

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

  • 30 января 2015, 12:06
+
0
А нельзя ли, как-то ускорить работу советника в тестере?
avatar

  16  Krokus377 Сообщений: 226 - Андрей

  • 30 января 2015, 05:10

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