Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 80

 
Artyom Trishkin:

В тестере на другом символе? Или на демо/реал на другом символе? Или в тестере на этом символе? Или на демо/реал на этом символе?

Что из вас вытягивать-то всё приходится?

К чему это вы? Какая разница где пробовал? Вопрос в том может ли Point = 0. И если может как правильно написать код, чтобы не наткнутся на ошибку: деление на ноль?
 
LuckySith:

Сорян, я очень нуб - слабо понимаю как это
Может у тебя есть индикатор с кодом самый простецкий какой-нибудь, я уже по аналогии пойму? Потому что я не нашел

 

Вот у меня очень простой код, который ставит точечки на середину бара. Как сделать, чтобы когда я на них наводил появлялся текст ну или окошко, все равно как



#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Black
//---- input parameters
//---- buffers
double ExtMapBuffer1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_ARROW);
   SetIndexArrow(0,159);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexEmptyValue(0,0.0);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int counted_bars=IndicatorCounted();
   int limit=Bars-counted_bars;
//----  
   for(int i=limit; i>=0; i--)
     {
      double       fabody0 = fabs(Close[i]-Open[i]);
      double       fabody1 = fabs(Close[i+1]-Open[i+1]);
      double       fabody2 = fabs(Close[i+2]-Open[i+2]);
      double       fabody3 = fabs(Close[i+3]-Open[i+3]);
      double       fabody4 = fabs(Close[i+4]-Open[i+4]);
      double       fabody5 = fabs(Close[i+5]-Open[i+5]);
      double       fabody6 = fabs(Close[i+6]-Open[i+6]);
      double       fabody7 = fabs(Close[i+7]-Open[i+7]);
      if((fabody0>fabody1) && (fabody0>fabody2) && (fabody0>fabody3) && (fabody0>fabody4) && (fabody0>fabody5) && (fabody0>fabody6) &&(Volume[i]>Volume[i+1]))
      {  
         if (((Close[i]>Open[i])&&(Low[i]+(High[i]-Low[i])/2>Low[i+1]+(High[i+1]-Low[i+1])*0.9))||((Close[i]<Open[i])&&(Low[i]+(High[i]-Low[i])/2<Low[i+1]+(High[i+1]-Low[i+1])*0.1)))
         ExtMapBuffer1[i]=(iHigh(Symbol(),0,i)+iLow(Symbol(),0,i))/2;
      }
     }
//----
   return(0);
  }
Пробуй
Файлы:
gmxdk8j.mq4  6 kb
 
Gevorg Hakobyan:
К чему это вы? Какая разница где пробовал? Вопрос в том может ли Point = 0. И если может как правильно написать код, чтобы не наткнутся на ошибку: деление на ноль?
Ну как хотите.
Значит перед делением проверяйте делитель на ноль.
Думал, вам интересна причина, а не следствие, и соответствующий корявый костыль.
 
Artyom Trishkin:
Ну как хотите.
Значит перед делением проверяйте делитель на ноль.
Думал, вам интересна причина, а не следствие, и соответствующий корявый костыль.
Я не читал весь диалог, но что-то подозреваю проблему печати пятого знака после запятой.
 
Alexey Viktorov:
Я не читал весь диалог, но что-то подозреваю проблему печати пятого знака после запятой.
Да нет, он делит на Point() и получает деление на ноль.
Вот и пытаюсь добиться внятного ответа как он и где берёт данные по символу.

 
Artyom Trishkin:
Да нет, он делит на Point() и получает деление на ноль.
Вот и пытаюсь добиться внятного ответа как он и где берёт данные по символу.

if(v=="NZD")
                              {
                              h=(iClose("NZDUSD",p,b)-iOpen("NZDUSD",p,b))/MarketInfo("NZDUSD",MODE_POINT)+
                                 (iOpen("EURNZD",p,b)-iClose("EURNZD",p,b))/MarketInfo("EURNZD",MODE_POINT)+
                                 (iOpen("GBPNZD",p,b)-iClose("GBPNZD",p,b))/MarketInfo("GBPNZD",MODE_POINT)+
                                 (iOpen("AUDNZD",p,b)-iClose("AUDNZD",p,b))/MarketInfo("AUDNZD",MODE_POINT)+
                                 (iClose("NZDJPY",p,b)-iOpen("NZDJPY",p,b))/MarketInfo("NZDJPY",MODE_POINT)+
                                 (iClose("NZDCAD",p,b)-iOpen("NZDCAD",p,b))/MarketInfo("NZDCAD",MODE_POINT)+
                                 (iClose("NZDCHF",p,b)-iOpen("NZDCHF",p,b))/MarketInfo("NZDCHF",MODE_POINT);
                              }
 
Alexey Viktorov:
Я не читал весь диалог, но что-то подозреваю проблему печати пятого знака после запятой.
А проблема может быть в этом?
 
Gevorg Hakobyan:
А проблема может быть в этом?
Нет. Это только невидимость пятого знака при печати и в алертах.
 
Alekseu Fedotov:
Пробуй
В целом то что надо, но проблема в том, что описание довольно большое будет, а таким методом можно буквально пару тройку слов написать - остальное просто не отображается
 

Здравствуйте.

Прошу помощи.

Сейчас лот каждого следующего ордера увеличивается так 1, 2, 3, 4, 5…

Хочу, чтобы увеличивался лот не каждого ордера, а с шагом 3,  так  1, 1, 1, 2, 2, 2, 3, 3, 3…


extern double   LotStop        = 0.01;
extern double   Plus_LotStop   = 0.01;
extern double   Plus_N_ORD  = 3;        //каждые N ордеров
void OnTick()
  {
//---
      for (int i=1; i<=OrdersStop; i++)
   {
         if((Close[1]<Open[1]&&Close[2]>Open[2]&&NumberOfPositions(Symbol(), -1,_Magic)<1))
         {
            OPENORDER (OP_BUYSTOP,PriceBS,LOTs,_Magic,i);
            numB++;
            PriceBS = NormalizeDouble(PriceBS+Step_Stop*Point,Digits);
          
            OPENORDER (OP_SELLSTOP,PriceSS,LOTs,_Magic,i);
            numS++;
            PriceSS = NormalizeDouble(PriceSS-Step_Stop*Point,Digits);
         }
      
      LOTs=LOTs+Plus_LotStop;
      }
  }
Причина обращения: