Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Ищи и скачивай программы из Code Base через MetaTrader. Это быстро!
Robas1000
89
Robas1000 2015.11.15 14:16 

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

 Я делаю советника с двумя индикаторами (iMA двух разных периодов) код:

//+------------------------------------------------------------------+
//|                                                        уцкку.mq4 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+

double IMA1BUF[];
double IMA2BUF[];

int OnInit()
  {
  
#property  indicator_chart_window
#property  indicator_buffers 2
#property  indicator_color1  Red
#property  indicator_color2  Blue
#property  indicator_width1  2




SetIndexBuffer(0,IMA1BUF);
SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2,clrBlue);
SetIndexBuffer(1,IMA2BUF);
SetIndexStyle (1,DRAW_LINE,STYLE_SOLID,2,clrRed);


   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
  
  

double STOP=0.5;
double TAKE=1;

int MA1PER=100;
int MA2PER=20;

int MA1SHIFT=0;
int MA2SHIFT=-2;

ArraySetAsSeries(IMA1BUF,false);
ArraySetAsSeries(IMA2BUF,false);

int COUNTEDBARS;
int HISTORY=500;

int i;



IndicatorDigits(Digits);



COUNTEDBARS=IndicatorCounted();    // Количество просчитанных баров 
   i=Bars-COUNTEDBARS-1;              // Индекс первого непосчитанного
   if (i>HISTORY-1) i=HISTORY-1;
   
 
while(i>=0)                         // Цикл по непосчитанным барам
 {
 IMA1BUF[i]=iMA(_Symbol,PERIOD_CURRENT,MA1PER,MA1SHIFT,MODE_EMA,PRICE_CLOSE,i);
      i--;                             // Расчёт индекса следующего бара
 }
 
while(i>=0)                         // Цикл по непосчитанным барам
 {
 IMA2BUF[i]=iMA(_Symbol,PERIOD_CURRENT,MA2PER,MA2SHIFT,MODE_EMA,PRICE_CLOSE,i);
      i--;                             // Расчёт индекса следующего бара
 }

//---
return;   
  }
//+------------------------------------------------------------------+

 

 Но отображается всего одна линия и только в тестере советника (он еще не доделан до конца, торговых функций в нем еще нет)): 

 

 

 

 Как сделать что-бы две линии отображалось ? Не могу найти ошибку.  И почему вообще ни одной линии не отрисовывается если установить советник на чарт ?

 

Спасибо. 

Vasyl Nosal
18201
Vasyl Nosal 2015.11.15 18:18  
Потому что советник не рисует объекты(буфера).
Vitalie Postolache
10999
Vitalie Postolache 2015.11.16 07:24  

#property должны быть ВНЕ всяких функций. Кроме того, выше уже сказали, никаких индикаторных буферов в советнике, или - или. Нужны линии, делайте индикатор, проще и удобнее - надо только "void OnTick" заменить на "int start".


На будущее, функции типа войд в штатном ретурне не нуждаются, только при необходимости принудительно закончить исполнение функции.

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