Aqui está o código para Expert Advisor que utiliza este indicador TrendToTrend_open
código abaixo
Pergunta - porque é que o meu Consultor Especialista define este indicador com um preço próximo?
//--- входные параметры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;
}
Pode, por favor, indicar-me a direcção da resposta à sua pergunta?
Tenho uma EA com duas estratégias que abrem comércios sobre princípios diferentes. Tem como resultado final uma posição comum.
Um pouco mais tarde, tenho de compreender como cada estratégia tem contribuído para a posição. Assim, qual a estratégia (ou duas) que abriu a posição.
Como é que o faço?
Obrigado!
Se a sua EA tem a capacidade de desactivar uma das estratégias e pode alterar o número mágico nas definições. Depois deve adicionar dois EAs na sua conta e desactivar uma das estratégias em cada um deles e definir números mágicos diferentes para as posições e depois usar números mágicos na história para rastrear qual deles dá mais lucro ou prejuízo.
Kino: Se a EA tiver a capacidade de desactivar uma das estratégias e o utilizador pode alterar o número mágico nas definições. Em seguida, colocar dois EAs na conta e desactivar uma das estratégias em cada um deles e atribuir diferentes números mágicos para as posições, e depois traçar na história o que dá mais ou menos por números mágicos.
Obrigado pela resposta. Fiz através de variáveis estáticas que alteram o seu valor se a posição da estratégia estiver aberta (ao fechar e parar a perda os valores também mudam). Em geral, isto funciona bem, mas compreendo que depois de reiniciar a EA perderá as suas ordens.
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);
}
Chamadas como esta, por exemplo:
int bars;
bars=BarsAmountPassed(1365198000);
Print(__FUNCTION__+": Баров прошло с этого времени ",bars);
Aqui está o código para Expert Advisor que utiliza este indicador TrendToTrend_open
código abaixo
Pergunta - porque é que o meu Consultor Especialista define este indicador com um preço próximo?
Olá!
Por favor, indiquem-me onde devo ler a resposta à minha pergunta.
Tenho uma EA com duas estratégias que abrem comércios sobre princípios diferentes. Tem como resultado final uma posição comum.
Um pouco mais tarde, tenho de compreender como cada estratégia tem contribuído para a posição. Assim, qual a estratégia (ou duas) que abriu a posição.
Como é que o faço?
Obrigado!
Olá!
Pode, por favor, indicar-me a direcção da resposta à sua pergunta?
Tenho uma EA com duas estratégias que abrem comércios sobre princípios diferentes. Tem como resultado final uma posição comum.
Um pouco mais tarde, tenho de compreender como cada estratégia tem contribuído para a posição. Assim, qual a estratégia (ou duas) que abriu a posição.
Como é que o faço?
Obrigado!
Se a EA tiver a capacidade de desactivar uma das estratégias e o utilizador pode alterar o número mágico nas definições. Em seguida, colocar dois EAs na conta e desactivar uma das estratégias em cada um deles e atribuir diferentes números mágicos para as posições, e depois traçar na história o que dá mais ou menos por números mágicos.
Obrigado pela resposta. Fiz através de variáveis estáticas que alteram o seu valor se a posição da estratégia estiver aberta (ao fechar e parar a perda os valores também mudam). Em geral, isto funciona bem, mas compreendo que depois de reiniciar a EA perderá as suas ordens.
Porque é que o dinheiro não está a fazer tic-tac?
obrigado, amigo... vou ter isso em mente.
Tenho computadores na cave, ...., a explorar as panelas... vamos fazer alguma coisa.
Não percebo porque é que a função retorna 0:
Chamadas como esta, por exemplo:
n escreve correctamente, mas devolve 0.Não percebo porque é que a função retorna 0:
Chamando-lhe assim, por exemplo:
n escreve correctamente, mas devolve 0.