初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 383

 
Vitalie Postolache:

外付けでない場合は、PositionCloseが あります

また、同じ数量のポジションを反対方向に建てることも可能で、その場合はクローズとなります。

そのような機能はないのですか?
 
Tapochun:

OnTick関数にbool型のローカル変数buyExist = falseとsellExist = falseを設定します。

新しいティックが来たら、このEAに属する注文があるかどうかをチェックします。売り注文があればsellExist = true、買い注文でも同じ。そして、buyExist = true であれば、買い注文を出さないことを確認します。セルも同様です。以上です。

ポジションが空いて いるかどうかを確認するために、不必要な変数が必要なのでしょうか?

買いポジションがあるかどうか確認したところ、買いポジションがないため、1つオープンしました。なぜ変数が必要なのか?

 
Artyom Trishkin:

オープンポジション をチェックするのであれば、なぜ余分な変数が必要なのですか?

買いをチェックし、買いが入っていない場合は1つ、売りをチェックし、売りが入っていない場合は1つ、開ける。なぜ変数が必要なのか?

こうすればいいんです。私の頭の中では、フラグが参照渡しされる別のチェック機能として提示したに過ぎません。この場合、私のバリアントは1つの機能、すなわち注文をチェックすることだけを行い、チェックとオープンを行うことはありません。延長もしやすいと思います。つまり、1機能1アクション。
 
Artyom Trishkin:

オープンポジション をチェックするのであれば、なぜ余分な変数が必要なのですか?

買いをチェックし、買いが入っていない場合は1つ、売りをチェックし、売りが入っていない場合は1つ、開ける。なぜ変数が必要なのか?

OrderTotalと似たようなものかと。
 
le0nid2014:
OrderTotalのようなものかと思いましたが、ここではリバウンドを行い、オーダーを認識する関数を書かなければならないのですね。
ブルートフォース(力技)でなく、どうやったらできるのか?一度に多くのシンボルに対して、多くのExpert Advisorから多くの注文がある場合があります。Expert Advisorは、自分自身の注文だけを処理したいのですよね?
 
Tapochun:
それができるんですね。私の頭の中では、フラグが参照渡しで、別のチェック機能として想像していたのですが。この場合、私のバリアントは1つの機能しか実行しません - 注文をチェックするのであって、チェックとオープンをするのではありません。延長もしやすいと思います。つまり、1機能1アクション。

まあ、チェックはフラグを返す関数呼び出し なんだけどね。

if(!Function_check_open_position(symbol, OP_BUY,magic))function_open_position(symbol,OP_BUY,Lots,stop_loss,take_profit,magic,comment);
if(!Function_check_open_position(symbol,OP_SELL,magic))。Function_open_position(symbol,OP_SELL,Lots,stop_loss,take_profit,magic,comment);

 
le0nid2014:
OrderTotalのようなものかと思いました。
もちろん、シンボル、タイプ、マジシャンで成行注文を検索し、true - yes, false - no という検索結果を返す必要があります。
 
new-rena:
そのような機能はないのですか?
そうですね、「インクルードなし」と言ったのは私の間違いで、その関数はTrade.mqhインクルードの中だけです。
 
Tapochun:
どうしたら頑張りすぎずにできるのか?あなたは、同時にシンボルの山でExpert Advisorの山から注文の山を持っているかもしれません。そして、EAには自分の注文だけを処理させたいのでしょう?

メインロボットへの初期投入です。メインロボットは常に両方向に2つのオープンオーダーを持っています(メインロボットはそれらを拾いますが、メインロボット自体は起動できません.メインロボットが1つの方向を終えるとそれを閉じます)そして、このEAは注文のない市場の方向で再び注文を開く必要があります。

あとは注文の開始条件を追加するだけです。


extern double Lots = 1.00;

extern int MagicNumb = 698541; //マジック


int start ()

{


if(OrdersTotal()== 0 && ********** )

OrderSend("USDCHF",OP_BUY,Lots,Ask,0,0,0, "5891",MagicNumb,0,Red).を送信します。


if (OrdersTotal() == 0 && ***********)

OrderSend("USDCHF",OP_SELL,Lots,Bid,0,0,0, "58892",MagicNumb,0,Red)を実行します。


}

 
le0nid2014:
メインロボットへの初期投入です。メインロボットは常に両方向に2つのオープンオーダーを持っています(メインロボットはそれらを拾いますが、メインロボット自体は起動できません.メインロボットが1つの方向を終えるとそれを閉じます)そして、このEAは注文のない市場の方向で再び注文を開く必要があります。
2つのEAには同じウィザードがあるはずです。1つのシンボルに対して、異なるチャートで発売されるはずです。もちろん一般的には、別のEAを作るより、メインのEAを改良する方が簡単です。
理由: