Как кодировать? - страница 108

 

Запуск скрипта MetaTrader из командной строки

Я хочу иметь возможность запускать скрипт или программу из командной строки, которая будет исполнять ордер на покупку. Никаких правил нет. Когда я ввожу его из командной строки, он должен купить 1 длинную позицию EURUSD.

Как это можно сделать?

Спасибо,

Пако

 

Простой индикатор и советник на основе стрелок

Привет всем.

Недавно я пытался сделать простой советник, который бы работал на стрелочном индикаторе. Я пытаюсь сделать так, чтобы советник поддерживал один ордер в любой момент времени. Если стрелка указывает вниз, предыдущий ордер на покупку закрывается и открывается ордер на продажу. Если стрелка указывает вверх, предыдущий ордер на продажу закрывается и открывается ордер на покупку. Я использую тестер (режим визуализации) для проверки своего кода. Похоже, как бы я ни старался, советник не закрывает и не открывает позиции, когда стрелка индикатора указывает вверх или вниз. Обратный тест подтверждает, что советник работает неправильно. Вместо того, чтобы открывать и закрывать ордера по стрелкам, показанным индикатором, советник закрывает/открывает ордера в какое-то другое время. Я не могу понять, почему мой код не работает.

В начале оператора start у меня следующий код:

if (Time[0] == savedTime) {

return (0);

} else {

savedTime = Time [0];

}

Это (я надеюсь) гарантирует, что код в операторе start будет выполняться только тогда, когда сформировался новый бар. Далее в теле подпрограммы start я запрашиваю индикатор с помощью функции iCustom. Запрос выглядит следующим образом:

iCustom (... 1)

Последний аргумент one указывает на предыдущий сформированный бар, поэтому он не равен 0. Однако позже я закрываю открытый ордер с помощью OrderClose и открываю новый с помощью OrderSend. Я предполагаю, что обе функции должны выполняться мгновенно.

Суть в следующем: Я пытаюсь создать советника на основе стрелочного индикатора. Индикатор направлен либо вверх, либо вниз. Как я понимаю (возможно, я ошибаюсь), единственное, что мне нужно сделать, это закрыть предыдущий ордер и открыть новый, когда сформируется следующий бар. Буду очень признателен за любой вклад в решение этой проблемы.

Спасибо всем.

 

Кто-нибудь может подсказать мне, как закодировать индикатор для размещения в нем даты истечения срока действия?

Спасибо.

 

Посмотрите на эту тему https://www.mql5.com/en/forum/174194

 
newdigital:
Посмотрите на эту тему https://www.mql5.com/en/forum/174194

Спасибо за эту ссылку. Наконец-то я нашел страницу, которую искал. здесь

 

Как получить 2 индикатора на 1 отдельном окне????

Кто-нибудь может освежить мои мысли о том, как получить 2 индикатора на одном отдельном окне, чтобы они перекрывали друг друга?

Заранее спасибо за помощь!

Дэйв

 

Нужен советник только для открытия ордеров

Привет всем,

Мне просто интересно, может ли кто-нибудь помочь мне создать советника, который просто открывает 4 разных ордера в 00:00AM GMT для любой пары.

1 лот на покупку

1 лот покупка

1 лот продажа

1 лот на продажу

открываются все в 00:00GMT

спасибо за помощь

Ryan56

 
bdht:
Привет всем.

Недавно я пытался сделать простой советник, который бы работал на стрелочном индикаторе. Я пытаюсь сделать так, чтобы советник поддерживал один ордер в любой момент времени. Если стрелка указывает вниз, предыдущий ордер на покупку закрывается и открывается ордер на продажу. Если стрелка указывает вверх, предыдущий ордер на продажу закрывается и открывается ордер на покупку. Я использую тестер (режим визуализации) для проверки своего кода. Похоже, как бы я ни старался, советник не закрывает и не открывает позиции, когда стрелка индикатора указывает вверх или вниз. Обратный тест подтверждает, что советник работает неправильно. Вместо того, чтобы открывать и закрывать ордера по стрелкам, показанным индикатором, советник закрывает/открывает ордера в какое-то другое время. Я не могу понять, почему мой код не работает.

В начале оператора start у меня следующий код:

if (Time[0] == savedTime) {

return (0);

} else {

savedTime = Time [0];

}

Это (я надеюсь) гарантирует, что код в операторе start будет выполняться только тогда, когда сформировался новый бар. Далее в теле подпрограммы start я запрашиваю индикатор с помощью функции iCustom. Запрос выглядит следующим образом:

iCustom (... 1)

Последний аргумент one указывает на предыдущий сформированный бар, поэтому он не равен 0. Однако позже я закрываю открытый ордер с помощью OrderClose и открываю новый с помощью OrderSend. Я предполагаю, что обе функции должны выполняться мгновенно.

Суть в следующем: Я пытаюсь создать советника на основе стрелочного индикатора. Индикатор направлен либо вверх, либо вниз. Как я понимаю (возможно, я ошибаюсь), единственное, что мне нужно сделать, это закрыть предыдущий ордер и открыть новый, когда сформируется следующий бар. Я буду очень признателен за любой вклад в решение этой проблемы.

Спасибо всем.

Если вы смотрите на сигнал только раз в бар, а ваша "система" закрывается и разворачивается при изменении сигнала, важно проверить выход ДО проверки входа. В противном случае, при появлении нового сигнала на вход, советник не сможет войти в сделку, потому что предыдущий сигнал все еще открыт. А когда советник закроет позицию, он войдет в нее только на следующем баре, потому что в эту часть кода он входит только раз в бар.

Надеюсь, это понятно (с моим-то английским!).

FerruFx

 
Dave137:
Может кто-нибудь освежить в памяти, как получить 2 индикатора на одном отдельном окне, чтобы они перекрывали друг друга????

Заранее спасибо за помощь!

Дэйв

Посмотрите на эту страницу: https://www.mql5.com/en/forum/172923

 

Это решит вашу проблему с новым баром (взял из статьи на mql4.com):

bool funcIsNewBar()

{

bool res=false;

// the array contains open time of the current (zero) bar

// for 7 (seven) timeframes

static datetime _sTime[7];

int i=6;

int timeFrame = Period();

switch (timeFrame)

{

case 1 : i=0; break;

case 5 : i=2; break;

case 15 : i=3; break;

case 30 : i=4; break;

case 60 : i=5; break;

case 240: i=6; break;

case 1440:break;

default: timeFrame = 1440;

}

//----

if (_sTime==0 || _sTime!=iTime(Symbol(),timeFrame,0))

{

_sTime = iTime(Symbol(),timeFrame,0);

res=true;

}

//----

return(res);

}[/CODE]

Call this function like this

int start()

{

if (funcIsNewBar)

{

//run some code

}

return (0);

}

That'll get code to run ONLY when there is a new bar.

What you need to do is find out in the data window of MT4 what the values are when there is NO arrow being put on the chart by your indicator. For example, the indicator may may have 0's or may be blank.

So all you do then is call the value of the indicator at each open [CODE]varMyIndieValue=iCustom();

if (varMyIndieValue>0) //there's an arrow

{

//run some code

}
bdht:
Всем привет.

Недавно я пытался сделать простой советник, который работал бы на стрелочном индикаторе. Я пытаюсь сделать так, чтобы советник поддерживал один ордер в любой момент времени. Если стрелка указывает вниз, предыдущий ордер на покупку закрывается и открывается ордер на продажу. Если стрелка указывает вверх, предыдущий ордер на продажу закрывается и открывается ордер на покупку. Я использую тестер (режим визуализации) для проверки своего кода. Похоже, как бы я ни старался, советник не закрывает и не открывает позиции, когда стрелка индикатора указывает вверх или вниз. Обратный тест подтверждает, что советник работает неправильно. Вместо того, чтобы открывать и закрывать ордера по стрелкам, показанным индикатором, советник закрывает/открывает ордера в какое-то другое время. Я не могу понять, почему мой код не работает.

В начале оператора start у меня следующий код:

if (Time[0] == savedTime) {

return (0);

} else {

savedTime = Time [0];

}

Это (я надеюсь) гарантирует, что код в операторе start будет выполняться только тогда, когда сформировался новый бар. Далее в теле подпрограммы start я запрашиваю индикатор с помощью функции iCustom. Запрос выглядит следующим образом:

iCustom (... 1)

Последний аргумент one указывает на предыдущий сформированный бар, поэтому он не равен 0. Однако позже я закрываю открытый ордер с помощью OrderClose и открываю новый с помощью OrderSend. Я предполагаю, что обе функции должны выполняться мгновенно.

Суть в следующем: Я пытаюсь создать советника на основе стрелочного индикатора. Индикатор направлен либо вверх, либо вниз. Как я понимаю (возможно, я ошибаюсь), единственное, что мне нужно сделать, это закрыть предыдущий ордер и открыть новый, когда сформируется следующий бар. Буду очень признателен за любой вклад в решение этой проблемы.

Спасибо всем.
Причина обращения: