Индикатор MQL4 передает сигнал советнику

проблема в том, что я хочу открыть ордер, когда мой индикатор дает сигнал. Как я могу это сделать?

Я пытался сделать с iCustom(), но это не удовлетворяет.

Я пытался использовать GlobalVariableSet() в индикаторе и метод GlobalVariableGet() в советнике, но он не работал должным образом.

Пожалуйста помоги.


person Ergin Ersoy    schedule 05.12.2013    source источник


Ответы (2)


синтаксис:

double  iCustom(
   string       symbol,           // symbol
   int          timeframe,        // timeframe
   string       name,             // path/name of the custom indicator compiled program
   ...                            // custom indicator input parameters (if necessary)
   int          mode,             // line index
   int          shift             // shift
   );

Вот пример использования пользовательского индикатора Alligator (который должен быть доступен по умолчанию как Alligator.mq4 на платформе MT).

double Alligator[3];
Alligator[0] = iCustom(NULL, 0, "Alligator", 13, 8, 8, 5, 5, 3, 0, 0);
Alligator[1] = iCustom(NULL, 0, "Alligator", 13, 8, 8, 5, 5, 3, 1, 0);
Alligator[2] = iCustom(NULL, 0, "Alligator", 13, 8, 8, 5, 5, 3, 2, 0);

где 13, 8, 8, 5, 5, 3 — соответствующие входные параметры пользовательского Аллигатора, определенные в самом индикаторе:

//---- input parameters
input int InpJawsPeriod=13; // Jaws Period
input int InpJawsShift=8;   // Jaws Shift
input int InpTeethPeriod=8; // Teeth Period
input int InpTeethShift=5;  // Teeth Shift
input int InpLipsPeriod=5;  // Lips Period
input int InpLipsShift=3;   // Lips Shift

а mode — соответствующий индекс строки, определенный в индикаторе следующим образом:

SetIndexBuffer(0, ExtBlueBuffer);
SetIndexBuffer(1, ExtRedBuffer);
SetIndexBuffer(2, ExtLimeBuffer);
person kenorb    schedule 19.06.2015

Синтаксис:

int signal = iCustom(NULL, 0, "MyCustomIndicatorName",
...parameters it takes in...,
...the buffer index you want from the custom indicator...,
...shift in bars);

Допустим, вы написали собственный индикатор скользящей средней под названием «myMA», и он принимает период только как одну из своих внешних переменных. Этот индикатор вычисляет простую скользящую среднюю на основе периода, указанного пользователем, и закрытия каждого бара. Этот индикатор хранит рассчитанные значения в массиве MAValues[], которому присваивается такой индекс: SetIndexBuffer(0, MAValues);

Чтобы получить скользящую среднюю текущего бара с периодом 200, нужно написать:

double ma_current_bar = iCustom(NULL, 0, "myMA", 200, 0, 0);

Затем, когда у вас есть это значение, вы можете проверить его на соответствие некоторым торговым критериям, которые вы определяете, и открыть ордер, когда оно будет выполнено. Например, если вы хотите открыть длинную позицию, если скользящая средняя текущего бара равна текущей цене Ask, вы должны написать:

if (ma_current_bar == Ask){
    OrderSend(Symbol(), OP_BUY, 1, Ask, *max slippage*, *sl*, *tp*, NULL, 0, 0, GREEN);
}

Это просто пример кода, НЕ используйте его в реальном советнике.

person Vighnesh Iyer    schedule 15.12.2013