Scorp1978>>: rid спасибо хорошая идея (от тиков придется тогда отказываться), фильтр от сильных убыточных движений ты имеешь ввиду "если сумарный профит меньше чего то, то закрыть все позиции".......
double CalculateAvarageSpread(string Symbol_1, string Symbol_2,
int Timeframe, int NBars, int NBarsSkip)
{
int k;
double N = 0;
double Sum = 0;
if(NBars > iBars(Symbol_1,Timeframe)) NBars=iBars(Symbol_1,Timeframe); // если н больше чем баров на графике то обрезаем
if(NBarsSkip >= NBars) NBarsSkip=0; // если пропускаем баров больше/равно чем NBars, то ничего не пропускаем
for(k = NBarsSkip; k < NBars; k++)
{
int symb2Shift = iBarShift(Symbol_2,Timeframe,iTime(Symbol_1,Timeframe,k),true);
if(symb2Shift != -1)
{
Sum += iClose(Symbol_1,Timeframe,k) - iClose(Symbol_2,Timeframe,symb2Shift);
N++;
}
}
double avarageSpread = Sum / N;
return(avarageSpread);
}
NBarsSkip は、計算に参加しないミスバーの数を設定します。 c NBarsSkip by NBars は計算に参加します。
double CalculateAvarageSpread(string Symbol_1, string Symbol_2,
int Timeframe, int NBars, int NBarsSkip)
{
int k;
double N = 0;
int NReal = 0;
double Sum = 0;
for(k = 0; k < iBars(Symbol_1,Timeframe); k++)
{
if(N == NBars)
break;
int symb2Shift = iBarShift(Symbol_2,Timeframe,iTime(Symbol_1,Timeframe,k),true);
if(symb2Shift != -1)
{
N++;
if(N>NBarsSkip)
{
Sum += iClose(Symbol_1,Timeframe,k) - iClose(Symbol_2,Timeframe,symb2Shift);
NReal++; // счетчик Н которые не пропущены и посчитаны
}
}
}
if(NReal==0) return(0); // так как у нас не получилось рассчитать ни одного бараelse
{
double avarageSpread = Sum / NReal;
return(avarageSpread);
}
}
rid спасибо хорошая идея (от тиков придется тогда отказываться), фильтр от сильных убыточных движений ты имеешь ввиду "если сумарный профит меньше чего то, то закрыть все позиции".......
いいえ、最初のエントリである「/if」のことです。
//最初のローソクの大きさが設定値より大きい場合、取引不可..."
//---------------------------------------
ある疑問が生じました。以下は、直近のNBarsの 商品間の平均スプレッドを出力する(計算する)関数です。
。
設定方法を教えてください //-------------
int k;
double N = 0; double Sum = 0;
for(k = 0; k < iBars(Symbol_1,Timeframe); k++)
{
if(N == NBars)
//------------------------
この関数は、すべてのNBarsのバーについてではなく、最後のバーを除くNBarsについて平均スプレッド値を返すようにすること。
つまり、最新のバーを計算から除外してほしいのです !あるいは、所定の数の直近のバーを計算に含めるべきではない。
これを「整理」する方法はあるのでしょうか?
その代わり、5月3日(月)のマーケットエントリーはしっかりあげられる)。その後の黒字決算の確率が高い!(笑)
すぐに応募の見込みを送ります。
もう1つ質問です。
ちょっと思いついたことがあるんです。
さらにシンプルにするのはどうだろう。
for(k = 0; k < iBars(Symbol_1,Timeframe); k++)
の代わりに
for(k =M; k < iBars(Symbol_1,Timeframe); k++),
ここで Mは 計算から除外されるバーの数です。
うまくいくかな?
。
関数名 "......, int NBarsSkip " から を移動させるまで。
をEAの外部パラメータに
extern int NBarsSkip =2
なぜエラーになったのかわかりません。
しかし、動かしてみると、すべてうまくいきました。
私はこのブランチを隅から隅まで読みました。いろいろな情報があって、まだ消化しきれていない。私の主な結論は、「ここを掘るしかない、その価値はある」というものです。追伸:臨機応変な良いスレッド、ほとんど浸水しない。2ridさん、ありがとうございました。
ありがとうございました。
"考える "ための情報
月曜日からZM-ZLスプレッド(小麦粉と油、5:6)
!