[Archive] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 2. - page 316

 
granit77:
Vladimir, puisque vous avez posté une compilation, vous devez avoir traité ce problème.
Avez-vous trouvé une variante simple et prête à l'emploi pour transférer une variable du terminal au terminal via la mémoire, la variable Windows, etc., c'est-à-dire pas via un fichier ?
Comme variante finale, un indicateur qui dessine la ligne Close[0] d'un autre terminal sur un terminal en ligne. Sur un graphique en tic-tac, cette comparaison apparaîtrait très clairement.

Mappage de fichiers

ou Atom

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

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

et des exemples de FileMapping sur MSDN

 
trave:
Veuillez m'aider à mettre en place un échange de données, de la manière la plus rapide, entre des terminaux MT4 sur un ordinateur.
Bibliothèque.
 
drknn:

Si vous voulez copier des transactions, voici le copieur. Si vous voulez simplement échanger des données, vous devez créer une dll.
Merci.
J'ai trouvé une solution qui fonctionne rapidement et facilement : https://www.mql5.com/en/forum/127032.
 
trave:
Merci.
J'ai trouvé cette solution qui fonctionne rapidement et facilement : https://www.mql5.com/en/forum/127032Моя library

Ce n'est pas rapide. Il passe par des fichiers. Ce sera une douleur dans le cul pour le disque.

Ma bibliothèque de fichiers est bien meilleure.

 
Zhunko:

Ce n'est pas rapide. C'est par le biais de fichiers. Tu vas violer le disque.

Ma bibliothèque de fichiers est une meilleure façon de travailler avec des fichiers.

D'après ce que j'ai compris, il transmet par un "canal nommé" et non par des fichiers.
 
#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

Certainement pas à travers le disque.

 
trave:
D'après ce que j'ai compris, le transfert passe par un "canal nommé" et non par des fichiers.

Je ne l'ai pas regardé attentivement. Le voilà : CreateNamedPipe().

Pour le transfert de données entre ordinateurs, c'est une bonne option. Mais il est préférable d'utiliser la cartographie à l'intérieur de l'ordinateur. Voir le lien ci-dessus.

Il est également préférable de ne pas appeler les fonctions WinAPI dans le code MQL4. Ce système est très lent et peu fiable.

 
granit77:
Vladimir, puisque vous avez posté une compilation, vous devez avoir traité ce problème.
Avez-vous trouvé une variante simple et prête à l'emploi pour passer une variable de terminal à terminal via la mémoire, une variable Windows, etc., c'est-à-dire pas via un fichier ?
Comme variante finale, un indicateur qui dessine la ligne Close[0] d'un autre terminal sur un terminal en ligne. Sur un graphique en tic-tac, cette comparaison apparaîtrait très clairement.


Non, je ne l'ai pas fait. Et maintenant, je dois créer moi-même un tel conseiller expert, qui transfère les données d'un terminal à l'autre.

Je pense avoir entendu quelque part que vous pouvez utiliser WinApi

 
Roman.:

Joyeuses fêtes à vous... :-)))

Merci.
 

Au secours - la situation a été poussée jusqu'à l'absurde ! !!

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

      }
    }

En exécutant ce bout de code, le journal entier est inondé de ceci :

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'erreur 1 apparaît lorsqu'on essaie de modifier la valeur TP égale à la valeur tpb ou tps, mais pourquoi la ligne dans le code

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

permet de le faire ? ????!!!!!!!!!