Демо счет работающий в выходные дни (Есть ли сие чудо)

 

Доброго времени, очень увлекся разработкой на mql, но к сожалению позволить себе это могу лишь  в выходные дни‌, но в  выходные дни проблема с отладкой.‌

Тестировщик стратегий тоже не подойдет, так как у меня требуется ручной вход а уже дальше совой включается работа.

И вот как быть, искал но вот так вот сходу не нашел ни одного ДЦ который бы давал пусть даже фейковые тики в выходные (меня для тестирования устроит любая пара, даже битки)

Спасибо.‌

 
Александр Иванчук:

Доброго времени, очень увлекся разработкой на mql, но к сожалению позволить себе это могу лишь  в выходные дни‌, но в  выходные дни проблема с отладкой.‌

Тестировщик стратегий тоже не подойдет, так как у меня требуется ручной вход а уже дальше совой включается работа.

И вот как быть, искал но вот так вот сходу не нашел ни одного ДЦ который бы давал пусть даже фейковые тики в выходные (меня для тестирования устроит любая пара, даже битки)

Спасибо.‌

В тестере ручной вход тоже можно реализовать. Эксперт помещает на график элемент Label. И проверяет его наличие. Если вы его удалили вручную, то эксперт открывает сделку. 
 
Vladimir Tkach:
В тестере ручной вход тоже можно реализовать. Эксперт помещает на график элемент Label. И проверяет его наличие. Если вы его удалили вручную, то эксперт открывает сделку. 


можно просто вывести кнопки Бай/Селл/Лот и опрашивать нажатие на каждом тике... без заморочек с удалением/созданием объектов

п‌с. это для четверки, на пятерке ничего не светит...

 
Александр Иванчук:

Доброго времени, очень увлекся разработкой на mql, но к сожалению позволить себе это могу лишь  в выходные дни‌, но в  выходные дни проблема с отладкой.‌

Тестировщик стратегий тоже не подойдет, так как у меня требуется ручной вход а уже дальше совой включается работа.

И вот как быть, искал но вот так вот сходу не нашел ни одного ДЦ который бы давал пусть даже фейковые тики в выходные (меня для тестирования устроит любая пара, даже битки)

Спасибо.‌


btc-e.com работает 24/7/365
 

СПАСИБО! Всем, оба варианта рабочие и мне подходят!

Буду разбираться!‌

 
Александр Иванчук:

Доброго времени, очень увлекся разработкой на mql, но к сожалению позволить себе это могу лишь  в выходные дни‌, но в  выходные дни проблема с отладкой.‌

Тестировщик стратегий тоже не подойдет, так как у меня требуется ручной вход а уже дальше совой включается работа.

По-моему, выделить час в сутки в будние дни для отладки - вполне себе реально.

Да и что это за такая ТС, где нельзя входить на автомате, по каким-то критериям ? ‌

 
Александр Иванчук:

Доброго времени, очень увлекся разработкой на mql, но к сожалению позволить себе это могу лишь  в выходные дни‌, но в  выходные дни проблема с отладкой.‌

Тестировщик стратегий тоже не подойдет, так как у меня требуется ручной вход а уже дальше совой включается работа.

И вот как быть, искал но вот так вот сходу не нашел ни одного ДЦ который бы давал пусть даже фейковые тики в выходные (меня для тестирования устроит любая пара, даже битки)

Спасибо.‌

А адмирале  битки торгуются по выходным
 
Taras Slobodyanik:


можно просто вывести кнопки Бай/Селл/Лот и опрашивать нажатие на каждом тике... без заморочек с удалением/созданием объектов

п‌с. это для четверки, на пятерке ничего не светит...

Не, кнопки, наследники от CButton работают в тестере нормально. Не работает графика, пашет только в МТ4.

А для кнопок вот, вырезал рабочий код, разберетесь, кому надо. Пашет в МТ4/5 без проблем.

#property strict

#include <Controls\WndObj.mqh>
//#include <Controls\BmpButton.mqh>
#include <Controls\Button.mqh>
#include <Controls\Panel.mqh>
#include <Arrays\ArrayObj.mqh>
//#include <AvLib\SmartNetDefs.mqh>

string  BtnName[BTN_ROWS][BTN_COLS]     = {{"btnSellEnable", "btnBuyEnable"}, {"btnCloseLoss", "btnCloseProfit"}};
string  BtnText[BTN_ROWS][BTN_COLS]     = {{"Sell enable", "Buy enable"}, {"Close loss", "Close profit"}};
int     XYCoord[BTN_ROWS][BTN_COLS][4]  = {{{20,50,100,75}, {110,50,190,75}}, {{20,85,100,110}, {110,85,190,110}}};
color   BtnColor[BTN_ROWS][BTN_COLS][2] = {{{clrLime,clrRed}, {clrLime,clrRed}}, {{clrLime,clrRed}, {clrLime,clrRed}}};
color   BtnTextColor[BTN_ROWS][BTN_COLS][2] = {{{clrBlack,clrLinen}, {clrBlack,clrLinen}}, {{clrBlack,clrLinen}, {clrBlack,clrLinen}}};


class CTradeButtons : CObject
{
protected:
    CButton*    ArrButtons[BTN_ROWS][BTN_COLS];
    color       m_buttonColor;
    color       m_buttonsBorderColor;
    color       m_fontColor;
    int         m_fontSize;
    string      m_fontName;
    bool        m_visible;
    //const string    BtnName[BTN_ROWS][BTN_COLS];
    //const string  BtnName[BTN_ROWS][BTN_COLS] = {{"btnSellEnable", "btnBuyEnable"}, {"btnCloseLoss", "btnCloseProfit"}};
public:
    CTradeButtons()
    {
        /*BtnName[0][0] = "btnSellEnable";
        BtnName[0][1] = "btnBuyEnable";
        BtnName[1][0] = "btnCloseLoss";
        BtnName[1][1] = "btnCloseProfit";*/
    }
    
    ~CTradeButtons() { DeleteButtons(); }
    
    void SetVisible(bool visible)
    {
        CButton *btn;
        m_visible = visible;
        for(int nrow = 0; nrow < BTN_ROWS; nrow++)
            for(int ncol = 0; ncol < BTN_COLS; ncol++)
            {
                btn = ArrButtons[nrow][ncol];
                btn.Visible(visible);
            }    
        ChartRedraw();
    }
    
    void SetParams(color buttonColor, color buttonsBorderColor, color fontColor, int fontSize, string fontName, bool visible)
    {
        m_buttonColor = buttonColor;
        m_buttonsBorderColor = buttonsBorderColor;
        m_fontColor = fontColor;
        m_fontSize = fontSize;
        m_fontName = fontName;
        m_visible = visible;
        DeleteButtons();
        CreateButtons();
    }
    
    bool GetPressedState(int row, int col)
    {
        CButton *btn = ArrButtons[row][col];//.Pressed();
        return true;
    }
/*    bool GetPressedState(int row, int col)
    {
        return ArrButtons[row][col].Pressed();
    }*/


    bool GetPressedState(string name, bool& state)
    {
        for(int row = 0; row < BTN_ROWS; row++)
            for(int col = 0; col < BTN_COLS; col++)
            {
                if(StringFind(name, BtnName[row][col]) != -1)
                {
                    state = ArrButtons[row][col].Pressed();
                    if(state)
                    {
                        ArrButtons[row][col].ColorBackground(BtnColor[row][col][1]);
                        ArrButtons[row][col].Color(BtnTextColor[row][col][1]);
                    }    
                    else 
                    {   
                        ArrButtons[row][col].ColorBackground(BtnColor[row][col][0]);
                        ArrButtons[row][col].Color(BtnTextColor[row][col][0]);
                    }    
                    return true; // кнопка нашлась
                }    
            }
        return false; //не нашлась    
    }

    void SetPressedState(int row, int col, bool state)
    {
        ArrButtons[row][col].Pressed(state);
    }

    void SetPressedState(string name, bool state)
    {
        for(int row = 0; row < BTN_ROWS; row++)
            for(int col = 0; col < BTN_COLS; col++)
            {
                if(StringFind(name, BtnName[row][col]) != -1)
                {
                    ArrButtons[row][col].Pressed(state);
                    if(state)
                    {
                        ArrButtons[row][col].ColorBackground(BtnColor[row][col][1]);
                        ArrButtons[row][col].Color(BtnTextColor[row][col][1]);
                    }    
                    else 
                    {   
                        ArrButtons[row][col].ColorBackground(BtnColor[row][col][0]);
                        ArrButtons[row][col].Color(BtnTextColor[row][col][0]);
                    }    
                    return; // кнопка нашлась
                }    
            }
    }
    
    void DeleteButtons()
    {
        for(int row = 0; row <  BTN_ROWS; row++)
            for(int col = 0; col < BTN_COLS; col++)
            {
                CButton* btn = ArrButtons[row][col];
                if(CheckPointer(btn) == POINTER_DYNAMIC)
                    delete btn;
            }
        ObjectsDeleteAll(0, "btn");    
        ChartRedraw();
    }
    
    CButton* CreateButton(string bname, int x1, int y1, int x2, int y2, color bcolor, string btext, string font, int fontSize,// bool visible,
                        color colorBackground, color colorBorder, long chart = 0, int subwin = 0)
    {
        CButton* btn = new CButton();
        btn.Create(chart, bname, subwin, x1, y1, x2, y2);
        btn.Color(bcolor);
        btn.Text(btext);
        btn.Font(font);
        btn.FontSize(fontSize);
//        btn.Visible(m_visible);
        btn.ColorBackground(colorBackground);
        btn.ColorBorder(colorBorder);   
        return btn;
    }
    
    void CreateButtons()
    {
        for(int nrow = 0; nrow < BTN_ROWS; nrow++)
            for(int ncol = 0; ncol < BTN_COLS; ncol++)
            {
                CButton* btn = CreateButton(BtnName[nrow][ncol], XYCoord[nrow][ncol][0], XYCoord[nrow][ncol][1], XYCoord[nrow][ncol][2], XYCoord[nrow][ncol][3], 
                    clrBlack, BtnText[nrow][ncol], "Arial Rounded MT Bold", 10, BtnColor[nrow][ncol][0], clrBeige);
                if(CheckPointer(btn) == POINTER_DYNAMIC)    
                    ArrButtons[nrow][ncol] = btn;  
                else      
                    ArrButtons[nrow][ncol] = NULL;  
            }
        ChartRedraw();
    }
};