Если вы имеете в виду, что это не лучший способ закрыть ордер, то я согласен, но если парень не хочет использовать OrderSelect (или не знает как) и не оставляет открытых ордеров на рынке, то это работает.
Мы пытаемся помочь друг другу здесь, и ваш ответ ничуть не помог, вы не показали ему, как использовать функцию Order Select, и его советник теперь работает не лучше из-за вашего комментария.
В следующий раз, когда захотите помочь, сделайте это правильно, выложите правильный код, чтобы другие могли чему-то научиться.
Спасибо всем, кто ответил на мой вопрос. Мое намерение состоит в том, чтобы входить в сделку, когда бар2 удовлетворяет определенным условиям. Я тестирую на GBPJPY и открываю по одной сделке за раз, так как я очень новичок в MQL4. Только с одной сделкой я могу использовать тикет в Orderclose(). Я все еще не знаком с OrderSelect. Таким образом, сделка закроется, если бар3 выполнит определенное условие. Я хотел бы задать вопрос, есть ли способ сохранить выполнение программы в файле для отладки? Поскольку я обнаружил, что когда программа выполняется, я не знаю, какая часть выполнения пошла не так.
chuale: Спасибо всем, кто ответил на мой вопрос. Мое намерение состоит в том, чтобы входить в сделку, когда бар2 удовлетворяет определенным условиям. Я тестирую на GBPJPY и открываю по одной сделке за раз, так как я очень новичок в MQL4. Только с одной сделкой я могу использовать тикет в Orderclose(). Я все еще не знаком с OrderSelect. Таким образом, сделка закроется, если бар3 выполнит определенное условие. Я хотел бы задать вопрос, есть ли способ сохранить выполнение программы в файле для отладки? Поскольку я обнаружил, что когда программа выполняется, я не знаю, какая часть выполнения прошла неправильно.
Не за что, Chuale, я тоже многому научился у других на этом форуме, так что нет проблем. На самом деле вам не нужно сохранять выполнение программы в файл, есть несколько способов следить за значениями переменных и любыми ошибками, которые могут возникнуть. Я использую в основном функцию Comment() и функцию Print(). Я могу прислать примеры, если вам нужно. Как я уже говорил, GBPJPY не дала мне положительных результатов, но USDJPY дала. Я провел обратный тест только в течение месяца (21 января/2014 - 25 февраля/2015), и с моими настройками доходность составила чуть более 400 долларов США. Я протестирую другие пары, как только у меня появится немного времени, и сообщу вам. Также если вам нужна помощь в использовании Print() или Comment() для просмотра значений на экране в реальном времени, дайте мне знать. На ранее прикрепленном изображении - график производительности вашего советника за месяц. Пока что он выглядит не так уж плохо.
Да, я использую Print(). Мне нужно знать, как использовать OrderSelect(), если есть несколько открытых сделок. Для одной сделки, если я использую SELECT_BY_POS, какое значение должно быть для индекса (OrderSelect (int index, in select, int pool=MODE_TRADES))? Будет ли это 1?
chuale: Спасибо всем, кто ответил на мой вопрос. Мое намерение состоит в том, чтобы входить в торговлю, когда bar2 удовлетворяет определенным условиям. Я тестирую на GBPJPY и открываю по одной сделке за раз, так как я очень новичок в MQL4. Только с одной сделкой я могу использовать тикет в Orderclose(). Я все еще не знаком с OrderSelect. Таким образом, сделка закроется, если бар3 выполнит определенное условие. Я хотел бы задать вопрос, есть ли способ сохранить выполнение программы в файле для отладки? Поскольку я обнаружил, что когда программа выполняется, я не знаю, какая часть выполнения пошла не так.
Вот пример использования функции Order Select:
В данном примере функция CountTrades проверяет все открытые и отложенные ордера, отбрасывает те, которые не имеют совпадающего символа и магического номера, и считает только те, которые нам нужны.
В этом примере она будет выбирать от самого последнего до первого.
Если вам нужна дополнительная помощь, дайте мне знать.
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
/*
On every tick program checks what the value of myTrades is
by calling (executing) the CountTrades() function and asign the value
returned to myTrades..
*/int myTrades = CountTrades();
/*
Comment() function will display the words in quotes and the value of
myTrades variable.
*/Comment("You have "+myTrades+" open trades.");
}
//+------------------------------------------------------------------+int CountTrades()
{
int count=0;// we start counting from zeroint trade; // define a variable that will hold the total number of trades that are open// Get the number of trades from OrdersTotal() and asign that value to trade variable.for(trade=OrdersTotal()-1;trade>=0;trade--)
{
OrderSelect(trade,SELECT_BY_POS,MODE_TRADES); // Select orders by position (OP_BUY and OP_SELL) - orders can be selected by position or by ticket// select from Open or pending orders = MODE_TRADES or select from History = MODE_HISTORYif(OrderSymbol()!=Symbol() || OrderMagicNumber() != MagicNumber)// if the order has a different symbol or magic number, skip to next ordercontinue;
if(OrderSymbol()==Symbol() && OrderMagicNumber() == MagicNumber)// if symbol is right and magic number is right, that is my order ,thenif(OrderType()==OP_SELL// if it's an open sell do this.....
|| OrderType()==OP_BUY) // if it's an open buy do this......
count++; // in this example increase the counter since I'm counting all my orders
}
return(count); // When finished counting, return the result
}
Если вы имеете в виду, что это не лучший способ закрыть ордер, то я согласен, но если парень не хочет использовать OrderSelect (или не знает как) и не оставляет открытых ордеров на рынке, то это работает.
Мы пытаемся помочь друг другу здесь, и ваш ответ ничуть не помог, вы не показали ему, как использовать функцию Order Select, и его советник теперь работает не лучше из-за вашего комментария.
В следующий раз, когда захотите помочь, сделайте это правильно, выложите правильный код, чтобы другие могли чему-то научиться.
Если вы пытаетесь помочь, то объясните это правильно
Вы сказали
Трдель:
Сначала вы считаете ордера с помощью OrdersTotal().
total=OrdersTotal();
плохой пример...... вы привели
Если парень не хочет использовать OrderSelect(), то он должен перестать программировать советников.
Есть несколько вещей, которые вы сделали неправильно. Я предполагаю, что вы хотите, чтобы этот советник работал на парах JPY на таймфрейме M1. Вы хотите размещать ордера только на новом баре и закрывать ордера только на новом баре или вы хотите входить на новом баре и выходить, если условия выполнены? Вот что я думаю:
Сначала вы подсчитываете заказы с помощью функции OrdersTotal().
Затем вычисляете свои переменные
Если в рынке есть ордера, проверьте, должны ли они быть закрыты.
Если ордеров на рынке нет, проверьте, выполнены ли условия входа.
когда скомпилировал следующее: написано Time function not define. Пожалуйста, посоветуйте.
if(Time[0]==previousTime) return(0); //EA will not go past this point unless it is a new bar
previousTime=Time[0]; // If it was a new bar , it's old now but continue to the end
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Спасибо, Thrdel, я изучу вашу кодировку. Вы действительно так добры. Еще раз спасибо
Если вы имеете в виду, что это не лучший способ закрыть ордер, то я согласен, но если парень не хочет использовать OrderSelect (или не знает как) и не оставляет открытых ордеров на рынке, то это работает.
Мы пытаемся помочь друг другу здесь, и ваш ответ ничуть не помог, вы не показали ему, как использовать функцию Order Select, и его советник теперь работает не лучше из-за вашего комментария.
В следующий раз, когда захотите помочь, сделайте это правильно, выложите правильный код, чтобы другие могли чему-то научиться.
Спасибо всем, кто ответил на мой вопрос. Мое намерение состоит в том, чтобы входить в сделку, когда бар2 удовлетворяет определенным условиям. Я тестирую на GBPJPY и открываю по одной сделке за раз, так как я очень новичок в MQL4. Только с одной сделкой я могу использовать тикет в Orderclose(). Я все еще не знаком с OrderSelect. Таким образом, сделка закроется, если бар3 выполнит определенное условие. Я хотел бы задать вопрос, есть ли способ сохранить выполнение программы в файле для отладки? Поскольку я обнаружил, что когда программа выполняется, я не знаю, какая часть выполнения прошла неправильно.
Не за что, Chuale, я тоже многому научился у других на этом форуме, так что нет проблем. На самом деле вам не нужно сохранять выполнение программы в файл, есть несколько способов следить за значениями переменных и любыми ошибками, которые могут возникнуть. Я использую в основном функцию Comment() и функцию Print(). Я могу прислать примеры, если вам нужно. Как я уже говорил, GBPJPY не дала мне положительных результатов, но USDJPY дала. Я провел обратный тест только в течение месяца (21 января/2014 - 25 февраля/2015), и с моими настройками доходность составила чуть более 400 долларов США. Я протестирую другие пары, как только у меня появится немного времени, и сообщу вам. Также если вам нужна помощь в использовании Print() или Comment() для просмотра значений на экране в реальном времени, дайте мне знать. На ранее прикрепленном изображении - график производительности вашего советника за месяц. Пока что он выглядит не так уж плохо.
Уважаемый thedel,
Спасибо
Да, я использую Print(). Мне нужно знать, как использовать OrderSelect(), если есть несколько открытых сделок. Для одной сделки, если я использую SELECT_BY_POS, какое значение должно быть для индекса (OrderSelect (int index, in select, int pool=MODE_TRADES))? Будет ли это 1?
или какое значение?
Спасибо всем, кто ответил на мой вопрос. Мое намерение состоит в том, чтобы входить в торговлю, когда bar2 удовлетворяет определенным условиям. Я тестирую на GBPJPY и открываю по одной сделке за раз, так как я очень новичок в MQL4. Только с одной сделкой я могу использовать тикет в Orderclose(). Я все еще не знаком с OrderSelect. Таким образом, сделка закроется, если бар3 выполнит определенное условие. Я хотел бы задать вопрос, есть ли способ сохранить выполнение программы в файле для отладки? Поскольку я обнаружил, что когда программа выполняется, я не знаю, какая часть выполнения пошла не так.
Вот пример использования функции Order Select:
В данном примере функция CountTrades проверяет все открытые и отложенные ордера, отбрасывает те, которые не имеют совпадающего символа и магического номера, и считает только те, которые нам нужны.
В этом примере она будет выбирать от самого последнего до первого.
Если вам нужна дополнительная помощь, дайте мне знать.
Если вы имеете в виду, что это не лучший способ закрыть ордер, то я согласен, но если парень не хочет использовать OrderSelect (или не знает как) и не оставляет открытых ордеров на рынке, то это работает.
Мы пытаемся помочь друг другу здесь, и ваш ответ ничуть не помог, вы не показали ему, как использовать функцию Order Select, и его советник теперь работает не лучше из-за вашего комментария.
В следующий раз, когда захотите помочь, сделайте это правильно, выложите правильный код, чтобы другие могли чему-то научиться.
Если вы пытаетесь помочь, то объясните это правильно
Вы сказали
Сначала вы считаете ордера с помощью OrdersTotal().
total=OrdersTotal();плохой пример...... вы привели
Если парень не хочет использовать OrderSelect(), то он должен перестать программировать советников.
большая глупость то, что вы говорите здесь, https://www.mql5.com/en/forum/149958/page2#915413
Я закомментировал ваш пример кода и сказал вам, что вы должны сделать.
Есть много примеров, которые я привел, как сделать ...
погуглите, если хотите найти их.
Есть несколько вещей, которые вы сделали неправильно. Я предполагаю, что вы хотите, чтобы этот советник работал на парах JPY на таймфрейме M1. Вы хотите размещать ордера только на новом баре и закрывать ордера только на новом баре или вы хотите входить на новом баре и выходить, если условия выполнены? Вот что я думаю:
Сначала вы подсчитываете заказы с помощью функции OrdersTotal().
Затем вычисляете свои переменные
Если в рынке есть ордера, проверьте, должны ли они быть закрыты.
Если ордеров на рынке нет, проверьте, выполнены ли условия входа.
Дайте мне знать, если у вас есть вопросы.
когда скомпилировал следующее: написано Time function not define. Пожалуйста, посоветуйте.
Хорошо, я исправил это, так как я неправильно напечатал скобку для Time, она должна быть [] вместо (). Спасибо