логика вроде понятна, но в таком виде ЕА с ошибкой инициализации удаляется, и хочу разобраться как последний ордер ЕА в виртуальном торговом
окружении видеть открытым
если не затруднит, то вот пример из КБ, дополнил секцию OnInit() - почему последний ордер пропал из виртуального окружения?
inputdatetime inFrom = D'2020.03.01';
inputdouble Lots = 1;
inputint Interval = 100; // Время жизни позицииinputbool Example = true; // Какой пример кода выбрать#include <fxsaber\Virtual\Virtual.mqh> // https://www.mql5.com/ru/code/22577// Переворотная ТСvoid System()
{
if (!OrderSelect(OrdersTotal() - 1, SELECT_BY_POS))
OrderSend(_Symbol, OP_BUY, Lots, SymbolInfoDouble(_Symbol, SYMBOL_ASK), 100, 0, 0); // Если нет позиции - открываемelseif (TimeCurrent() - OrderOpenTime() > Interval) // Если позиция прожила больше заданного времени
{
// Перевернули позицию
OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 100);
OrderSend(_Symbol, 1 - OrderType(), Lots, OrderClosePrice(), 100, 0, 0);
}
}
//+------------------------------------------------------------------+intOnInit()
{
MqlTick Ticks[];
CopyTicksRange(_Symbol, Ticks, COPY_TICKS_INFO, (long)inFrom * 1000); // Взяли тики
VIRTUAL::Tester(Ticks, OnTick, 0, false); // Прогнали по ним ТС. false - не закрывали в конце.
VIRTUAL::Delete(); // Удалили созданное виртуальное окружение.return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+voidOnTick()
{
staticconstint handle = VIRTUAL::Create(); // Создали хэндл виртуального торгового окружения. 0 - реальное торговое окружениеif (Example)
{
if (VIRTUAL::SelectByHandle()) // Выбрали реальное торговое окружение
System(); // Запустили ТС на выбранном торговом окружении (реальное)if (VIRTUAL::SelectByHandle(handle)) // Выбрали виртуальное торговое окружение
{
VIRTUAL::NewTick(); // Добавили тик в виртуальное торговое окружение
System(); // Запустили ТС на выбранном торговом окружении (виртуальное)
}
}
else// Альтернативная запись тех же действий.// Пробегаемся по всем имеющимся торговым окружениямfor (int i = 0; i <= VIRTUAL::Total(); i++)
if (VIRTUAL::SelectByIndex(i)) // Выбрали соответствующее торговое окружение
{
VIRTUAL::NewTick(); // Добавили тик в выбранное торговое окружение
System(); // Запустили ТС на выбранном торговом окружении
}
Comment(VIRTUAL::ToString()); // Вывели на чарт состояние виртуального торгового окружения
}
мой пример отработал в комментарии тестирование - видел, потом комментарий удалился и ЕА больше не подает признаков жизни в виртуальном
окружении
Пока не понимаем друг друга. Напишите четче, что нужно.
хочу разобраться как пользоваться Virtual
1. запускаю тестовый пример из КБ Virtual_Example - все ОК
2. хочу запустить код Virtual_Example на истории с 01.03.2020
3. хочу в виртуальном окружении видеть текущее состояние Virtual_Example после теста, т.е. тест не должен
закончиться закрытием позиций, нужна имитация торговли с 01.03 по текущий момент ( с номером тикета который был бы последним в тесте )
4. если баланс тестирования положительный, то последний открытый ордер открыть в реале
ЗЫ: опционально бы увидеть как установить виртуальный баланс - видел метод, но еще не тестировал это
UPD: кажется понял как это работает, этот код правильно все сделал:
//+------------------------------------------------------------------+intOnInit()
{
MqlTick Ticks[];
CopyTicksRange(_Symbol, Ticks, COPY_TICKS_INFO, (long)inFrom * 1000); // Взяли тики
VIRTUAL::Tester(Ticks, System, 10000, false); // Прогнали по ним ТС. false - не закрывали в конце.Print(VIRTUAL::ToString());
VIRTUAL::Delete(); // Удалили созданное виртуальное окружение.return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
хочу задать начальный баланс счета для тестирования в Virtual и хочу чтобы далее виртуальное окружение работало с заданным балансом в
виртуальном окружении
это нужно чтобы объединить несколько ТС в виртуальном окружении (в штатном тестере не хочу, хотя там это проще сделать)
хочу задать начальный баланс
счета для тестирования в Virtual и хочу чтобы далее виртуальное окружение работало с заданным балансом в виртуальном
окружении
не до конца еще разобрался с Virtual, еще нужна помощь - нужен пример такого сценария (тестовый ЕА из КБ virtual_example):
1. запустить ЕА с первого числа месяца в виртуальном окружении
2. после выполнения пп.1 перевести ЕА в реальную торговлю из Virtual
не до конца еще разобрался с Virtual, еще нужна помощь - нужен пример такого сценария (тестовый ЕА из КБ virtual_example):
1. запустить ЕА с первого числа месяца в виртуальном окружении
2. после выполнения пп.1 перевести ЕА в реальную торговлю из Virtual
логика вроде понятна, но в таком виде ЕА с ошибкой инициализации удаляется, и хочу разобраться как последний ордер ЕА в виртуальном торговом окружении видеть открытым
если не затруднит, то вот пример из КБ, дополнил секцию OnInit() - почему последний ордер пропал из виртуального окружения?
мой пример отработал в комментарии тестирование - видел, потом комментарий удалился и ЕА больше не подает признаков жизни в виртуальном окружении
почему последний ордер пропал из виртуального окружения?
мой пример отработал в комментарии тестирование - видел, потом комментарий удалился и ЕА больше не подает признаков жизни в виртуальном окружении
Пока не понимаем друг друга. Напишите четче, что нужно.
Пока не понимаем друг друга. Напишите четче, что нужно.
хочу разобраться как пользоваться Virtual
1. запускаю тестовый пример из КБ Virtual_Example - все ОК
2. хочу запустить код Virtual_Example на истории с 01.03.2020
3. хочу в виртуальном окружении видеть текущее состояние Virtual_Example после теста, т.е. тест не должен закончиться закрытием позиций, нужна имитация торговли с 01.03 по текущий момент ( с номером тикета который был бы последним в тесте )
4. если баланс тестирования положительный, то последний открытый ордер открыть в реале
ЗЫ: опционально бы увидеть как установить виртуальный баланс - видел метод, но еще не тестировал это
UPD: кажется понял как это работает, этот код правильно все сделал:
UPD: кажется понял как это работает, этот код правильно все сделал:
Рад, что во всем разобрались.
Рад, что во всем разобрались.
баланс еще не научился имитировать в Virtual
а так, да, в целом очень годная веЩь!
КРУТО! СПАСИБО!
ЗЫ: сейчас из виртуального окружения копировщиком научусь переносить сделки, пока с целью определения проскальзований
баланс еще не научился имитировать в Virtual
Не понимаю терминологию.
Не понимаю терминологию.
хочу задать начальный баланс счета для тестирования в Virtual и хочу чтобы далее виртуальное окружение работало с заданным балансом в виртуальном окружении
это нужно чтобы объединить несколько ТС в виртуальном окружении (в штатном тестере не хочу, хотя там это проще сделать)
хочу задать начальный баланс счета для тестирования в Virtual и хочу чтобы далее виртуальное окружение работало с заданным балансом в виртуальном окружении
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Библиотеки: Virtual
Igor Makanu, 2020.03.11 19:30
Вы же умеете это делать.