//--- входные параметры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;
}
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);
}
比如说像这样的叫法。
int bars;
bars=BarsAmountPassed(1365198000);
Print(__FUNCTION__+": Баров прошло с этого времени ",bars);
以下是使用该指标TrendToTrend_open的专家顾问的代码
下面的代码
问题--为什么我的专家顾问用收盘价 设置这个指标?
你好!
能否请你为我指出问题的答案方向?
我有一个EA,有两个策略,根据不同的原则进行交易。它有一个共同的立场作为最终结果。
稍后,我需要了解每个策略对仓位的贡献。那么,是哪个策略(或两个策略)开的仓。
我怎么做呢?
谢谢你!
你好!
请指出在哪里可以读到对我问题的回答。
我有一个EA,有两个策略,根据不同的原则进行交易。它有一个共同的立场作为最终结果。
稍后,我需要了解每个策略对仓位的贡献。那么,是哪个策略(或两个策略)开的仓。
我怎么做呢?
谢谢你!
如果EA有能力禁用其中一个策略,并且你可以在设置中改变这个神奇的数字。然后在账户上放两个EA,并在每个EA中禁用一个策略,并为头寸分配不同的魔法数字,然后在历史上追踪什么会带来更多的加减魔法数字。
谢谢你的答复。我通过静态变量,在策略仓位打开的情况下改变其值(在平仓和止损时,值也会改变)。一般来说,这样做很好,但我知道重启EA后,它将失去订单。
为什么钱不响了?
谢谢你,伙计...我会记住的。
我在地下室有电脑,....,挖矿的锅......让我们来做点什么。
我不明白为什么这个函数会返回0。
比如说像这样的叫法。
n写得正确,但返回0。我不明白为什么这个函数会返回0。
比如说像这样的叫法。
n写得正确,但返回0。