Здравствуйте! Профи, подскажите пожалуйста! Как нужно написать в советнике, чтобы при отключении ставки советник брал новую ставку в противоположном направлении на этом же баре (типа "перевертыш"). Я тестирую по модели "при открытии нового бара". Для примера советник:
При запуске в окне клиентского терминала, в журнале появляется ошибка:
При этом в настройках (меню клиентского терминала Сервис -> Настройки -> закладка Почта) установлены такие параметры:
Где вместо трех точек в полях SMTP логин и От кого стоит имя того ящика, с к-о я хочу отправить сообщение, а в поле Кому – имя почтового ящика, на к-й я хочу отправить сообщение.
При этом номер порта, к-й указан в поле Сервер SMTPдействительно 25:
Примечание: скриншот сделан в разделе Помощь на почтовом сервере Mail.Ru.
Вопрос: что это за ошибка и как от нее избавиться? Компилятор ошибок не выявляет, а функция GetLastError() возвращает значение 0.
P.S. Чтобы не захламлять форум, заранее благодарю за ответ
Доброго времени суток. Вопрос по стандартной функции SendMail… Для того, чтобы понять, как работает функция написал такой скрипт:
При запуске в окне клиентского терминала, в журнале появляется ошибка:
При этом в настройках (меню клиентского терминала Сервис -> Настройки -> закладка Почта) установлены такие параметры:
Где вместо трех точек в полях SMTP логин и От кого стоит имя того ящика, с к-о я хочу отправить сообщение, а в поле Кому – имя почтового ящика, на к-й я хочу отправить сообщение.
При этом номер порта, к-й указан в поле Сервер SMTPдействительно 25:
Примечание: скриншот сделан в разделе Помощь на почтовом сервере Mail.Ru.
Вопрос: что это за ошибка и как от нее избавиться? Компилятор ошибок не выявляет, а функция GetLastError() возвращает значение 0.
P.S. Чтобы не захламлять форум, заранее благодарю за ответ
Порт и шифрование посмотрите. Может 2525 надо поставить?
//-----------------Закрытие по истории в безубыток--------------------//---------------------расчет по истории ордеров номера очередной итерации-----------------------------------------------
Iteration = 0; // зануляем инерации перед их учетом в цикле по истории
Sum_Loss = 0; // суммарный убыток по этим итерациямdatetime
Time_at_History_Current = 0,
Time_at_History_Previos = 0;
if(OrdersHistoryTotal() != 0)
{
for(int counter = OrdersHistoryTotal()-1; counter >= 0; counter--)
{
OrderSelect(counter, SELECT_BY_POS, MODE_HISTORY);
if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
{
if(OrderType() == OP_BUY || OrderType() == OP_SELL)
{
if(OrderProfit() < 0) // если убыток по выбранному ордеру, то считаем суммарный и записываем время закрытия ордера// для последующего его анализа при подсчете количества итераций
{
double lastLoss = OrderProfit();
Sum_Loss=Sum_Loss+lastLoss; // считаем общий убыток по закрытым подряд убыточным ордерам
Time_at_History_Current = OrderCloseTime();
}
//Print(" Time_at_History_Current_в цикле = ", TimeToStr(Time_at_History_Current, TIME_DATE|TIME_SECONDS));//Print(" Time_at_History_Previos_в цикле = ", TimeToStr(Time_at_History_Previos, TIME_DATE|TIME_SECONDS));if(Time_at_History_Current != Time_at_History_Previos) // если они не равны, то считаем итерации и делаем их равными
{
Time_at_History_Previos = Time_at_History_Current ;
Iteration++;
//Print("Iteration at History в условии сравнения = ", Iteration);
}
else// они равны, то проверяем, дополнительно, наличие профита по выбранному следующему ордеру и выходим из цикла
{
if(OrderProfit() >= 0)
break;
}
}
}
}
}
if (Sum_Loss < 0.0) { // Имеем убыток по закрытым позамdouble money = Lots;
BuyLots = GetBuyLotsSum();
SellLots = GetSellLotsSum();
if(BuyLots > SellLots)money = BuyLots * 10;
if(BuyLots < SellLots)money = SellLots * 10;
if (((AccountEquity() + Sum_Loss + (Sum_Loss / money)) >= AccountBalance()) && (((totalSell > 0) && (totalBuy < 1)) || ((totalSell < 1) && (totalBuy > 0)))) { // Достигли безубытка// Здесь какой-то код, который необходимо выполнить при достижении безубытка
CloseAllBuy();
CloseAllSell();
Sum_Loss = 0.0;
ни как не получается у меня сделать, что бы когда была закрыта сделка в минус, то открывался цикл, и если следующий ордер закрылся больше нуля, тоесть положительный баланс, но меньше отрицательного, то мы к отрицательному прибавляем плюс, и получаем новое отрицательное значение, которое уже меньше.
if(OrderProfit() >= 0 && Sum_Loss < 0.0)
double lastLoss_two = OrderProfit();
Sum_Loss=Sum_Loss+lastLoss_two; // считаем общий убыток по закрытым подряд убыточным ордерам
Time_at_History_Current = OrderCloseTime();
}
а если больше отрицательного, по сигналу, то закрываем ордер и начинаем цикл с начала.
Ситуация в том, что когда данный код закрывает сделку в убыток, то он запоминает минусовой баланс, а когда закрывает сделку в плюс, и при этом плюс меньше баланса, то он обнуляет Sum_Loss, а мне надо, что бы он не обнулял, а скосил.
то есть, сейчас он вот как работает:
проверяет закрытый ордер, если у закрытого ордера профит меньше нуля, то этот профит приплюсовывается к Sum_Loss, и так до тех пор, пока профит открытой сделки не превысит (будет больше) Sum_Loss, при достижении сделка закрывается, и Sum_Loss обнуляется и начинает работать цикл сначала.
а мне нужно:
ордер закрылся в минус, его профит минусовой прибавился к Sum_Loss, после если следующая сделка закрылась с профитом положительным то уменьшаем сумму Sum_Loss на сумму полученную от прибыльного профита, а значит следующему открытому ордеру Sum_Loss достается уже с меньшей суммой, и так до тепх пор, пока прибыль от ордеров станет больше Sum_Loss, и тогда Sum_Loss обнуляем и начинаем новый цикл.
Sum_Loss = 0;
1-й закрытый ордер: профит (-50) < 0
Sum_Loss + профит (Sum_Loss + (-50))
Sum_Loss = -50;
2-й закрытый ордер: профит(+40) > 0 и Sum_Loss < 0
Доброго времени суток. Вопрос по стандартной функции SendMail… Для того, чтобы понять, как работает функция написал такой скрипт:
При запуске в окне клиентского терминала, в журнале появляется ошибка:
При этом в настройках (меню клиентского терминала Сервис -> Настройки -> закладка Почта) установлены такие параметры:
Где вместо трех точек в полях SMTP логин и От кого стоит имя того ящика, с к-о я хочу отправить сообщение, а в поле Кому – имя почтового ящика, на к-й я хочу отправить сообщение.
При этом номер порта, к-й указан в поле Сервер SMTPдействительно 25:
Примечание: скриншот сделан в разделе Помощь на почтовом сервере Mail.Ru.
Вопрос: что это за ошибка и как от нее избавиться? Компилятор ошибок не выявляет, а функция GetLastError() возвращает значение 0.
P.S. Чтобы не захламлять форум, заранее благодарю за ответ
Выставляю отложенный ордер по цене х. Ордер преобразуется в рыночный по цене Y. можно ли где то узнать по какой цене был выставлен отложенный ордер (в журнале ...там или ) или свой массив придется писать
Прошу подсказать возможный источник ошибки. Я только разбираюсь в языке, поэтому малость застопорился.
Задача в коде эксперта: прочитать данные из файла .scv (два значения в строке, 400 строк) и записать их в массив.
double signals_array[400][2];
int init()
{
int Handle;
Handle=FileOpen("Signals.csv",FILE_CSV|FILE_READ,";");// Открытие файлаif(Handle<0) // Неудача при открытии файла
{
if(GetLastError()==4103) // Если файла не существует,..Alert("Нет файла");//.. извещаем трейдера else// При любой другой ошибке..Alert("Ошибка при открытии файла");//..такое сообщPlaySound("Bzrrr.wav"); // Звуковое сопровождениеreturn; // Выход из start()
}
for (int i = 0; i < 400; i++)
{
for (int j = 0; j < 2; j++)
signals_array[i][j] = StrToDouble(FileReadString(Handle));
}
Alert (signals_array[120][0],"; ",signals_array[0][1]," OK!");
//----return(0);
}
Проблема такова: если кинуть эксперт на график, он выводит алерт с верными значениями из массива, однако, если попробовать протестировать эксперт, то он в журнале выводит алерт "Нет файла". То есть вроде к файлу не может доступ получить (хотя это невероятно), а в массив записывает значения (что подтверждается другим алертом), но застревает на нахождении файла, судя по журналу. Запутался. Ниже скрин.
Проблема такова: если кинуть эксперт на график, он выводит алерт с верными значениями из массива, однако, если попробовать протестировать эксперт, то он в журнале выводит алерт "Нет файла". То есть вроде к файлу не может доступ получить (хотя это невероятно), и в массив записывает значения (что подтверждается другим алертом), но застревает на нахождении файла по журналу. Запутался.
В тестере и на чарте файлы пишутся и читаются в разных каталогах:
Прошу подсказать возможный источник ошибки. Я только разбираюсь в языке, поэтому малость застопорился.
Задача в коде эксперта: прочитать данные из файла .scv (два значения в строке, 400 строк) и записать их в массив.
Проблема такова: если кинуть эксперт на график, он выводит алерт с верными значениями из массива, однако, если попробовать протестировать эксперт, то он в журнале выводит алерт "Нет файла". То есть вроде к файлу не может доступ получить (хотя это невероятно), а в массив записывает значения (что подтверждается другим алертом), но застревает на нахождении файла, судя по журналу. Запутался. Ниже скрин.
Если файл открыт, то его надо закрыть, даже, если получена ошибка в работе с ним. Пока больше ошибок не вижу.
Доброго времени суток. Вопрос по стандартной функции SendMail… Для того, чтобы понять, как работает функция написал такой скрипт:
При запуске в окне клиентского терминала, в журнале появляется ошибка:
При этом в настройках (меню клиентского терминала Сервис -> Настройки -> закладка Почта) установлены такие параметры:
Где вместо трех точек в полях SMTP логин и От кого стоит имя того ящика, с к-о я хочу отправить сообщение, а в поле Кому – имя почтового ящика, на к-й я хочу отправить сообщение.
При этом номер порта, к-й указан в поле Сервер SMTP действительно 25:
Примечание: скриншот сделан в разделе Помощь на почтовом сервере Mail.Ru.
Вопрос: что это за ошибка и как от нее избавиться? Компилятор ошибок не выявляет, а функция GetLastError() возвращает значение 0.
P.S. Чтобы не захламлять форум, заранее благодарю за ответ
Доброго времени суток. Вопрос по стандартной функции SendMail… Для того, чтобы понять, как работает функция написал такой скрипт:
При запуске в окне клиентского терминала, в журнале появляется ошибка:
При этом в настройках (меню клиентского терминала Сервис -> Настройки -> закладка Почта) установлены такие параметры:
Где вместо трех точек в полях SMTP логин и От кого стоит имя того ящика, с к-о я хочу отправить сообщение, а в поле Кому – имя почтового ящика, на к-й я хочу отправить сообщение.
При этом номер порта, к-й указан в поле Сервер SMTP действительно 25:
Примечание: скриншот сделан в разделе Помощь на почтовом сервере Mail.Ru.
Вопрос: что это за ошибка и как от нее избавиться? Компилятор ошибок не выявляет, а функция GetLastError() возвращает значение 0.
P.S. Чтобы не захламлять форум, заранее благодарю за ответ
помогите плиииз.
вот код
ни как не получается у меня сделать, что бы когда была закрыта сделка в минус, то открывался цикл, и если следующий ордер закрылся больше нуля, тоесть положительный баланс, но меньше отрицательного, то мы к отрицательному прибавляем плюс, и получаем новое отрицательное значение, которое уже меньше.
а если больше отрицательного, по сигналу, то закрываем ордер и начинаем цикл с начала.
Ситуация в том, что когда данный код закрывает сделку в убыток, то он запоминает минусовой баланс, а когда закрывает сделку в плюс, и при этом плюс меньше баланса, то он обнуляет Sum_Loss, а мне надо, что бы он не обнулял, а скосил.
то есть, сейчас он вот как работает:
проверяет закрытый ордер, если у закрытого ордера профит меньше нуля, то этот профит приплюсовывается к Sum_Loss, и так до тех пор, пока профит открытой сделки не превысит (будет больше) Sum_Loss, при достижении сделка закрывается, и Sum_Loss обнуляется и начинает работать цикл сначала.
а мне нужно:
ордер закрылся в минус, его профит минусовой прибавился к Sum_Loss, после если следующая сделка закрылась с профитом положительным то уменьшаем сумму Sum_Loss на сумму полученную от прибыльного профита, а значит следующему открытому ордеру Sum_Loss достается уже с меньшей суммой, и так до тепх пор, пока прибыль от ордеров станет больше Sum_Loss, и тогда Sum_Loss обнуляем и начинаем новый цикл.
Sum_Loss = 0;
1-й закрытый ордер: профит (-50) < 0
Sum_Loss + профит (Sum_Loss + (-50))
Sum_Loss = -50;
2-й закрытый ордер: профит(+40) > 0 и Sum_Loss < 0
Sum_Loss + профит (Sum_Loss + 40)
Sum_Loss = -10Доброго времени суток. Вопрос по стандартной функции SendMail… Для того, чтобы понять, как работает функция написал такой скрипт:
При запуске в окне клиентского терминала, в журнале появляется ошибка:
При этом в настройках (меню клиентского терминала Сервис -> Настройки -> закладка Почта) установлены такие параметры:
Где вместо трех точек в полях SMTP логин и От кого стоит имя того ящика, с к-о я хочу отправить сообщение, а в поле Кому – имя почтового ящика, на к-й я хочу отправить сообщение.
При этом номер порта, к-й указан в поле Сервер SMTP действительно 25:
Примечание: скриншот сделан в разделе Помощь на почтовом сервере Mail.Ru.
Вопрос: что это за ошибка и как от нее избавиться? Компилятор ошибок не выявляет, а функция GetLastError() возвращает значение 0.
P.S. Чтобы не захламлять форум, заранее благодарю за ответ
помогу
сервер smtp.mail.ru:25 реально работает
помогу
сервер smtp.mail.ru:25 реально работает
У меня для теста логин, от кого, кому, совпадает
Может брэндмауэры мешают?
О блин совет на миллион - терминал перегрузи!
Поможите люди добрые
Выставляю отложенный ордер по цене х. Ордер преобразуется в рыночный по цене Y. можно ли где то узнать по какой цене был выставлен отложенный ордер (в журнале ...там или ) или свой массив придется писать
Добрый вечер!
Прошу подсказать возможный источник ошибки. Я только разбираюсь в языке, поэтому малость застопорился.
Задача в коде эксперта: прочитать данные из файла .scv (два значения в строке, 400 строк) и записать их в массив.
Проблема такова: если кинуть эксперт на график, он выводит алерт с верными значениями из массива, однако, если попробовать протестировать эксперт, то он в журнале выводит алерт "Нет файла". То есть вроде к файлу не может доступ получить (хотя это невероятно), а в массив записывает значения (что подтверждается другим алертом), но застревает на нахождении файла, судя по журналу. Запутался. Ниже скрин.
alexeymosc:
Проблема такова: если кинуть эксперт на график, он выводит алерт с верными значениями из массива, однако, если попробовать протестировать эксперт, то он в журнале выводит алерт "Нет файла". То есть вроде к файлу не может доступ получить (хотя это невероятно), и в массив записывает значения (что подтверждается другим алертом), но застревает на нахождении файла по журналу. Запутался.
В тестере и на чарте файлы пишутся и читаются в разных каталогах:
Добрый вечер!
Прошу подсказать возможный источник ошибки. Я только разбираюсь в языке, поэтому малость застопорился.
Задача в коде эксперта: прочитать данные из файла .scv (два значения в строке, 400 строк) и записать их в массив.
Проблема такова: если кинуть эксперт на график, он выводит алерт с верными значениями из массива, однако, если попробовать протестировать эксперт, то он в журнале выводит алерт "Нет файла". То есть вроде к файлу не может доступ получить (хотя это невероятно), а в массив записывает значения (что подтверждается другим алертом), но застревает на нахождении файла, судя по журналу. Запутался. Ниже скрин.
Если файл открыт, то его надо закрыть, даже, если получена ошибка в работе с ним. Пока больше ошибок не вижу.
Это можно так читать:
signals_array[i][j] = FileReadDouble(Handle);