Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 536

 
nekadabra:
Подскажите, плиз, совместима ли Win 8 с MT 4 и MT 5? Спрашиваю, потому что у меня мак и думаю, с какой ОС покупать комп. Один человек даже скриншот показывал, на котором видно, что на восьмерке у него MT 4 работает. Но так как некоторые товарищи утверждают, что полной совместимости нет, приходится уточнять... Спасибо.

Win 8 совместима с MT 4 и 5.
 

Доброго времени суток!

Возникла проблема с программой-индикатором, автор утверждает, что индикатор исправен, а на деле график не отображается, - в чем проблема?

#property copyright "Copyright © 2006, Profitrader."
#property link      "profitrader@inbox.ru"
//----
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Red
//---- input parameters
extern int FastMAPeriod = 3;
extern int SlowMAPeriod = 15;
extern string SecondMarket = "GOLD";
extern bool MarketsDirectCorrelation = true;
//---- buffers
double [];
double Spread[];
double FastEMA[];
double SlowEMA[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   string Correlation = "Invert Correlation";
   if(MarketsDirectCorrelation == TRUE) 
       Correlation = "Direct Correlation";
   IndicatorShortName("Will-Spread(" + FastMAPeriod + "," + SlowMAPeriod + 
                      "," + SecondMarket + "," + Correlation + ")");
   IndicatorDigits(Digits + 2);
   IndicatorBuffers(4);
   SetIndexBuffer(0, WillSpread);
   SetIndexBuffer(1, Spread);
   SetIndexBuffer(2, FastEMA);
   SetIndexBuffer(3, SlowEMA);
   SetIndexStyle(0, DRAW_LINE);
   SetIndexLabel(0, "W-S");
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int i, counted_bars = IndicatorCounted();
//---- check for possible errors
   if(counted_bars < 0) 
       return(-1);
//---- last counted bar will be recounted
   if(counted_bars > 0) 
       counted_bars--; 
   int limit = Bars - counted_bars;
   if(MarketsDirectCorrelation == TRUE)
     {
       for(i = 0; i < limit; i++)
           Spread[i] = iClose(SecondMarket, 0, i) / Close[i]*100;
     }
   else
     {
       for(i = 0; i < limit; i++)
           Spread[i] = Close[i] / iClose(SecondMarket, 0, i)*100;
     }
   for(i = limit - 1; i >= 0; i--)
     {
       FastEMA[i] = iMAOnArray(Spread, 0, FastMAPeriod, 0, MODE_EMA, i);
       SlowEMA[i] = iMAOnArray(Spread, 0, SlowMAPeriod, 0, MODE_EMA, i);
       WillSpread[i] = FastEMA[i] - SlowEMA[i];
     }
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
AlexMikash:

Доброго времени суток!

Возникла проблема с программой-индикатором, автор утверждает, что индикатор исправен, а на деле график не отображается, - в чем проблема?

Проблема в этих строках

   int i, counted_bars = IndicatorCounted();
//---- check for possible errors
   if(counted_bars < 0) 
       return(-1);
//---- last counted bar will be recounted
   if(counted_bars > 0) 
       counted_bars--; 
   int limit = Bars - counted_bars;
В новом компиляторе выдаёт ошибку при выполнении, а при компиляции всё ok. Пусть автор прогонет его в отладчике и сразу увидит проблему.
 
AlexeyVik:

Проблема в этих строках

В новом компиляторе выдаёт ошибку при выполнении, а при компиляции всё ok. Пусть автор прогонет его в отладчике и сразу увидит проблему.


Проблем нет, все работает. Достаточно восстановить описание буферов

//---- buffers
double [];
double Spread[];
double FastEMA[];
double SlowEMA[];

Проблема в инструменте по умолчанию. Вернее всего нет инструмента GOLD, если поставить другой инструмент то все в порядке


 
Что означает желтый цвет значка вещания сигнала в метатрейдере? Что сигнал временно не вещается? И почему некоторых сигналов, которые я могу видеть сейчас в терминале, в данный момент нет в перечне на сайте mql5.com?
 
Vinin:


Проблем нет, все работает. Достаточно восстановить описание буферов

Проблема в инструменте по умолчанию. Вернее всего нет инструмента GOLD, если поставить другой инструмент то все в порядке



Видите ли в чем дело, мне крайне Важен инструмент GOLD, как его можно подципить к терминалу?
 
AlexMikash:

Видите ли в чем дело, мне крайне Важен инструмент GOLD, как его можно подципить к терминалу?

Или он есть, или его нет. Все зависит от ДЦ. Предоставляет он такой инструмент или нет.
 
Vinin:

Или он есть, или его нет. Все зависит от ДЦ. Предоставляет он такой инструмент или нет.


Спасибо, картина ясна!

 

Добрый день. Я учусь вкручивать индикаторы в советника но пока что не очень успешно.

1- когда советник через тестер запускаю то только когда его останавливаю появляются метки индикатора.

2 - и не понимаю какие должны быть условия и как они пишутся.

Пожалуйста помогите Объясните пожалуйста как вкручивать индикатор в советник. чтоб советник торговал по индикатору.

на основе стрелочного индикатора который показывает верх или в низ BS_Living Now ver #1.mq4 https://www.mql5.com/ru/code/11014#50910

#property indicator_chart_window                                               //
#property indicator_buffers 4                                                  //
#property indicator_color1 Red                                                 //
#property indicator_color2 Yellow                                              //
#property indicator_color3 Red                                                 //
#property indicator_color4 Yellow                                              //
//******************// Ввод параметров индикатора
extern int    BQuant=48;                                                      //   - кол-во просчитываемых баров
                                                                              //******************// Составные части индикатора
double        ExtrimHi[],                                                      //   - экстремум High
ExtrimLo[],                                                      //   - экстремум Low
BreakHi[],                                                       //   - экстремум High
BreakLo[];

int init()                                                                     //
  {                                                                            //
   Comment("BS_Living Now");                                                   //
                                                                               //******************// Настройки графического отображения
   IndicatorBuffers   (4);                                                     //
   SetIndexLabel      (0,"ExtrimHi");                                          //
   SetIndexBuffer     (0,ExtrimHi);                                            //
   SetIndexStyle      (0,DRAW_ARROW,EMPTY,2);                                  //
   SetIndexArrow      (0,159);                                                 //
   SetIndexLabel      (1,"ExtrimLo");                                          //
   SetIndexBuffer     (1,ExtrimLo);                                            //
   SetIndexStyle      (1,DRAW_ARROW,EMPTY,2);                                  //
   SetIndexArrow      (1,159);                                                 //
   SetIndexLabel      (2,"BreakHi");                                           //
   SetIndexBuffer     (2,BreakHi);                                             //
   SetIndexStyle      (2,DRAW_NONE,EMPTY,1);                                   //   заменить на DRAW_ARROW
   SetIndexArrow      (2,224);                                                 //
   SetIndexLabel      (3,"BreakLo");                                           //
   SetIndexBuffer     (3,BreakLo);                                             //
   SetIndexStyle      (3,DRAW_NONE,EMPTY,1);                                   //   заменить на DRAW_ARROW
   SetIndexArrow      (3,224);                                                 //
                                                                               //*********//
   return(0);                                                                  //
  } 

int deinit()                                                                   //
  {                                                                            //
   Comment("");                                                                //
                                                                               //*********//
   return(0);                                                                  //
  } 

int start()                                                                    //
  {
   int counted_bars=IndicatorCounted();
   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
   int limit=Bars-counted_bars;
   if(counted_bars==0) limit-=1+BQuant;
//
   for(int s=limit; s>=1; s--) //
     {                                                                         //
      Comment("Living Now\n","Spread =",MarketInfo(Symbol(),MODE_SPREAD));     //
      Extrim_Detect(s+1);                                  //******************// Определение экстремумов
     }                                                                         //
//*********//
   return(0);                                                                  //
  } 
double Extrim_Detect(int t) //***********************************// Определение экстремумов
  {                                                                            //
   if((TimeDayOfWeek(Time[t])==5 && TimeHour(Time[t])>=20)||                   //
      (TimeDayOfWeek(Time[t])==1 && TimeHour(Time[t])<=1))                     //
     {ExtrimHi[t] =0; ExtrimLo[t] =0;}                                         //
   else                                                                        //
     {                                                                         //
      if(iHigh(NULL,0,t)>=High[iHighest(NULL,0,2,BQuant,t+1)] &&               //
         iHigh(NULL,0,t)>iHigh(NULL,0,t-1))                                    //
        {                                                                      //
         ExtrimHi[t] =iHigh(NULL,0,t);                                         //
         Break_Detect(t,1);                                //******************// Определение точек прорыва
        }                                                                      //
      if(iLow(NULL,0,t)<=Low[iLowest(NULL,0,1,BQuant,t+1)] &&                  //
         iLow(NULL,0,t)<iLow(NULL,0,t-1))                                      //
        {                                                                      //
         ExtrimLo[t] =iLow(NULL,0,t);                                          //
         Break_Detect(t,-1);                               //******************// Определение точек прорыва
        }                                                                      //
     }                                                                         //
   return(0);                                                                  //
  }                                                                            //
double Break_Detect(int a,int Signal) //***********************************// Определение точек прорыва
  {                                                                            //
   for(int r=1; r<BQuant; r++)                                                 //
     {                                                                         //
      if(Signal==1 && iHigh(NULL,0,a+r)<High[iHighest(NULL,0,2,BQuant,a+r+1)]) //
        {BreakHi[a] =Low[iLowest(NULL,0,1,r+2,a-1)]; r=BQuant;}                //
      if(Signal==-1 && iLow(NULL,0,a+r)>Low[iLowest(NULL,0,1,BQuant,a+r+1)])   //
        {BreakLo[a] =High[iHighest(NULL,0,2,r+2,a-1)]; r=BQuant;}              //
     }
   return(0);                                                                  //
  }                                                                            //

а вот мой начатый советник

extern double  Lot=0.1;
extern int     Magic=0;
extern int     Stop=98;
extern int     Take=70;
extern int     Slip=10;

extern int     BQuant=48; //   - кол-во просчитываемых баров


int start()
{
double  S1=iCustom(NULL, 0, "BS_Living Now",BQuant,0,0);
OrderSend(Symbol(), OP_SELL,Lot, Bid, Slip,Ask+Stop*Point,Ask-Take*Point, "SELL", Magic, 0,Red ); OrderSend(Symbol(), OP_BUY, Lot, Ask, Slip,Bid-Stop*Point,Bid+Take*Point, " BUY", Magic, 0,Blue);

}
 

Если написать простой скрипт, который создает объект типа OBJ_ARROW_RIGHT_PRICE, а потом его же удаляет, то объект не удаляется. Более того командой ObjectType вдруг оказывается что созданный объект не типа OBJ_ARROW_RIGHT_PRICE (==36), а ==22 т.е. простая "стрелка вверх" !!! У меня так у одного или у всех так?

Уже были мнения "экспертов" по этому вопросу: типа почитай справку, или не хватает памяти :) .

Памяти достаточно.

Оказалось, что команда ObjectCreate рисует на графике объект типа OBJ_ARROW_RIGHT_PRICE, который нельзя удалить командой ObjectsDeleteAll(0,OBJ_ARROW_RIGHT_PRICE), но можно удалить командой ObjectsDeleteAll(0,22), как будто у нас не правая ценовая метка а "стрелка верх" . Чей косяк ?

#property copyright "Copyright 2014, MetaQuotes Software Corp."

#property link "https://www.mql5.com"

#property version "1.00"

#property strict

//+------------------------------------------------------------------+

//| Script program start function |

//+------------------------------------------------------------------+

void OnStart()

{

Alert("") ;

Alert("obj_arrow_right_price=",OBJ_ARROW_RIGHT_PRICE) ; // ==36

ObjectCreate("MyArrow", OBJ_ARROW_RIGHT_PRICE,0,Time[1],Open[1]) ; //

Alert( "objectTipe=", ObjectType("MyArrow") ) ; // ==22 !!

ResetLastError() ;

Alert("script delete arrow right price=",ObjectsDeleteAll(0,OBJ_ARROW_RIGHT_PRICE)," lastError=",GetLastError() ) ; // кол-во удаленных объектов ==0, ошибок ==0

}

Чтобы удалить объект типа OBJ_ARROW_RIGHT_PRICE следует использовать команду ObjectsDeleteAll(0,OBJ_ARROW), с обязательным указание подокна.

p.s. Объект типа OBJ_ARROW это "стрелка" любая, а не только "стрелка вверх". ObjectCreate(...OBJ_ARROW...) создает сразу "стрелку ввер". Ну и заморочки почему в справке этого нет ?

Причина обращения: