Помощь в кодировании - страница 761

 
oguz:

mladen,

"simple (Regularized ema) EA 1.3" был активен на 5 различных паритетах в одно и то же время с 10 утра до 9 вечера, но он не открыл ни одного ордера!

Есть ли проблема в этом советнике для открытия ордеров?

P.S: Это были (ecn-pro) тикмилл демо график.

Привет, oguz

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

с уважением


 
mntiwana:
Привет, oguz

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

с уважением


Уважаемый @mntiwana

Проблема проста на уровне моей глупости!

Я думал, что эта кнопка просто информационное сообщение! Тогда как она делала то, что эксперт Вкл-Выкл/Выкл-Выкл!

Когда я увидел цвет кнопки на вашем графике, он оказался красным!

Спасибо за вашу графику :)

 
Уважаемый Младен,

Я пытаюсь вычислить разницу MA3 - MA1, заданную следующим кодом:
      for(int i=limit - 1; i>=0; i--)
      {  
        double MA1, MA2, MA3, MA4;
 
        buffer[i] = EMPTY_VALUE;

        MA1 = iCustomMa(MAType1,getPrice(pr_open,Open,Close,High,Low,i),MAPeriod,i,0);
        MA2 = iCustomMa(MAType1,getPrice(pr_close,Open,Close,High,Low,i),MAPeriod,i,0);
 
        MA3 =  iMA(NULL,0,MAPeriod,0,MAType2,PRICE_OPEN,i);
        MA4 =  iMA(NULL,0,MAPeriod,0,MAType2,PRICE_CLOSE,i);

        buffer[i] = MA3 - MA1;
      }
где MAType1 = iEMA(...), MAType2 = MODE_EMA. Для приведенного выше цикла, разница MA3 - MA1
существенно отличается от 0.0. Однако, когда я комментирую MA2:
      for(int i=limit - 1; i>=0; i--)
      {  
        double MA1, MA2, MA3, MA4;
 
        buffer[i] = EMPTY_VALUE;

        MA1 = iCustomMa(MAType1,getPrice(pr_open,Open,Close,High,Low,i),MAPeriod,i,0);
      //  MA2 = iCustomMa(MAType1,getPrice(pr_close,Open,Close,High,Low,i),MAPeriod,i,0);
 
        MA3 =  iMA(NULL,0,MAPeriod,0,MAType2,PRICE_OPEN,i);
        MA4 =  iMA(NULL,0,MAPeriod,0,MAType2,PRICE_CLOSE,i);

        buffer[i] = MA3 - MA1;
      }
разница MA3 - MA1 точно равна 0.0 (как и ожидалось).
Я не могу понять такое поведение, пожалуйста, помогите; это похоже на ошибку, или так...
 
wojtekpaul:
Уважаемый Младен,

Я пытаюсь вычислить разницу MA3 - MA1, заданную следующим кодом:
      for(int i=limit - 1; i>=0; i--)
      {  
        double MA1, MA2, MA3, MA4;
 
        buffer[i] = EMPTY_VALUE;

        MA1 = iCustomMa(MAType1,getPrice(pr_open,Open,Close,High,Low,i),MAPeriod,i,0);
        MA2 = iCustomMa(MAType1,getPrice(pr_close,Open,Close,High,Low,i),MAPeriod,i,0);
 
        MA3 =  iMA(NULL,0,MAPeriod,0,MAType2,PRICE_OPEN,i);
        MA4 =  iMA(NULL,0,MAPeriod,0,MAType2,PRICE_CLOSE,i);

        buffer[i] = MA3 - MA1;
      }
где MAType1 = iEMA(...), MAType2 = MODE_EMA. Для приведенного выше цикла, разница MA3 - MA1
существенно отличается от 0.0. Однако, когда я комментирую MA2:
      for(int i=limit - 1; i>=0; i--)
      {  
        double MA1, MA2, MA3, MA4;
 
        buffer[i] = EMPTY_VALUE;

        MA1 = iCustomMa(MAType1,getPrice(pr_open,Open,Close,High,Low,i),MAPeriod,i,0);
      //  MA2 = iCustomMa(MAType1,getPrice(pr_close,Open,Close,High,Low,i),MAPeriod,i,0);
 
        MA3 =  iMA(NULL,0,MAPeriod,0,MAType2,PRICE_OPEN,i);
        MA4 =  iMA(NULL,0,MAPeriod,0,MAType2,PRICE_CLOSE,i);

        buffer[i] = MA3 - MA1;
      }
разница MA3 - MA1 точно равна 0.0 (как и ожидалось).
Я не могу понять такое поведение, пожалуйста, помогите; это похоже на ошибку, или так...
Вы применяете цену открытия в первом вызове пользовательской ma, а затем цену закрытия во втором вызове пользовательской ma - и вы делаете это с одним и тем же экземпляром ema. Вы не можете этого делать. Вы смешиваете яблоки с грушами. Для каждой разной цены (или значения) используйте разные экземпляры пользовательского ma.

Объявите два экземпляра пользовательского ma, а затем сделайте следующее:

for(int i=limit - 1; i>=0; i--)
{  
        double MA1, MA2, MA3, MA4;

        buffer[i] = EMPTY_VALUE;

        MA1 = iCustomMa(MAType1,getPrice(pr_open,Open,Close,High,Low,i),MAPeriod,i,0);
        MA2 = iCustomMa(MAType1,getPrice(pr_close,Open,Close,High,Low,i),MAPeriod,i,1);

        MA3 =  iMA(NULL,0,MAPeriod,0,MAType2,PRICE_OPEN,i);
        MA4 =  iMA(NULL,0,MAPeriod,0,MAType2,PRICE_CLOSE,i);

        buffer[i] = MA3 - MA1;
}
И тогда они будут абсолютно одинаковыми (MA1 - MA3 и MA2 - MA4).
 
да, ты гений :)
 
wojtekpaul:

Извините за глупый вопрос, но как объявить два экземпляра?

Исходная функция 'custom ma' объявлена с int instanceNo=0,

и если я устанавливаю параметр в 1 при вызове функции в коде,

я ничего не получаю...

проверьте maInstances в коде :)
 
mladen:

Объявить два экземпляра пользовательской функции ma

Извините за глупый вопрос, но как объявить два экземпляра?

Исходная функция 'custom ma' объявлена с int instanceNo=0,

и если при вызове функции в коде я устанавливаю параметр равным 1,

Я ничего не получаю (хотя теперь это не мешает функции с

экземпляр 0)...

 

Хорошо, спасибо, я все еще должен многому научиться :-)))


EDIT: OK, теперь я вижу - maInstances есть в новой версии MAs

(например, в BB останавливается новый формат), но они, кажется, отсутствуют.

в старой версии (где доступно около 20 MA).

 
wojtekpaul:

Хорошо, спасибо, я все еще должен многому научиться :-)))


EDIT: OK, теперь я вижу - maInstances есть в новой версии MAs

(например, в BB останавливается новый формат), но они, кажется, отсутствуют.

в старой версии (где доступно около 20 MA).

В старых версиях не было возможности работы с несколькими экземплярами.
 
Здравствуйте все и спасибо за всю помощь что вы принесли было это форум я хотел бы вы спросили если это было возможно чтобы поставить стрелку которая имеет на это индикатор прямо на xml-ph
Причина обращения: