Con respecto a esto, necesitamos encontrar tiempo para describir todo bellamente y hacer un gran artículo. Puedo lanzar un ejemplo o una implementación de pseudoclases visuales para MT4, pero me temo que será difícil de digerir sin una descripción detallada. La esencia de crear un DOM (módulo de objetos de datos) para MT por analogía con JS: son realmente similares de todos modos. Para semilla - la función principal del corazón por así decirlo:
C-4: Hoy en día, ningún programador normal dibuja diagramas de flujo. Todo esto son tonterías teóricas pensadas para ser enseñadas a los escolares, pero no para trabajar en proyectos reales.
No es una tontería. Era necesario cuando los programas se escribían en código máquina. Y luego fueron arrastrados a los libros de texto y se convirtieron en un sinsentido cuando los programas se describieron en lenguajes normales. Y luego estaba el USPD, el Sistema Unificado de Documentación de Programas. Y para presentarlo al cliente había que redactarlo según normas muy estrictas. Tenía que haber un diagrama de bloques y todo tipo de descripciones.
Con respecto a esto, necesito encontrar tiempo para describir todo bien y hacer un gran artículo. Puedo lanzar cualquier ejemplo o implementación de pseudoclases visuales para MT4, pero me temo que será difícil de digerir sin una descripción detallada. La esencia es crear el DOM (Módulo de Objetos de Datos) para MT por analogía con JS - son realmente similares. Para una imprimación - la función principal del corazón por así decirlo:
(Sí, con un columpio. ))
DOM - eso es mucho. Dame un par de capturas de pantalla al menos... O (si está disponible) algún ejemplo compilado independiente, para sentirlo en la terminal. ¿Tienes uno?
DOM - eso es mucho. Dame un par de capturas de pantalla al menos... O (si está disponible) algún ejemplo compilado independiente, para sentirlo en la terminal. ¿Tienes uno?
Краткая сборка софта созданного мной , для торговой платформы MetaTrader 4. Все имущественные права на данный софт принадлежат заказчикам, как правообладателям. И не могут быть переданы третим лицам без их (правообладателей) согласия. Я за собою оставляю авторское право как создатель данного софта. Quick assembly of software created by me for...
1. El panel está a la cola. la estrategia es primordial, si no funciona, el panel no tiene sentido ni utilidad.
2. La aplicación de la parte comercial depende de la estrategia, por lo que no hay nada que discutir en el marco del asalto a una estrategia hipotética. La aplicación de la estrategia, curiosamente, también depende de la estrategia :)
3. Inmediatamente haga un trigger para desactivar la estrategia contabilizada en el bloque de negociación. Y desactivar la realización de nuevos pedidos.
Простой и довольно эффективной логикой написания боевого робота является следующая схема: - робот делится на две части: тестер и синхронизатор. - тестер на основании ранней истории и только что пришедшей выдает текущее состоянии торговой стратегии. - синхронизатор "переносит" текущие тестерные открытые позиции и приказы на реал.
Это чем-то напиминает копирование торговых сигналов с одного счета на другой. Только вместо примитивного копировщика работает грамотный синхронизатор.
К сожалению, правильную логику синхронизатора посмотреть где-либо практически невозможно, поэтому озадачевшемуся придется подумать самому - очень полезно.
Но и такая логика построения боевого-робота далеко не совершенна, т.к. встает дилема первичности курицы и яйца. Поэтому применяются более сложные свои схемы, основанные на опыте автора-алготрейдера.
Все эти действия совершаются только ради одного - адекватной настройки стратегии. Какой бы совершенной не была схема, все равно одинаковые боевые роботы на разных счетах одного и того же ECN/STP брокера покажут расхождения. И помимо поиска рыночных закономерностей, важной задачей для алготрейдера также является уменьшение этих расхождений. Как уже говорилось выше, чем ближе брокер к возможстям HFT, тем меньше расхождения.
Если вникнуть в написанное, должно прийти понимание, что результаты работы стратегии на реале являются также своего рода тестером. И выводы на основании этой торговли также должны быть вероятностными.
1. La estrategia es primordial, si no sigue adelante, el panel no tiene sentido ni utilidad.
2. La aplicación de la parte comercial depende de la estrategia, por lo que no hay nada que discutir en el marco de un hipotético asalto a la estrategia. La aplicación de la estrategia, curiosamente, también depende de la estrategia :)
3. Inmediatamente haga un trigger para desactivar la estrategia contabilizada en el bloque de negociación. Y desactivar la realización de nuevos pedidos.
4. Panel. Qué panel - una rutina.
Bueno, aquí tenemos algo que discutir de una vez. :))
No para discutir, digamos, sino para señalar las posibilidades:
1. Panel directo a la cola. La estrategia es primordial, si no va a arar, el panel es inútil y sin sentido.
Hasta ahora, estoy de acuerdo, pero con una advertencia: el programa debe ser inmediatamente orientado a trabajar en dos modos, por lo que la estrategia / parte de comercio debe ser prescrito a la vez, teniendo en cuenta la presencia / ausencia de control del panel y con / sin visualización de la información en el panel.
2. La aplicación de la parte comercial depende de la estrategia, .......
No depende de mi estrategia. Toda la parte de trading está escrita en una clase (CMarketDriver), que implementa completamente la entrada de órdenes, el seguimiento de posiciones, las recotizaciones y otras cosas relacionadas con el trading. Para todos los símbolos a la vez. La parte de la estrategia sólo recibe las posiciones de mercado recomendadas para los símbolos: es decir, rellena el array de estructuras del formato {string Instrument; double Position} y solicita la sincronización con el servidor: MD.Synchronize(PositionArray). Eso es todo. Por ahora sólo opera con órdenes de mercado, pero está en camino una versión que opera con límites fijados dentro del spread (para reducir los costes de las operaciones). Para el comercio takeprofits / paradas no utilizan, pero MarketDriver puede poner paradas de protección en caso de pérdida prolongada de la conexión con el servidor (parámetros de parada se especifican una vez en la configuración del conductor). Por cierto, muy exitoso, casi no hay problemas solución estructurada. Para la prueba de las ideas estratégicas en el probador - no hay problemas con el comercio, toda la atención se puede dedicar a la estrategia - todo el comercio ha sido durante mucho tiempo depurado y encapsulado en el controlador de comercio.
2............., así que no hay nada que discutir en el marco de un hipotético asalto de estrategia. La aplicación de la estrategia, curiosamente, también depende de la estrategia :)
Por ejemplo, tengo una nueva idea: operar en la intersección de un par de limpiaparabrisas. En este caso, el problema es reestructurar el programa para que, al desarrollarlo (por ejemplo, añadiendo un tercer limpiaparabrisas), no tenga que cambiar la mayor parte del código. Entonces, el programa puede desarrollarse hacia la multidivisa (para simplificar el proyecto, supongamos que el comercio por símbolos es estrictamente independiente y no se consideran las interrelaciones) ¿Cómo organizar la parte estratégica, previendo tal desarrollo?
3. Inmediatamente se establece el disparador para desactivar la estrategia tomada en cuenta en el bloque de negociación. Y desactivar la realización de nuevos pedidos.
Pero no es necesario. Después de todo, no esperamos muchos problemas aquí.
4. Panel. Bueno, el panel es una tarea.
Pero la organización de la conexión de la estrategia con el panel es una tarea bastante creativa, especialmente si intentamos desarrollar una plantilla más o menos universal para dicho panel que pueda adaptarse fácilmente a diferentes Asesores Expertos y desarrollarse fácilmente a medida que el proyecto crece/se desarrolla.
Conmigo casi siempre depende. Especialmente cuando se trabaja con ECN. Es decir, no todo se hace al nivel más bajo, por supuesto, sino a través de los cascos de las funciones comerciales estándar.
Conmigo casi siempre depende. Especialmente cuando se trabaja con ECN. Es decir, no todo se hace al nivel más bajo, por supuesto, sino a través de los cascos de las funciones comerciales estándar.
No sé cómo resultará mi relación con ECN allí (voy a abrir una cuenta con RoboForex), pero intentaré lo mejor posible para mantener este desacoplamiento estructural (estrategia/conductor de mercado). Es tan conveniente, que incluso estoy listo para algunos costos comerciales moderados (como la pérdida de ganancias).
Vea lo simple que parece el ciclo principal del EA al final:
// Тестовый советник для тестирования обученных в GPU-оптимизаторе нейросеток (или записи значений котировок/индикаторов для отправки исходных данных в тот же оптимизатор).
voidOnTick()
{
if(Mode==TradesMode) //-- Если режим тестирования
{
for(int i=0;i<CountInd;i++)
{
vInds[i]=GetInd(i,0); // получаем значения индикаторов
}
Net.CalcResult(vInds); // рассчитываем значение нейросетки
float net_result=Net.NetResult[0]; // забираем рекомендованную рыночную позицию
SP.Pos=net_result*Lot; // заполняем структуру для MarketDriver'a
int err;
MD.Synhronize(SP,err); // синхронизируемся с торговым сервером.
}
else// Mode==RecordMode // Если режим записи
..............
Compruebe la versión simplificada de prueba y vea si le gusta el esquema. Si es así, ajústelo a sus necesidades y utilícelo en su beneficio.
ZS. Es un poco pequeño, ¿por qué no hacemos uno más global?
Bueno, pinchazo tady (en términos generales) ¿cómo tapas estas brechas en los cuatro primeros? ¿Está todo en DLL? :)
Sin DLL, puro MCL + winepi para el manejo de eventos .
Con respecto a esto, necesitamos encontrar tiempo para describir todo bellamente y hacer un gran artículo. Puedo lanzar un ejemplo o una implementación de pseudoclases visuales para MT4, pero me temo que será difícil de digerir sin una descripción detallada. La esencia de crear un DOM (módulo de objetos de datos) para MT por analogía con JS: son realmente similares de todos modos. Para semilla - la función principal del corazón por así decirlo:
¿Tiene una oferta específica?
Hay, y la tarea está viva, pero me da miedo pronunciarla aquí, puedo en un personal.
Hoy en día, ningún programador normal dibuja diagramas de flujo. Todo esto son tonterías teóricas pensadas para ser enseñadas a los escolares, pero no para trabajar en proyectos reales.
Sin DLL, puro MCL + Vinapi para el procesamiento de eventos.
Con respecto a esto, necesito encontrar tiempo para describir todo bien y hacer un gran artículo. Puedo lanzar cualquier ejemplo o implementación de pseudoclases visuales para MT4, pero me temo que será difícil de digerir sin una descripción detallada. La esencia es crear el DOM (Módulo de Objetos de Datos) para MT por analogía con JS - son realmente similares. Para una imprimación - la función principal del corazón por así decirlo:
(Sí, con un columpio. ))
DOM - eso es mucho. Dame un par de capturas de pantalla al menos... O (si está disponible) algún ejemplo compilado independiente, para sentirlo en la terminal. ¿Tienes uno?
(Risas...) Con una explosión. ))
DOM - eso es mucho. Dame un par de capturas de pantalla al menos... O (si está disponible) algún ejemplo compilado independiente, para sentirlo en la terminal. ¿Tienes uno?
¿Lo intentamos?
Nada.
1. El panel está a la cola. la estrategia es primordial, si no funciona, el panel no tiene sentido ni utilidad.
2. La aplicación de la parte comercial depende de la estrategia, por lo que no hay nada que discutir en el marco del asalto a una estrategia hipotética. La aplicación de la estrategia, curiosamente, también depende de la estrategia :)
3. Inmediatamente haga un trigger para desactivar la estrategia contabilizada en el bloque de negociación. Y desactivar la realización de nuevos pedidos.
4. Panel. Lo que es un panel: una rutina.
En cuanto a la redacción del ST, es algo así:
Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading
Discusión sobre el comercio de alta frecuencia en MT5
hrenfx, 2013.02.06 14:30
Простой и довольно эффективной логикой написания боевого робота является следующая схема:
- робот делится на две части: тестер и синхронизатор.
- тестер на основании ранней истории и только что пришедшей выдает текущее состоянии торговой стратегии.
- синхронизатор "переносит" текущие тестерные открытые позиции и приказы на реал.
Это чем-то напиминает копирование торговых сигналов с одного счета на другой. Только вместо примитивного копировщика работает грамотный синхронизатор.
К сожалению, правильную логику синхронизатора посмотреть где-либо практически невозможно, поэтому озадачевшемуся придется подумать самому - очень полезно.
Но и такая логика построения боевого-робота далеко не совершенна, т.к. встает дилема первичности курицы и яйца. Поэтому применяются более сложные свои схемы, основанные на опыте автора-алготрейдера.
Все эти действия совершаются только ради одного - адекватной настройки стратегии. Какой бы совершенной не была схема, все равно одинаковые боевые роботы на разных счетах одного и того же ECN/STP брокера покажут расхождения. И помимо поиска рыночных закономерностей, важной задачей для алготрейдера также является уменьшение этих расхождений. Как уже говорилось выше, чем ближе брокер к возможстям HFT, тем меньше расхождения.
Если вникнуть в написанное, должно прийти понимание, что результаты работы стратегии на реале являются также своего рода тестером. И выводы на основании этой торговли также должны быть вероятностными.
Nada.
1. La estrategia es primordial, si no sigue adelante, el panel no tiene sentido ni utilidad.
2. La aplicación de la parte comercial depende de la estrategia, por lo que no hay nada que discutir en el marco de un hipotético asalto a la estrategia. La aplicación de la estrategia, curiosamente, también depende de la estrategia :)
3. Inmediatamente haga un trigger para desactivar la estrategia contabilizada en el bloque de negociación. Y desactivar la realización de nuevos pedidos.
4. Panel. Qué panel - una rutina.
Bueno, aquí tenemos algo que discutir de una vez. :))
No para discutir, digamos, sino para señalar las posibilidades:
1. Panel directo a la cola. La estrategia es primordial, si no va a arar, el panel es inútil y sin sentido.
Hasta ahora, estoy de acuerdo, pero con una advertencia: el programa debe ser inmediatamente orientado a trabajar en dos modos, por lo que la estrategia / parte de comercio debe ser prescrito a la vez, teniendo en cuenta la presencia / ausencia de control del panel y con / sin visualización de la información en el panel.
No depende de mi estrategia. Toda la parte de trading está escrita en una clase (CMarketDriver), que implementa completamente la entrada de órdenes, el seguimiento de posiciones, las recotizaciones y otras cosas relacionadas con el trading. Para todos los símbolos a la vez. La parte de la estrategia sólo recibe las posiciones de mercado recomendadas para los símbolos: es decir, rellena el array de estructuras del formato {string Instrument; double Position} y solicita la sincronización con el servidor: MD.Synchronize(PositionArray). Eso es todo. Por ahora sólo opera con órdenes de mercado, pero está en camino una versión que opera con límites fijados dentro del spread (para reducir los costes de las operaciones). Para el comercio takeprofits / paradas no utilizan, pero MarketDriver puede poner paradas de protección en caso de pérdida prolongada de la conexión con el servidor (parámetros de parada se especifican una vez en la configuración del conductor). Por cierto, muy exitoso, casi no hay problemas solución estructurada. Para la prueba de las ideas estratégicas en el probador - no hay problemas con el comercio, toda la atención se puede dedicar a la estrategia - todo el comercio ha sido durante mucho tiempo depurado y encapsulado en el controlador de comercio.
2............., así que no hay nada que discutir en el marco de un hipotético asalto de estrategia. La aplicación de la estrategia, curiosamente, también depende de la estrategia :)
Por ejemplo, tengo una nueva idea: operar en la intersección de un par de limpiaparabrisas. En este caso, el problema es reestructurar el programa para que, al desarrollarlo (por ejemplo, añadiendo un tercer limpiaparabrisas), no tenga que cambiar la mayor parte del código. Entonces, el programa puede desarrollarse hacia la multidivisa (para simplificar el proyecto, supongamos que el comercio por símbolos es estrictamente independiente y no se consideran las interrelaciones) ¿Cómo organizar la parte estratégica, previendo tal desarrollo?
3. Inmediatamente se establece el disparador para desactivar la estrategia tomada en cuenta en el bloque de negociación. Y desactivar la realización de nuevos pedidos.
Pero no es necesario. Después de todo, no esperamos muchos problemas aquí.
4. Panel. Bueno, el panel es una tarea.
Pero la organización de la conexión de la estrategia con el panel es una tarea bastante creativa, especialmente si intentamos desarrollar una plantilla más o menos universal para dicho panel que pueda adaptarse fácilmente a diferentes Asesores Expertos y desarrollarse fácilmente a medida que el proyecto crece/se desarrolla.
No hace falta, casi nunca depende de mí.
Conmigo casi siempre depende. Especialmente cuando se trabaja con ECN. Es decir, no todo se hace al nivel más bajo, por supuesto, sino a través de los cascos de las funciones comerciales estándar.
Conmigo casi siempre depende. Especialmente cuando se trabaja con ECN. Es decir, no todo se hace al nivel más bajo, por supuesto, sino a través de los cascos de las funciones comerciales estándar.
No sé cómo resultará mi relación con ECN allí (voy a abrir una cuenta con RoboForex), pero intentaré lo mejor posible para mantener este desacoplamiento estructural (estrategia/conductor de mercado). Es tan conveniente, que incluso estoy listo para algunos costos comerciales moderados (como la pérdida de ganancias).
Vea lo simple que parece el ciclo principal del EA al final:
Compruebe la versión simplificada de prueba y vea si le gusta el esquema. Si es así, ajústelo a sus necesidades y utilícelo en su beneficio.