//---Поиск последнего отработавшего ордера для открытия очередной позиции ---for (orderIndex = (OrdersHistoryTotal() - 1); orderIndex >= 0; orderIndex--)
{
if (!OrderSelect(orderIndex, SELECT_BY_POS, MODE_HISTORY))
{
Print("Ошибка при доступе к исторической базе (",GetLastError(),")");
continue;
}
if ((OrderSymbol() != Symbol()) || (OrderMagicNumber() != MagicNumber))
{
continue;
}
//-------------------------Принимаем в расчет только ордер, закрытый недавно-----------------------if(time<OrderCloseTime()) //(сравниваем его с хранящимся в пероеменной time)
{
time=OrderCloseTime(); //если время закрытия ордера больше - ложим его в переменнуюint lastType = OrderType();
double lastLots = OrderLots();
double lastProfit = OrderProfit() + OrderSwap();
.....
.....
.....
eddyは悪気はないと言っています。
全てを1つのファイルで行う理由の1つ→https://docs.mql4.com/ru/basis/variables/formal:
"参照 "でパラメータを渡すことが可能です。この場合、そのようなパラメータの変更は、参照渡しされる呼び出し側関数の対応する変数に影響します。配列の要素を参照渡しすることはできません。参照によるパラメータは、1つのモジュール内でのみ渡すことができ、ライブラリ関数では 不可能です。"
そう、それが問題なのかもしれない...。
パラメータが参照渡しの配列である関数がたくさんあります...
つまり、問題を回避するためにマルチファイルのプログラム構造を放棄しなければならないのですが、別の方法で解決できないのでしょうか?
皆さん、ここで質問です。
テスターでEAを動かしています。EAは履歴にアクセスすることができます。つまり、直近の、例えば20件の決済済み注文のうちの1件を探しているのです。
これは実際のEAではとても簡単なことで、注文が表示される履歴の期間を指定することができます。したがって、ラストオーダーは常に「上」である。しかし、テスターで取引数が増えれば増えるほど、より多くの注文が決済され、そのリストに目を通さなければならず、Expert Advisorの動作が遅くなる。
とにかく、この問題をどのように解決したのでしょうか?
現代のコンピュータは、1秒間に何億回もの演算を行う。
何回取引すれば、コンピュータの動作が遅くなるのでしょうか?
難しい」場合は、直近の月/半月分のみ注文検索を行う条件を指定することができます。
しかし、それは彼らの利益のためであり、彼らは問題を解決し、原因を探し始め、最終的にはそれらを根絶することを望んでいるのです。
eddy、正しいという概念は非常に主観的なものです))
ある集団が「これは一般的に認められている正しいことだ」と思えば、それがその集団のルールとなる。このフォーラムには、そんなグループがあります。
自分の 世界観があるのは大いに結構だが、それを議論して、さらに人を変えたり、再教育したりすることに時間を費やすのは、とても贅沢なことだ))。
アイデアの正しさについて議論することは資源の無駄遣いであり、私たちの問題は解決されません。
私は、あなたに 敬意を表し、あなたの 考えを理解した上で、プログラミングに戻ることを提案します)))
こんにちは =) 今、EAを書きました...条件はなく、GBPUSDとEURUSDで開くだけです。そのため、テスト時には、EURUSDに立った状態でGBPUSDの注文をクローズすることはありません。その逆も然り。設定できますか? それで、注文を開くと・・・。デモではできないが、テストはできない。
誰か教えてくれ...
あなたの「難しい」ケースでは、注文は最後の月/学期にしか再生されないという条件を導入することができます。
どのような条件ですか?
テスターで履歴をソートすることは不可能です。ラストオーダーは一番下まで届きます。履歴を全部スクロールしないとたどり着けません。
私が間違っているのでしょうか?
誰か教えてくれ...
MT4には多通貨ストラテジーテスターは ありません。
eddy、正しいという概念は非常に主観的なものです))
MT4には多通貨ストラテジーテスターはありません。
どこでテストできるか教えてください。 MT5で動作しますか?
条件とは?
テスターで履歴をソートすることは不可能です。ラストオーダーは一番下に落ちます。履歴をすべてスクロールしないとたどり着けません。
私が間違っているのでしょうか?
いいえ。ここでは、注文履歴 から最も新鮮なクローズドオーダーを 選択して、さらに作業を行う例を示します...