Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 1133
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Грехов нет, на что ругается.
Какие ошибки компилятора
Что то связано с тем что функция должна быть глобальной и ожидание запятых в том месте где нет смысла их ставить! Например у разделителя между информацией о брокере и о торгуемой паре
Подскажите, чайнику. Как открыть реальный счёт ?
Что значит "никакая"? По тикету сортируйте - всегда будет порядок и с документацией никаких противоречий, там про сортировку по порядковому номеру написано, а не по тикету, это разные вещи.
Имеем в один момент времени такой список ордеров (по тикетам)
- Buy #1
- Buy #2
- BuyStop #3
- Sell #4
В списке порядок тикетов: #1,#2,#3,#4После срабатывания BuyStop #3 каков порядок тикетов будет в списке?
Разве не #1,#2,#4,#3 ?
Так что и тикеты не гарантируют упорядоченности.
Еще столкнулся с одной проблемкой! Не судите строго, язык изучаю недели 2-3, может просто туплю!
Задача на советнике, уведомить трейдера через почту каждые 4 часа, если свободная маржа на счете привесила определенное значение.
В тему сообщения нужно написать название брокера и торгуемую пара, а в тело сообщения "Опасность! Просадка привысила допустимое значение. Примите необходимые меры"
Компилятор ругается, с английском не дружу и не могу понять в чем ошибка!
double Sag;
void OnTick()
{
Sag = NormalizeDouble(100-100*(AccountInfoDouble(ACCOUNT_FREEMARGIN)/AccountInfoDouble(ACCOUNT_BALANCE)), 1); //находим процент просадки и округляем до 1 знака
if(Sag > MessageMail && iVolume(NULL,PERIOD_H4,0)<3) //если просадка больше заданного и начата новая свеча на 4ч таймфрейме
{
Alert(Symbol(), ": Просадка = ", Sag, " % ", " > ", MessageMail, " % "); //вывести предупреждение в терминале
//Сюда нужно вставить команду SendMail для отправки сообщения, а что и как не понятно
// пробовал bool SendMail( AccountInfoString(ACCOUNT_COMPANY)|Symbol, "Опасность! Просадка привысила допустимое значение. Примите необходимые меры")
//что то не выходит
}
}
PS: Может в целом есть проще решение для такой задачи, но я пока ее вижу только так)
//| exTestSendMail.mq4 |
//| Copyright 2017, Artem A. Trishkin, Skype artmedia70 |
//| https://login.mql5.com/ru/users/artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, Artem A. Trishkin, Skype artmedia70"
#property link "https://login.mql5.com/ru/users/artmedia70"
#property version "1.00"
#property strict
input double MessageMail = 50.0;
//---
double Sag=0;
string MailSubject="";
datetime PrevTime=0;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
MailSubject="Mail from EA "+MQLInfoString(MQL_PROGRAM_NAME);
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
//--- Находим процент просадки и округляем до 1 знака
Sag=NormalizeDouble(100-100*(AccountInfoDouble(ACCOUNT_MARGIN_FREE)/AccountInfoDouble(ACCOUNT_BALANCE)),1);
//--- Если открыт новый бар на H4
if(iTime(Symbol(),PERIOD_H4,0) !=PrevTime) {
//--- если просадка больше заданного
if(Sag>MessageMail) {
Alert(Symbol(), ": Просадка = ", DoubleToString(Sag,1), " % ", " > ", MessageMail, " % "); //вывести предупреждение в терминале
string MailText=AccountInfoString(ACCOUNT_COMPANY)+" > Опасность! Просадка ("+DoubleToString(Sag,1)+"%) привысила допустимое значение. Примите необходимые меры.";
SendMail(MailSubject,MailText);
}
PrevTime=iTime(Symbol(),PERIOD_H4,0);
}
}
//+------------------------------------------------------------------+
Спасибо! Настроил отправку писем!
как исправить возвращаемое значение '' OrderClose должно быть проверено??????????????????????????????
Уважаемые программисты прошу помочь новичку в этом деле.
советник последовательно через определенное время открывает ордера как на покупку так на продажу. Мне нужно чтоб он после открытия последнего ордера модифицировал все предыдущие,(ну если уже конкретно,то чтоб у всех предыдущих закрытие осуществлялось по тейкпрофиту последнего. Т.е. если последний бай а предыдущий селл, то у предыдущего стоп лос ставится на уровень тейкпрофита последнего,
если предыдущий бай то его тейпрофит ставится на уровень последнего тейкпрофита. ну и т.д. Смысл в том, что при наступлении тейкпрофита последнего ордера должны закрыться все ордера.).
Надеюсь объяснил понятно, хотя трудно понимаю как это реализовать. Заранее спасибо.
Я понимаю что можно перебрать все открытые ордера и модифицировать но как пропустить последний?
Уважаемые программисты прошу помочь новичку в этом деле.
советник последовательно через определенное время открывает ордера как на покупку так на продажу. Мне нужно чтоб он после открытия последнего ордера модифицировал все предыдущие,(ну если уже конкретно,то чтоб у всех предыдущих закрытие осуществлялось по тейкпрофиту последнего. Т.е. если последний бай а предыдущий селл, то у предыдущего стоп лос ставится на уровень тейкпрофита последнего,
если предыдущий бай то его тейпрофит ставится на уровень последнего тейкпрофита. ну и т.д. Смысл в том, что при наступлении тейкпрофита последнего ордера должны закрыться все ордера.).
Надеюсь объяснил понятно, хотя трудно понимаю как это реализовать. Заранее спасибо.
Я понимаю что можно перебрать все открытые ордера и модифицировать но как пропустить последний?
Самое главное во всём этом, это понимание того, что должно происходить.
Что такое "последний ордер"? Последний по времени открытия? Или по уровню цены открытия?
А если посчитать "последним" ордер BUY а цена пойдёт на йух? Или наоборот, последний будет SELL а цена прёт на север? Тогда какой надо считать последним? Вот именно это и надо понять для реализации задуманного.
Здравствуйте. Если за ране не знать сколько элементов будет в массиве, как объявлять массив, чтобы увеличивался массив с каждым новым элементом?
Пример для того чтобы понятнее было:
for(int i=0; i<1000; i++)
{
if(A[i]<B[i])
HighA[i]=A[i];
}
Print(">>>>>>>>>>>..ArraySize(HighA)= ",ArraySize(HighA));