Помощь в кодировании - страница 406

 
elfural:
Уважаемые mrtools и mladen

Кто-нибудь может помочь? Tom Demark Moving Average является ключевым индикатором в моей стратегии, однако, сигнал тревоги был бы очень полезен, когда указывается новая полка; я был бы очень благодарен, если бы сигнал тревоги был закодирован в индикаторе. С нетерпением жду вашей любезной помощи.

Большое спасибо

Elfural, добавил алерт к версии, которую вы выложили, и хочу показать вам версию, исправленную Младеном, которая может быть вам интересна отсюда: https: //www.mql5.com/en/forum/178551/page2 на всякий случай добавил алерт и к этой версии.

 

привет ребята,

Мне нужна помощь в кодировании этого индикатора. Это отличный индикатор, хотя он задерживает 4-5 свечей. Пожалуйста, помогите.

grail_indic.ex4

Файлы:
 
mrtools:
Elfural, добавил предупреждения к версии, которую вы выложили, и хочу показать вам версию, исправленную Младеном, которая может быть вам интересна отсюда: https: //www.mql5.com/en/forum/178551/page2 на всякий случай добавил предупреждения и к этой версии.

Теперь он делает именно то, что мне нужно.

Большое спасибо за вашу помощь.

 

1 сделка на сигнал.Привет про-кодеры MQL,

Я хотел бы узнать, может ли кто-нибудь помочь мне. Я хотел бы внедрить "одну сделку на сигнал"

в моем советнике. Если советник достигает своей цели по прибыли, то вполне возможно, что он открывает

еще одну сделку в том же направлении тренда. Это может привести к убыточной сделке, потому что

сигнал вот-вот изменится (см. прилагаемые снимки экрана).

Как мне лучше всего реализовать функцию"одна сделка на сигнал"?

Я, конечно, могу увеличить цель по прибыли, чтобы не дать советнику открыть еще одну сделку,

но это, вероятно, не лучший способ.

Я пытался реализовать это, но код компилируется и выдает предупреждение:

" Проверьте старшинство операторов для возможной ошибки; используйте круглые скобки для уточнения старшинства".

Как лучше всего реализовать эту функцию?Заранее спасибо!

extern int maxshorttrades = 1;

extern int maxlongtrades = 1;

//+--------------------------+

//| ORDER Logic / Indicators |

//+--------------------------+

if(openedOrders<=0)

{

double CCIFilter = iCCI(NULL,0,CCIPeriod,CCIMethod,0);

double trendc = iCustom(Symbol(),0, "Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,1);

double trendp = iCustom(Symbol(),0, "Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,2);

//+-----+

//| ПОКУПАТЬ |

//+-----+

for (i=OrdersTotal()-1;i>=0; i--)

if(OrderType()==OP_BUY<maxlongtrades) break; // Проверяем позицию и длинные сделки.

{

if(trendc!=trendp)

{

if(trendc==1 && CCIFilter<-80) // код для покупки

OpenBuy();

return(0);

}

openOrders++;

}

//+------+

//| SELL |

//+------+

for (i=OrdersTotal()-1;i>=0; i--)

if(OrderType()==OP_SELL<maxshorttrades) break; // Проверка позиции и коротких сделок.

{

if(trendc==-1 && CCIFilter>80) // код для продажи

{

OpenSell();

return(0);

}

openOrders++;

}

}

//+-----------------+

//| Закрытие позиций |

//+-----------------+

void CheckForClose()

{

RefreshRates();

double CCIFilter_c = iCCI(NULL,0,CCIPeriod,CCIMethod,0);

double trendc_c = iCustom(Symbol(),0, "Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,1);

double trendp_c = iCustom(Symbol(),0, "Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,2);

for(int i=0;i<OrdersTotal(); i++)

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;

if(OrderMagicNumber()!= MAGIC) continue;

if(OrderSymbol() != s_symbol) continue;

//+-----------+

//| Close BUY |

//+-----------+

if(trendc_c!=trendp_c) // Проверка тренда

{

if(OrderType()==OP_BUY)

{

if(trendc_c==-1 && CCIFilter_c>80) // SELL и фильтр CCI?

{

bool buyClose=OrderClose(OrderTicket(),OrderLots(),MarketInfo(s_symbol,MODE_BID),Slippage*pipMultiplier,clCloseBuy);

if(buyClose==false)

{

int ErrorCode = GetLastError();

string ErrDesc = ErrorDescription(ErrorCode);

string ErrAlert = StringConcatenate("Закрытие ордера на покупку - ошибка ",ErrorCode,": ",ErrDesc);

if(ShowAlerts == true) Alert(ErrAlert);

string ErrLog=StringConcatenate("Bid: ",MarketInfo(s_symbol,MODE_BID), "Lots: ",OrderLots(), "Ticket: ",OrderTicket());

Print(ErrLog);

}

break; }

}

}

Файлы:
signal1.jpg  19 kb
 

Здравствуйте!

Не мог бы кто-нибудь помочь мне с индикатором Linear Price Line? Я пытаюсь сделать его измененную версию, которая отнимает максимум от минимума. Если минимум больше максимума или максимум совпадает с openprice и, следовательно, равен нулю (потому что нет максимума), то на выходе должно быть отрицательное значение (линия в индикаторе должна стрелять под уровень 0.00) Сейчас же она остается положительным числом независимо от того, больше ли высокая часть свечи, чем низкая часть свечи или нет.

Вот нормальная версия и неисправный индикатор разницы.linear_price_bar.zip

linear_price_bartestdiff.mq4

Заранее спасибо

 
tfi_markets:

1 сделка на сигнал.Привет MQL pro-coders,

я хотел бы узнать, может ли кто-нибудь помочь мне.

Я хотел бы реализовать

в своем советнике

"одну сделку на сигнал"

.

Если советник достигает своей цели по прибыли, то вполне возможно, что он открывает

еще одну сделку в том же направлении тренда.

Это может привести к убыточной сделке, потому что

сигнал вот-вот изменится (см. приложенные снимки экрана).

Как мне лучше всего реализовать функцию "одна сделка на сигнал"?

Я, конечно, могу увеличить цель по прибыли, чтобы советник не открыл еще одну сделку,

но это, вероятно, не лучший способ.

Я пытался реализовать это, но

код компилируется и выдает предупреждение:

" Проверьте приоритет оператора для возможной ошибки; используйте круглые скобки, чтобы уточнить приоритет"

Как лучше всего реализовать эту функцию?Заранее спасибо!

попробуйте это

bool Result;

int openedOrders = 0;

for (i=OrdersTotal()-1; i>=0; i--)

{

Result = OrderSelect(i, SELECT_BY_POS,MODE_TRADES);

if (OrderSymbol() != Symbol()) continue;

if (OrderMagicNumber() != MagicNumber) continue;

openedOrders++;

}

if (openedOrders <= 0)

{ .....

 
mrcodix:
Здравствуйте!

Не мог бы кто-нибудь помочь мне с индикатором Linear Price Line? Я пытаюсь сделать его измененную версию, которая вычитает максимум из минимума. Если минимум больше максимума или максимум совпадает с openprice и, следовательно, равен нулю (потому что нет максимума), то на выходе должно получиться отрицательное значение (линия в индикаторе должна выстрелить под уровень 0.00). Сейчас это остается положительным числом независимо от того, больше ли высокая часть свечи по сравнению с низкой частью свечи или нет.

Вот нормальная версия и неисправный индикатор разницы.linear_price_bar.zip

linear_price_bartestdiff.mq4

Заранее спасибо

mrcodix

Лоу никогда не может быть больше максимума того же бара

 

Да, я понимаю, но что я хотел бы построить в своем индикаторе, так это разницу между HIGH to OPEN и LOW to OPEN. Если абсолютное число low to open больше, чем абсолютное число high to open, то я бы хотел, чтобы разница между этими двумя показателями была отрицательной, чтобы она строилась под нулевой линией. Итак, как мне сделать вывод (High - open)-(Low-open) отрицательным, если второе больше первого.

С уважением

 

Сейчас я попробовал следующее

for(i=0; i<Bars; i++)

{

BarH = High-Open;

BarL = Low-Open;

BarC = Close-Open;

if(BarC>0) UpDays += 1;

else if(BarC<0) DownDays +=1;

else if(BarC==0) NeutralDays +=1;

если (BarL > BarH) ExtMapBuffer7 = 0-(BarH-BarL);

else if (BarL < BarH) ExtMapBuffer7 =(BarH-BarL);

Тем не менее, на выходе получается положительное число! Пожалуйста, помогите.

 
mrcodix:
Да, я понимаю, но что я хотел бы построить в моем индикаторе, так это разницу между HIGH to OPEN и LOW to OPEN. Если абсолютное число low to open больше, чем абсолютное число high to open, то я хотел бы, чтобы разница между этими двумя значениями была отрицательной, чтобы она строилась под нулевой линией. Итак, как мне сделать вывод (High - open)-(Low-open) отрицательным, если второе больше первого. С уважением.

Не уверен, что вы пытаетесь сделать. Может быть так?

Файлы:
Причина обращения: