Анализ размера свечи и тени свечи. В OnTradeTransaction отлавливаем открытие (DEAL_ENTRY_IN) и закрытие позиций (DEAL_ENTRY_OUT), а также закрытие по Stop loss (DEAL_REASON_SL).
Один и тот же советник на двух разных инструментах
Здравствуйте! Помогите, пожалуйста, разобраться.
Есть советник, который работает на том графике, на который его затащили (значение Symbol() принимается за имя рабочего инструмента).
Но есть в этом советнике и переменная ticket_exist, в которую заносится тикет установленного ордера, и совентник понимает, что если ticket_exist не равно нулю, то ордер здесь установлен.
Вопрос: если я открою такой советник на двух разных инструментах, и на одном инструменте переменная ticket_exist станет не равной нулю, на другом инструменте переменная с этим же именем останется ли равной нулю?
Один и тот же советник на двух разных инструментах
Здравствуйте! Помогите, пожалуйста, разобраться.
Есть советник, который работает на том графике, на который его затащили (значение Symbol() принимается за имя рабочего инструмента).
Но есть в этом советнике и переменная ticket_exist, в которую заносится тикет установленного ордера, и совентник понимает, что если ticket_exist не равно нулю, то ордер здесь установлен.
Вопрос: если я открою такой советник на двух разных инструментах, и на одном инструменте переменная ticket_exist станет не равной нулю, на другом инструменте переменная с этим же именем останется ли равной нулю?
СУ.
Значение переменной в одном советнике недоступна другому советнику. Главное чтобы или символы, или магики, или и то и другое были разными.
Значение переменной в одном советнике недоступна другому советнику. Главное чтобы или символы, или магики, или и то и другое были разными.
Благодарю! Если я правильно понял, то для получения конфликта советников (двух абсолютно одинаковых), работающих на разных символах, нужно чтобы их переменные были заданы как глобальные (для всего терминала) или чтобы, например, к ордеру обращались по его порядковому номеру либо просто по факту его существования?
потом я попробывал так, он компилирует без проблем, но при закрытом ринке я не могу это протестировать
завтра буду доделывать
voidOnTradeTransaction(constMqlTradeTransaction &trans,
constMqlTradeRequest &request,
constMqlTradeResult &result)
{
//--- get transaction type as enumeration valueENUM_TRADE_TRANSACTION_TYPE type=trans.type;
//--- if transaction is result of addition of the transaction in historyif(type==TRADE_TRANSACTION_DEAL_ADD)
{
long deal_entry =0;
string deal_symbol ="";
long deal_magic =0;
long deal_reason =-1;
if(HistoryDealSelect(trans.deal))
{
deal_entry=HistoryDealGetInteger(trans.deal,DEAL_ENTRY);
deal_symbol=HistoryDealGetString(trans.deal,DEAL_SYMBOL);
deal_magic=HistoryDealGetInteger(trans.deal,DEAL_MAGIC);
deal_reason=HistoryDealGetInteger(trans.deal,DEAL_REASON);
}
elsereturn;
if(deal_symbol==m_symbol.Name() && deal_magic==m_magic)
if(deal_entry==DEAL_ENTRY_OUT)
{
if(deal_reason==DEAL_REASON_SL)
SendNotification ("Закрыл позицию > StopLoss");
if(deal_reason==DEAL_REASON_TP)
SendNotification ("Закрыл позицию > TakeProfit");
}
}
}
Здесь, нужно ещё отследить то, что сделка закрылась именно по СЛ или ТП. А с помощью OnTradeTransaction получаем уже готовые данные, сразу после закрытия сделки.
Если по TimeCurrent окажется закрытыми больше одной сделки, то какой результат нужно будет вернуть?... И наличие профита еще не значит, что сделка была закрыта по СЛ или ТП. Это нужно отследить, как я уже говорил. Так что, использование OnTradeTransaction, это наиболее простое решение!
Versuchen Sie es (ich habe es nicht getestet)
Спасибо, я позже проверю.
Помогите правильно расположить функцию
...
Но как и куда вставить
Чтобы приходило сообщения при достижения стоп лосс или Тейк профит.?
Мы об одном и том же?
Нашёл пример, который отслеживает выход по СЛ с помощью OnTradeTransaction: https://www.mql5.com/ru/code/21147.
Один и тот же советник на двух разных инструментах
Здравствуйте! Помогите, пожалуйста, разобраться.
Есть советник, который работает на том графике, на который его затащили (значение Symbol() принимается за имя рабочего инструмента).
Но есть в этом советнике и переменная ticket_exist, в которую заносится тикет установленного ордера, и совентник понимает, что если ticket_exist не равно нулю, то ордер здесь установлен.
Вопрос: если я открою такой советник на двух разных инструментах, и на одном инструменте переменная ticket_exist станет не равной нулю, на другом инструменте переменная с этим же именем останется ли равной нулю?
СУ.
Один и тот же советник на двух разных инструментах
Здравствуйте! Помогите, пожалуйста, разобраться.
Есть советник, который работает на том графике, на который его затащили (значение Symbol() принимается за имя рабочего инструмента).
Но есть в этом советнике и переменная ticket_exist, в которую заносится тикет установленного ордера, и совентник понимает, что если ticket_exist не равно нулю, то ордер здесь установлен.
Вопрос: если я открою такой советник на двух разных инструментах, и на одном инструменте переменная ticket_exist станет не равной нулю, на другом инструменте переменная с этим же именем останется ли равной нулю?
СУ.
Значение переменной в одном советнике недоступна другому советнику. Главное чтобы или символы, или магики, или и то и другое были разными.
Подскажите какое время в тиках? Время сервера или UTC ?
Помню читал где-то, но не могу вспомнить где...
Значение переменной в одном советнике недоступна другому советнику. Главное чтобы или символы, или магики, или и то и другое были разными.
Благодарю! Если я правильно понял, то для получения конфликта советников (двух абсолютно одинаковых), работающих на разных символах, нужно чтобы их переменные были заданы как глобальные (для всего терминала) или чтобы, например, к ордеру обращались по его порядковому номеру либо просто по факту его существования?
Попробуй так(я не проверял)
так неполучается, выдает ошибки при компиляции
потом я попробывал так, он компилирует без проблем, но при закрытом ринке я не могу это протестировать
завтра буду доделывать
так неполучается, выдает ошибки при компиляции
потом я попробывал так, он компилирует без проблем, но при закрытом ринке я не могу это протестировать
завтра буду доделывать
ты не правильно вставил код!
немного поправил, все работает(я проверил)
ты не правильно вставил код!
немного поправил, все работает(я проверил)
Здесь, нужно ещё отследить то, что сделка закрылась именно по СЛ или ТП. А с помощью OnTradeTransaction получаем уже готовые данные, сразу после закрытия сделки.
Если по TimeCurrent окажется закрытыми больше одной сделки, то какой результат нужно будет вернуть?... И наличие профита еще не значит, что сделка была закрыта по СЛ или ТП. Это нужно отследить, как я уже говорил. Так что, использование OnTradeTransaction, это наиболее простое решение!
Здесь, нужно ещё отследить то, что сделка закрылась именно по СЛ или ТП.
Я понял так, что нужно уведомление о закрытии сделки, возможно я не правильно его понял...
Mihail Matkovskij:
Если по TimeCurrent окажется закрытыми больше одной сделки, то какой результат нужно будет вернуть?
не знаю, надо проверить