Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1127

 
Andrey990:
Всем добрый день, может кто помочь добавить сюда что бы при SL был не просто переворот а еще добавлял лот или несколько. И как срабатывает TP возвращался обратно на один лот.

1. Категорически не советую пользовать функции, которые выбирают позицию ПО СИМВОЛУ. Используйте функции выбирающие позицию по индексу в списке.

2. Чтобы знать как была закрыта позиция, необходимо в OnTradeTransaction смотреть перечисление ENUM_DEAL_REASON

Пример с ENUM_DEAL_REASON:

Stop Loss Take Profit

Если закрытие по Stop loss - удваиваем объём, если по Take Profit - ставим минимальный объём. Для определения того, что сделка произошла вследствие срабатывания Stop Loss или Take Profit, используем OnTradeTransaction. Начиная с билда 1625 появилось замечательное перечисление ENUM_DEAL_REASON: ENUM_DEAL_REASON Описание причины.. DEAL_REASON_SL Операция совершена в результате срабатывания Stop Loss DEAL_REASON_TP Операция совершена в результате срабатывания Take Profit.. которое можно отследить в OnTradeTransaction. Другими словами теперь можно очень просто и главное гарантированно определить, что данная сделка была следствием срабатывания Take Profit или Stop Loss. На данный момент (билд 1626) этот советник можно тестировать только в живую - накинув на график или в режиме отладки на реальных данных (F5 в редакторе MetaEditor). Также пока я применил обходной манёвр: Определяем, что именно сработало: Take Profit или Stop Loss в процедуре OnTradeTransaction: if (deal_symbol==m_symbol...

CodeBase | 2017.07.13 07:42 |  Vladimir Karputov | Советники | MetaTrader 5

 

Возможно ли как то в стороннюю программу ввести данные для входа в счет и управлять им, ну открываться/закрывать позиции?

Или это только через робота, который установлен на счете?

 

Перевожу индикаторы из MQL4 в MQL5, вопрос по буферам и "plots". В индикаторе задаётся 2 буфера и 1 plot:

#property indicator_buffers 2
#property indicator_plots 1

SetIndexBuffer(0,Array1,INDICATOR_CALCULATIONS);
SetIndexBuffer(1,Array2,INDICATOR_DATA);


Если первый буфер используется для вычислений и пр., а рисоваться должен второй буфер, то:

во-первых, нужно ли задавать для первого буфера DRAW_NONE, если в функции SetIndexBuffer() ему уже задано INDICATOR_CALCULATIONS ?

PlotIndexSetInteger(?,PLOT_DRAW_TYPE,DRAW_NONE);

во-вторых, какой индекс задавать в функции PlotIndexSetInteger() вместо знака вопроса (?), если рисоваться должен только второй буфер?

PlotIndexSetInteger(?,PLOT_DRAW_TYPE,DRAW_HISTOGRAM);


в третьих, если я использую два стиля типа DRAW_HISTOGRAM, то могу каждому задать цвет и получу гисторгамму как в индикаторе Volumes, где чередуются зелёные и красные столбики, а если буду использовать DRAW_HISTOGRAM 2, то смогу ли я задать так же два цвета одному столбику или для этого стиля задаётся только один цвет?

 
The_Sheikh:

Перевожу индикаторы из MQL4 в MQL5, вопрос по буферам и "plots". В индикаторе задаётся 2 буфера и 1 plot:

#property indicator_buffers 2
#property indicator_plots 1

SetIndexBuffer(0,Array1,INDICATOR_CALCULATIONS);
SetIndexBuffer(1,Array2,INDICATOR_DATA);


Если первый буфер используется для вычислений и пр., а рисоваться должен второй буфер, то:

во-первых, нужно ли задавать для первого буфера DRAW_NONE, если в функции SetIndexBuffer() ему уже задано INDICATOR_CALCULATIONS ?

PlotIndexSetInteger(?,PLOT_DRAW_TYPE,DRAW_NONE);

во-вторых, какой индекс задавать в функции PlotIndexSetInteger() вместо знака вопроса (?), если рисоваться должен только второй буфер?

PlotIndexSetInteger(?,PLOT_DRAW_TYPE,DRAW_HISTOGRAM);


в третьих, если я использую два стиля типа DRAW_HISTOGRAM, то могу каждому задать цвет и получу гисторгамму как в индикаторе Volumes, где чередуются зелёные и красные столбики, а если буду использовать DRAW_HISTOGRAM 2, то смогу ли я задать так же два цвета одному столбику или для этого стиля задаётся только один цвет?

А зачем так над собой издеваться? В чём проблема назначить сначала отображаемые буферы, а потом вспомогательные?

Для DRAW_HISTOGRAМ2 задаётся 3 буфера и обязательная последовательность, сначала 2 буфера значений и следом за ними буфер цвета. Но между DRAW_HISTOGRAМ и DRAW_HISTOGRAМ2 существует такая разница, что DRAW_HISTOGRAМ рисуется от нуля до значения в буфере, а DRAW_HISTOGRAМ2 рисуется от значения одного буфера до значения другого буфера.

 
Alexey Viktorov:

А зачем так над собой издеваться? В чём проблема назначить сначала отображаемые буферы, а потом вспомогательные?

Особенность алгоритма, вспомогательных буферов всегда фиксированное количество, а отображаемых разное количество. Пожалуйста ответьте на вопрос из предыдущего сообщения о том, как правильно это всё указывается?


Alexey Viktorov:

Для DRAW_HISTOGRAМ2 задаётся 3 буфера и обязательная последовательность, сначала 2 буфера значений и следом за ними буфер цвета. Но между DRAW_HISTOGRAМ и DRAW_HISTOGRAМ2 существует такая разница, что DRAW_HISTOGRAМ рисуется от нуля до значения в буфере, а DRAW_HISTOGRAМ2 рисуется от значения одного буфера до значения другого буфера.

Из описания DRAW_HISTOGRAМ2 по ссылке https://www.mql5.com/ru/docs/customind/indicators_examples/draw_histogram2 :

"Количество требуемых буферов для построения DRAW_HISTOGRAM2 — 2."

Откуда тогда взяться третьему буферу? И в примере по той же ссылке всего два буфера, но не указано, можно ли чередовать цвета так же, как с обычным DRAW_HISTOGRAМ?
 
The_Sheikh:

Особенность алгоритма, вспомогательных буферов всегда фиксированное количество, а отображаемых разное количество. Пожалуйста ответьте на вопрос из предыдущего сообщения о том, как правильно это всё указывается?


Из описания DRAW_HISTOGRAМ2 по ссылке https://www.mql5.com/ru/docs/customind/indicators_examples/draw_histogram2 :

"Количество требуемых буферов для построения DRAW_HISTOGRAM2 — 2."

Откуда тогда взяться третьему буферу? И в примере по той же ссылке всего два буфера, но не указано, можно ли чередовать цвета так же, как с обычным DRAW_HISTOGRAМ?

Да, извините за недостаточную внимательность. Я имел ввиду DRAW_COLOR_HISTOGRAM2 и DRAW_COLOR_HISTOGRAM

 
The_Sheikh:

Особенность алгоритма, вспомогательных буферов всегда фиксированное количество, а отображаемых разное количество. Пожалуйста ответьте на вопрос из предыдущего сообщения о том, как правильно это всё указывается?

Я никогда так над собой не издевался. Если есть желание, экспериментируйте.

 
Комментарии, не относящиеся к этой теме, были перенесены в "Вопросы от начинающих MQL4 MT4 MetaTrader 4".
 

Как правильно задавать цвета функцией PlotIndexSetInteger() ?

Когда указываю

#property indicator_color3 clrRed,clrGreen

то цвета задаются нормально, а когда задаю через функцию

PlotIndexSetInteger(2,PLOT_LINE_COLOR,0,clrRed);

PlotIndexSetInteger(2,PLOT_LINE_COLOR,1,clrGreen);

то первый цвет линии красный, а второй (и последующие) почему-то чёрный (по умолчанию) вместо зелёного.

 
The_Sheikh:

Как правильно задавать цвета функцией PlotIndexSetInteger() ?

Когда указываю

#property indicator_color3 clrRed,clrGreen

то цвета задаются нормально, а когда задаю через функцию

PlotIndexSetInteger(2,PLOT_LINE_COLOR,0,clrRed);

PlotIndexSetInteger(2,PLOT_LINE_COLOR,1,clrGreen);

то первый цвет линии красный, а второй почему-то чёрный (по умолчанию) вместо зелёного.

А зачем модификатор туда вставили?