2013-12-05 4 views
1

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

Я стараюсь делать с iCustom() но это не удовлетворительно.

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

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

ответ

1

syntax является:

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.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); 
1

синтаксис:

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); 
} 

Это просто пример кода, не используйте это в живом EA.

 Смежные вопросы

  • Нет связанных вопросов^_^