//+----------------------------------------------------------------------------+// Уровень безубытка по символу для N последних позиций, начиная с предпоследнейdouble LevelPreWLforNpos(int op, int mn1, int mn2, int num) {
double lots=0;
double sum=0;
int n=0;
int mass[1][2];
ArrayInitialize(mass,0);
for (int i=0; i<OrdersTotal(); i++) {
if (OrderSelect(i,SELECT_BY_POS)) {
if (OrderSymbol()!=sy) continue;
if (OrderType()!=op) continue;
if (OrderMagicNumber()==mn1 || (OrderMagicNumber()==mn2 || OrderMagicNumber()<0)) {
n++;
if (n>ArrayRange(mass,0)) ArrayResize(mass, n);
mass[n-1][0]=OrderOpenTime();
mass[n-1][1]=OrderTicket();
}
}
}
ArraySort(mass,WHOLE_ARRAY,0,MODE_DESCEND);
if (ArrayRange(mass,0)>num+1) ArrayResize(mass,num+1);
for (i=1; i<ArrayRange(mass,0); i++) {
if (OrderSelect(mass[i][1],SELECT_BY_TICKET)) {
if (OrderCloseTime()==0) {
if (OrderType()==OP_BUY) {
lots+=OrderLots();
sum+=OrderLots()*OrderOpenPrice();
}
if (OrderType()==OP_SELL) {
lots-=OrderLots();
sum-=OrderLots()*OrderOpenPrice();
}
}
}
}
double price=0;
if (lots!=0) price=sum/lots;
return(NormalizeDouble(price,dg));
}
//+----------------------------------------------------------------------------+
false trueということであれば、正確に1つの注文を開くことが可能なのかが理解できません。
すでに存在する場合は、開かないでください。
もし、このタイプのポジションが市場になければ、開設してください。
さて、このチェックと一緒に、他の条件も確認することができます。例:すでにそのようなポジションがあっても、オープンしてから所定の時間が経過すれば、別のポジションをオープンすることができる...。等々
EAが注文のグリッドを開く方法を教えてください。最高値と最安値の注文を決定する関数を書きました。しかし、私は最安値または最高値で2番目の順序についての詳細情報が必要です。ここでは一般的に2番目と最後ではありません。関数を教えてください。 。
すべての注文を循環させ、2次元配列に格納する。配列の1次元目にオーダーが設定された時刻を、2次元目にそのチケットを記録する。配列を日付の降順(1次元)で並べ替える。配列の 1次元目の要素には、最後から2番目の注文の設置日、2次元目には、必要な注文のチケットが格納されます。このチケットで注文を選択し...好きなように使っていただいて結構です。
あるカスタムEAで、最後のポジションのN番目の量に対するブレークイーブンを計算する関数を書いたことがあります。計算は、最後から何番目かのポジションから行う必要があります。どのように実装されているかを見て、何かを得ることができるかもしれません。
false trueということであれば、一度に1つだけ注文を開けるというのは無理があると思います。
ええ、そういうことです。チュートリアルはこちらから ご覧ください。あなたが書いているように、いくつかのより多くの条件を持っているでしょう: "注意質問!)そして、それは(sig1)のために一度開くようにする方法それはそうかもしれませんsig1 - オープンBAY、次のコマンド、sig0 - 入場。 trall(重要ではない)、再び次のコマンド、sig1 - オープン第二BAY" - それは多くの時間ではありませんか?必要ないように思えるのですが.一般的には、フラッグで遊ぶ。
そうです、彼らのことです。チュートリアルはこちらから ご覧ください。あなたが書いているように、いくつかのより多くの条件を持っているでしょう: "注意の質問!)そして、それはそうsig1 - オープンBAY、次のコマンド、sig0 - アドミットオンかもしれませんが、(sig1)のために一度開くようにする方法。 トロール(それは問題ではない)、再び次のコマンド、sig1 - オープン第二BAY」 - それは何度もないのですか?必要ないように思えるのですが.一般的には、フラッグで遊ぶ。
キムI.V.にふさわしい機能がたまたまあったのでしょうか?プログラムを乱雑にしないために。1 秒で「1000個開ける」のだから、ゆったりと注文を開けてほしい。
テスト後にテスト結果(トランザクション)をファイルに書き出したい
deinit()ブロックにtofile()関数を置いた(作業終了後に書き込む)。
が動作しない場合、ヘッダのみを記録します。が、関数自体は