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?
//--- входные параметрыinputint LongTrend=14; // Период LongTrendinputint ShortTrend=7; // Период ShortTrendinputint EA_Magic=0; // Magic Number советникаinputdouble Lot=0.02; // Количество лотовinputdouble STR= 0.14;
inputdouble TR= 0.1;
inputdouble TP= 0.55;
//--- глобальные переменныеint TrendToTrend;
int TrendToTrendOpen;
//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit()
{
//--- достаточно ли количество баров для работы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 |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
//--- освобождаем хэндлы индикаторовIndicatorRelease(TrendToTrend);
IndicatorRelease(TrendToTrendOpen);
}
//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+voidOnTick()
{
staticdatetime 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;
}
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.
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);
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?
¡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.
¡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 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.
¿Por qué el dinero no funciona?
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:
Llamando así, por ejemplo:
n escribe correctamente, pero devuelve 0.No entiendo por qué la función devuelve 0:
Llamando así, por ejemplo:
n escribe correctamente, pero devuelve 0.