Как кодировать остановки на основе времени
Results 1 to 9 of 9

Thread: Как кодировать остановки на основе времени

  1. #1
    Привет всем,

    Мне нужно кодировать ea с этими условиями: вводить длинную позицию при закрытии каждого дня, когда цена закрытия выше, чем цена закрытия в предыдущие 8 дней, а 50-дневная SMA также выше 100 день SMA. Установите стоп-лосс на 8-дневном минимуме. Введите короткую позицию при закрытии каждого дня, если цена закрытия ниже, чем цена закрытия в предыдущие 8 дней, а 50-дневная SMA также ниже 100-дневной SMA. Установите стоп-лосс на максимуме 8 дней. Длинная позиция будет закрыта через 22 дня или если она будет остановлена. Тем не менее, все длинные позиции будут закрыты до 22-дневного выхода на основе времени, если цена закроется ниже, чем она когда-либо закрывалась в предыдущие 8 дней, или если 50-дневная SMA закрывается ниже 100-дневной SMA. Короткая позиция будет закрыта через 22 дня или если она будет остановлена. Однако ВСЕ короткие позиции будут закрыты до 22-дневного выхода, основанного на времени, если цена закроется выше, чем она когда-либо закрывалась в предыдущие 8 дней, или если 50-дневная SMA закрывается выше 100-дневной SMA. Как я могу кодировать выход на 22-дневные позиции? Как я могу сделать это с более чем одной позицией одновременно? Можно ли построить индии для выполнения этой задачи? Можно ли это сделать с помощью molanis sb и cib?

    TNX и привет

  2. #2

    Quote Originally Posted by ;
    Как я могу кодировать выход на 22-дневные позиции? Как я могу сделать это с более чем одной позицией одновременно?
    Не проверено - сначала попробуйте демо! Он должен пройти через все открытые позиции. Если символ и магический номер соответствуют, он проверит, как долго позиция уже открыта (текущее время - время открытия), если это gt; = указанные дни, он попытается закрыть позицию. Вставьте функцию в конце вашего советника. Затем можно вызвать функцию, схема TimeBased (Symbol (), MAGICNUMBER, TIMEBASED-SL-DAYS) ;, например, TimeBased (Symbol (), 12345,22); Вставленный код void TimeBased (символ строки, int magicnumber, int TimeBasedSLdays) {bool result; for (int cnt = OrdersTotal () - 1; cntgt; = 0; cnt--) {if (! OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES)) продолжение; if (OrderSymbol ()! = символ) продолжить; if (OrderMagicNumber ()! = magicnumber) продолжить; {if (TimeCurrent () - OrderOpenTime () gt; = (TimeBasedSLdays * 86400)) {while (IsTradeContextBusy ()) Sleep (100); RefreshRates (); if (OrderType () == OP_BUY) result = OrderClose (OrderTicket (), OrderLots (), MarketInfo (OrderSymbol (), MODE_BID), 9999, CLR_NONE); if (OrderType () == OP_SELL) result = OrderClose (OrderTicket (), OrderLots (), MarketInfo (OrderSymbol (), MODE_ASK), 9999, CLR_NONE); }/if (TimeCurrent () - ...}}/for (int cnt = OrdersTotal () - 1; cntgt; = 0; cnt--) {}

  3. #3
    Tnx очень много, Fxdaytrader
    Я попробую и дам знать

  4. #4
    Вложений: 2 Привет, Fxdaytrader, я пытался вставить Твой код в тело документа. У меня не было предупреждений об ошибках, но результаты тестирования одинаковы с модами и без них. Вот два простых. № 2 - это остановка на основе времени. Не могли бы вы взглянуть на них? Tnx

    https://www.forex-russian.com/attach...0688299098.mq4
    https://www.forex-russian.com/attach...2217515810.mq4

  5. #5
    1 Вложения должны работать сейчас, похоже, что они не были реализованы правильно, ... Расчет, если timebased-sl был достигнут, выглядит следующим образом: if (TimeCurrent () - OrderOpenTime ()) gt; = (TimeBasedSLdays * 86400) ЗАКРЫТЬ ЗАКАЗ Я не проверял его, но думаю, что он должен работать. Я не знаю, что делает ваш советник, если он закрывает позиции раньше, SL не срабатывает.
    https://www.forex-russian.com/attach...2212.timebased

  6. #6
    TNX очень Fxdaytrader
    Вы дали большой импульс моей работе. Если я могу еще побеспокоить Вас, как я могу изменить функцию, чтобы вместо этого установить остановку на основе часа?

  7. #7
    см. мой пост выше: разница между текущим временем и временем обработки сравнивается с: (TimeBasedSLdays * 86400) Что это значит? 86400 секунд = (1 минута x 60 минут) * 24 часа = (60 секунд * 60 минут) * 24 часа, поэтому (TimeBasedSLdays * 60) будет минут, которые вы хотите остановить, (TimeBasedSLdays * 60 * 60) или: ( TimeBasedSLdays * 3600) часов

  8. #8
    Спасибо
    и привет

  9. #9
    потому что он может принадлежать к этой теме также один быстрый совет: найдите простой хронозависимый менеджер заказов SL на
    https://www.forex-russian.com/crypto...ode-teach.html

Действующие разрешения

  • Вы не можете создавать новые темы
  • Вы не можете размещать ответы
  • Вы не можете использовать вложения
  • Вы не можете редактировать ваши записи
  •  
  • BB-код - Вкл.
  • Смайлики - Вкл.
  • Код [IMG] - Вкл.
  • Код [VIDEO] - Вкл.
  • HTML-код - Выкл.
Веб-сайт использует cookies
Веб-сайт использует cookies, в настоящее время некоторые из них уже установлены. Вы можете ознакомиться с более подробной информацией об использовании нами cookies здесь. Чтобы принять условия использования cookies, пожалуйста, нажмите на кнопку справа. Если вы продолжаете пользоваться веб-сайтом, вы по умолчанию принимаете условия использования cookies.