Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 200

 
STARIJ:

¡¡¡Artem, o es trolling discreto o no sabes de qué escribes!!!

En tu último post hablaste de la clasificación. Se le explica que no hay dependencia de la clasificación.

He visto y participado en una de las discusiones sobre la selección del orden por tiempo. La conclusión fue que los pedidos se colocan ahora en la base de datos de pedidos según la hora en que se enviaron al servidor. Pero TEORÉTICAMENTE existe el temor de que los desarrolladores puedan cambiar esto. Ese fue el final de la discusión. Como especialista en bases de datos le aseguro que este temor es infundado, un cambio está fuera de toda duda. Puedes remitir el problema a los desarrolladores. Si escribo algo, sé lo que escribo. Es el 50º aniversario de la programación. Si notas en mis posts algún desorden desde tu punto de vista - escríbeme en persona. Te lo explicaré y tus dudas se disiparán. Pero aquí es poco probable que las discusiones sean apropiadas. Le escribí un guión y me dio las gracias. ¿No es bueno?

Eso eslo que pensaban todas esas personas que de repente se encontraron con que dependían de la clasificación. La lógica de la gente se derrumbó. Después, la dependencia de la clasificación volvió a desaparecer. Pero ya lo ha hecho. Si quieres depender no de tu programa, sino de una hipotética ordenación invariable, estás en tu derecho, pero en el hilo de ayuda para principiantes no tienes ese derecho: dar un script y no mencionar el hecho de que puede fallar un día. Busca estas discusiones en mql4.com - hace unos 6 - 7 años.

Eso eslo que mencioné: la persona hablaba de stoploss, no de pérdidas.

Gracias dijo - educado, pero no sabe si está bien o mal ;)

 
Artyom Trishkin:

Eso eslo que mencioné: el hombre estaba hablando de stoploss, no de pérdidas.

Dijo que gracias - es educado, pero no sabe si está bien o mal ;)

Mira atentamente lo que ha escrito el hombre.

X = OrderProfit( );        // запомнить величину тейкпрофита

if (OrderSelect (Ht-1,SELECT_BY_POS, MODE_HISTORY))     // если ПОСЛЕДНИЙ ордер                  
if ( OrderType ()==OP_SELL)  // СЕЛ

if(X < 0)                 // и если этот сел закрылся по стопу 

Se deduce que se refería a la pérdida de órdenes. Así es como entiende el stoploss. No tiene la palabrastoploss.

También quería escribir que los stops son un nombre generalizado para StopLoss y TakeProfit. Para ver esto, escriba 130 en el MetaEditor y pulse F1

Paradas. Plural.

Estoy trabajando aquí, me estás distrayendo.

Mejor digamos datetime --> TimeToStruct -->MqlDateTime ¿Cómo volver a convertir a datetime ahora?

 
STARIJ:

Mira cuidadosamente lo que el hombre escribió

Se deduce que se refería a la pérdida de órdenes. Así es como entiende la parada. No tiene la palabrastoploss.

También quería decirle que los stops son StopLoss y TakeProfit generalizados. Para ver esto, escriba 130 en el MetaEditor y pulse F1

Paradas. Plural.

Estoy trabajando aquí, me estás distrayendo.

Mejor digamos datetime --> TimeToStruct -->MqlDateTime ¿Cómo convertir de nuevo a datetime?

if(X < 0)                 // и если этот сел закрылся по стопу 

StructToTime()

 
виталик: una línea entre el máximo y el mínimo se dibujó en el gráfico horario
//+-------------------------------------------------------+
//| на H1 суточную линию между хая и лоу         PROBA.mq4|
//+-------------------------------------------------------+
#property strict

void OnStart()
{
  // Удалим все объекты
  ObjectsDeleteAll();

  string Символ = "GBPUSD";
  datetime Первый, Последний;
  int Период=PERIOD_H1;

  // Прежде всего узнаем дату и время последнего бара
  Последний = iTime(Символ, Период, 0);
  Alert("Последний бар на часовом  ",Последний);

  // Теперь получить начало суток, обнулив часы
  // Для этого преобразуем время последнего бара в структуру
  MqlDateTime MqlПервый;
  TimeToStruct(Последний,MqlПервый);
  MqlПервый.hour=0;



  // Терерь надо обратно преобразовать во время
  Первый=StructToTime(MqlПервый);
  Alert("Первый бар на часовом  ",Первый); // Смотрим начало первого бара суток

  // По времени определим номер первого бара суток
  int НомерПервого=iBarShift(Символ, PERIOD_H1,Первый);
  Alert("Первый бар на часовом под номером ",НомерПервого);

// Можно было просто узнать время начала бара на D1


  
  // Теперь у нас есть НомерПервого бара, а номер послелнего = 0
  // Найдем на этом интервале номера баров, где макс и мин
  // iHighest и iLowest находят номер бара с макс и мин ценой
  int БарМакс = iHighest(Символ,  // symbol = инструмента
                Период,           // timeframe = Период
                MODE_HIGH,        // Наибольшая цена бара
                НомерПервого+1,   // Количество баров
                0);               // Начальный бар

  int БарМин  = iLowest(Символ,
                Период,
                MODE_LOW,         // Наименьшая цена бара
                НомерПервого+1,
                0);

  Alert("Максимальный бар = ", БарМакс, "  Минимальный бар = ", БарМин);

  // iHigh и iLow дают макс и мин цены указанного бара
  double max_price=iHigh(Символ, Период, БарМакс);
  double min_price=iLow (Символ, Период, БарМин);
  Alert("Максимум цены = ", max_price, "  Минимум цены = ", min_price);

  // Проводим линию
  ObjectCreate("Макс_Мин",OBJ_TRENDBYANGLE,0, Time[БарМакс], max_price, Time[БарМин], min_price);
  ObjectSet("Макс_Мин",OBJPROP_RAY,false);     // Выключить свойство бесконечного луча

  // Теперь хорошо бы узнать угол
  Alert("Угол = ", ObjectGetDouble(0,"Макс_Мин",OBJPROP_ANGLE));
}

// Devuelve 0.0 El ángulo debe ser fijado y luego debe ser obtenido...
// Así, conociendo la diferencia de precios y el número de barras entre el Max y el Min, se debe calcular el ángulo.
// Supongo que podría ser más corto...

 
STARIJ:

// Devuelve 0.0 El ángulo debe ser fijado y luego obtenido...
// Así, conociendo la diferencia de precios y el número de barras entre el Max y el Min, se debe calcular el ángulo
// Supongo que podría ser más corto...


muchas gracias )
 
Artyom Trishkin:   StructToTime()
Gracias, lo he encontrado. Resulta que ya lo he utilizado. Esperaba verlo en la ayuda para uno de los datetime TimeToStruct MqlDateTime
 
-Aleks-:

Uf, no puedo averiguar cómo añadir variables - es decir, digamos que tengo 4 variables booleanas y necesito pasar por ellas?

Entiendo el punto - el resto debe ser menor o mayor que cero después de la división - pero no puedo averiguar cómo hacerlo :(


Para los booleanos, el enfoque es ligeramente diferente

//+------------------------------------------------------------------+
//|                                                       Decode.mq4 |
//|                                            Copyright 2017, Vinin |
//|                                             http://vinin.ucoz.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, Vinin"
#property link      "http://vinin.ucoz.ru"
#property version   "1.00"
#property strict
#property script_show_inputs
//--- input parameters
input int N=15;  //0..162
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   for(int n=0;n<N;n++)
     {
      int tmp=n;
      bool a= (bool) MathMod(tmp,2);
      tmp=tmp/2;
      bool b= (bool) MathMod(tmp,2);
      tmp=tmp/2;
      bool c= (bool) MathMod(tmp,2);
      tmp=tmp/2;
      bool d= tmp;

      Print("N=",n,"; A=",a,"; B=",b,"; C=",c,"; D=",d);
     }

  }

Codificación binaria.

El N máximo en este caso es inferior a 16.

No puedo entender lo que quieres conseguir

 
Victor Nikolaev:


Para los booleanos, el enfoque es ligeramente diferente

codificación binaria.

El máximo N en este caso es inferior a 16

No puedo entender lo que estás tratando de conseguir.

¡Eres un genio! Gracias.

Tengo 16 opciones.

2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=15; A=true; B=true; C=true; D=true
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=13; A=true; B=false; C=true; D=true
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=9; A=true; B=false; C=false; D=true
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=1; A=true; B=false; C=false; D=false
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=5; A=true; B=false; C=true; D=false
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=3; A=true; B=true; C=false; D=false
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=11; A=true; B=true; C=false; D=true
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=7; A=true; B=true; C=true; D=false
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=14; A=false; B=true; C=true; D=true
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=6; A=false; B=true; C=true; D=false
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=10; A=false; B=true; C=false; D=true
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=2; A=false; B=true; C=false; D=false
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=12; A=false; B=false; C=true; D=true
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=4; A=false; B=false; C=true; D=false
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=8; A=false; B=false; C=false; D=true
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=0; A=false; B=false; C=false; D=false

Para lo que quiero usarlo - Tengo una serie de filtros y opciones de gestión de posiciones en mi EA - Quiero combinarlos, incluso haciendo mini-sets (combinaciones pre-hechas) - como resultado obtendré datos para el análisis, mientras que no estoy sesgado hacia la muestra, que espero ampliar los horizontes de percepción de la influencia de los ajustes en el resultado. El resultado será una serie de resultados que analizaré en detalle. Y, hay otra razón, tengo una clase para recoger estadísticas que guarda un número limitado de variables en un archivo, lo que impide un análisis detallado.
 
виталик:

muchas gracias )

STARIJ:

// Devuelve 0.0 El ángulo debe ser fijado y luego obtenido...
// Así, conociendo la diferencia de precios y el número de barras entre el Max y el Min, se debe calcular el ángulo
// Supongo que podría ser más corto...


Creo que tengo que mirar el gráfico como un indicador, pero creo que tengo que mirar el gráfico como un indicador, así que puedo ver cómo conseguir que funcione más de un día.

#property indicator_chart_window
extern int boom = 1;
//=================================
void fishka(int ma,int mi,double map,double mip) // ф-ция
{
   ObjectCreate("Макс_Мин",OBJ_TRENDBYANGLE,0, Time[ma], map, Time[mi], mip);// Проводим линию
   ObjectSet("Макс_Мин",OBJPROP_RAY,false);     // Выключить свойство бесконечного луча
}

int deinit()
  {

 ObjectsDeleteAll();// Удалим все объекты
  return(0);
  }

void start()
{  
  string Символ = "GBPUSD";
  datetime Первый, Последний;
  int Период=PERIOD_H1;

  Последний = iTime(Символ, Период, 0);// Прежде всего узнаем дату и время последнего бара
 
if(boom){
   Alert("Последний бар на часовом  ",Последний);}
 
  
  MqlDateTime MqlПервый;              // Теперь получить начало суток, обнулив часы
  TimeToStruct(Последний,MqlПервый);  // Для этого преобразуем время последнего бара в структуру
  MqlПервый.hour=0;

  
  Первый=StructToTime(MqlПервый);            // Терерь надо обратно преобразовать во время
if(boom){
  Alert("Первый бар на часовом  ",Первый);}  // Смотрим начало первого бара суток
  
  int НомерПервого=iBarShift(Символ, PERIOD_H1,Первый);// По времени определим номер первого бара суток
if(boom){
   Alert("Первый бар на часовом под номером ",НомерПервого);}

// Можно было просто узнать время начала бара на D1

  // Теперь у нас есть НомерПервого бара, а номер послелнего = 0
  // Найдем на этом интервале номера баров, где макс и мин
  // iHighest и iLowest находят номер бара с макс и мин ценой
 int  БарМакс = iHighest(Символ,  // symbol = инструмента
                Период,           // timeframe = Период
                MODE_HIGH,        // Наибольшая цена бара
                НомерПервого+1,   // Количество баров
                0);               // Начальный бар

int  БарМин  = iLowest(Символ,Период,MODE_LOW,НомерПервого+1,0); // Наименьшая цена бара
                               
if(boom){
  Alert("Максимальный бар = ", БарМакс, "  Минимальный бар = ", БарМин);}
                                                                           

 
double max_price=iHigh(Символ, Период, БарМакс); // iHigh и iLow дают макс и мин цены указанного бара
double min_price=iLow (Символ, Период, БарМин);
   
    fishka(БарМакс,БарМин,max_price,min_price); // ф-ция
 if(boom){
   Alert("Максимум цены = ", max_price, "  Минимум цены = ", min_price);
 
   Alert("Угол = ", ObjectGetDouble(0,"Макс_Мин",OBJPROP_ANGLE));} // Теперь хорошо бы узнать угол               
}
 
STARIJ:

Si a las 4 de la mañana - no hay muchos bares todavía para hoy. En H4 sólo hay 6 barras en un día. tienes que establecer el número de barras a buscar o el número de cruces.

Distancias largas = tendencia

Intenté ejecutarlo como un script, funciona, pero si lo compilo como un EA, todas las líneas están cerca unas de otras y no entiendo cuál es el problema