Скачать MetaTrader 5

Советник меня не слушается ( - страница 2

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
В Маркете более 400 индикаторов. Попробуй любой из них!
Николай
125
Николай 2012.04.23 12:44  

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

double bid[2]; // массив в котором 0 - текущий bid, 1 - прошлый
int time_last_bar, Signal=-1; // переменная сигнал дает разрешение на покупку или продажу. 0- можно купить, 1- можно продать, -1 - ничего нельзя

void init() {
   bid[0]=bid;   
   }

void start() {
   bid[1]=bid[0]; bid[0]=Bid;
   if(Time[0]!=time_last_bar) { // появился новый бар
      ma=iMA(NULL,0,ma_period,0,MODE_SMA,PRICE_CLOSE,0);
      if(Open[0]>ma) Signal=0; else Signal=1;
      time_last_bar=Time[0]; // запишем что проверили этот бар
      }
   if(Signal!=-1) {
      ma=iMA(NULL,0,ma_period,0,MODE_SMA,PRICE_CLOSE,0);
      if(Signal==0) {
         if(NormalizeDouble(Open[1],Digits)>NormalizeDouble(ma,Digits) && NormalizeDouble(bid[1],Digits)>NormalizeDouble(ma,Digits) && NormalizeDouble(bid[0],Digits)<=NormalizeDouble(ma,Digits)) {
            Signal=-1;
            // покупаем
            }
         }else{
         if(NormalizeDouble(Open[1],Digits)<NormalizeDouble(ma,Digits) && NormalizeDouble(bid[1],Digits)<NormalizeDouble(ma,Digits) && NormalizeDouble(bid[0],Digits)>=NormalizeDouble(ma,Digits)) {
            Signal=-1;
            // продаем
            }
         }
      }
   }

+ сделал так чтобы все исполнялось быстрей: Обращение к МА только когда это требуется, проверка касание только когда есть разрешение.

Alekseu Fedotov
818
Alekseu Fedotov 2012.04.23 14:06  
keep87:

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

+ сделал так чтобы все исполнялось быстрей: Обращение к МА только когда это требуется, проверка касание только когда есть разрешение.


bid[1], bid[0] Это что??

double Bid

Последняя известная цена покупки (предложение на покупку) текущего инструмента. Для обновления необходимо использовать функцию RefreshRates().

Vladyslav Goshkov
2068
Vladyslav Goshkov 2012.04.23 14:16  
keep87:

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

+ сделал так чтобы все исполнялось быстрей: Обращение к МА только когда это требуется, проверка касание только когда есть разрешение.

К МА один раз, а вот нормализация постоянно - это специально тормоз такой ? У Вас же есть отдельные переменные для бидов, - записывайте туда нормализованные значения сразу. И значения ma сразу нормализуйте.
Николай
125
Николай 2012.04.23 22:56  
VladislavVG:
К МА один раз, а вот нормализация постоянно - это специально тормоз такой ? У Вас же есть отдельные переменные для бидов, - записывайте туда нормализованные значения сразу. И значения ma сразу нормализуйте.

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

r772ra: bid[1], bid[0] Это что?? double Bid Последняя известная цена покупки (предложение на покупку) текущего инструмента. Для обновления необходимо использовать функцию RefreshRates().
слышал звон, не знаю где он? Небольшая рекомендация - не задавайте вопросов которые выставляют вас не в лучшем свете. P.S. Соизвольте прочитать прошлую страницу.
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий