[アーカイブ!】どんなルーキーの質問でも、フォーラムを散らかさないように。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 2. - ページ 316

 
granit77:
ウラジミールさん、コンピレーションを投稿されたのですから、この問題を扱われたのでしょう。
ある変数をターミナルからメモリ、Windows変数などを介して、つまりファイル経由でなく、ターミナルに転送する準備のできた簡単なバリエーションは見つかりましたか?
最後のバリエーションとして、ある端末のオンライン上に別の端末のClose[0]ラインを描画するインジケータがあります。ティックチャートで見ると、この比較は非常にわかりやすい。

ファイルマッピング

またはAtom

https://www.mql5.com/ru/forum/54467

https://www.mql5.com/ru/forum/100455

と FileMapping の例をMSDN で公開しています。

 
trave:
1台のパソコンでMT4端末間のデータ交換を最速で行う方法を教えてください。
図書館
 
drknn:

トレードをコピーする場合は、こちらのコピー機をご利用ください。データのやり取りだけなら、DLL
ありがとうございます。
素早く簡単に動作する解決策を見つけました:https://www.mql5.com/en/forum/127032
 
trave:
ありがとうございます。

素早いとは言えない。ファイルを通過します。ディスクに負担をかけることになる。

ファイルライブラリが 格段に良くなりました。

 
Zhunko:

素早いとは言えない。ファイルを通してです。ディスクを犯すのか

私のファイルライブラリは、ファイルを扱う のに適しています。

私が理解する限り、それはファイルを通してではなく、「名前付きチャネル」を介して送信されます。
 
#import "kernel32.dll".
int CreateNamedPipeA(string pipeName,int openMode,int pipeMode,int maxInstances,int outBufferSize,int inBufferSize,int defaultTimeOut,int security);
int PeekNamedPipe(int PipeHandle,int PassAsZero,int PassAsZero2,int PassAsZero3,int & BytesAvailable[], int PassAsZero4);
int CreateFileA(string Filename, int AccessMode, int ShareMode, int PassAsZero, int CreationMode, int FlagsAndAttributes, int AlsoPassAsZero);
int CloseHandle(int fileHandle);
int ReadFile(int FileHandle, int BufferPtr, int BufferLength, int & BytesRead[], int PassAsZero);
int MulDiv(string X, int N1, int N2);

#インポート

絶対にディスクを通さないでください。

 
trave:
私が理解した限りでは、転送は「名前付きチャネル」を経由し、ファイルを経由しない。

よく見てなかったんです。そうです、 CreateNamedPipe() です。

パソコン間のデータ転送には、この方法が適しています。でも、コンピュータの中でマッピングを使ったほうがいい。上記リンクをご参照ください。

また、MQL4のコード内でWinAPI関数を呼び出さない 方がよいでしょう。これは非常に遅く、信頼性に欠ける。

 
granit77:
ウラジミールさん、コンピレーションを投稿されたのですから、この問題を扱われたのでしょう。
ターミナルからターミナルへ、メモリやWindowsの変数などを介して、つまりファイルを介さずに、一つの変数を渡す簡単なバリエーションは見つかったのでしょうか?
最後のバリエーションとして、ある端末のオンライン上に別の端末のClose[0]ラインを描画するインジケータがあります。ティックチャートで見ると、この比較は非常にわかりやすい。


いいえ、そうではありません。そして今度は、ある端末から別の端末にデータを転送する、そんなExpert Advisorを自分で作らなければならない。

どこかで聞いたような気がするのですが、WinApiを使うことで

 
Roman.:

お幸せに...。:-)))

ありがとうございました。
 

助けて-状況は不条理なまでに悪化している !

double ticket,sl;
for (cnt = OrdersTotal() - 1; cnt >= 0; cnt--)

    {
    if (!OrderSelect(cnt,SELECT_BY_POS, MODE_TRADES)) continue;
      if (OrderSymbol() != symbol) continue;
      ticket=OrderTakeProfit();sl=OrderStopLoss();
    if (OrderType() == OP_BUY) 
      {
      if (ticket==NormalizeDouble(tpb,Digits)) continue;
      if (!OrderModify(OrderTicket(),OrderOpenPrice(),sl,tpb,0)) Print ("tpb: ",tpb,"  ", ticket-tpb);

      }
    if (OrderType() == OP_SELL) 
      {
      if (ticket==NormalizeDouble(tps,Digits)) continue;
      if (!OrderModify(OrderTicket(),OrderOpenPrice(),sl,tps,0)) Print ("tps: ",tps,"  ", ticket-tps);            

      }
    }

このコード片を実行すると、ログ全体がこのように溢れかえる。

14:56:01 xxyyzz GBPUSD,M5: loaded successfully
14:56:01 xxyyzz inputs: step=24; Step_coef=1; TP=10; mult=2; min_lot=0.05; lot_step=50; slippage=3;
14:56:02 2010.12.06 20:10  xxyyzz GBPUSD,M5: open #1 sell 0.05 GBPUSD at 1.5718 ok
14:56:02 2010.12.06 20:10  xxyyzz GBPUSD,M5: modify #1 sell 0.05 GBPUSD at 1.5718 sl: 0.0000 tp: 1.5708 ok
14:56:02 2010.12.06 22:27  xxyyzz GBPUSD,M5: open #2 buy 0.05 GBPUSD at 1.5713 ok
14:56:02 2010.12.06 22:27  xxyyzz GBPUSD,M5: modify #2 buy 0.05 GBPUSD at 1.5713 sl: 0.0000 tp: 1.5723 ok
14:56:02 2010.12.07 00:49  Tester: take profit #1 at 1.5708 (1.5705 / 1.5708)
14:56:02 2010.12.07 02:41  Tester: take profit #2 at 1.5723 (1.5723 / 1.5726)
14:56:03 2010.12.07 20:02  xxyyzz GBPUSD,M5: open #3 sell 0.05 GBPUSD at 1.5784 ok
14:56:03 2010.12.07 20:02  xxyyzz GBPUSD,M5: modify #3 sell 0.05 GBPUSD at 1.5784 sl: 0.0000 tp: 1.5774 ok
14:56:03 2010.12.07 20:17  Tester: take profit #3 at 1.5774 (1.5771 / 1.5774)
14:56:03 2010.12.07 21:11  xxyyzz GBPUSD,M5: open #4 buy 0.05 GBPUSD at 1.5763 ok
14:56:03 2010.12.07 21:11  xxyyzz GBPUSD,M5: modify #4 buy 0.05 GBPUSD at 1.5763 sl: 0.0000 tp: 1.5773 ok
14:56:03 2010.12.07 21:11  xxyyzz GBPUSD,M5: OrderModify error 1
14:56:03 2010.12.07 21:11  xxyyzz GBPUSD,M5: tpb: 1.5773  -0
14:56:03 2010.12.07 21:11  xxyyzz GBPUSD,M5: OrderModify error 1
14:56:03 2010.12.07 21:11  xxyyzz GBPUSD,M5: tpb: 1.5773  -0
14:56:03 2010.12.07 21:11  xxyyzz GBPUSD,M5: OrderModify error 1
14:56:03 2010.12.07 21:11  xxyyzz GBPUSD,M5: tpb: 1.5773  -0
14:56:03 2010.12.07 21:11  xxyyzz GBPUSD,M5: OrderModify error 1
14:56:03 2010.12.07 21:11  xxyyzz GBPUSD,M5: tpb: 1.5773  -0
........
........
14:56:05 2010.12.08 03:31  xxyyzz GBPUSD,M5: tpb: 1.5773  -0
14:56:05 2010.12.08 03:31  xxyyzz GBPUSD,M5: OrderModify error 1
14:56:05 2010.12.08 03:31  xxyyzz GBPUSD,M5: tpb: 1.5773  -0
14:56:05 2010.12.08 03:31  xxyyzz GBPUSD,M5: OrderModify error 1
14:56:05 2010.12.08 03:31  xxyyzz GBPUSD,M5: tpb: 1.5773  -0
14:56:05 2010.12.08 03:31  xxyyzz GBPUSD,M5: open #5 buy 0.10 GBPUSD at 1.5739 ok
14:56:05 2010.12.08 03:31  xxyyzz GBPUSD,M5: modify #5 buy 0.10 GBPUSD at 1.5739 sl: 0.0000 tp: 1.5773 ok
14:56:05 2010.12.08 03:31  xxyyzz GBPUSD,M5: OrderModify error 1
14:56:05 2010.12.08 03:31  xxyyzz GBPUSD,M5: tpb: 1.5773  -0
14:56:05 2010.12.08 03:31  xxyyzz GBPUSD,M5: modify #5 buy 0.10 GBPUSD at 1.5739 sl: 0.0000 tp: 1.5757 ok
14:56:05 2010.12.08 03:31  xxyyzz GBPUSD,M5: modify #4 buy 0.05 GBPUSD at 1.5763 sl: 0.0000 tp: 1.5757 ok
14:56:05 2010.12.08 03:31  xxyyzz GBPUSD,M5: OrderModify error 1
14:56:05 2010.12.08 03:31  xxyyzz GBPUSD,M5: tpb: 1.5757  0
14:56:05 2010.12.08 03:31  xxyyzz GBPUSD,M5: OrderModify error 1
........
........ 
14:56:05 2010.12.08 05:21  xxyyzz GBPUSD,M5: tpb: 1.5757  0
14:56:05 2010.12.08 05:21  xxyyzz GBPUSD,M5: OrderModify error 1
14:56:05 2010.12.08 05:21  xxyyzz GBPUSD,M5: tpb: 1.5757  0
14:56:05 2010.12.08 05:21  xxyyzz GBPUSD,M5: open #6 buy 0.20 GBPUSD at 1.5715 ok
14:56:05 2010.12.08 05:21  xxyyzz GBPUSD,M5: modify #6 buy 0.20 GBPUSD at 1.5715 sl: 0.0000 tp: 1.5757 ok
14:56:05 2010.12.08 05:21  xxyyzz GBPUSD,M5: OrderModify error 1
14:56:05 2010.12.08 05:21  xxyyzz GBPUSD,M5: tpb: 1.5757  0
14:56:05 2010.12.08 05:21  xxyyzz GBPUSD,M5: OrderModify error 1
14:56:05 2010.12.08 05:21  xxyyzz GBPUSD,M5: tpb: 1.5757  0
14:56:05 2010.12.08 05:21  xxyyzz GBPUSD,M5: modify #6 buy 0.20 GBPUSD at 1.5715 sl: 0.0000 tp: 1.5739 ok
14:56:05 2010.12.08 05:21  xxyyzz GBPUSD,M5: modify #5 buy 0.10 GBPUSD at 1.5739 sl: 0.0000 tp: 1.5739 ok
14:56:05 2010.12.08 05:21  xxyyzz GBPUSD,M5: modify #4 buy 0.05 GBPUSD at 1.5763 sl: 0.0000 tp: 1.5739 ok
14:56:05 2010.12.08 07:31  xxyyzz GBPUSD,M5: open #7 buy 0.40 GBPUSD at 1.5691 ok
14:56:05 2010.12.08 07:31  xxyyzz GBPUSD,M5: modify #7 buy 0.40 GBPUSD at 1.5691 sl: 0.0000 tp: 1.5739 ok
14:56:05 2010.12.08 07:31  xxyyzz GBPUSD,M5: modify #7 buy 0.40 GBPUSD at 1.5691 sl: 0.0000 tp: 1.5719 ok
14:56:05 2010.12.08 07:31  xxyyzz GBPUSD,M5: modify #6 buy 0.20 GBPUSD at 1.5715 sl: 0.0000 tp: 1.5719 ok
14:56:05 2010.12.08 07:31  xxyyzz GBPUSD,M5: modify #5 buy 0.10 GBPUSD at 1.5739 sl: 0.0000 tp: 1.5719 ok
14:56:05 2010.12.08 07:31  xxyyzz GBPUSD,M5: modify #4 buy 0.05 GBPUSD at 1.5763 sl: 0.0000 tp: 1.5719 ok
14:56:05 2010.12.08 07:31  xxyyzz GBPUSD,M5: OrderModify error 1
14:56:05 2010.12.08 07:31  xxyyzz GBPUSD,M5: tpb: 1.5719  0
14:56:05 2010.12.08 07:31  xxyyzz GBPUSD,M5: OrderModify error 1
14:56:05 2010.12.08 07:31  xxyyzz GBPUSD,M5: tpb: 1.5719  0
14:56:05 2010.12.08 07:31  xxyyzz GBPUSD,M5: OrderModify error 1
14:56:06 2010.12.08 09:11  Tester: take profit #4 at 1.5719 (1.5719 / 1.5722)
14:56:06 2010.12.08 09:11  Tester: take profit #5 at 1.5719 (1.5719 / 1.5722)
14:56:06 2010.12.08 09:11  Tester: take profit #6 at 1.5719 (1.5719 / 1.5722)
14:56:06 2010.12.08 09:11  Tester: take profit #7 at 1.5719 (1.5719 / 1.5722)
14:56:07 2010.12.08 20:10  xxyyzz GBPUSD,M5: open #8 buy 0.05 GBPUSD at 1.5796 ok
14:56:07 2010.12.08 20:10  xxyyzz GBPUSD,M5: modify #8 buy 0.05 GBPUSD at 1.5796 sl: 0.0000 tp: 1.5806 ok
14:56:07 2010.12.08 20:33  Tester: take profit #8 at 1.5806 (1.5806 / 1.5809)
14:56:07 2010.12.08 20:49  xxyyzz GBPUSD,M5: open #9 sell 0.05 GBPUSD at 1.5806 ok
14:56:07 2010.12.08 20:50  xxyyzz GBPUSD,M5: modify #9 sell 0.05 GBPUSD at 1.5806 sl: 0.0000 tp: 1.5796 ok
14:56:07 2010.12.08 20:50  xxyyzz GBPUSD,M5: OrderModify error 1
14:56:07 2010.12.08 20:50  xxyyzz GBPUSD,M5: tps: 1.5796  -0
14:56:07 2010.12.08 20:50  xxyyzz GBPUSD,M5: OrderModify error 1
14:56:07 2010.12.08 20:50  xxyyzz GBPUSD,M5: tps: 1.5796  -0
14:56:07 2010.12.08 20:50  xxyyzz GBPUSD,M5: OrderModify error 1
14:56:07 2010.12.08 20:50  xxyyzz GBPUSD,M5: tps: 1.5796  -0
14:56:07 2010.12.08 20:50  xxyyzz GBPUSD,M5: OrderModify error 1
........
........
14:56:07 2010.12.08 21:11  xxyyzz GBPUSD,M5: tps: 1.5796  -0
14:56:07 2010.12.08 21:11  Tester: take profit #9 at 1.5796 (1.5793 / 1.5796)
14:56:07 2010.12.08 21:30  xxyyzz GBPUSD,M5: open #10 buy 0.05 GBPUSD at 1.5795 ok
14:56:07 2010.12.08 21:30  xxyyzz GBPUSD,M5: modify #10 buy 0.05 GBPUSD at 1.5795 sl: 0.0000 tp: 1.5805 ok
14:56:07 2010.12.08 21:48  Tester: take profit #10 at 1.5805 (1.5805 / 1.5808)
14:56:07 2010.12.08 22:10  xxyyzz GBPUSD,M5: open #11 sell 0.05 GBPUSD at 1.5806 ok
14:56:07 2010.12.08 22:10  xxyyzz GBPUSD,M5: modify #11 sell 0.05 GBPUSD at 1.5806 sl: 0.0000 tp: 1.5796 ok
14:56:07 2010.12.08 22:10  xxyyzz GBPUSD,M5: OrderModify error 1
14:56:07 2010.12.08 22:10  xxyyzz GBPUSD,M5: tps: 1.5796  -0
14:56:07 2010.12.08 22:10  xxyyzz GBPUSD,M5: OrderModify error 1
14:56:07 2010.12.08 22:10  xxyyzz GBPUSD,M5: tps: 1.5796  -0
14:56:07 2010.12.08 22:10  xxyyzz GBPUSD,M5: OrderModify error 1
14:56:07 2010.12.08 22:10  xxyyzz GBPUSD,M5: tps: 1.5796  -0
14:56:07 2010.12.08 22:10  xxyyzz GBPUSD,M5: OrderModify error 1
14:56:07 2010.12.08 23:59  xxyyzz GBPUSD,M5: tps: 1.5796  -0
14:56:07 2010.12.08 23:59  Tester: order #11 is closed

TP値をtpb値またはtps値に等しく変更しようとするとエラー1のエラーが表示されますが、なぜコード内の行に

if (ticket==NormalizeDouble(tps,Digits)) continue;

ができるのか?

理由: