Menos código, más acción... escribir un EA - página 5

 
Vladimir Simakov:

¿Qué quieres conseguir con ello? Para ser sincero, no lo entiendo. Al principio pensé que se trataba de un framework, pero no, no hay clases envolventes para indicadores, órdenes, algoritmos estándar de toma de decisiones, nada. Aunque es mucho más legible esta construcción: fast.Get(2)>=slow.Get(1); (es sólo por el ejemplo), pero la declaración:

CMA fast=nuevo CMA(NULL,0,12,...);

CMA slow=nuevo CMA(NULL,0,100,...);

Ahora podemos discutirlo, mientras tú, IMHO, pisoteas el lugar.

por ejemplo, en lugar de fast.Get(2)>=slow.Get(1); es un código bastante legal y que funciona:

table[FAST_MA][1] >=table[SLOW_MA][2]

funciona como una hoja de cálculo, con excel. Se resume en una tabla, no por asas individuales, porque los datos (fórmulas) pueden ser interdependientes.

Se podría hacer (sólo que aún no lo he hecho en una biblioteca específica):

fast=table[FAST_MA]; slow=table[SLOW_MA];

y entonces rápido[2]>lento[1] es aún más fácil de leer

y todos los cálculos internos se harán "a la carta".

 
Maxim Kuznetsov:

también por ejemplo, en lugar de fast.Get(2)>=slow.Get(1); código bastante legal y que funciona:

table[FAST_MA][1] >=table[SLOW_MA][2]

funciona como con una hoja de cálculo, con Excel. Se resume en una tabla, no por asas individuales, porque los datos (fórmulas) pueden ser interdependientes.

Se puede hacer (sólo que aún no lo he hecho en una biblioteca específica):

fast=table[FAST_MA]; slow=table[SLOW_MA];

y luego rápido[2]>lento[1] se lee aún más fácil

y todos los cálculos internos se harán "a la carta"

Es una especie de muleta. A los búferes de limpieza, que el terminal creará de todos modos, también añadimos matrices de dobles. Entiendo que les reservará memoria hasta la profundidad total de la historia (para M1 USHORT_MAX, si no recuerdo mal *8 bytes) o ¿piensa utilizar ArrayResize caro regularmente en el proceso?
 
Vasiliy Sokolov:

Estoy de acuerdo, es muy difícil leer su código, incluso si se conoce el lenguaje.

De hecho, esta regla funciona para cualquier código de terceros. La única pregunta es qué código no es difícil sino más fácil de leer.

Y aquí es más fácil leer y editar casi siempre el código MQL4. Los desarrolladores lo adivinaron una vez.

 
fxsaber:

De hecho, esta regla funciona para cualquier código de terceros. La única cuestión es qué código no es difícil sino más fácil de leer.

Y es más fácil leer y editar casi siempre el código MQL4. Los desarrolladores lo adivinaron una vez.

Pero déjame hacerte una pregunta. ¿Cuál fue la suposición? El estándar C/C++, excepto para las consultas específicas relacionadas con el comercio y los gráficos, puede considerarse como "windows.h" en C++.

Así que, respeto a los desarrolladores por no reinventar la rueda, aunque prohibir los enlaces es un inequívoco menos, no pude alegrarme cuando caí en C/C++ después de mql. Por eso, si se produce un milagro, tal vez deberías considerar, como alternativa, como C# usafe, sobre todo para gente como yo, como si quisieras darte contra la pared, matarte, te avisamos.

 
Vladimir Simakov:

Déjame hacerte una pregunta. ¿Cuál es la suposición?

Kodobase está lleno de EAs de MT5 que son remakes de EAs de MT4. Compara el código del original y del remake.


Obviamente, entender la lógica del original de MT4 es mucho más fácil. Pero es aún más fácil cuando hay que corregir algo en TS. No en vano el MQL4 es un estándar de discusión de algoritmos de trading en foros de todo el mundo. Ningún otro lenguaje, sino MQL4. Y ha jugado un gran papel en la popularidad de MT4, no al revés.


Y si hablamos de las conversiones de MT5, son torcidas - no siempre funcionan. Un ejemplo sencillo. Usted envía una solicitud para cerrar una posición pero recibe una orden de negociación en lugar de cerrarla. Hay un montón de trucos que tienen que ser tratados con el fin de ir a la cuenta real. Con MT4 es sencillo y fiable.

Совершение сделок - Торговые операции - MetaTrader 5
Совершение сделок - Торговые операции - MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 
fxsaber:

El kodobase está lleno de EAs de MT5 que son remakes de EAs de MT4. Compara el código del original y del remake.


Obviamente, es mucho más fácil entender la lógica del original de MT4. Pero es aún más fácil cuando hay que corregir algo en TS. No en vano el MQL4 es un estándar de discusión de algoritmos de trading en foros de todo el mundo. Ningún otro lenguaje, sino MQL4. Y ha jugado un gran papel en la popularidad de MT4, no al revés.


Y si hablamos de las conversiones de MT5, son torcidas - no siempre funcionan. Un ejemplo sencillo. Usted envía una solicitud para cerrar una posición pero recibe una orden de negociación en lugar de cerrarla. Hay un montón de trucos que hay que resolver para ir a la cuenta real. Con MT4 es sencillo y fiable.

Así que es una locura trabajar con órdenes/posiciones por analogía. En mql4 tengo una clase wrapper para eso, en mql5 tengo dos diferentes, porque en mt4 es una entidad, y en mt5 hay dos diferentes, ahora el plan es implementar una clase wrapper sobre ellas y olvidarme de trabajar con órdenes, como tengo desde hace medio año en mql4.
 
Y sí, mt5 fue creado para trabajar en la bolsa, y hay un principio diferente de trabajo con las órdenes/posiciones, así que aprende las matemáticas y no te quejes, todo funciona bien y sin problemas allí, pero la mecánica de negociación de la bolsa y forex tienes que aprender primero y tener en cuenta sus diferencias. Todo lo que se necesita para hacer esto, los desarrolladores han dado y descrito en los muelles, y luego depende de ti.
 
Vladimir Simakov:
Así que es un sinsentido trabajar con órdenes/posiciones por analogía. Tengo una clase wrapper para ello en mql4 y dos diferentes en mql5 porque es una entidad en mt4 y dos diferentes en mt5. Ahora pienso implementar una clase wrapper para ellas y olvidarme de trabajar con órdenes como lo he hecho durante medio año en mql4.
Vladimir Simakov:
Por eso hay que aprender lo mismo en matemáticas y no quejarse, ahí todo va bien y funciona bien, pero primero hay que aprender la mecánica de las operaciones de cambio y Forex y considerar sus diferencias. Todo lo que se necesita para hacer esto, los desarrolladores han dado y descrito en los muelles, y luego depende de ti.

Intenta ampliar tus horizontes, ya que lo que has escrito es realmente un lloriqueo.

 
Vladimir Simakov:
Parece ser una muleta. Además de los buffers de limpieza, que el terminal creará de todos modos, también añadimos arrays dobles. Entiendo que vas a reservar memoria para ellos hasta la profundidad total de la historia (para M1 USHORT_MAX, si no recuerdo mal *8 bytes) o piensas utilizar ArrayResize caro regularmente en el proceso de funcionamiento?

Les asigno memoria, por supuesto. A una profundidad no mayor que la necesaria para los cálculos y la depuración. En el fragmento dado es 30, que es más que suficiente. Si en algún lugar será necesario calcular, por ejemplo, la desviación estándar de la profundidad 50, entonces la memoria caché debe ser aumentada. Y es sólo para acelerar los cálculos.

 
fxsaber:

Intenta ampliar tus horizontes ya que lo que has escrito es realmente un lloriqueo.

Me parece bien, pero así es como se implementa la conexión entre posición y orden en mql5 (como parte del último trabajo, en principio, ya irá en la librería para cuentas de cobertura de esta forma).

CHedge::CheckOrder(void){
   if (!CheckPointer(cOrder)) return;
   switch(cOrder.Control()){
      case ORDER_FULL:        cPosition=NewPosition(cOrder);
      case ORDER_REMOVE:
      case ORDER_ERROR:       delete cOrder;}}
Razón de la queja: