Советник, icustom и индикатор

viwm

Новичок форума
Добрый день, есть мысль реализовать советник по сигналам индикатора, но не знаю как сделать. Советник должен после получения сигнала от индикатора, хотя бы по 2 минимальным точкам, открыть by или sell. Сигнал от индикатора отображается в виде горизонтальных точек.

Код индикатора
PHP:
#property copyright "Copyright © 2005, klot"
#property link      "[email protected]"

#property indicator_chart_window 
#property indicator_buffers 2
#property indicator_color1 Blue
#property indicator_color2 Red
#property indicator_width1 2
#property indicator_width2 2

extern int Risk = 5;
extern int CandleTF = 240;
extern bool AlertOn = TRUE;
extern bool EmailOn = FALSE;
double g_ibuf_92[];
double g_ibuf_96[];
int gia_100[];
int gi_104 = 0;

int init() {

   SetIndexStyle(0,DRAW_ARROW);
   SetIndexArrow(0, 159);
   SetIndexBuffer(0, g_ibuf_92);
   SetIndexEmptyValue(0, 0.0);
   
   SetIndexStyle(1, DRAW_ARROW);
   SetIndexArrow(1, 159);
   SetIndexBuffer(1, g_ibuf_96);
   SetIndexEmptyValue(1, 0.0);
   
   if (Period() > CandleTF) {
      Alert("DT-ZigZag: Please set to a higher TF ", CandleTF);
      return (0);
   }
   ArrayCopySeries(gia_100, 5, Symbol(), CandleTF);
   return (0);
}

int deinit() {
   return (0);
}

int start() {
   int count_0;
   double icustom_4;
   int li_12 = IndicatorCounted();
   int li_16 = 300;
   if (li_12 < 0) return (-1);
   if (li_12 > 0) li_12--;
   li_16 = Bars - li_12;
   for (int index_20 = 0; index_20 < li_16; index_20++) {
      if (Time[index_20] >= gia_100[0]) count_0 = 0;
      else {
         count_0 = ArrayBsearch(gia_100, Time[index_20 - 1], WHOLE_ARRAY, 0, MODE_DESCEND);
         if (Period() <= CandleTF) count_0++;
      }
      for (int li_24 = count_0; li_24 < count_0 + 100; li_24++) {
         icustom_4 = iCustom(NULL, CandleTF, "ZigZag", Risk, 5, 3, 0, li_24 + 1);
         if (icustom_4 != 0.0) break;
      }
      if (iClose(NULL, 0, index_20 + 1) <= icustom_4) g_ibuf_96[index_20] = icustom_4;
      else g_ibuf_96[index_20] = 0.0;
      if (iClose(NULL, 0, index_20 + 1) >= icustom_4) g_ibuf_92[index_20] = icustom_4;
      else g_ibuf_92[index_20] = 0.0;
      WindowRedraw();
   }
   if (g_ibuf_92[1] > 0.0 && gi_104 < 1) {
      if (AlertOn) Alert("Buy Alert on " + Symbol() + "[" + Period() + "m]");
      if (EmailOn) SendMail("Buy Alert!", "Buy alert on " + Symbol() + "[" + Period() + "m]");
      gi_104 = 1;
   } else {
      if (g_ibuf_96[1] > 0.0 && gi_104 > -1) {
         if (AlertOn) Alert("Sell Alert on " + Symbol() + "[" + Period() + "m]");
         if (EmailOn) SendMail("Sell Alert!", "Sell alert on " + Symbol() + "[" + Period() + "m]");
         gi_104 = -1;
      }
   }
   return (0);
}

Код советника (пока только такой)

PHP:
//+------------------------------------------------------------------+
//|                                                   test_robot.mq4 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
int ticket =0;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
 
   double L_0 =iCustom(Symbol(),0,"Buy-Sell_Alerts_test",0,0);
   double L_1 =iCustom(Symbol(),0,"Buy-Sell_Alerts_test",1,0);
   //здесь условие для покупки
   if (L_0>L_1) 
   {
   //OrderClose(0,1,Bid,2);
   ticket=OrderSend(Symbol(),OP_BUY,1,Ask,4,0,0);
   
   }
   //здесь условие для продажи
   if (L_0<L_1) 
   {
  // OrderClose(0,1,Bid,2);
   ticket=OrderSend(Symbol(),OP_SELL,1,Bid,4,0,0);
   
   }
//----
   return(0);
  }
//+------------------------------------------------------------------+

Жду хоть какую-либо помощь
 

Вложения

  • Безымянный.jpg
    Безымянный.jpg
    153,4 КБ · Просмотры: 677
  • Buy-Sell_Alerts_test.mq4
    2,4 КБ · Просмотры: 176
  • test1.mq4
    1,8 КБ · Просмотры: 97
  • ZigZag.mq4
    6,3 КБ · Просмотры: 81
Последнее редактирование модератором:

AlexeyVik

Программист mql4 mql5
А какую помощь ты ждёшь?
Написать сов или подсказать как правильно сделать?
Если второе, то вот моё мнение.
Судя по скрину, тебе надо открыть бай когда на первом баре синяя точка, а на втором красная. Или открыть селл когда на первом баре красная точка а на втором синяя.
Вот исходя из этого и пиши условие. Соответственно тебе надо 4 переменных. Две для 0-го буфера (1 и 2 бар) и две для 1-го (1 и 2 бар)
Хочу надеяться, что такой подсказки достаточно.

ps: Хотя учитывая, что здесь задействован ZigZag надо обратить внимание на сколько баров взад появляются точки. Такое быть может, хотя и не обязательно. Я никогда не следил за работой
ZigZag`a
 
Последнее редактирование:

viwm

Новичок форума
AlexeyVik, да любая помощь не помешает. Конечно буду пытаться кодить, но здесь иду маленькими шагами.
Если вообще иду...

А как можно получить количество например первых 2-3 красных точек, неужели сам индикатор придется впихать в советник, так как прорисовка происходит в индикаторе?
 
Последнее редактирование:

viwm

Новичок форума
Пока получился такой вот код

PHP:
//+------------------------------------------------------------------+
//|                                                   test_robot.mq4 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
int ticket =0;
extern double Lot = 1;
extern int Stop_Loss = 24;
extern int Take_Profit = 21;
extern int magic = 7352;
extern int Slippage = 2; 
extern string Indicator = "Buy-Sell_Alerts_test"; 
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
 
   while (!IsTradeAllowed()) Sleep(2000);
  
   
   double arrow_up =iCustom(Symbol(),0,"Buy-Sell_Alerts_test",5,240,true,false,0,1);
   double arrow_down =iCustom(Symbol(),0,"Buy-Sell_Alerts_test",5,240,true,false,1,1);
   
   
   double SLbuy=0, SLsell=0,TPbuy=0,TPsell=0; 
   if(Stop_Loss>0) 
   {
   SLbuy=Ask-Stop_Loss*Point; 
   SLsell=Bid+Stop_Loss*Point;
   }
   if(Take_Profit>0) 
   {
   TPbuy=Ask+Take_Profit*Point;
   TPsell=Bid-Take_Profit*Point;
   }
   
   if(OrdersTotal()<1)
   {
   if(arrow_up>0) OrderSend(Symbol(),OP_BUY,Lot,Ask,Slippage,SLbuy,TPbuy,"Buy-Sell_Alerts_test",0,Green);   
   if(arrow_down>0) OrderSend(Symbol(),OP_SELL,Lot,Bid,Slippage,SLsell,TPsell,"Buy-Sell_Alerts_test",0,Red);
   } 
//----
   return(0);
  }
//+------------------------------------------------------------------+

Проблема с точками всё ещё остается:question:
 
Последнее редактирование модератором:

expforex

Программиров
AlexeyVik, да любая помощь не помешает. Конечно буду пытаться кодить, но здесь иду маленькими шагами.
Если вообще иду...

А как можно получить количество например первых 2-3 красных точек, неужели сам индикатор придется впихать в советник, так как прорисовка происходит в индикаторе?

Кодить можно по шаблону, если навыки в программировании пока еще отсутствуют.

ссылка на тему - Советник за 5 минут в подписи.
 
  • Like
Реакции: viwm

AlexeyVik

Программист mql4 mql5
Пока получился такой вот код
PHP:
//+------------------------------------------------------------------+
//|                                                   test_robot.mq4 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
int ticket =0;
extern double Lot = 1;
extern int Stop_Loss = 24;
extern int Take_Profit = 21;
extern int magic = 7352;
extern int Slippage = 2; 
extern string Indicator = "Buy-Sell_Alerts_test"; 
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
 
   while (!IsTradeAllowed()) Sleep(2000);
  
   
   double arrow_up =iCustom(Symbol(),0,"Buy-Sell_Alerts_test",5,240,true,false,0,1);
   double arrow_down =iCustom(Symbol(),0,"Buy-Sell_Alerts_test",5,240,true,false,1,1);
   
   
   double SLbuy=0, SLsell=0,TPbuy=0,TPsell=0; 
   if(Stop_Loss>0) 
   {
   SLbuy=Ask-Stop_Loss*Point; 
   SLsell=Bid+Stop_Loss*Point;
   }
   if(Take_Profit>0) 
   {
   TPbuy=Ask+Take_Profit*Point;
   TPsell=Bid-Take_Profit*Point;
   }
   
   if(OrdersTotal()<1)
   {
   if(arrow_up>0) OrderSend(Symbol(),OP_BUY,Lot,Ask,Slippage,SLbuy,TPbuy,"Buy-Sell_Alerts_test",0,Green);   
   if(arrow_down>0) OrderSend(Symbol(),OP_SELL,Lot,Bid,Slippage,SLsell,TPsell,"Buy-Sell_Alerts_test",0,Red);
   } 
//----
   return(0);
  }
//+------------------------------------------------------------------+
Проблема с точками всё ещё остается:question:

У меня конечно много терпения, но оно не безгранично когда я подсказываю, что надо ЧЕТЫРЕ элемента для сравнения. ДВА для синих точек и ДВА для красных... У тебя остаётся всего два... Что ты хочешь услышать в ответ???
 
  • Like
Реакции: viwm

viwm

Новичок форума
PHP:
//+------------------------------------------------------------------+
//|                                                   test_robot.mq4 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
int ticket =0;

extern double Lot = 1;
extern int Stop_Loss = 25;
extern int Take_Profit = 25;
extern int magic = 7352;
extern int Slippage = 2; 
extern string Indicator = "Buy-Sell_Alerts_test"; 
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
 
   while (!IsTradeAllowed()) Sleep(2000);
  
   
   double arrow_up_blue1 =iCustom(Symbol(),0,"Buy-Sell_Alerts_test",5,240,true,false,0,1);
   double arrow_up_blue2 =iCustom(Symbol(),0,"Buy-Sell_Alerts_test",5,240,true,false,0,1);
   
   double arrow_down_red1 =iCustom(Symbol(),0,"Buy-Sell_Alerts_test",5,240,true,false,1,1);
   double arrow_down_red2 =iCustom(Symbol(),0,"Buy-Sell_Alerts_test",5,240,true,false,1,1);
   
   double SLbuy=0, SLsell=0,TPbuy=0,TPsell=0; 
   if(Stop_Loss>0) 
   {
   SLbuy=Ask-Stop_Loss*Point; 
   SLsell=Bid+Stop_Loss*Point;
   }
   if(Take_Profit>0) 
   {
   TPbuy=Ask+Take_Profit*Point;
   TPsell=Bid-Take_Profit*Point;
   }
   
   if(OrdersTotal()<1)
   {
   if((arrow_up_blue1>0) && (arrow_up_blue2>0)) 
   {
   OrderClose(0,1,Bid,2); 
  
   OrderSend(Symbol(),OP_BUY,Lot,Ask,Slippage,SLbuy,TPbuy,"Buy-Sell_Alerts_test",0,Green);
   }   
   
   if((arrow_down_red1>0) && (arrow_down_red2>0)) 
   {
   OrderClose(0,1,Bid,2);
   OrderSend(Symbol(),OP_SELL,Lot,Bid,Slippage,SLsell,TPsell,"Buy-Sell_Alerts_test",0,Red);
   }
   
   } 
//----
   return(0);
  }
//+------------------------------------------------------------------+

Мне не ясно, как double arrow_up_blue1 и double arrow_up_blue2 будут различаться, вторую точку определить самому через через-какое то время заново? Или в переменную ее значение само запишется?
 
Последнее редактирование модератором:

expforex

Программиров
PHP:
//+------------------------------------------------------------------+ 
//|                                                   test_robot.mq4 | 
//|                        Copyright 2013, MetaQuotes Software Corp. | 
//|                                        http://www.metaquotes.net | 
//+------------------------------------------------------------------+ 
#property copyright "Copyright 2013, MetaQuotes Software Corp." 
#property link      "http://www.metaquotes.net" 
int ticket =0; 

extern double Lot = 1; 
extern int Stop_Loss = 25; 
extern int Take_Profit = 25; 
extern int magic = 7352; 
extern int Slippage = 2;  
extern string Indicator = "Buy-Sell_Alerts_test";  
//+------------------------------------------------------------------+ 
//| expert initialization function                                   | 
//+------------------------------------------------------------------+ 
int init() 
  { 
//---- 
    
//---- 
   return(0); 
  } 
//+------------------------------------------------------------------+ 
//| expert deinitialization function                                 | 
//+------------------------------------------------------------------+ 
int deinit() 
  { 
//---- 
    
//---- 
   return(0); 
  } 
//+------------------------------------------------------------------+ 
//| expert start function                                            | 
//+------------------------------------------------------------------+ 
int start() 
  { 
//---- 
  
   while (!IsTradeAllowed()) Sleep(2000); 
   
    
   double arrow_up_blue1 =iCustom(Symbol(),0,"Buy-Sell_Alerts_test",5,240,true,false,0,1); 
   double arrow_up_blue2 =iCustom(Symbol(),0,"Buy-Sell_Alerts_test",5,240,true,false,0,2); 
    
   double arrow_down_red1 =iCustom(Symbol(),0,"Buy-Sell_Alerts_test",5,240,true,false,1,1); 
   double arrow_down_red2 =iCustom(Symbol(),0,"Buy-Sell_Alerts_test",5,240,true,false,1,2); 
    
   double SLbuy=0, SLsell=0,TPbuy=0,TPsell=0;  
   if(Stop_Loss>0)  
   { 
   SLbuy=Ask-Stop_Loss*Point;  
   SLsell=Bid+Stop_Loss*Point; 
   } 
   if(Take_Profit>0)  
   { 
   TPbuy=Ask+Take_Profit*Point; 
   TPsell=Bid-Take_Profit*Point; 
   } 
    
   if(OrdersTotal()<1) 
   { 
   if((arrow_up_blue1>0) && (arrow_down_red2>0))  
   { 
   OrderClose(0,1,Bid,2);  
   
   OrderSend(Symbol(),OP_BUY,Lot,Ask,Slippage,SLbuy,TPbuy,"Buy-Sell_Alerts_test",0,Green); 
   }    
    
   if((arrow_down_red1>0) && (arrow_up_blue2>0))  
   { 
   OrderClose(0,1,Bid,2); 
   OrderSend(Symbol(),OP_SELL,Lot,Bid,Slippage,SLsell,TPsell,"Buy-Sell_Alerts_test",0,Red); 
   } 
    
   }  
//---- 
   return(0); 
  }
 
Последнее редактирование модератором:

viwm

Новичок форума
I`l be back

код робота

PHP:
//======Для робота=====================================================
#property show_inputs

extern int     stoploss    = 0,        //уровень выставления SL, если 0, то SL не выставляется
               takeprofit  = 0,        //уровень выставления TP, если 0, то TP не выставляется
               Magic       = 123456;   //уникальный номер ордера
extern bool    SELL        = false,    //открыть ордер SELL
               BUY         = false;    //открыть ордер BUY
extern double  Lot         = 0.1;      //объем ордера
extern int     slippage    = 3;        //Максимально допустимое отклонение цены для рыночных ордеров
extern bool    startorders = false;
double SL,TP;
int ticket =0;  
//--------------------------------------------------------------------

//=========Функция для робота============================================ 
void OPENORDER(string ord)
{
   int error,err;
   while (true)
   {  error=true;
      if (ord=="Buy" ) error=OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),slippage,SL,TP,"BUY",Magic,0,Blue);
      if (ord=="Sell") error=OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),slippage,SL,TP,"SELL",Magic,0,Red);
      if (error==-1) //неудачная покупка OK
      {  
         ShowERROR();
         err++;Sleep(2000);RefreshRates();
      }
      if (error || err >10) return;
   }
return;
}                  
//-----------------------------------------------------------------------

//==================Функция для робота===================================
void ShowERROR()
{
   int err=GetLastError();
   switch ( err )
   {                  
      case 1:   return;
      case 2:   Alert("Нет связи с торговым сервером ",Symbol());return;
      case 3:   Alert("Error неправильные параметры ",Symbol());return;
      case 130: Alert("Error близкие стопы   Ticket ",Symbol());return;
      case 134: Alert("Недостаточно денег   ",Symbol());return;
      case 146: Alert("Error Подсистема торговли занята ",Symbol());return;
      case 129: Alert("Error Неправильная цена ",Symbol());return;
      case 131: Alert("Error Неправильный объем ",Symbol());return;
      case 4200:Alert("Error Объект уже существует ",Symbol());return;
      default:  Alert("Error  " ,err," ",Symbol());return;
   }
}
//--------------------------------------------------------------------


//+------------------------------------------------------------------+ 
//| expert initialization function                                   | 
//+------------------------------------------------------------------+ 
int init() 
  { 
//---- 
    
//---- 
   return(0); 
  } 
//+------------------------------------------------------------------+ 

//| expert deinitialization function                                 | 
//+------------------------------------------------------------------+ 
int deinit() 
  { 
//---- 
    
//---- 
   return(0); 
  } 

//+------------------------------------------------------------------+ 
//| expert start function                                            | 
//+------------------------------------------------------------------+ 
int start() 
  { 
//---- 
   while (!IsTradeAllowed()) Sleep(2000);  
   double arrow_up_blue1 =iCustom(Symbol(),0,"Buy-Sell_Alerts_test",5,240,true,false,0,1); 
   double arrow_up_blue2 =iCustom(Symbol(),0,"Buy-Sell_Alerts_test",5,240,true,false,0,2); 
   double arrow_down_red1 =iCustom(Symbol(),0,"Buy-Sell_Alerts_test",5,240,true,false,1,1); 
   double arrow_down_red2 =iCustom(Symbol(),0,"Buy-Sell_Alerts_test",5,240,true,false,1,2); 
    
   if (!startorders)
   {  
       if((arrow_up_blue1>0) && (arrow_up_blue2>0))  
        { 
         Alert("Движение вниз ", arrow_up_blue1, "  ",arrow_up_blue2, "  ");
         SELL=true;
         BUY=false;
        }    
    
      if((arrow_down_red1<0) && (arrow_down_red2<0))  
       { 
         Alert("Движение вверх",arrow_down_red1, " ",arrow_down_red2);
         BUY=true;
         SELL=false;
       } 
  }
  
   if (startorders)
   {
      BUY=false;
      SELL=false;  
   }
    
  if (BUY)
   {
      if (takeprofit!=0) TP  = NormalizeDouble(Ask + takeprofit*Point,Digits); else TP=0;
      if (stoploss!=0)   SL  = NormalizeDouble(Ask - stoploss*Point,Digits); else SL=0;     
      OPENORDER ("Buy");
   }
   if (SELL)
   {  
      if (takeprofit!=0) TP = NormalizeDouble(Bid - takeprofit*Point,Digits); else TP=0;
      if (stoploss!=0)   SL = NormalizeDouble(Bid + stoploss*Point,Digits);  else SL=0;              
      OPENORDER ("Sell");
   }
  
//---- 
   return(0); 
  }


Ну и сам вопрос. Как все-таки при появлении синих 2 точек открыть на покупку, при появлении 2 красных - на продажу. Больше интересует код
PHP:
 if((arrow_up_blue1>0) && (arrow_up_blue2>0))  
        { 
         Alert("Движение вниз ", arrow_up_blue1, "  ",arrow_up_blue2, "  ");
         SELL=true;
         BUY=false;
        }

С чем сравнивать arrow_up_blue1>0) && (arrow_up_blue2>0. В данном случае 0, но уверен, что здесь должны стоять другие цифры. Но что именно? :fa:
 
Последнее редактирование модератором:

viwm

Новичок форума
Ответьте хотя бы на этот вопрос. На сайте разобрана установка связи между советником и индикатором.
_http://forexlab.ru/sovetnik-i-polzovatelskoy-indikator.html/comment-page-1/
Так вот откуда в коде
PHP:
(trm > 1000000 && trm1 < 1000000))
бралось значение 1000000? Или это рандом?
 
Последнее редактирование модератором:

expforex

Программиров
Ответьте хотя бы на этот вопрос. На сайте разобрана установка связи между советником и индикатором.
_http://forexlab.ru/sovetnik-i-polzovatelskoy-indikator.html/comment-page-1/
Так вот откуда в коде
PHP:
(trm > 1000000 && trm1 < 1000000))
бралось значение 1000000? Или это рандом?

а может в индикаторе такие значения?

ну например я ставлю идентификатор на индикатор в виде буфера = 777
Т.е. какое-то число для обозначения что это сигнал.

Другими словами вы выложили выдранные строчки из кода.
 
Последнее редактирование модератором:

viwm

Новичок форума
а может в индикаторе такие значения?

ну например я ставлю идентификатор на индикатор в виде буфера = 777
Т.е. какое-то число для обозначения что это сигнал.

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

Возьмем этот же кусок кода
PHP:
double arrow_up_blue1 =iCustom(Symbol(),0,"Buy-Sell_Alerts_test",5,240,true,false,0,1); 
double arrow_up_blue2 =iCustom(Symbol(),0,"Buy-Sell_Alerts_test",5,240,true,false,0,2); 
double arrow_down_red1 =iCustom(Symbol(),0,"Buy-Sell_Alerts_test",5,240,true,false,1,1); 
double arrow_down_red2 =iCustom(Symbol(),0,"Buy-Sell_Alerts_test",5,240,true,false,1,2);



При таком объявлении во время получения сигнала сравнение идет конкретно с каким-то указанным числом
PHP:
if((arrow_up_blue1>0) && (arrow_up_blue2>0))
или же сравнивается с нулем, так как если получен сигнал, то уже это и считается как ">0" или "<0", если получена ошибка?
 
Последнее редактирование:

expforex

Программиров
Если это идентификатор для сигнала, то он разве не должен быть приравнен к переменной (а здесь сравнивается). Впрочем понятно, тут, разбираем чужой код.

Возьмем этот же кусок кода
PHP:
double arrow_up_blue1 =iCustom(Symbol(),0,"Buy-Sell_Alerts_test",5,240,true,false,0,1); 
double arrow_up_blue2 =iCustom(Symbol(),0,"Buy-Sell_Alerts_test",5,240,true,false,0,2); 
double arrow_down_red1 =iCustom(Symbol(),0,"Buy-Sell_Alerts_test",5,240,true,false,1,1); 
double arrow_down_red2 =iCustom(Symbol(),0,"Buy-Sell_Alerts_test",5,240,true,false,1,2);



При таком объявлении во время получения сигнала сравнение идет конкретно с каким-то указанным числом
PHP:
if((arrow_up_blue1>0) && (arrow_up_blue2>0))
или же сравнивается с нулем, так как если получен сигнал, то уже это и считается как ">0" или "<0", если получена ошибка?

Это стандартная инициализация сигналов, у каждого индикатора есть свои значения для сигнала,

в данном примере - если значение буфера больше 0 - значит есть точка, если = 0 значит точки нет.
 

viwm

Новичок форума
Спасибо за ответы, expforex.

следующий этап - дополнение кода.
 

viwm

Новичок форума
Всем добрый вечер. Получился в общем такой советник. Уже не помню, какие библиотеки там используются, поэтому в архив вложил несколько папок, может кому нужны будут при запуске советника.
Индикаторы все нужны.
Тестировал на USDJPY, H1.

Ну и сам вопрос.
Временами при торговле на одной полосе открывает 2 сделки, одна из которых получается убыточной. Можно ли как-то это запрограммировать так, чтобы на одной полосе была открыта только одна сделка.
Приветствуются и письменные, и запрограммированные предложения.
 

Вложения

  • Советник.rar
    1,3 МБ · Просмотры: 240
  • 1.jpg
    1.jpg
    161,7 КБ · Просмотры: 230
  • 2.jpg
    2.jpg
    156,8 КБ · Просмотры: 150
  • 3.jpg
    3.jpg
    148,8 КБ · Просмотры: 132
  • 4.jpg
    4.jpg
    148,7 КБ · Просмотры: 154
  • 5.jpg
    5.jpg
    151,6 КБ · Просмотры: 172
Последнее редактирование:

Warstep

Местный житель
не хватает индюка, пишет:
Cannot open file 'E:\MetaTrader - E-Global Trade & Finance Group\MetaTrader - E-Global Trade & Finance Group\experts\indicators\PBF_Scalper_Show_Me.ex4' on the GBPUSD,H1

а так вроде тестится, только медленно
выложи индюк, что бы ни чего не напрягало...
 
  • Like
Реакции: viwm
Верх