//--- входные параметры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を使用するExpert Advisorのコードは次の通りです。
下のコード
質問 - なぜExpert Advisorは終値で このインジケータを設定するのですか?
こんにちは。
私の質問に対する答えがどこに書いてあるか教えてください。
私は、異なる原則に基づいて取引を開始する2つの戦略を持つEAを持っています。最終的に共通の位置づけがあるのです。
もう少し後、各戦略がどのようにポジションに貢献したかを理解する必要があります。では、どの戦略(2つ)がポジションを開いたのか。
どうすればいいのか?
ありがとうございました。
こんにちは。
質問の答えの方向性を教えてください。
私は、異なる原則に基づいて取引を開始する2つの戦略を持つEAを持っています。最終的に共通の位置づけがあるのです。
もう少し後、各戦略がどのようにポジションに貢献したかを理解する必要があります。では、どの戦略(2つ)がポジションを開いたのか。
どうすればいいのでしょうか?
ありがとうございました。
EAにストラテジーの1つを無効化する機能があり、設定でマジックナンバーを変更できる場合。そして、2つのEAをアカウントに入れ、それぞれのストラテジーを無効にして、ポジションに異なるマジックナンバーを割り当て、マジックナンバーでより多くのプラスまたはマイナスを与えるものをヒストリーでトレースします。
返信ありがとうございました。ストラテジーのポジションが開いていると値が変わる静的変数を 作りました(クローズとストップロスでも値が変わる)。一般的にこれは問題なく動作しますが、EAを再起動すると注文が失われることは理解しています。
なぜお金が回らないのか?
ありがとう、覚えておくよ。
地下にコンピューターがある、......、ポットを採掘する......、何かしよう。
なぜ関数が0を返すのか理解できない。
例えばこんな呼び方。
nは正しく書き込みますが、0を返します。なぜ関数が0を返すのか理解できない。
例えばこんな呼び方。
nは正しく書き込みますが、0を返します。