AutoGraf Serie 4 - Funciones MQL. - página 32

 
Integer писал(а) >>
¿Qué guión?

Lo encontré y eché un vistazo. Aquí todo el mundo debe actuar según el principio de "no te pongas debajo de la flecha", la autoconfianza del autor te deja boquiabierto, ni hablar.

 
ForexTools >> :
He borrado todos mis mensajes que no estaban relacionados con la discusión de AG. Llamo a otros "free riders" a hacer lo mismo - respetemos el trabajo de los demás: no está limpio donde (los moderadores) limpian, sino donde (los usuarios) no ensucian ;)

Gracias a sabluk por entender y apoyar mi "iniciativa". ¿Quizás otros sigan nuestro ejemplo?

 

Se ha lanzado una nueva versión de la serie AG 4 - AutoGraf 4.90207.

Se han hecho cambios:
1. Se ha añadido la opción de silenciar los ticks.
2. Se ha corregido el error de gestión de los instrumentos 17 y 20 (cuando el modo AG o AT estaba desactivado, cuando el precio de mercado del instrumento alcanzaba el precio de ejercicio, el instrumento no se eliminaba; ahora se elimina automáticamente).
Descargue la nueva versión aquí http://autograf.dp.ua/Pages/4/421.htm.

 

AutoGraf 4 ha aguantado decentemente la innovación del 5º signo.(http://forum.alpari-idc.ru/thread44876.html)


Simplemente funciona como antes. No se requiere ninguna modificación (es porque está escrito correctamente - el programa no utiliza valores variables, definidos numéricamente - todo se construye sobre variables, actualizadas a medida que cambian en el servidor, en particular, Point, Digits, StopLevel etc.). )

Los cambios naturales que hay que hacer en la configuración del Asesor Experto se refieren a los valores preestablecidos de los parámetros del precio. Por ejemplo, SL (StopLoss en pips) = 25, ahora tenemos que establecerlo en 250 o cualquier valor a discreción del usuario, pero no menos de 100 (es decir, no más pequeño que el valor actual de la distancia mínima de StopLevel). Proceda de la misma manera con otros parámetros.

Después de la configuración de los parámetros (en la ventana de configuración de expertos) se recomienda guardar (allí) los ajustes. Además, se recomienda crear una nueva plantilla: botón Plantillas - Guardar como.

===

La gente del cine filmó una vez una casa vieja siendo volada.
Pusieron los explosivos en... ¡Boom! La casa se mantiene en pie. Plantaron más. ¡Boom! La planta baja se derrumba. Toda la parte superior (4 pisos) no se derrumbó, la casa sólo se hundió un piso. Al final se consiguió que explotara al quinto intento.

La empresa constructora compró el metraje por mucho dinero y publicitó su calidad de trabajo mostrando la película:)

 

¡Señoras y señores!

Por favor, responda a la pregunta.

¿Cómo distingue la aplicación que la función AT le está dando instrucciones (por ejemplo, refiriéndose al terminal) y no comerciando ella misma?

Исполнение функции АТ связано с двумя основными возможностями.

La primera es que la función AT puede negociar por sí misma: forma órdenes de negociación y las envía al servidor. En este caso, la función no puede procesar ningún dato recibido de la aplicación (o manejar algunos de ellos), pero puede realizar sus propios cálculos utilizando todas las características del lenguaje MQL4, incluyendo el direccionamiento de la terminal para el procesamiento de órdenes, la obtención de las cotizaciones actuales, el cálculo de los criterios de negociación, la gestión de los objetos gráficos, etc.

La segunda función está directamente relacionada con la aplicación AutoGraf 4. Esta función puede ordenar a la aplicación AutoGraf 4 que instale las herramientas necesarias con ajustes preestablecidos en órdenes específicas o en un gráfico de precios, que cambie los ajustes generales de la aplicación, que elimine herramientas, que muestre mensajes al usuario, etc. (parámetros de salida). (parámetros de salida).

 

¡Señoras y señores!

Por favor, responda a una pregunta.

En el ejemplo anterior de la función Custom Auto Trade en el "Ejemplo 2. Apertura y cierre de órdenes de mercado". Las órdenes de mercado se abren, pero creo que las órdenes pendientes se cierran.

//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
// AG_AT.mq4                                             Пример 0 (инструментов нет)
// Пользовательская функция Автоматической Торговли.
// Используется при построении функции автоматической торговли для приложения AutoGraf 4
// Сергей Ковалёв, Днепропетровск, sk@autograf.dp.ua, ICQ 64015987, http://autograf.dp.ua
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж 0 жж
#property library   
 
#import "AG_Lib.ex4"
   int AG_Magic_Number();                          // Вычисление MN 
   int AG_Message(string& Message[], string _Text);// Запись сообщений в массив Message[]
#import "AG_Trade_Criterion.ex4"
   int AG_Trade_Criterion_1();                     // Ф-ия определен. торгов. критериев 1
   int AG_Trade_Criterion_2();                     // Ф-ия определен. торгов. критериев 2
#import
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж 1 жж
.......
//================================================================================== 7 ==
/*
                                       // Cнять блок комментариев с Примера 2
                                       // и закомментировать Пример 1
                                       // Пример 2. Открытие и закрытие рыночных ордеров.
   int Crit = AG_Trade_Criterion_2();  // Вызов функции вычисления торговых критериев
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
   if (OrdersTotal()==0)               // Если нет ордеров, то интересуемся ..
      {                                // .. критериями открытия
      switch(Crit)                     // В этом блоке рассматриваются критерии открытия
         { 
         case 10:                      // Торговый критерий = Открыть_Buy
            MN = AG_Magic_Number();    // Вычисление MagicNumber (рекомендуется)
                                       // Открытие ордера Buy:
            OrderSend(Symbol(),OP_BUY, 0.1,Ask,2,Bid-100*Point,Bid+40*Point,Comm,MN); 
            break;
         case 20:                      // Торговый критерий = Открыть_Sell
            MN = AG_Magic_Number();    // Вычисление MagicNumber (рекомендуется)
                                       // Открытие ордера Sell:
            OrderSend(Symbol(),OP_SELL,0.1,Bid,2,Ask+100*Point,Ask-40*Point,Comm,MN);
         }
      }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
   if (OrdersTotal()==1)               // По стратегии возможен только 1 рыночный ордер
      {
      switch(Crit)                     // В этом блоке рассматриваются критерии закрытия
         {
         case 11:                      // Торговый критерий = Закрыть_Buy
            if (NormalizeDouble(Order[1][6],0) == 0.0)            // Если тип ордера Buy
               {                                      
               int _Ord_Ticket = NormalizeDouble(Order[1][4],0);  // Номер ордера
               double _Ord_Lots = NormalizeDouble(Order[1][5],2); // Полное закрытие
               OrderClose(_Ord_Ticket, _Ord_Lots, Bid, 2);        // Закрыть ордер Buy
               }
            break;
         case 21:                      // Торговый критерий = Закрыть_Sell
            if (NormalizeDouble(Order[1][6],0) == 1.0)      // Если тип ордера Sell
               {
               _Ord_Ticket = NormalizeDouble(Order[1][4],0);// Номер ордера
               _Ord_Lots = NormalizeDouble(Order[1][5],2);  // Будем закр.ордер полностью
               OrderClose(_Ord_Ticket, _Ord_Lots, Ask, 2);  // Закрыть ордер Sell
               }
         }
      }
*/
//================================================================================== 8 ==
   return(1);
   }
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж Конец модуля жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж 10 жж
if (NormalizeDouble(Order[1][6],0) == 0.0)            // Если тип ордера Buy
и
if (NormalizeDouble(Order[1][6],0) == 1.0)            // Если тип ордера Sell 

¿O tal vez estoy malinterpretando algo?

Общее количество ордеров в приложении AutoGraf 4 не должно превышать 30. Нумерация ордеров в приложении AutoGraf 4 начинается с 1. Нулевой индекс в первом измерении массива Order[][] для учёта параметров ордеров не используется. Поэтому массив Order[][] в первом измерении имеет размерность 31. Каждая строка в массиве соответствует одному ордеру и содержит значения следующих параметров ордеров:

[0][0] - número total de pedidos;

[][0] - no se utiliza;

[1][1] - OpenPrice - precio de apertura (fijación) de una orden (valor de precio absoluto);

[][2] - StopLoss de la orden (valor absoluto del precio);

[][3] - Orden de TakeProfit (valor absoluto del precio);

[][4] - NúmeroOrdenes número de la orden;

[][5] - Número de lotes de la orden;

[][6] - Tipo de orden (0=B, 1=S, 2=BL, 3=SL, 4=BS, 5=SS,Trades);

[][7] - NúmeroMágico - El número mágico de la orden;

[][8] - 0/1 comentario hecho;

[][9] - PrOld- precio inicial de apertura de la orden (valor absoluto del precio).


Del manual:

Tipo de operación para la función OrderSend(). Puede ser cualquiera de los siguientes valores:

Constante Valor Descripción
OP_BUY0Comprar
OP_VENDER1Vender
OP_BUYLIMIT2Orden pendiente de Límite de Compra
OP_SELLLIMIT3Orden pendiente de VENTA LIMITADA
OP_BUYSTOP4Orden pendiente de COMPRA STOP
OP_SELLSTOP5Orden pendiente de venta de STOP

Es decir, debería serlo:

if (NormalizeDouble(Order[1][0],0) == 0.0)            // Если тип ордера Buy
и
if (NormalizeDouble(Order[1][1],0) == 1.0)            // Если тип ордера Sell 
 

¡Señoras y señores!

Por favor, responda a mi pregunta.

¿Por qué en las propiedades del EA no se recuerda el nombre de mi estrategia "L_1"?


Al instalar AG_exp. lo anoté, aparece en la línea, pero no se recuerda en las propiedades?

 

¡Señoras y señores!

Por favor, responda a una pregunta.

Al terminar una aplicación o después de desinstalarla, cómo eliminar los objetos gráficos no soportados por la aplicación. Por ejemplo como OBJ_ARROW?

 
LeonidSB писал(а) >>

Es decir, debería serlo:

if (NormalizeDouble(Order[1][0],0) == 0.0)            // Если тип ордера Buy
и
if (NormalizeDouble(Order[1][1],0) == 1.0)            // Если тип ордера Sell 

No, no está bien. Vuelva a mirar la tabla (ejemplo de conjunto de pedidos) en http://autograf.dp.ua/Pages/2/26/267/2674.htm

En esta página también se describe cómo los índices de la matriz se corresponden con los parámetros contenidos en la misma. Tenga en cuenta que aquí estamos hablando de un índice en la segunda dimensión del array Orden[][].

[0][0] - número total de pedidos;

[][0] - no se utiliza;

[][1] - OpenPrice - precio al que se abre (establece) la orden (valor absoluto del precio);

[][2] - StopLoss de la orden (valor absoluto del precio);

[][3] - Orden de TakeProfit (valor absoluto del precio);

[][4] - NúmeroOrdenes número de la orden;

[][5] - Número de lotes de la orden;

[][6] - Tipo de orden (0=B, 1=S, 2=BL, 3=SL, 4=BS, 5=SS, Trades);

[][7] - NúmeroMágico - El número mágico de la orden;

[][8] - 0/1 comentario hecho;

[][9] - PrOld- precio inicial de apertura de la orden (valor absoluto del precio).

---------------

El parámetro "Tipo de orden" corresponde al sexto índice de la segunda dimensión de la matriz Order[][].

if (NormalizeDouble(Order[1][6],0) == 0.0)            // Если тип ордера Buy
и
if (NormalizeDouble(Order[1][6],0) == 1.0)            // Если тип ордера Sell 
 
LeonidSB писал(а) >>

¡Señoras y señores!

Por favor, responda a mi pregunta.

¿Por qué en las propiedades del EA no se recuerda el nombre de mi estrategia "L_1"?

Cuando configuro AG_exp. lo anoté, se muestra en la línea, pero no se recuerda en las propiedades?

Si lo hace correctamente, debería ser recordado.

Y se recordará hasta que descargue el Asesor Experto de la ventana.

Puedes hacer una de estas dos cosas, si no quieres volver a introducirlo la próxima vez:

1. Guarde el Asesor Experto que ha establecido en las plantillas. Iniciar una nueva carga desde una nueva plantilla.

2. Guarde los ajustes del Asesor Experto (botón Guardar en la ventana de Preferencias), y cargue los ajustes cuando cargue el Asesor Experto la próxima vez (botón Cargar en la ventana de Preferencias).

Puede encontrar el orden de fijación de las estrategias aquí: http://autograf.dp.ua/Pages/2/26/267/26711/26711_2.htm.

LeonidSB escribió :>>

¡Querida!

Por favor, responda a la pregunta.

Al terminar una aplicación o después de desinstalarla, cómo eliminar los objetos gráficos no soportados por la aplicación. ¿Como OBJ_ARROW?

Seleccione el objeto y elimínelo (pulse Suprimir).
Si se hace mediante programación, se puede utilizar ObjectsDelete() o ObjectsDeleteAll().