[Архив!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 2. - страница 316

 
granit77:
Владимир, раз ты выложил подборку, то видимо занимался этим вопросом.
Не встречал готового простенького варианта передачи одной переменной из терминала в терминал через память, переменную Windows, и пр., то есть, не через файл?
Как конечный вариант, индикатор, который на одном терминале онлайн рисует линию Close[0] с другого терминала. На тиковом графике это сравнение смотрелось бы очень наглядно.

FileMapping

или Atom

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

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

и примеры FileMapping на MSDN

 
trave:
Помогите пожалуста наладить обмен данными, самым быстрым способом, между терминалами МТ4, на одном компе.
Библиотека.
 
drknn:

Если нужо копирование сделок, то вот копировщик. Если просто обмен даными, то нужно делать dll-ку
Спасибо.
Нашел вот такое решение работает просто и быстро : https://www.mql5.com/en/forum/127032
 
trave:
Спасибо.
Нашел вот такое решение работает просто и быстро : https://www.mql5.com/en/forum/127032Моя библиотека

Это не быстро. Там через файлы. Диск насиловать будете.

Моя библиотека для работы файлами получше будет.

 
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);

#import

Однозначно - не через диск.

 
trave:
Насколько я понял там передача идёт через "именованный канал" а не через файлы

Невнимательно посмотрел. Там это есть: CreateNamedPipe().

Для передачи данных между компами это хороший вариант. Но внутри компа лучше маппинг использовать. Ссылка выше.

Ещё лучше не вызывать функции WinAPI в коде MQL4. Это очень медлено и не надёжно.

 
granit77:
Владимир, раз ты выложил подборку, то видимо занимался этим вопросом.
Не встречал готового простенького варианта передачи одной переменной из терминала в терминал через память, переменную Windows, и пр., то есть, не через файл?
Как конечный вариант, индикатор, который на одном терминале онлайн рисует линию Close[0] с другого терминала. На тиковом графике это сравнение смотрелось бы очень наглядно.


Нет не встречал. И сейчас мне придётся делать ещё и самому подобного советника, передающего данные из одного терминала в другой.

Вроде тут где-то проскакивала инфа, что можно воспользоваться 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

Ошибка error 1 появляется при попытке изменения значения ТР равного значению tpb или tps, но почему строка в коде

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

позволяет это делать ?????!!!!!!!!!

Причина обращения: