Функция определения последней закрытой позиции по стопу имеет тип bool, а вы пытаетесь возвращать из неё тип double. Соответственно, она вам возвращает либо 0, либо 1.
Я ж вам писал, что в неё нужно добавить передачу одной переменной по ссылке:
Функция определения последней закрытой позиции по стопу имеет тип bool, а вы пытаетесь возвращать из неё тип double. Соответственно, она вам возвращает либо 0, либо 1.
Я ж вам писал, что в неё нужно добавить передачу одной переменной по ссылке:
Теперь проверяем, например, последнюю Buy:
Примерно так...
Сделал все как Вы сказали. Все компилируется......но функция при тестировании советника не работает.....все позиции советник открывает 0.1 лота.
doubleMagic, Lot;int start()
{
double Price=iOpen (Symbol (),0,0);
int last_order_bar = 0;
int ot = OrdersTotal();
if (ot>0) //если есть ордера в рынке
{
if (OrderSelect (ot-1,SELECT_BY_POS))
if (OrderType ()==OP_BUY || OrderType ()==OP_SELL )
last_order_bar = iBarShift (Symbol (),0,OrderOpenTime ());
}
int last_hist_order_bar = 0;
int oht = OrdersHistoryTotal();
if (oht>0)
{
if (OrderSelect (oht-1,SELECT_BY_POS, MODE_HISTORY))
if (OrderType ()==OP_BUY || OrderType ()==OP_SELL)
last_hist_order_bar = iBarShift (Symbol (),0,OrderOpenTime ());
}
if (ot==0)
if (Bid ==Price)
//=============================================================== if(((Open[1]-Close[1])>100*Point)&&((Open[1]-Close[1])<120*Point))
if(((High[1]-Open[1])>40*Point)&&((High[1]-Open[1])<60*Point))
if(((Close[1]-Low[1])>40*Point)&&((Close[1]-Low[1])<60*Point))
//============================================================
// задавать минимальное значение лота я не стал,мне кажется для тестера это не обязательноif (isCloseLastPosByStop(Symbol(), OP_BUY, Magic, Lot))
{Lot=Lot*2;OrderSend(Symbol(),OP_SELL,Lot,Bid,1,Ask+1500*Point,Ask-300*Point,"jfh",123 );
}
else
{
Lot=0.1;
OrderSend(Symbol(),OP_SELL,1,Bid,Lot,Ask+1500*Point,Ask-300*Point,"jfh",123 );
}
return(0);
}
//============================================================ bool isCloseLastPosByStop(string sy, int op, int mn, double ll) //у Вас перед названием формального параметра 11 стоял знак &- я его убрал.
{
double pt;
datetime t; //у вас тип переменной t был int - я сделал datetimeint dg, i, j=-1, k=OrdersHistoryTotal()-1;
for (i=k; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
{
if (OrderMagicNumber()!=mn) continue; // если магик не тот, переходим к следующемуif (OrderSymbol()!=sy) continue; // если символ не тот, переходим к следующемуif (OrderType()!=op) continue; // если тип не тот, переходим к следующемуif (t<OrderCloseTime())
{
t=OrderCloseTime();
j=i;
}
}
}
if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY))
{
dg=MarketInfo(OrderSymbol(), MODE_DIGITS); // количество знаков в цене символа ордера
pt=MarketInfo(OrderSymbol(), MODE_POINT); // размер пункта инструмента в валюте котировки ордераif (MathAbs(OrderClosePrice()-OrderStopLoss())< 0.5*pt) // Если закрыт по стопу
{
ll=OrderLots(); // записываем количество лотов в ордере, закрытом по стопуreturn(true); // возвращаем истину
}
}
return(False); // возвращаем ложь (позиции нету, либо не по стопу)
}
Подскажите пожалуйста в чем моя ошибка.
Не понимаю такой момент - как вы правильно заметили функция возвращает значение типа bool,а в вызове функции,в который функция должна положить значение типа bool
Сделал все как Вы сказали. Все компилируется......но функция при тестировании советника не работает.....все позиции советник открывает 0.1 лота.
Подскажите пожалуйста в чем моя ошибка.
Не понимаю такой момент - как вы правильно заметили функция возвращает значение типа bool,а в вызове функции,в который функция должна положить значение типа bool
Вы предлагаете указать другие типы значений .
Спасибо.
bool isCloseLastPosByStop(string sy, int op, int mn, double ll) //у Вас перед названием формального параметра 11 стоял знак &- я его убрал.
Зачем убрали. Если бы оставили, то все бы работало
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Добрый вечер.
Подскажите, пожалуйста, как добавить закрытие всех позиций и удаление всех ордеров по окончании торговой недели?
Спасибо!
Добрый вечер.
Подскажите, пожалуйста, как добавить закрытие всех позиций и удаление всех ордеров по окончании торговой недели?
Спасибо!
Написать такой скрипт, потом кидать его на график когда требуется всё закрыть и удалить. Делов-то...
Пожалуйста!
Написать такой скрипт, потом кидать его на график когда требуется всё закрыть и удалить. Делов-то...
Пожалуйста!
Спасибо:) Уточняю запрос.
Нужно добавить в советник код, который закроет все ордера и позиции по окончании торговой недели.
Не могли бы Вы написать данный код?
Спасибо:) Уточняю запрос.
Нужно добавить в советник код, который закроет все ордера и позиции по окончании торговой недели.
Не могли бы Вы написать данный код?
Я могу. Не вопрос. А вы хоть что-то сделали сами? Это ветка не для получения готового нахаляву, а для помощи тем, кто сам пытается кодить.
Посмотрел тут https://book.mql4.com/ru/trading/orderclose
Поискал в гугле, на форуме. Не обнаружил. Возможно, неправильно пишу запрос.
Решил спросить в теме для новичков.
Как прописать?
как запускаешь скрипт:
высвечивается окно с вкладками "общие" и "входные параметры".
А можно ли, чтоб при запуске скрипта просто выводилось окошко для даты, я вбивал дату, нажимал на окей и все работало?
И можно ли сделать так, чтобы скрипт запоминал последнюю мою вводимую дату?
Функция определения последней закрытой позиции по стопу имеет тип bool, а вы пытаетесь возвращать из неё тип double. Соответственно, она вам возвращает либо 0, либо 1.
Я ж вам писал, что в неё нужно добавить передачу одной переменной по ссылке:
Теперь проверяем, например, последнюю Buy:
Примерно так...
Функция определения последней закрытой позиции по стопу имеет тип bool, а вы пытаетесь возвращать из неё тип double. Соответственно, она вам возвращает либо 0, либо 1.
Я ж вам писал, что в неё нужно добавить передачу одной переменной по ссылке:
Теперь проверяем, например, последнюю Buy:
Примерно так...
Сделал все как Вы сказали. Все компилируется......но функция при тестировании советника не работает.....все позиции советник открывает 0.1 лота.
Подскажите пожалуйста в чем моя ошибка.
Не понимаю такой момент - как вы правильно заметили функция возвращает значение типа bool,а в вызове функции,в который функция должна положить значение типа bool
Вы предлагаете указать другие типы значений .
Спасибо.
Сделал все как Вы сказали. Все компилируется......но функция при тестировании советника не работает.....все позиции советник открывает 0.1 лота.
Подскажите пожалуйста в чем моя ошибка.
Не понимаю такой момент - как вы правильно заметили функция возвращает значение типа bool,а в вызове функции,в который функция должна положить значение типа bool
Вы предлагаете указать другие типы значений .
Спасибо.
Зачем убрали. Если бы оставили, то все бы работало
Зачем убрали. Если бы оставили, то все бы работало