[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 161

 
chief2000 >>:

В Индикаторе задаю (чтобы затем сравнить их с Time[i]):


Затем в цикле


В результате StrToTime(StartRange) и StrToTime(EndRange) выдают Нули.

- Почему и как это исправить?



упс. а как это вы умудряетесь в функцию StrToTime совать datetime переменную. Туда же надо string!.

или вы считаете, что форма задания D'1970.12.24' - это строка? Вы ошибаетесь.

Может вам нужно TimeToStr?

 


В результате StrToTime(StartRange) и StrToTime(EndRange) выдают Нули.

- Почему и как это исправить?



//функция 

bool isTradeTimeString(string TimeBegin="00:00", string TimeEnd="00:00") {
  datetime dtBegin, dtEnd;        // Время начала и окончания работы
  int      hc, he;                // Часы текущего времени и окончания работы

  dtBegin=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+TimeBegin);
  dtEnd  =StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+TimeEnd);
  hc     =TimeHour(TimeCurrent());
  he     =TimeHour(dtEnd);
  if (dtBegin>=dtEnd) {
    if (hc>=he) dtEnd+=24*60*60; else dtBegin-=24*60*60;
  }

  if (TimeCurrent()>=dtBegin && TimeCurrent()<=dtEnd) return(True);
  else return(False);
}

//+-------------------------------------------------------------------
вставить в глоб. переменные
//extern string TimeBegin = "00:00";
//extern string TimeEnd = "00:00";

а это уже в код -проверка 
/*
isTradeTimeString(); //торговля по времени
   if (isTradeTimeString(TimeBegin, TimeEnd))
     {
       //торгуем
     }
*/
 

Очевидно что это была моя ошибка (неверно интерпретировал Пример

из документации). Оказалось что можно переменную типа "datetime" напрямую сравнивать с Time[i].

Спасибо за помощь!

 
,...... есть у когонить функция,... ну или кусок кода,... который считает пройденное количество пунктов после открытия ордера? самому накодить сеня не судьба (со вчерашнего котелок киши не варит) а очень нужно!
 
Ну говорю же голова не варит )))) пойду код из трала сдерну )))
 

//+------------------------------------------------------------------+
//| Custom MACD.mq4 |
//| Copyright © 2004, MetaQuotes Software Corp. |
//| http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net/&quot;
//---- indicator settings
#property indicator_separate_window
#property indicator_buffers 3
#property indicator_color1 Silver
#property indicator_color2 Red
#property indicator_color3 Blue

#property indicator_width1 2
//---- indicator parameters
extern int FastEMA=12;
extern int SlowEMA=26;
extern int SignalSMA=9;
extern int SMA=12;

//---- indicator buffers
double MacdBuffer[];
double SignalBuffer[];
double EMABuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
  {
//---- drawing settings
  SetIndexStyle(0,DRAW_HISTOGRAM);
  SetIndexStyle(1,DRAW_LINE);
  SetIndexStyle(2,DRAW_LINE);
  SetIndexDrawBegin(1,SignalSMA);
  IndicatorDigits(Digits+1);
//---- indicator buffers mapping
  SetIndexBuffer(0,MacdBuffer);
  SetIndexBuffer(1,SignalBuffer);
  SetIndexBuffer(2,EMABuffer);
   
//---- name for DataWindow and indicator subwindow label
  IndicatorShortName("MACD("+FastEMA+","+SlowEMA+","+SignalSMA+","+SMA+")");
  SetIndexLabel(0,"MACD");
  SetIndexLabel(1,"Signal");
//---- initialization done
  return(0);
  }
//+------------------------------------------------------------------+
//| Moving Averages Convergence/Divergence |
//+------------------------------------------------------------------+
int start()
  {
  int limit;
  int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
  if(counted_bars>0) counted_bars--;
  limit=Bars-counted_bars;
//---- macd counted in the 1-st buffer
  for(int i=0; i<limit; i++)
  MacdBuffer[i]=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);
//---- signal line counted in the 2-nd buffer
  for(i=0; i<limit; i++)
  SignalBuffer[i]=iMAOnArray(MacdBuffer,Bars,SignalSMA,0,MODE_SMA,i);
//---- done
  for(i=0; i<limit; i++)
  EMABuffer[i]=iMAOnArray(MacdBuffer,Bars,SMA,0,MODE_SMA,i);
//---- done
  return(0);
  }
//+------------------------------------------------------------------+

как мне сделать МА с отрицательным смещением например на -5 баров, когда ставлю -5 рисует каюто фигню ??

 
evgenio >>:

как мне сделать МА с отрицательным смещением например на -5 баров, когда ставлю -5 рисует каюто фигню ??

А почему собственно фигню?  Может вы чтонибудь не то хотите увидеть? Или я чего не понимаю !!!! 

ׂ 

Сверху ваш вариант, снизу вариант со сдвигом -5 ! как раз на -5 баров сдвинут, что не так или не то????????

 
Infinity >>:

А почему собственно фигню?  Может вы чтонибудь не то хотите увидеть? Или я чего не понимаю !!!! 

Сверху ваш вариант, снизу вариант со сдвигом -5 ! как раз на -5 баров сдвинут, что не так или не то????????

ну это да но вот когда я пытаюсь вызвать  через этот советник 

//+------------------------------------------------------------------+
//| fgfgfgfgfgf.mq4 |
//| Evgenio |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Evgenio"
#property link "http://www.metaquotes.net"

extern int FastEMA=12;
extern int SlowEMA=26;
extern int SignalSMA=9;
extern int SMA=12;
//---переменные----------
double k,k1,k2;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
  return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
  return(0);
  }
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
  {
  k=NormalizeDouble(iCustom(Symbol(),0,"MACD+мувинг",FastEMA,SlowEMA,SignalSMA,SMA,0,0),5);
  k1=NormalizeDouble(iCustom(Symbol(),0,"MACD+мувинг",FastEMA,SlowEMA,SignalSMA,SMA,1,0),5);
  k2=NormalizeDouble(iCustom(Symbol(),0,"MACD+мувинг",FastEMA,SlowEMA,SignalSMA,SMA,2,0),5);
  if (OrdersTotal()<=2)
  {
  if (k>0 && k2>k1+0.0005)
  ObjectCreate("down"+Time[1], OBJ_ARROW, 0, Time[1], Open[1]+100*Point);
  ObjectSet("down"+Time[1], OBJPROP_ARROWCODE, 242);
  ObjectSet("down"+Time[1], OBJPROP_COLOR, Yellow);
  }
  return(0);
  }
//+------------------------------------------------------------------+

получается ерунда

Делаю так

1. запускаю тестирование на определенном периоде

2. прикрепляю индикатор

3 получаю ерунду


 

как мне сделать, подскажите

чтоб у меня советник открывал только один раз ордер в день.

если он открыл ордер, потом закрыл и отключился до следуещего дня.

я так понимаю, что надо барть из истории посделдюю сделку.. сравнивать её с датой и если в этот день ордер уже был закрыт, то отключать советника..

в том направление хоть мыслю?

до конца осмыслить немогу. т.к в mql пока новичёчег

 

Добрый день, коллеги.

Подскажите пожалуйста, как программно, т.е. эксперту, объяснить точки перегиба прямой, т.е. эксперт должен разделять два варианта положения МА: МА растет, МА падает. 

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