Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Здравствуйте,
У меня есть несколько коротких вопросов по кодированию, мой MT4, кажется, перешел на MQL5.
Некоторые блоки кода удаления больше не работают:
Под ними я получаю сообщение об ошибке:
'(' Object Pointer expected.
//+----------------------------------------------------------------------------+
if(sell)if(oppositeclose)close(OP_BUY);
if(buy)if(oppositeclose)close(OP_SELL);
if(hidetp || hidesl){hideclose(OP_BUY);hideclose(OP_SELL);}
if(usetimeout && onetime){closetime(OP_BUY);closetime(OP_SELL);}
if(onecancelother){if(totalsell>0){delete(OP_BUYSTOP);delete(OP_BUYLIMIT);}if(totalbuy>0){delete(OP_SELLSTOP);delete(OP_SELLIMIT);}}
Ниже я получаю сообщения об ошибках: 'delete' - ожидается имя и
'}' - выражения не разрешены в глобальной области видимости
void delete(int type){
if(OrdersTotal()>0){
for(i=OrdersTotal();i>=0;i--){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(type!=6){
if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic && OrderType()==type){
OrderDelete(OrderTicket());
}
}
if(type==6){
if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic && OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP
|| OrderType()==OP_BUYLIMIT || OrderType()==OP_SELLLIMIT){
OrderDelete(OrderTicket());
}
}
}
}
}
Не мог бы кто-нибудь помочь?
Заранее спасибо!
Привет, товарищи трейдеры/кодеры!
Я надеюсь, что кто-нибудь сможет мне помочь.
Искал и пробовал несколько советников вокруг, я все еще не нашел то, что я ищу.
Возможно, я ищу что-то, что трудно найти, или я не стараюсь изо всех сил :-)
Я также торгую по системе SR, рисуя свои линии и создавая временные каналы. Есть ли что-то, что может исполнять позиции, когда цена достигает линий? Дело в том, что она должна быть способна открывать позиции каждый раз, когда цена достигает линий. Красные линии для продажи, синие для покупки, желтые для SL и зеленые для TP. То есть никаких разовых сделок или OCO.
Заранее спасибо!!!
Привет коллеги трейдеры/кодеры!
Я надеюсь, что кто-нибудь сможет мне помочь.
Искал и пробовал несколько советников вокруг, я все еще не нашел то, что искал.
Возможно, я ищу что-то, что трудно найти, или я не стараюсь изо всех сил :-)
Я также торгую по системе SR, рисуя свои линии и создавая временные каналы. Есть ли что-то, что может исполнять позиции, когда цена достигает линий? Дело в том, что она должна быть способна открывать позиции каждый раз, когда цена достигает линий. Красные линии для продажи, синие для покупки, желтые для SL и зеленые для TP. То есть никаких разовых сделок или OCO.
Заранее спасибо!!!Вы проверили советника из этой темы: https: //www.mql5.com/en/forum/176382?
Изменить стоп-лосс
Привет всем,
Кто-нибудь знает, почему мой ордер modify stop loss работает неправильно?
Стоп лосс очень быстро перемещается между DonchianLowM5 и OrderOpenPrice, когда DonchianLowM5 движется выше OrderOpenPrice.
Вот код (извините, не знаю, как правильно вставить).
//--- Движение стоп-лосса
if (OrdersTotal() > 0)
{
for (int i = 0; i < OrdersTotal(); i++)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderType() == OP_BUY)
{
if (OrderStopLoss() < OrderOpenPrice())
{
if (DonchianLowM5 > OrderStopLoss())
{
OrderModify(OrderTicket(), OrderOpenPrice(), DonchianLowM5, OrderTakeProfit(), OrderExpiration(), Green);
}
}
if (OrderStopLoss() > OrderOpenPrice())
{
if (DonchianLowH4 <= OrderOpenPrice())
{
OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice(), OrderTakeProfit(), OrderExpiration(), Green);
}
}
if (OrderStopLoss() >= OrderOpenPrice())
{
if (DonchianLowH4 > OrderStopLoss())
{
OrderModify(OrderTicket(), OrderOpenPrice(), DonchianLowH4, OrderTakeProfit(), OrderExpiration(), Green);
}
}
}
Некоторые моменты вызывают недоумение.
Цель кода состоит в том, чтобы:
1. Модифицировать стоп-лосс для отслеживания нижнего канала Дончиана на графике M5 до OrderOpenPrice. Стоп-лосс не должен следовать за каналом Дончиана на графике М5 за пределами цены открытия ордера. Он перемещается в безубыток.
2. Иногда большая свеча закрывается за пределами OrderOpenPrice, поэтому вторая часть кода должна вернуть ее только в безубыток.
3. Стоп-лосс отслеживает лоу Дончиана на графике H4, как только канал Дончиана на графике H4 превысит OrderOpenPrice.
Каналы Дончиана кодируются следующим образом:
DonchianLowM5 = iLow(NULL, TimingChart, iLowest(NULL, TimingChart, MODE_LOW, TimingDNCPeriod, TimingChartShift + 1));
DonchianHighM5 = iHigh(NULL, TimingChart, iHighest(NULL, TimingChart, MODE_HIGH, TimingDNCPeriod, TimingChartShift + 1));
Я проверил журнал, и стоп-лосс модифицируется до ТОЧНОЙ цены открытия ордера (он не ниже, даже на долю пункта, что заставило бы его отслеживать лоу Дончиана на графике M5.
Кто-нибудь знает, из-за чего это происходит?
Привет всем,
Кто-нибудь знает, почему мой модифицированный ордер стоп-лосс работает неправильно?
Стоп лосс очень быстро перемещается между DonchianLowM5 и OrderOpenPrice, когда DonchianLowM5 движется выше OrderOpenPrice.
Вот код (извините, не знаю, как правильно вставить).
//--- Движение стоп-лосса
if (OrdersTotal() > 0)
{
for (int i = 0; i < OrdersTotal(); i++)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderType() == OP_BUY)
{
if (OrderStopLoss() < OrderOpenPrice())
{
if (DonchianLowM5 > OrderStopLoss())
{
OrderModify(OrderTicket(), OrderOpenPrice(), DonchianLowM5, OrderTakeProfit(), OrderExpiration(), Green);
}
}
if (OrderStopLoss() > OrderOpenPrice())
{
if (DonchianLowH4 <= OrderOpenPrice())
{
OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice(), OrderTakeProfit(), OrderExpiration(), Green);
}
}
if (OrderStopLoss() >= OrderOpenPrice())
{
if (DonchianLowH4 > OrderStopLoss())
{
OrderModify(OrderTicket(), OrderOpenPrice(), DonchianLowH4, OrderTakeProfit(), OrderExpiration(), Green);
}
}
}
Некоторые моменты вызывают недоумение.
Цель кода состоит в том, чтобы:
1. Модифицировать стоп-лосс для отслеживания нижнего канала Дончиана на графике M5 до OrderOpenPrice. Стоп-лосс не должен следовать за каналом Дончиана на графике М5 за пределами цены открытия ордера. Он перемещается в безубыток.
2. Иногда большая свеча закрывается за пределами OrderOpenPrice, поэтому вторая часть кода должна вернуть ее только в безубыток.
3. Стоп-лосс отслеживает лоу Дончиана на графике H4, как только канал Дончиана на графике H4 превысит OrderOpenPrice.
Каналы Дончиана кодируются следующим образом:
DonchianLowM5 = iLow(NULL, TimingChart, iLowest(NULL, TimingChart, MODE_LOW, TimingDNCPeriod, TimingChartShift + 1));
DonchianHighM5 = iHigh(NULL, TimingChart, iHighest(NULL, TimingChart, MODE_HIGH, TimingDNCPeriod, TimingChartShift + 1));
Я проверил журнал и стоп-лосс изменяется ТОЧНО до цены открытия ордера (он не ниже, даже на долю пункта, что заставило бы его отслеживать Donchian Low на графике M5.
Кто-нибудь знает, из-за чего это происходит?Вы используете DonchianLowM5 и DonchianLowH4 (я предполагаю, что это разные значения). Это может вызвать у вас проблему
Здравствуйте, Младен,
Спасибо за ваш ответ.
DonchianLowM5 и DonchianLowH4 - это разные значения, но каждое из них имеет свое назначение. DonchianLowM5 используется для настройки SL на безубыточность на ранних стадиях торговли. DonchianLowH4 настраивает SL как механизм трейлинг-стопа. Это должно вступить в силу только после того, как DonchianLowH4 превысит OrderOpenPrice.
Я изучил этот вопрос немного подробнее и, возможно, нашел проблему. Я хотел определить, переставляет ли функция OrderModify SL точно в соответствии с OrderOpenPrice. Но это не так. OrderOpenPrice в моем журнале указан как 1.12224, точность 5 цифр, а в функции Print ниже указано, что OrderOpenPrice имеет только 4 цифры. Поэтому SL будет использовать эту 4-значную цифру, а не 5-значную. Мне нужно, чтобы она использовала 5-значную.
Как я могу заставить функцию ordermodify настроить SL на ТОЧНУЮ цену открытия заказа в 5 цифр?
Вот мой код:
{
OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice(), OrderTakeProfit(), OrderExpiration(), Green);
Print("SL изменен на цену открытия ордера ", OrderOpenPrice());
}
Я пробовал это, но это не работает:
OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(OrderOpenPrice(), 5), OrderTakeProfit(), OrderExpiration(), Green);
Print("SL изменен на цену открытия ордера ", OrderOpenPrice());
У моего брокера 5 цифр, потому что журнал подтверждает цену, по которой он открыл ордер - 1.12224.
Надеюсь, мое объяснение имеет смысл. Есть идеи?
Здравствуйте, Младен,
Спасибо за ваш ответ.
DonchianLowM5 и DonchianLowH4 - это разные значения, но каждое из них имеет свое назначение. DonchianLowM5 используется для настройки SL на безубыточность на ранних стадиях торговли. DonchianLowH4 настраивает SL как механизм трейлинг-стопа. Это должно вступить в силу только после того, как DonchianLowH4 превысит OrderOpenPrice.
Я изучил этот вопрос немного подробнее и, возможно, нашел проблему. Я хотел определить, переставляет ли функция OrderModify SL точно в соответствии с OrderOpenPrice. Но это не так. OrderOpenPrice в моем журнале указан как 1.12224, точность 5 цифр, а в функции Print ниже указано, что OrderOpenPrice имеет только 4 цифры. Поэтому SL будет использовать эту 4-значную цифру, а не 5-значную. Мне нужно, чтобы она использовала 5-значную.
Как я могу заставить функцию ordermodify настроить SL на ТОЧНУЮ цену открытия заказа в 5 цифр?
Вот мой код:
{
OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice(), OrderTakeProfit(), OrderExpiration(), Green);
Print("SL изменен на цену открытия ордера ", OrderOpenPrice());
}
Я пробовал это, но это не работает:
OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(OrderOpenPrice(), 5), OrderTakeProfit(), OrderExpiration(), Green);
Print("SL изменен на цену открытия ордера ", OrderOpenPrice());
У моего брокера 5 цифр, потому что журнал подтверждает цену, по которой он открыл ордер - 1.12224.
Надеюсь, мое объяснение имеет смысл. Есть идеи?Тот факт, что вы получаете цену с точностью до 4 цифр, не является проблемой: просто используйте эту функцию Print(DoubleToStr(OrderOpenPrice(),Digits)); и вы получите правильную распечатку. Проблема в чем-то другом, и я подумал, что если вы сравниваете с двумя совершенно разными ценами, то это может вызвать такие проблемы
О, да.
Что вы имеете в виду? У меня неправильная структура скобок?
Код должен выбрать либо DonchianLowM5, либо DonchianLowH4 в зависимости от ситуации.
Может быть, я неправильно строю скобки вверх, вниз для каждого элемента кода.
Попробуйте упростить код. Что-то вроде прилагаемого
PS: проверьте, та ли это логика, которую вы имели в виду.
Здравствуйте, вот я два индикатора, один основан на RSI и другой на индексе силы, но проблема просит меня rsi ищет кривые, он указывает не то, что я хочу, если у вас есть решение, очевидно, я могу отправить вам файл, если необходимо, спасибо за вашу помощь ... извините за английский "google traductor"