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

  • Автор темы Автор темы viwm
  • Дата начала Дата начала

viwm

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

Код индикатора
PHP:
Expand Collapse Copy
#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:
Expand Collapse Copy
//+------------------------------------------------------------------+
//|                                                   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
    Buy-Sell_Alerts_test.mq4
    2,4 КБ · Просмотры: 176
  • test1.mq4
    test1.mq4
    1,8 КБ · Просмотры: 97
  • ZigZag.mq4
    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:
Expand Collapse Copy
//+------------------------------------------------------------------+
//|                                                   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:
Expand Collapse Copy
//+------------------------------------------------------------------+
//|                                                   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:
Expand Collapse Copy
//+------------------------------------------------------------------+
//|                                                   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:
Expand Collapse Copy
//+------------------------------------------------------------------+ 
//|                                                   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:
Expand Collapse Copy
//======Для робота=====================================================
#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:
Expand Collapse Copy
 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:
Expand Collapse Copy
(trm > 1000000 && trm1 < 1000000))
бралось значение 1000000? Или это рандом?
 
Последнее редактирование модератором:

expforex

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

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

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

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

viwm

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

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

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

Возьмем этот же кусок кода
PHP:
Expand Collapse Copy
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:
Expand Collapse Copy
if((arrow_up_blue1>0) && (arrow_up_blue2>0))
или же сравнивается с нулем, так как если получен сигнал, то уже это и считается как ">0" или "<0", если получена ошибка?
 
Последнее редактирование:

expforex

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

Возьмем этот же кусок кода
PHP:
Expand Collapse Copy
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:
Expand Collapse Copy
if((arrow_up_blue1>0) && (arrow_up_blue2>0))
или же сравнивается с нулем, так как если получен сигнал, то уже это и считается как ">0" или "<0", если получена ошибка?

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

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

viwm

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

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

viwm

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

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

Вложения

  • Советник.rar
    Советник.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
Верх