0
отладил под вин32: www.opentraders.ru/downloads/3703/

Здравствуйте. Можно отладить советник. Всю неделю промучился, пока не понял, в чём ошибка. Когда тестировал, то всё работает, но, а торговля не идёт, а дело оказалось вот в чём. Советник начинает свою работу, как только разворачиваешь терминал, в свернутом виде советник не работает. Т.е. пример на VPS стоит три терминала, время торговли выставил с 9 до 19, сегодня в 18:39 захожу на VPS, разворачиваю терминалы и у всех трёх терминалов включается кнопка автоторговля.
avatar

REDAZOT

  • 2 ноября 2023, 19:27
0
дайте ссылку. много чего делал, а этот не припоминаю

Вот под МТ5 с mql (которым пользуюсь):
www.mql5.com/ru/code/15679

Вот под МТ5 с данного форума:
www.opentraders.ru/downloads/1197/
avatar

REDAZOT

  • 30 октября 2023, 03:37
0
Для МТ4 я использую древний советник TradeScheduler, только он в закрытом коде (он идеально работает). Вот у него есть выбор в заданное время в параметрах:

позиции не закрываются;
закрываются только прибыльные;
выход из всех открытых позиций.

Но этот советник тоже особо не подходит, т.к. хоть и позиции не закрываются, а кнопка автоторговля выключается, а когда заново включается, то для дефолтного советника начинается новый цикл и открытые ордера он уже может не учесть. Все советники помощники которые встречал в сети, в заданное время либо игнорируют открытые ордера, либо закрывают ордера и автоторговля останавливается.

Есть разные советники у которых есть свой параметр ограничитель торговли по времени, т.е. начало торговли, окончание торговли. С началом торговли понятно. А вот настаёт время окончание торговли, что происходит с открытыми ордерами? Получается новые ордера не открываются, а открытые сделки остаются в подвешенном состояние, а там уж как повезёт. А если допустим советник всё закрывает, то скорее всего часть ордеров в минус. Если ничего не путаю, вот так как бы понимаю данный параметр.
avatar

REDAZOT

  • 29 октября 2023, 07:23
0
Ещё в закромах вот такой есть для МТ4 и МТ5, но я им не пользуюсь, там библиотеки и панель на графике, ну и условия моего нет конечно.
#property copyright "EarnForex.com"
#property link      "https://www.earnforex.com/metatrader-expert-advisors/AutoTrading-Scheduler/"
#property version   "1.01"
string    Version = "1.01";
#property strict

#property description "Creates a weekly schedule when AutoTrading is enabled."
#property description "Disables AutoTrading during all other times."
#property description "Can also close all trades before disabling AutoTrading.\r\n"
#property description "WARNING: There is no guarantee that the expert advisor will work as intended. Use at your own risk."
#property icon        "EF-Icon-64x64px.ico"

#include "AutoTrading Scheduler.mqh";

input string ____Notifications = "================";
input bool EnableNativeAlerts = false;
input bool EnableEmailAlerts = false;
input bool EnablePushAlerts = false;
input string ____Defaults = "================";
input bool DefaultTurnedOn = false; // Default state of the scheduler: ON or OFF
input ENUM_TIME_TYPE DefaultTime = Local; // Default time type
input string DefaultMonday = ""; // Default enabled Monday periods
input string DefaultTuesday = ""; // Default enabled Tuesday periods
input string DefaultWednesday = ""; // Default enabled Wednesday periods
input string DefaultThursday = ""; // Default enabled Thursday periods
input string DefaultFriday = ""; // Default enabled Friday periods
input string DefaultSaturday = ""; // Default enabled Saturday periods
input string DefaultSunday = ""; // Default enabled Sunday periods
input bool DefaultClosePos = false; // Close all positions before turning AutoTrading OFF?
input bool DefaultEnforce = true; // Always enforce schedule?
input string ____Miscellaneous = "================";
input int Slippage = 2; // Slippage

CScheduler Panel;

int DeinitializationReason = -1;

//+------------------------------------------------------------------+
//| Initialization function                                          |
//+------------------------------------------------------------------+
int OnInit()
{
    if (DeinitializationReason != REASON_CHARTCHANGE)
    {
        if (!Panel.LoadSettingsFromDisk())
        {
            sets.TurnedOn = DefaultTurnedOn;
            sets.TimeType = DefaultTime;
            sets.Monday = DefaultMonday;
            sets.Tuesday = DefaultTuesday;
            sets.Wednesday = DefaultWednesday;
            sets.Thursday = DefaultThursday;
            sets.Friday = DefaultFriday;
            sets.Saturday = DefaultSaturday;
            sets.Sunday = DefaultSunday;
            sets.Enforce = DefaultEnforce;
            sets.ClosePos = DefaultClosePos;
        }

        if (!Panel.Create(0, "AutoTrading Scheduler (ver. " + Version + ")", 0, 20, 20)) return(-1);
        Panel.Run();
        Panel.IniFileLoad();
    
        // Brings panel on top of other objects without actual maximization of the panel.
        Panel.HideShowMaximize();
    
        Panel.RefreshPanelControls();
        Panel.RefreshValues();
    }

    EventSetTimer(1);

    return INIT_SUCCEEDED;
}

//+------------------------------------------------------------------+
//| Deinitialization function                                        |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
    DeinitializationReason = reason; // Remember reason to avoid recreating the panel in the OnInit() if it is not deleted here.
    EventKillTimer();
    if ((reason == REASON_REMOVE) || (reason == REASON_CHARTCLOSE) || (reason == REASON_PROGRAM))
    {
        Panel.DeleteSettingsFile();
        Print("Trying to delete ini file.");
        if (!FileIsExist(Panel.IniFileName() + ".dat")) Print("File doesn't exist.");
        else if (!FileDelete(Panel.IniFileName() + ".dat")) Print("Failed to delete file: " + Panel.IniFileName() + ".dat. Error: " + IntegerToString(GetLastError()));
        else Print("Deleted ini file successfully.");
    }
    else if (reason != REASON_CHARTCHANGE)
    {
        // It is deinitialization due to input parameters change - save current parameters values (that are also changed via panel) to global variables.
        if (reason == REASON_PARAMETERS) GlobalVariableSet("ATS-" + IntegerToString(ChartID()) + "-Parameters", 1);
        Panel.SaveSettingsOnDisk();
        Panel.IniFileSave();
    }
    
    if (reason != REASON_CHARTCHANGE) Panel.Destroy();
}

//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
{
    // Remember the panel's location to have the same location for minimized and maximized states.
    if ((id == CHARTEVENT_CUSTOM + ON_DRAG_END) && (lparam == -1))
    {
        Panel.remember_top = Panel.Top();
        Panel.remember_left = Panel.Left();
    }

    // Call Panel's event handler only if it is not a CHARTEVENT_CHART_CHANGE - workaround for minimization bug on chart switch.
    if (id != CHARTEVENT_CHART_CHANGE) Panel.OnEvent(id, lparam, dparam, sparam);

    if (Panel.Top() < 0) Panel.Move(Panel.Left(), 0);
}

void OnTick()
{
    Panel.RefreshValues();
    Panel.CheckTimer();
    ChartRedraw();
}

//+------------------------------------------------------------------+
//| Timer event handler                                              |
//+------------------------------------------------------------------+
void OnTimer()
{
    Panel.RefreshValues();
    Panel.CheckTimer();
    ChartRedraw();
}
//+------------------------------------------------------------------+
avatar

REDAZOT

  • 29 октября 2023, 04:15
0
Здравствуйте, Андрей. Так у меня только ваш советник под МТ5 есть, который с сайта mql5, его что ли выслать?
AutoTraderRus, вы его делали в 2016 году, вот он работает очень качественно.
avatar

REDAZOT

  • 29 октября 2023, 03:41
+1
Полностью с вами согласен, получил подробный ответ на свой последний вопрос.
avatar

REDAZOT

  • 26 октября 2023, 22:37
0
Я первый раз делаю заказ, Андрей, напишите простыми словами (не сленгом форума), что означает «на следующий топик пойдет».

Советник получается не возможно сделать по моему ТЗ, в рамках бесплатной программы форума. Сейчас советник полностью в нерабочем состояние, как я понял логика тз несложная, но выполнение специфическое, в обход стандартам. Всё правильно я понял.
avatar

REDAZOT

  • 26 октября 2023, 22:05
0
«нужна отладка, а это дело не быстрое» А что это означает?
avatar

REDAZOT

  • 26 октября 2023, 21:44
0
После удалил советник AutoTrader и даже после этого советник делал что-то непонятное на самом ПК, заснял видео для доказательства:

clck.ru/36EaLj (видео можно посмотреть без скачивания в браузере).

Открываю любую папку, в данном случае корзину, мой курсор находится справа возле ползунка, и произвольно происходит программное нажатие Ctrl+E, не пуская мой курсор совершить любое другое действие. Так же когда делал сриншот вместо стандартного названия, самопроизвольно скриншот назвался «УУУУУУУУУ» (латинская E).
avatar

REDAZOT

  • 26 октября 2023, 21:05
0
Здравствуйте, Андрей. Сделал проверку советника AutoTrader, выставил на VPS заданное время для теста, оставил на сутки торговать с другим советником. Вначале всё было ровно, вечером открываю VPS, а AutoTrader каждый тик включает и отключает кнопку автоторговля. Снёс с терминала советник, кнопка автоторговля всё равно включается и отключается. Помогла только перезагрузка МТ.
avatar

REDAZOT

  • 26 октября 2023, 21:02