Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 112

 
¿Cómo obtengo los créditos o cómo los ingreso?
 

Aquí está el código del Asesor Experto que utiliza este indicador TrendToTrend_open

código siguiente

Pregunta - ¿Por qué mi Asesor Experto establece este indicador con un precio de cierre?

//--- входные параметры
input int LongTrend=14; // Период LongTrend
input int ShortTrend=7; // Период ShortTrend
input int EA_Magic=0;   // Magic Number советника
input double Lot=0.02; // Количество лотов
input double STR= 0.14;
input double TR= 0.1;
input double TP= 0.55;

//--- глобальные переменные

int TrendToTrend;
int TrendToTrendOpen;

//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
  {
  //--- достаточно ли количество баров для работы
   if(Bars(_Symbol,_Period)<60) // общее количество баров на графике меньше 60?
     {
      Alert("На графике меньше 60 баров, советник не будет работать!!");
      return(-1);
     }
TrendToTrend=iCustom(_Symbol,0,"TrendToTrend",LongTrend,ShortTrend);
TrendToTrendOpen=iCustom(_Symbol,0,"TrendToTrend_open",LongTrend,ShortTrend);

if(TrendToTrend<0||TrendToTrendOpen<0)
     {
      Alert("Ошибка при создании индикаторов - номер ошибки: ",GetLastError(),"!!");
      return(-1);
     } 
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- освобождаем хэндлы индикаторов
   IndicatorRelease(TrendToTrend);
   IndicatorRelease(TrendToTrendOpen);
   }
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
  {
   static datetime Old_Time;
   datetime New_Time[1];
   bool IsNewBar=false;

// копируем время текущего бара в элемент New_Time[0]
   int copied=CopyTime(_Symbol,_Period,0,1,New_Time);
   if(copied>0) // ok, успешно скопировано
     {
      if(Old_Time!=New_Time[0]) // если старое время не равно
        {
         IsNewBar=true;   // новый бар
         if(MQL5InfoInteger(MQL5_DEBUGGING)) Print("Новый бар",New_Time[0],"старый бар",Old_Time);
         Old_Time=New_Time[0];   // сохраняем время бара
        }
     }
   else
     {
      Alert("Ошибка копирования времени, номер ошибки =",GetLastError());
      ResetLastError();
      return;
     }
//--- советник должен проверять условия совершения новой торговой операции только при новом баре
   if(IsNewBar==false)
     {
      return;
     }
//--- Имеем ли мы достаточное количество баров на графике для работы
   int Mybars=Bars(_Symbol,_Period);
   if(Mybars<60) // если общее количество баров меньше 60
     {
     Alert("На графике менее 60 баров, советник работать не будет!!");
     return;
     }
return; 
}
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы - Документация по MQL5
 

¡Hola!


Por favor, indíqueme dónde puedo leer la respuesta a mi pregunta.

Tengo un EA con dos estrategias que abren operaciones en diferentes principios. El resultado final es una posición común.

Un poco más tarde, tengo que entender cómo ha contribuido cada estrategia a la posición. Entonces, qué estrategia (o dos) abrió la posición.

¿Cómo lo hago?


Gracias.

 
sanderz:

¡Hola!


¿Puede indicarme la respuesta a su pregunta?

Tengo un EA con dos estrategias que abren operaciones en diferentes principios. El resultado final es una posición común.

Un poco más tarde, tengo que entender cómo ha contribuido cada estrategia a la posición. Entonces, qué estrategia (o dos) abrió la posición.

¿Cómo lo hago?


Gracias.

Si su EA tiene la capacidad de desactivar una de las estrategias y puede cambiar el número mágico en la configuración. Entonces deberías añadir dos EAs en tu cuenta y desactivar una de las estrategias en cada uno de ellos y establecer diferentes números mágicos para las posiciones y luego usar los números mágicos en el historial para rastrear cuál da más ganancias o pérdidas.
 
Kino:
Si el EA tiene la capacidad de desactivar una de las estrategias y se puede cambiar el número mágico en la configuración. Entonces pon dos EAs en la cuenta y desactiva una de las estrategias en cada uno de ellos y asigna diferentes números mágicos para las posiciones, y luego rastrea en el historial lo que da más de más o de menos por los números mágicos.

Gracias por la respuesta. Hice a través de variables estáticas que cambian su valor si la posición de la estrategia está abierta (en el cierre y el stop loss los valores también cambian). En general esto funciona bien, pero entiendo que después de reiniciar el EA perderá sus órdenes.

Документация по MQL5: Основы языка / Переменные / Статические переменные
Документация по MQL5: Основы языка / Переменные / Статические переменные
  • www.mql5.com
Основы языка / Переменные / Статические переменные - Документация по MQL5
 
¿Por qué el dinero no hace tictac?
Archivos adjuntos:
965pp1ixr4.png  2000 kb
 
sneak:
¿Por qué el dinero no funciona?
La actualización del cálculo no es frecuente. Una vez al día quizás.
 

Gracias, amigo... lo tendré en cuenta.

Tengo ordenadores en el sótano, ...., minando las ollas... vamos a hacer algo.

 

No entiendo por qué la función devuelve 0:

int BarsAmountPassed(datetime open_time)
  {
   datetime time_array[];
   int n;
   Print("inpupt time=",TimeToString(open_time));
   CopyTime(_Symbol,_Period,open_time,TimeCurrent(),time_array);
   n=ArraySize(time_array);
   Print("number of elements in array=",n);
   return(n);
  }

Llamando así, por ejemplo:

int bars;
bars=BarsAmountPassed(1365198000);  
Print(__FUNCTION__+": Баров прошло с этого времени ",bars);
n escribe correctamente, pero devuelve 0.
 
tor4en:

No entiendo por qué la función devuelve 0:

Llamando así, por ejemplo:

n escribe correctamente, pero devuelve 0.
Es extraño, si cambio el tipo de la función a short o double, devuelve el valor calculado (resulta ser 4 en este ejemplo). Pero con int 0.
Razón de la queja: