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

 
C-4:

もう一度(よく読んでください)。

MetaTrader4では、注文を閉じるために注文を送信し、その実行を待ち、次の注文に移るというように、順次注文を閉じることしかできません。このため、MetaTrader4では、注文の一括決済にかかる時間は相当なものであり、些細なことでは短縮できません。しかし、複数のExpert Advisorを自分のチャートにアップロードして、相互に情報を交換したり、共通のコマンドで注文をクローズできるようにすることができます。各エキスパートは、そのシンボルでのみ注文をクローズします。MetaTrader4では、複数の取引スレッドが存在するため、互いにブロックして注文を送信することはないでしょう。しかし、そのような専門家の集まりの組織は複雑であり、あなたの知識レベルから判断して、そのようなことは勧められないと思います。

それでもまだ書きすぎだと思われる方は、ここで簡単にまとめておきましょう。

1.ご質問の答えは「いいえ」です。Expert Advisorからスクリプトを実行することはできません。

2.MetaTrader4では、複雑な方法を用いなければ、取引注文の執行速度を向上させることはできません。

ご質問の内容を正常に解決するには、OrderSendAsync関数しかありませんが、これはMetaTrader4には存在しません。

詳細なご回答をいただき、誠にありがとうございましたもしよろしければ、そのようなアイデアに対するご意見をお聞かせください。

Expert Advisorに2つのパラメータを追加し、注文をソートするために合計利益ですべての注文をクローズします。
(1パラメータ - 1-降順または2-昇順と2-0-売りと買い、1-売り注文、2-買い注文のマグで並べ替え)
同じペアの1口座1共同チャートで4端末を開き、ティックが一致するように、1-1, 1-2, 2-1, 2-2のように異なるパラメータを設定します。
最小のマジシャン売り、最小のマジシャン買い、最大のマジシャン売り、最大のマジシャン買いの4つのフローに分割されます。

それとも、私がまたバカなのか?そうそう、私の知識レベルについては、おっしゃるとおりです

 
Novikov:

詳細なご返答、誠にありがとうございました差し支えなければ、このアイデアに対するご意見をお聞かせください。

全注文をトータルプロフィットでクローズするExpert Advisorに、注文をソートするための2つのパラメータを追加する。
(1パラメータ - 1-降順または2-昇順と2-0-売りと買い、1-売り注文、2-買い注文のマグで並べ替え)
同じペアの1口座1共同チャートで4端末を開き、ティックが一致するように、1-1, 1-2, 2-1, 2-2のように異なるパラメータを設定します。
最小のマジシャン売り、最小のマジシャン買い、最大のマジシャン売り、最大のマジシャン買いの4つのフローに分割されます。

それとも、私がまたバカなのか?そうそう、私の知識レベルについては、おっしゃるとおりです

はい、そのようにすることができます。しかし、複数の端末を動かす必要はない。1つのターミナルを実行すると、4つのウィンドウが表示されます。各窓に1台ずつロボットを設置する。このロボットのパラメータとして、数字を使用します。1-4.つまり、パラメータ1のロボットを1番目のウィンドウに、パラメータ2のロボットを2番目のウィンドウに、というように割り当てるのです。注文をクローズする時間になると、各ロボットは選択した注文の マジックナンバーとパラメータのマジックナンバーを比較して、注文をクローズします。他のMajickを持つ注文は、他のExpert Advisorにクローズさせることができます。
 
C-4:
そう、私たちにはこれができるのです。しかし、複数の端末を動かす必要はない。1つの端末を起動する必要があり、4つのウィンドウを持つ。各窓に1台ずつロボットを 設置する。このロボットのパラメータとして、数字を使用します。1-4.つまり、パラメータ1のロボットを1番目のウィンドウに、パラメータ2のロボットを2番目のウィンドウに、というように割り当てるのです。注文をクローズする時間になると、各ロボットは選択した注文の マジックナンバーとパラメータのマジックナンバーを比較して、注文をクローズします。他のMajickを持つ注文は、他のExpert Advisorにクローズさせることができます。

mt5のフォーラムで、当初、ご指摘のように4つのウィンドウを検討したところ、あるプログラマーから「ターミナルは1つだ」という回答がありました。つまり、サーバーにアクセスするための「穴」は1つだけ、つまり1リクエスト分の大きさの小さな「穴」が端末にあり、それを端末で動いているすべてのEAやスクリプトが使っている、ということです。1つのリクエストが処理されるまで、誰もサーバーにアクセスすることはできません。

では、1端子4チャートと4端子では、どちらが真実味があり良いのでしょうか?

 
Novikov:

mt5のフォーラムで、当初、ご指摘のように4つのウィンドウを検討したところ、あるプログラマーから「ターミナルは1つだ」という回答がありました。つまり、サーバーにアクセスするための「穴」は1つだけ、つまり1リクエスト分の大きさの小さな「穴」が端末にあり、それを端末で動作しているすべてのEAやスクリプトが利用しているということです。あるリクエストが処理されない限り、他の誰もサーバーにアクセスすることはできない。

では、1端末4チャートと4端末のどちらが正しくて良いのでしょうか?

この「プログラマー」の答えを自分で考えてみてください。そうであれば、1つの端末で複数のExpert Advisorを使った取引は不可能になります。彼らは常にコンテキストビジー、つまりお互いをブロックしてしまうのです。以前のMT4のソシャゲでは確かにそのようなエラーがあり、遭遇することもありましたが、現在、私の知る限りでは、もう関係ないということで削除されているくらいです。MT4における注文実行のマルチスレッド化は大幅に拡張され、以前から存在していた。

いずれにせよ、私のアドバイスに従うべきですし、何か問題があれば、いくつかのEAを別の端末に移動させるのは簡単でしょう。

 
Novikov:

mt5のフォーラムで、当初、ご指摘のように4つのウィンドウを検討したところ、あるプログラマーから「ターミナルは1つだ」という回答がありました。つまり、サーバーにアクセスするための「穴」は1つだけ、つまり1リクエスト分の大きさの小さな「穴」が端末にあり、それを端末で動いているすべてのEAやスクリプトが使っている、ということです。1つのリクエストが処理されるまで、誰もサーバーにアクセスすることはできません。

では、1端子4チャートと4端子では、どちらが真実味があり良いのでしょうか?

そんな「プログラマー」はどこにいるのでしょうか?
 

親愛なる、もう一つの質問:OrderCloseBy関数は、大規模な注文スタックの閉鎖をスピードアップするのに役立ちますか?

例:一定の利益が出たら、買い注文と売り注文のロットが同じになるようにもう1つ注文を出し、「重複した注文を閉じる」を実行する。

見積もりは5桁です。

 

この質問は組織的なものかもしれませんが、アドバイスをお願いします。インジケーターのコードをお見せすることはできません。有能に書かれていて、すべてが事前にテストされている。

ここから質問開始:https://www.mql5.com/ru/forum/6343/page323

MQのウェブサイトから端末をインストール。デフォルトでAlpのデモサーバが提供されていました。結局、ユーロバックスでテストを実行することになりました。

私の理解では、ポンドドルのデータ待ちということです。どこも取引は始まっていない。

次に、ポンドバックスで実行すると、こうなります。

USDJPYの保留データ。

 

また、USDJPYで実行した場合のみ、データの待ち時間がなく、それでも取引は開始されません。

コード内でトレードを開くペアを明示的に指定していない、つまり、例えば

任意のシンボル_Symbolに対して全て。しかも、オープニング・オーダーの問題ではなく・・・。その理由は何でしょうか?ありがとうございます。

 for(int i=0;i<10;i++)
     {
      volume=NormalizeDouble(volume,1);
      if(volume<=0) break;
      if(Type==POSITION_TYPE_SELL)
        {
         request.type=ORDER_TYPE_SELL;
         request.price=SymbolInfoDouble(_Symbol,SYMBOL_BID);
         if(TP!=0) takeprofit = request.price-TP*_Point;
         if(SL!=0) stoploss = request.price+SL*_Point;
        }
      if(Type==POSITION_TYPE_BUY)
        {
         request.type=ORDER_TYPE_BUY;
         request.price=SymbolInfoDouble(_Symbol,SYMBOL_ASK);
         if(TP!=0) takeprofit = request.price+TP*_Point;
         if(SL!=0) stoploss = request.price-SL*_Point;
        }
      request.action = TRADE_ACTION_DEAL;
      request.symbol = _Symbol;
      request.volume = MathMin(volume,SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MAX));
      request.sl = stoploss;
      request.tp = takeprofit;
      request.deviation=SymbolInfoInteger(_Symbol,SYMBOL_SPREAD);
      request.type_filling=ORDER_FILLING_FOK;
      request.comment=" ";//DoubleToString(Money,2)+"$";
      if(!OrderCheck(request,check))
        {
         if(check.margin_level<100) volume-=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP);
 

この指標では、各機器に重みをつけているため、一種のクラスター分析になっています。テスターで動作させようとしない。その理由は何でしょうか。ありがとうございました。

そして、エージェントは問題なく動作し、すべて充電され、準備万端です...。


 
R0MAN:

この指標では、各機器に重みをつけているため、一種のクラスター分析になっています。テスターで動作させようとしない。その理由は何でしょうか。ありがとうございました。

そして、エージェントは問題なく動作し、すべて充電され、準備万端です...。


servicedeskに書き込む。コードは教えてもらわなければならないが。
理由: