[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non potrei andare da nessuna parte senza di te - 2. - pagina 316

 
granit77:
Vladimir, visto che hai postato una compilation, devi aver affrontato questo problema.
Avete trovato una variante pronta e semplice per trasferire una variabile dal terminale al terminale tramite memoria, variabile di Windows, ecc.
Come variante finale, un indicatore che disegna la linea Close[0] da un altro terminale su un terminale online. Su un grafico a tick questo confronto sarebbe molto chiaro.

FileMapping

o Atomo

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

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

ed esempi di FileMapping su MSDN

 
trave:
Per favore, aiutatemi a impostare uno scambio di dati, nel modo più veloce, tra i terminali MT4 su un computer.
Biblioteca.
 
drknn:

Se volete copiare i mestieri, ecco il copiatore. Se volete solo scambiare dati, dovete fare una dll
Grazie.
Ho trovato una soluzione che funziona rapidamente e facilmente: https: //www.mql5.com/en/forum/127032
 
trave:
Grazie.
Ho trovato questa soluzione che funziona rapidamente e facilmente: https: //www.mql5.com/en/forum/127032Моя library

Non è veloce. Passa attraverso i file. Sarà una spina nel fianco per il disco.

La mia libreria di file è molto meglio.

 
Zhunko:

Non è veloce. È attraverso i file. Stai per violentare il disco.

La mia libreria di file è migliore per lavorare con i file.

Per quanto ho capito, trasmette attraverso un "canale nominato" e non attraverso i file
 
#importare "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(stringa X, int N1, int N2);

#importare

Sicuramente non attraverso il disco.

 
trave:
Per quanto ho capito, il trasferimento passa attraverso il "named channel" e non attraverso i file.

Non l'ho guardato attentamente. Eccolo: CreateNamedPipe().

Per trasferire dati tra computer, questa è una buona opzione. Ma è meglio usare la mappatura all'interno del computer. Vedi link sopra.

Inoltre è meglio non chiamare le funzioni WinAPI nel codice MQL4. Questo è molto lento e inaffidabile.

 
granit77:
Vladimir, visto che hai postato una compilation, devi aver affrontato questo problema.
Avete trovato una variante pronta e semplice per passare una variabile da terminale a terminale tramite memoria, variabile di Windows, ecc, cioè non tramite file?
Come variante finale, un indicatore che disegna la linea Close[0] da un altro terminale su un terminale online. Su un grafico a tick questo confronto sarebbe molto chiaro.


No, non l'ho fatto. E ora devo fare io stesso un tale Expert Advisor, che trasferisce i dati da un terminale all'altro.

Credo di aver sentito da qualche parte che si può usare WinApi

 
Roman.:

Buone vacanze a voi... :-)))

Grazie
 

Aiuto - la situazione è stata portata all'assurdo!!!

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

      }
    }

Quando si esegue questo pezzo di codice, l'intero registro è inondato da questo:

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

L'errore 1 appare quando si cerca di cambiare il valore TP uguale al valore tpb o tps, ma perché la linea nel codice

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

permette di fare questo ?????!!!!!!!!!