Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Ещё раз. В работе с ордером на первом месте должен быть OrderSelect. Потом уже всё остальное.
Спасибо за ответ ... Вы хотите сказать что строчка if(OrderSelect(i=0;i<accTotal;i++)==true) записана неправильно, или не в том месте кода? ...
Renat Akhtyamov:
по ссылке пройдите, она у Вас в посте выделена.
уже смотрел. нет там нужной информации .в пустом буфере 10и значное значение а при наличии сигнала - значение цены... и как в коде mql4 обозначается отсутствие или наличие значения в буфере ? (пользовался не раз ,да забыл ...)
if( iCustom(NULL,t,"T...c",1,b) != .......).....
atik441:уже смотрел. нет там нужной информации .в пустом буфере 10и значное значение а при наличии сигнала - значение цены... и как в коде mql4 обозначается отсутствие или наличие значения в буфере ? (пользовался не раз ,да забыл ...)
if( iCustom(NULL,t,"T...c",1,b) != EMPTY_VALUE).....Во ! то что и нать... спасибки за напоминание !
Помогите разобраться. Возможно ли последовательное исполнение ордеров при условии, когда при двух разнонаправленных
открытых сделках в первую очередь срабатывает ТР любой из сделок, а затем только SL, хотя в процессе торговли уровень SL
любой из сделок был пройден первым?
Помогите разобраться. Возможно ли последовательное исполнение ордеров при условии, когда при двух разнонаправленных
открытых сделках в первую очередь срабатывает ТР любой из сделок, а затем только SL, хотя в процессе торговли уровень SL
любой из сделок был пройден первым?
Ещё раз. В работе с ордером на первом месте должен быть OrderSelect. Потом уже всё остальное.
Если работаем в цикле перебора ордеров, то порядок действий такой:
1. Проверка if(OrderSelect())
2. Проверка, тот ли это ордер, обычно проверяют символ и магик, потом тип, если необходимо - if(OrderSymbol()==_Symbol && OrderMagicNumber()==Magic && OrderType()<2) - в данном случае обрабатываются только рыночные ордера, выставленные на текущем инструменте и с заданным магиком
3. Обработка других данных вроде OrderComment(), OrderProfit() и т.д.
Выглядеть это будет примерно так:
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) //если ордер выбран то работаем дальше, иначе смысла нет
{
if(OrderSymbol()==_Symbol && OrderMagicNumber()==Magic && OrderType()<2) //Если ордер тот, что нам нужен (эту проверку можно и опустить, если нужно обработать все ордера в истории)
{
if(StringFind(OrderComment(),"[tp]",0)>-1) //если найден признак закрытия профитом
Print("Order #",OrderTicket()," profit: ", OrderTakeProfit());
if(StringFind(OrderComment(),"[sl]",0)>-1) //если найден признак закрытия стоплосс
Print("Order #",OrderTicket()," loss: ", OrderTakeProfit());
}
}
}
Спасибо за ответ ... итак, для перебора ордеров в истории торгов используем функцию OrdersHistoryTotal, которая после отброса всего нам не нужного представляется как:
for(int i=OrdersHistoryTotal()-1; i>=0; i--) // - здесь вопрос, что значит "accTotal" в шаблоне функции, который мы отбросили? и почему Вы взяли "i--" а не "i++", как в шаблоне?
- вторая функция OrderComment возвращает комментарий выбранного ордера, если он выбран предыдущей функцией OrdersHistoryTotal, принимает вид:
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) //- где "i", это "i>=0" из предыдущей функции, а "SELECT_BY_TICKET" заменили на "SELECT_BY_POS" и добавили "MODE_HISTORY" - почему так?
- третья строчка определение, проверка нужного ордера в принципе не нужна, т. к. в данной истории только рыночные ордера закрытые по ТП. и СЛ., (может присутствовать закрытый отложенный ордер, но это будет редко), все остальные параметры ордера нам не важны. Важно другое - количество закрытых ордеров в истории будет постоянно увеличиваться, нельзя ли так сделать что бы при пересчёте брались не все закрытые ордера, а определённое количество последних, например 5 - 10?
- последние четыре строчки в общем понятны, вопрос лишь в функции PlaySound, код которой необходимо вставить после каждой строчки "Print("..." в таком виде:
bool PlaySound(
string payment // имя файла
);
... или тоже как то преобразуется?
Почитайте про циклы, как это огранизовано и как работает, да и вообще, учебник по С++ для начинающих не мешало бы проштудировать, С++ очень похож на MQL, отличия только в торговых функциях.
Ещё почитайте учебник по MQL и справку в компиляторе, статьи тут на форуме, это на верхней кромке окна на синем фоне. Ну невозможно же на форуме весь курс пересказать и объяснить.
Почитайте про циклы, как это огранизовано и как работает, да и вообще, учебник по С++ для начинающих не мешало бы проштудировать, С++ очень похож на MQL, отличия только в торговых функциях.
Ещё почитайте учебник по MQL и справку в компиляторе, статьи тут на форуме, это на верхней кромке окна на синем фоне. Ну невозможно же на форуме весь курс пересказать и объяснить.