[ARCHIVE !] Toute question de débutant, pour ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 4. - page 171

 
bestfx:
Bonjour à tous. Aidez-moi, s'il vous plaît.

L'essentiel est le suivant : Il existe un robot qui place automatiquement les ordres en attente, à un certain prix. ...
double main_price=1.251;
double price_to_byu=1.253;
double price_to_sell=1.249;
// --------
bool restriction=false;
if (Ask<=main_price)
if (OrdersTotal()>0)
{  for (int i=OrdersTotal()-1; i>=0; i--)
   {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      if (OrderSymbol()!=Symbol()) continue;
      if (OrderType()==OP_BUY || OrderType()==OP_BUYSTOP)
      {  if (OrderOpenPrice()==price_to_byu) restriction=true;
}  }  }
if (restriction==false)
{  OrderSend(NULL,OP_BUYSTOP,Lot,price_to_byu, ...);
   return(0);
}
// --------
restriction=false;
if (Bid>=main_price)
if (OrdersTotal()>0)
{  for (int i=OrdersTotal()-1; i>=0; i--)
   {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      if (OrderSymbol()!=Symbol()) continue;
      if (OrderType()==OP_SELL || OrderType()==OP_SELLSTOP)
      {  if (OrderOpenPrice()==price_to_sell) restriction=true;
}  }  }
if (restriction==false)
{  OrderSend(NULL,OP_SELLSTOP,Lot,price_to_sell, ...);
   return(0);
}

Si vous passez beaucoup de commandes similaires, vous devez utiliser des tableaux. Comment ? Lisez sur les tableaux.

 
Lisi4ka330:
à partir du 1er juin, les versions inférieures à 416 build
ne sont pas prises en charge.

Natasha, est-ce qu'ils ne sont plus supportés par votre ordinateur ? )

Mettez 409 en parallèle de votre terminal principal, dans un dossier proche, déposez-y tout l'historique dont vous avez besoin et testez autant que vous le pouvez, vous n'avez pas besoin d'une connexion au serveur pour cela. Si vous avez utilisé les scripts de Birt, vous êtes probablement hors ligne de toute façon.

 
FAQ:
Diviser le prix par les chiffres = le réduire à un nombre entier et l'écrire dans un medjic, puis rechercher le medjic dans le tableau des ordres ouverts avant de passer un nouvel ordre.

Ça n'a aucun sens.
 
paladin80:
Si vous passez beaucoup de commandes similaires, vous devez utiliser des tableaux. Comment ? Lisez sur les tableaux.

C'est le troisième jour que je lis. :=( C'est plus facile en php, mais je ne comprends pas ici.
 
Lisi4ka330 09.06.2012 20:33
Oui, j'ai essayé mais rien ne marche((((

Alors on peut le faire d'une manière différente.

Il fonctionnera à la fois sur MT4 et MT5.

1. Téléchargez tous les ticks (vous savez d'où) et écrivez-les sur un serveur comme MS SQL server, car le volume de données est énorme.

2. Ecrire une DLL pour MT4 et MT5 pour coopérer avec le serveur SQL.

Dans MT4, vous vérifiez le drapeau IsTesting ( ) et si c'est le cas, au lieu des valeurs de cotation, vous remplacez les données de la base de données (le prix en temps inverse) et c'est tout, rien de compliqué.

P.S. Cette variante est meilleure car elle fonctionnera pour tous les builds et sur les deux MTs que celle que vous avez utilisée en modifiant le code machine du programme.

 
bestfx:

C'est des conneries.


Dans votre cas, vous devez vérifier avant l'ouverture s'il n'y a pas d'ordres déjà fixés avec ce prix. Si vous voulez comparer les prix, vous devez vous souvenir de la normalisation et du glissement.

Dans ce cas, la comparaison standard de deux entiers sera appliquée (rapide).


Si vous passez un grand nombre de commandes similaires, nous devrions utiliser des tableaux. Comment ? Lisez sur les tableaux.


OrdersTotal() et OrdersHistoryTotal() sont tous deux des tableaux.

 
pusheax:

Alors on peut le faire d'une manière différente.

Il fonctionnera à la fois sur MT4 et MT5.

1. Téléchargez tous les ticks (vous savez d'où) et écrivez-les sur un serveur comme MS SQL server, car le volume de données est énorme.

2. Ecrire une DLL pour MT4 et MT5 pour coopérer avec le serveur SQL.

Lorsque MT4 vérifie le drapeau IsTesting( ) et, s'il s'agit d'un test, vous remplacez les valeurs de cotation par des données provenant de la base de données (le prix inverse du temps).

P.S. Cette variante est meilleure, car elle fonctionnera pour n'importe quel build et sur les deux MT, que celle que vous avez utilisée avec la modification du code machine du programme.

Cela ne fonctionnera pas car la transaction ne sera pas effectuée en utilisant les cotations de la base de données, elle dira que le prix est incorrect. Il est alors plus facile d'écrire votre propre testeur.

Ne confondez pas la fille, je viens de tester l'EA sur le 409 build avec l'ancien script, tout fonctionne très bien.

 
alsu:

Cela ne fonctionnera pas, car vous ne pouvez pas conclure une transaction en utilisant les cotations de la base de données, le système vous dira que le prix est erroné. Il serait plus facile d'écrire votre propre testeur.

Ne confondez pas la fille, je viens de tester l'Expert Advisor sur le 409 build avec un ancien script, tout fonctionne bien.


Je l'ai compris plus tard. J'ai essayé de créer quelque chose de similaire, mais je n'ai jamais réussi à construire des ticks, mais ils sont prêts maintenant.

Je ne peux pas vraiment le faire sans modifier le code machine.

J'ai écrit cette idée afin de discuter, et non de confondre, car j'ai vraiment aimé l'idée et je vais la réaliser moi-même.

 
pusheax:

J'ai compris ça plus tard. C'est juste que j'ai moi-même essayé de faire quelque chose de similaire avant, mais je n'ai pas pu assembler les tics, et ici ils sont prêts.

En effet, sans modification du code machine, il semble que cela ne fonctionnera pas.

J'ai écrit cette idée pour discuter, mais pas pour confondre, parce que j'ai aimé l'idée et que je la ferai moi-même.

Si vous ne savez pas quoi en faire, vous avez peut-être raison, je vais commencer à y travailler moi-même).

ps et aussi avec de vrais ticks, blackjack et putes

 
bestfx:

Je lis depuis trois jours maintenant. :=( C'est plus facile en php, mais je n'arrive pas à le comprendre ici.
Je suis d'accord avec le modérateur, il est préférable de marquer les ordres/positions que de comparer les prix ouverts. En plus du numéro magique, vous pouvez utiliser la vérification des commentaires. Vous pouvez écrire le prix d'ouverture dans le commentaire (par exemple "EURUSD 1,251").