Посмотрел исправленный код, небо и земля. Есть чему поучится. Спасибо.
Изменено 10 июля, 2017 пользователем gosha342
От xbms, 13 апреля, 2013 в Уголок Программиста
Посмотрел исправленный код, небо и земля. Есть чему поучится. Спасибо.
Изменено 10 июля, 2017 пользователем gosha342
Посмотрел исправленный код, небо и земля. Есть чему поучится. Спасибо.
DoubleToStr Вот этого не было.
DoubleToStr Вот этого не было.
У меня появился вопрос общего характера. Вот я к примеру пишу любой код.
extern int Slippage=3;
extern int MaPeriod=21;
extern int MaShift =3;
extern int TrailingStop= 30;
И иногда одно слово не меняет свой цвет на красный. Я знаю, что это ошибка, но почему она возникает, так я и не понял.
по-идее ошибку компиляция покажет.. может, зарезервированное слово?
У меня появился вопрос общего характера. Вот я к примеру пишу любой код.
extern int Slippage=3;
extern int MaPeriod=21;
extern int MaShift =3;
extern int TrailingStop= 30;
И иногда одно слово не меняет свой цвет на красный. Я знаю, что это ошибка, но почему она возникает, так я и не понял.
Да в том и дело, что при компиляции ошибка выйдет и даже не одна. А такая фигня может быть в любом месте когда прописываю параметры,а самое главное, это может быть любое слово (Magic, StopLoss и т.д.).
Да в том и дело, что при компиляции ошибка выйдет и даже не одна. А такая фигня может быть в любом месте когда прописываю параметры,а самое главное, это может быть любое слово (Magic, StopLoss и т.д.).
Только зачем это?
Спасибо, задача состоит в том чтобы робот отслеживал сигнал каждый новый день, и если ордер открыт он его контролирует только в день открытия, на след. день он ищет вход для нового ордера и тд
Добрый день.
Возник вопрос с iCustom?
Есть индикатор FL11, как правильно записать параметры iCustom, чтобы красное/синее "солнышко", можно было использовать как фильтр для входа?
uptr = iCustom(NULL, 0, "FL11", 4, 0);
dntr = iCustom(NULL, 0, "FL11", 5, 0);
потом
bool UP_Trend()
{
if(uptr > 0 && uptr != 2147483647.0) return(true);
return(false);
}
bool DN_Trend()
{
if(dntr > 0 && dntr != 2147483647.0) return(true);
return(false);
}
потом условие
if( DN_Trend()==true)
........................
Спасибо уяснил \M/
Запутался еще в одном деле, закрытие частично ордера по профиту:
if ( CountSell()>0)
{
for(int i = OrdersTotal() -1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
Price = NormalizeDouble(OrderOpenPrice(),Digits);
if (OrderMagicNumber() == Magic && OrderType() == OP_SELL && NormalizeDouble(Ask+Profit*Point,Digits) if(!OrderClose(OrderTicket(), closeLots, Bid, Slippage, Black))
Print("Ошибка");
}
}
}
где ордер открыт Lots=0,3
closeLots=0.1
Закрывает весь ордер?
Изменено 13 июля, 2017 пользователем d1w4m3
После частичного закрытия нужно увеличить Profit для оставшегося ордера, да и подтянуть СЛ не помешает...Увидел проблему((он закрывает 3 раза по 0.1, только понять как избежать этого не догоняю((или надо отдохнуть
0ll спасибо за подсказки. Буду мучить компилятор - не боги ж горшки обжигают? Не солидно как-то.
После частичного закрытия нужно увеличить Profit для оставшегося ордера, да и подтянуть СЛ не помешает...Увидел проблему((он закрывает 3 раза по 0.1, только понять как избежать этого не догоняю((или надо отдохнуть
У меня появился вопрос общего характера. Вот я к примеру пишу любой код.
extern int Slippage=3;
extern int MaPeriod=21;
extern int MaShift =3;
extern int TrailingStop= 30;
И иногда одно слово не меняет свой цвет на красный. Я знаю, что это ошибка, но почему она возникает, так я и не понял.
В вашем коде есть условие выбора ордера:
Извиняюсь, но нельзя ли мне как тугодуму объяснить, где тут покопать, а где тут просверлить ^:)^)))а то что то совсем заплутал
После частичного закрытия нужно увеличить Profit для оставшегося ордера, да и подтянуть СЛ не помешает...Увидел проблему((он закрывает 3 раза по 0.1, только понять как избежать этого не догоняю((или надо отдохнуть
Спасибо, но это я понимаю, вопрос в том?
Мне опять надо открывать цикл после функции OrderClose()?Чтобы найти получившийся ордер или тикет сохраняется?
Тикет меняется, а зачем искать получившийся ордер?
Спасибо, но это я понимаю, вопрос в том?
Мне опять надо открывать цикл после функции OrderClose()?Чтобы найти получившийся ордер или тикет сохраняется?
Тикет меняется, а зачем искать получившийся ордер?
Спасибо, но это я понимаю, вопрос в том?
Мне опять надо открывать цикл после функции OrderClose()?Чтобы найти получившийся ордер или тикет сохраняется?
Вы в цикле частично закрываете все ордера по выбранному направлению, после цикла меняете цель профита и всё.
Там где OrderModify меняйте условие выбора ордеров, т.е. переменные Profit или Price!!! - эти переменные отвечают за отработку условия частичного закрытия, я не знаю как они вычисляются, но их надо менять!Что то я упускаю походу((
if ( CountSell()>0 && NormalizeDouble(Ask+Profit*Point,Digits) {
for(int i = OrdersTotal() -1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderMagicNumber() == Magic && OrderType() == OP_SELL )
if(OrderClose(OrderTicket(), closeLots, Bid, Slippage, Black))
Price = NormalizeDouble(OrderOpenPrice(),Digits)-NormalizeDouble(Ask+Profit*Point,Digits);
{
if(!OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), Price-TP, 0))
Print("Ошибка ");
}
}
}
}
Спасибо :d
Уважаемые Гуру MQL! Помогите пожалуйста вшить в советник работу в определенный день недели!. Например: понедельник -1, вторник-2, среда-3 и т.д. Благодарю за помощь!
Для публикации сообщений создайте учётную запись или авторизуйтесь
Перейти к списку тем