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

 

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


На данный момент это выглядит так:


l_ienvelopes_0 = iEnvelopes(NULL, 0, EnvPeriod, EnvMethod, SdvigU,EnvUpperDev, EnvPrice, MODE_UPPER, Shift);

l_ienvelopes_8 = iEnvelopes(NULL, 0, EnvPeriod, EnvMethod, SdvigL,EnvLowerDev, EnvPrice, MODE_LOWER, Shift);

if ((Close[Shift] < l_ienvelopes_8 && g_lots_236 != Time[0])&& (MathAbs(Open[0] - Open[FilterD]) <= FilterV * Point)) {
l_ticket_16 = OrderSend(Symbol(), OP_BUY, Lots(), Ask, Slippage, Ask - SL * Point, Ask + TP * Point, "foreXer_" + Symbol(), Magic, 0, DarkGreen);
if (l_ticket_16 > 0) g_lots_236 = Time[0];
Print(GetLastError());
Sleep(500);
RefreshRates();
}
if ((Close[Shift] > l_ienvelopes_0 && g_lots_240 != Time[0])&& (MathAbs(Open[0] - Open[FilterDS]) <= FilterVS * Point)) {
l_ticket_16 = OrderSend(Symbol(), OP_SELL, Lots(), Bid, Slippage, Bid + SL * Point, Bid - TP * Point, "foreXer_" + Symbol(), Magic, 0, DeepPink);
if (l_ticket_16 > 0) g_lots_240 = Time[0];
Print(GetLastError());
Sleep(500);
RefreshRates();
}


Где l_ienvelopes_0 используется для покупки

а l_ienvelopes_8 используется для продажи

НО оказывается важны здесь только MODE_UPPER и MODE_LOWER

Ситуёвина получается такая что на графике неа данный момент рисуется 4 линии две верхних и две нижних, а толку с них никокого. Советник берёт любую из них которая подходит по условиям и выставляет сделку!

Как сделать так что-бы советник для покупки учитывал только MODE_UPPER именно l_ienvelopes_0, а для продажи MODE_LOWER только l_ienvelopes_8 Другие линии недолжны учитываться!

 
Ohr писал(а) >>

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

На данный момент это выглядит так:

l_ienvelopes_0 = iEnvelopes(NULL, 0, EnvPeriod, EnvMethod, SdvigU,EnvUpperDev, EnvPrice, MODE_UPPER, Shift);

l_ienvelopes_8 = iEnvelopes(NULL, 0, EnvPeriod, EnvMethod, SdvigL,EnvLowerDev, EnvPrice, MODE_LOWER, Shift);

if ((Close[Shift] < l_ienvelopes_8 && g_lots_236 != Time[0])&& (MathAbs(Open[0] - Open[FilterD]) <= FilterV * Point)) {
l_ticket_16 = OrderSend(Symbol(), OP_BUY, Lots(), Ask, Slippage, Ask - SL * Point, Ask + TP * Point, "foreXer_" + Symbol(), Magic, 0, DarkGreen);
if (l_ticket_16 > 0) g_lots_236 = Time[0];
Print(GetLastError());
Sleep(500);
RefreshRates();
}
if ((Close[Shift] > l_ienvelopes_0 && g_lots_240 != Time[0])&& (MathAbs(Open[0] - Open[FilterDS]) <= FilterVS * Point)) {
l_ticket_16 = OrderSend(Symbol(), OP_SELL, Lots(), Bid, Slippage, Bid + SL * Point, Bid - TP * Point, "foreXer_" + Symbol(), Magic, 0, DeepPink);
if (l_ticket_16 > 0) g_lots_240 = Time[0];
Print(GetLastError());
Sleep(500);
RefreshRates();
}

Где l_ienvelopes_0 используется для покупки

а l_ienvelopes_8 используется для продажи

НО оказывается важны здесь только MODE_UPPER и MODE_LOWER

Ситуёвина получается такая что на графике неа данный момент рисуется 4 линии две верхних и две нижних, а толку с них никокого. Советник берёт любую из них которая подходит по условиям и выставляет сделку!

Как сделать так что-бы советник для покупки учитывал только MODE_UPPER именно l_ienvelopes_0, а для продажи MODE_LOWER только l_ienvelopes_8 Другие линии недолжны учитываться!

А чего это код ломанный?

 
Vinin >>:

А чего это код ломанный?

Такой с код базы скачал. Я не програмист так что качаю всё подряд. Сам не ломал.

Как только получу ответ удалю.

 
Ohr писал(а) >>

Такой с код базы скачал. Я не програмист так что качаю всё подряд. Сам не ломал.

Как только получу ответ удалю.

Этот кусок кода не из индикатора, а из советника.

 
Ohr >>:

Как сделать так что-бы советник для покупки учитывал только MODE_UPPER именно l_ienvelopes_0, а для продажи MODE_LOWER только l_ienvelopes_8 Другие линии недолжны учитываться!

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

 
Vinin >>:

Этот кусок кода не из индикатора, а из советника.

А я и не говорю что это код индюка! Это код советника использующего индикатор! На графике отображается по двум разным параметрам отображает 4 линии вот как откинуть две не нужные??? То есть мне нужна верхняя с l_ienvelopes_0 и нижняя с l_ienvelopes_8

А он берёт какую ему удобно! Можно сделать что-бы он реагировал только на те линии которые мне нужно?

 
TheXpert >>:

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

Мне и нужен один и тот же индикатор только сразными параметрами! Только ещё нужно что-бы он реагировал только на нужные его части! Смотрите выше.

 

В коде рассчитываются только две линии и они же используются. Какие четыре. Откуда они взялись

 
Vinin >>:

В коде рассчитываются только две линии и они же используются. Какие четыре. Откуда они взялись

Когда вводишь разные пораметры то он рисует 4 линии! Грубо говоря два раза вешает один и тот же индюк!

Обратите внимание для l_ienvelopes_0 и для l_ienvelopes_8 Переменные разные!

 
Ohr >>:

То есть мне нужна верхняя с l_ienvelopes_0 и нижняя с l_ienvelopes_8

А он берёт какую ему удобно! Можно сделать что-бы он реагировал только на те линии которые мне нужно?

Он берет то, что прописано в коде, и не с графика, а рассчитывает значения индикатора сам, внутри эксперта.

Те индикаторы, что повешены на график, ему параллельны.

В переменную l_ienvelopes_0 вносится значение MODE_UPPER индикатора iEnvelopes с параметрами,

прописанными в его строке на баре с номером Shift.

В переменную l_ienvelopes_8 вносится значение MODE_LOWER индикатора iEnvelopes с параметрами,

прописанными в его строке на баре с номером Shift.

Shift обычно определяется во внешних переменных как 0 или 1.

И никаких чудес в этой части кода больше не происходит.

l_ienvelopes_0 = iEnvelopes(NULL, 0, EnvPeriod, EnvMethod, SdvigU,EnvUpperDev, EnvPrice, MODE_UPPER, Shift);
l_ienvelopes_8 = iEnvelopes(NULL, 0, EnvPeriod, EnvMethod, SdvigL,EnvLowerDev, EnvPrice, MODE_LOWER, Shift);
 
Ohr >>:

Когда вводишь разные пораметры то он рисует 4 линии! Грубо говоря два раза вешает один и тот же индюк!

Попробуйте поменять EnvUpperDev и EnvPrice местами.

Вернее поменяйте однозначно, они перепутаны, а дальше будем посмотреть.

Причина обращения: