[АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 4. - страница 251

 
FAQ:


Нате вам :

ошибка incompatible types

 
Leo59:

Уважаемый granit77! Если Вас не затруднит, внесите исправления прямо в код, если что не так, пожалуйста. Это будет наглядно и понятно.

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

#property  indicator_buffers 7

double     ind_buffer1[]; 
double     ind_buffer2[];
double     ind_buffer3[];
double     ind_buffer4[];
double     ind_buffer5[];
double     ind_buffer6[];
double     ind_buffer7[];
double     ind_buffer8[];// Восьмой буфер используется для дополнительных расчётов

//double     ind_buffer9[];   //ну нету в индикаторе девятого буфера, этот массив некуда сунуть

int init()
  {

IndicatorBuffers(8);

SetIndexBuffer(0,ind_buffer1);
SetIndexBuffer(1,ind_buffer2);
SetIndexBuffer(2,ind_buffer3);
SetIndexBuffer(3,ind_buffer4);
SetIndexBuffer(4,ind_buffer5);
SetIndexBuffer(5,ind_buffer6);
SetIndexBuffer(6,ind_buffer7);
SetIndexBuffer(7,ind_buffer8);

//ind_buffer1...ind_buffer7 рисуют семь линий 
//они отображаются в окне индикатора согласно #property  indicator_buffers 7
//ind_buffer8 не отображается в окне, но доступен для участия в расчетах  
   return(0);
  }

 
granit77:
Пример. Из имеющихся восьми индикаторных буферов семь используются для отображения линий в окне индикатора, восьмой используется для расчетов, без отображения в окне индикатора.
Если не хватает индикаторных буферов, расчеты можно проводить в обычных массивах.



Спасибо! Это понятно.

Не понятно другое. Не понятно, зачем массив участвующий в расчетах и не отображаемый в окне индикатора идентифицировать как SetIndexBuffer. И если для расчётов требуется 10 массивов и 8 для отображения (всего 18), то как правильно объявить эти 10 и их идентифицировать? Хотелось, чтобы они обладали теми же свойствами что и массивы привязанные к индикаторным буферам, разве что только не рисовались.

 
Zhunko:

Не надо его переименовывать, если уж не получается. Что странно. Открыть его можно из контекстного меня мыши, выбрав WinRar. Или открыть WinRar, потом из меню "Файл" пункт "Открыть архив" найти архив и открыть.

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

Видимость расширений включил? Скрин или видео сюда, если не получается.


Спасибо за подробние указания. Я таки скачал єтот WinRar, видимо его не біло, и архив открился!
 
Ві знаете, не вижу работи функции. Правдо, тики щас не идут, но хоть при присоединении к графику старт ведь должен сработать? Ну, хоть компиллируется!! Пробую так
//+------------------------------------------------------------------+
//|                                                  таймфрейммм.mq4 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
#include <ServicesMT4.mqh>
void start()
  {
   int hwndChart = WindowHandle(Symbol(),Period());
   while (!IsStopped())
    {
     for (int i = 0; i < 9; i++)
      {
       ServiceSetTimeframeByNumber(hwndChart, i);
       Sleep(4000);
      }
    }
  }
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
 
PR //Прибыль
UB //Убыток
Pk //Переменная принимающая значения покупки
Pr //Переменная принимающая значения продажи
ADR //Переменная принимающая значения скрипта

//Условия на прибыль
if(PR==Pk) //Если прибыль по покупке
ADR=1; //Установиться скрипт 1
else //Если прибыль по продаже
ADR=2; //Установиться скрипт 2

//Условия на продажу
if(UB==Pk) //Если убыток по покупке
ADR=2; //Установиться скрипт 2
else //Если убыток по продаже

ADR=1; //Установиться скрипт 1

Как это доработать под торговлю? Нужно чтобы советник следил за тем, какой ордер закрылся (buy или sell), и как закрылся с профитом или лоссом. И после такого анализа исполнял 1 или 2 скрипт.

 
Как называются переменные, которые обозначают take profit и stop loss? И как указать адрес скрипта для исполнения?
 
Dimka-novitsek:
Ві знаете, не вижу работи функции. Правдо, тики щас не идут, но хоть при присоединении к графику старт ведь должен сработать? Ну, хоть компиллируется!! Пробую так

Тиков нет. Старт не срабатыват. Можно скомпилировать, как скрипт. Но надо будет указать дескриптор соседнего графика, который будет обновляться.

Или так:

#include <ServicesMT4.mqh>
int hwndChart = NULL;
void init()
 {
  hwndChart = WindowHandle(Symbol(),Period()); // Получаем системный дескриптор графика.
  ServiceRefreshChart(hwndChart, 1000); // Запускаем обновление графика каждую 1 секунду.
 }

void start()
 {
  ServiceStopRefreshChart(hwndChart); // Останавливаем обновление. Больше не требуется.
  while (!IsStopped())
   {
    for (int i = 0; i < 9; i++)
     {
      ServiceSetTimeframeByNumber(hwndChart, i);
      Sleep(4000);
     }
   }
 }

Но, наверно, работать у тебя не будет. Кажется, функция ServiceRefreshChart() не всем доступна.

Можно в индикаторе попробывать. Там при присоединении к графику и при смене ТФ 2 раза старт обновляется.

 
Спасибо!!!!!!
 
Компилируется, но не виполняется.
Причина обращения: