if ((Opb==0) && (MA_1_t > MA_2_t + Rastvor*Point)) // Если разница между
{ // ..МА 1 и 2 большая
Opn_B=true; // Критерий откр. Buy
Cls_S=true; // Критерий закр. Sell
Opb++; // Открытие только одного ордера
Ops=0;
if (VKO1>=Ask) {VP=VP*Koff;} // При прибыли предыдущего умножать на коэф.if (VKO1<Ask) {VP=VP*Koff1;} // При убытке предыдущего умножать на коэф1.
}
if ((Ops==0) && (MA_1_t < MA_2_t - Rastvor*Point)) // Если разница между
{ // ..МА 1 и 2 большая
Opn_S=true; // Критерий откр. Sell
Cls_B=true; // Критерий закр. Buy
Ops++; // Открытие только одного ордера
Opb=0;
if (VKO0<=Bid) {VP=VP*Koff;} // При прибыли предыдущего умножать на коэфif (VKO0>Bid) {VP=VP*Koff1;} // При убытке предыдущего умножать на коэф1
}
oDin48さん、突然オーダーが開いて、どこかでエラーが滑ってしまうということはありませんか? そうすると、オーダーが開いてVolが増えるということはないでしょうか?
以前、他の言語でプログラミングをしたときに、同じような状況が発生したことがあるので、思いつきで言っています。
メッセージウィンドウにエラー番号を表示させてみて、その内容を確認する
gogent、取引条件を書くまではすべてうまくいっていたというか、他は問題なかったのですが、これらがおかしいというか......。というわけで、「注文開始」のコードではないと思うのですが...。注文のオープンは周期的ではなく、シグナルが消えたときに1つずつオープンする...。...ということは、Volに関連する条件か、VPに関連する条件か...です。同じことを別の言葉で書き直そうとしているのですが、どうなることやら......。
追加されました。
副社長についてです。以下のコードの何かが間違っている...。一方のMAが他方より高くなるたびに実行されると理解しているのですが...。ながら追加条件がうまくいっていないのでは?なぜ?Opn_B, Cls_B, Opn_S, Cls_Sのように、正常に動作し、毎ティックで 作成されるわけではなく、VPはどこかで無限大になる...。
profit=lot*points*TICK_VALUE。
ありがとうございました。=)
すみません、もう一つ質問があります。テイクプロフィットで 注文をロックする簡単な方法はありますか?
例えば、3つの注文があり、そのうちの1つがクローズしたとします。どのようにクローズしたことを通知し、その利益(または損失)を得ることができるでしょうか?
w ersocでは、毎ティック(つまりstart()で)注文がTPでクローズしたかどうかをチェックします。ちなみにEAの動作は全てログに登録されています(テスト時のみか...) 。
もちろん、テストは重要ですが...。
結局は、以前閉じた利益が必ず出てしまう...。この問題のロジックは、テイクプロフィットが トリガーされたときだけ、何とかフラグを立てようというものです。