![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Привет всем
С помощью всех желающих симптом изменился.
Оператор ....if(OrderSelect(index, SELECT_BY_TICKET)) был изменен на...SELECT_BY_POS. Код далек от правильного. Программа продает, а затем закрывается сразу после одного пункта. Результат показывает, что нет ни SL, ни TP. Поэтому для проверки вменяемости я вставил в OrderSend SL и TP (500) за штуку. Никаких изменений. Все исполнения находятся в пределах 1 или 2 пунктов. Это становится интересным. Пока не знаю, почему! На одном 4-часовом баре происходит более тысячи исполнений.
Я буду исследовать, но любая помощь будет приветствоваться.
Здравствуйте, Айс.
Я только что написал, и обнаружил, что ты написал раньше меня. Что у тебя происходит?
Здравствуйте еще раз
Я пытаюсь немного переделать программу для лучшего понимания логики
Я бы хотел чтобы программа понравилась Вам
Здравствуйте еще раз
Я пытаюсь немного переделать программу для лучшего понимания логики
Я бы хотел, чтобы программа радовала вас.
Вы так добры. Спасибо. Ваше время очень ценно. Рестайл, я уверен, порадует.
Я разгадал часть проблемы с момента моего последнего сообщения. Программа закрывается, но не так, как мне хочется.
Ключом к проблеме закрытия был тот факт, что я не смог правильно инициализировать ATR.
Я покажу вам "до" и "после" закрытия позиции на продажу.
Then....if (OrderClosePrice() >= OrderOpenPrice() + (ATR*2)
Теперь.....if (OrderClosePrice() >= OrderOpenPrice() + (40*Point)... Это закроет позицию на продажу.
Это не то, как я хотел, чтобы работала программа. Но в целях тестирования я вставил новый код.
Он помогает доказать, что проблема в ATR. Должно быть, я неправильно инициализировал ATR.
Для дальнейшего тестирования я попытался вставить iATR вместо того, чтобы попытаться создать новую переменную под названием ATR.
Показываю, как я пытался это закодировать.
if (OrderClosePrice() >= OrderOpenPrice() + ((iATR(NULL,0,20,1)*2)*Point)
Это тоже не сработало.
Еще раз спасибо.
С нетерпением жду ответа.
https://www.mql5.com/ru/forum/124482/page9#284380
https://www.mql5.com/ru/forum/124482/page9#284380
Спасибо за предложение. Идея использования 365 (annual) против my_method, хорошо принята. Тестовые цели с более короткими временными рамками
должны быть только для удобства.
Мне еще многому предстоит научиться. Я наконец-то понял, как вставлять ATR, но не могу его умножить. Пример следующий:
На данный момент вот что у меня есть......if (OrderClose >= OrderOpenPrice() + (iATR(NULL,0,20,1))) // = Жесткий стоп
Это работает, но это не то, что я хочу.
Я работаю в направлении ...................if (OrderClose >= OrderOpenPrice() + (iATR(NULL,0,20,1) )*2),
Это не работает. Надеюсь, что это наглядно покажет вам и другим, что я имею в виду. iATR умножается на 2.
Есть предложения по этому поводу? Как только это будет решено, я смогу наполовину уменьшить ATR и для позиций входа.
Был еще один способ, который я пробовал, но он не сработал... if(OrderClose - OrderOpenPrice - (iATR(NULL,0,20,1)*2)) <= 0)
Еще раз спасибо за ваше время. Я уверен, что есть много тех, кто стучится в вашу дверь за мудростью.
Будь здоров
Здравствуйте Huckleberry,
Я оставил делать только функцию открытия.
И сейчас пытаюсь понять логику фиксации прибыли.
Стопы и тейки отсутствуют в вашем OrderSend(), это нормально, но команда на закрытие выполняется только в случае убытка.
И хотелось бы узнать ваше мнение о понятности нового стиля программы, https://www.mql5.com/en/forum/124521/page2.
Пока пока,
:)
Здравствуйте, Ais
Спасибо за ваш ответ.
Позвольте мне объяснить причину отсутствия StopLoss или TakeProfit.
Поскольку SL и TP не вставляются в OrderSend, SL находится в другом месте, под выражением....
if (OrderClose >= OrderOpenPrice() + (iATR(NULL,0,20,1))).
Хотя это и работает, но это не совсем правильный SL. Пример приведен в моем последнем сообщении....
if (OrderClose >= OrderOpenPrice + (iATR(NULL,0,20,1))*2).
Сдвиг в ... iATR, в приведенном выше выражении может меняться от одного бара к другому. Используя OrderSend с SL и TP, я не могу воспользоваться изменением сдвига.
На данный момент каждая функция работает, просто мне нужно научиться настраивать функции.
Спасибо за ваше наблюдение и вопрос.
С уважением,
Можно работать без SL и TP.
Но нам все равно нужно условие для закрытия ордера в случае прибыли.
Пожалуйста, посмотрите на обновленную функцию "iSignalClose", https://www.mql5.com/en/forum/124521/page2.
Теперь это, конечно, условие виртуального SL.
Но нам все равно нужно условие виртуального TP.
Жду вашего ответа.
:)
Я вставил для виртуального ТП аналогичное с SL условие, но используя другой фактор.
В будущем будет легко и удобно оптимизировать эти параметры.
Для оптимизации объявите желаемые параметры как "extern".
Пример:
////////////////////////////////////////////////////////////////////< 3> // < 1.1. Data : Input > //< > // //< > // < 1.1. Input 7 = 4 i 3 d - s > //< > // < 1. Strategy 4 = 2 i 2 d - s /> //< > // < 2. Trading 3 = 2 i 1 d - s /> //< > // </1.1. Input 7 = 4 i 3 d - s > //< > // //< > // < 1. Strategy 4 >=========================================//< > int iBasePeriod = 20 ; //< > int iBaseBar = 1 ; //< > extern double dFactorTP = 2.0 ; //< > extern double dFactorSL = 2.0 ; //< > // </ 1. Strategy 4 >=========================================//< > // //< > // < 2. Trading 3 >==========================================//< > int iSlippage = 1 ; //< > int iMagic = 0 ; //< > double dLots = 0.1 ; //< > // </ 2. Trading 3 >==========================================//< > // //< > // //< > // //< > // </1.1. Data : Input > //< >
После оптимизации измените исходные значения параметров на оптимизированные и удалите объявления "extern".
Пример оптимизации для игры "A System: Championship 2008 Final Edit", также известной как "ACB6", https://www.mql5.com/en/forum/112633/page7#276861: