Spread trading dans Meta Trader - page 142

 

Amis ! !!! J'ai décidé de me donner un autre coup de pouce et d'écrire un EA basé sur les ordres limités et je serai heureux de toute aide. J'ai déjà ouvert des ordres Limit basés sur les fonctions de Kim. J'essaie actuellement d'obtenir la moyenne et les écarts basés sur les statistiques des ticks(https://www.mql5.com/ru/forum/125272)(car je pense qu'ils sont plus fiables) pour les positions ouvertes. Nous devrons implémenter un module pour déplacer les ordres limites derrière le prix et un module pour fermer les positions lorsque le profit atteint un certain point.

 
Scorp1978 >>:

...... Надо будет реализовать модуль передвижки лимит ордера за ценой и модуль закрытия позиций при достижения профита определенного.

Voici le code pour déplacer les commandes. La bière est pour vous !

extern bool    Modify =True;
extern int     DistanceSet=14;//в пунктах
//-----------------------------------

if (Modify == true) {//если выключатель модификации включен
//если есть отложенный ордер и нет откр. одноименных позиций и
// расстояние от текущей цены превышает величину DistanceSet - модернизируем
// - т.е. подтягиваем к текущей цене
if(NumberOfOrders(NULL,OP_BUYLIMIT,Magic)>0 &&  NumberOfPositions(NULL,OP_BUY,Magic)<1){
  if( ExistOPNearMarket(NULL,OP_BUYLIMIT,Magic,DistanceSet)==0 ) { 
    for (int isl_= OrdersTotal()-1; isl_>=0; isl_-- )                  {
    if(OrderSelect(isl_,SELECT_BY_POS,MODE_TRADES))                 {
     if(OrderSymbol()==Symbol() )                                   {
      if(OrderType()==OP_BUYLIMIT && OrderMagicNumber()==Magic)      { 
      double pAsk=Ask-DistanceSet*Point;            
      if (sl!=0) double ldStop=pAsk-sl*Point;
      if (tp!=0) double ldTake=pAsk+tp*Point;         
     OrderModify(OrderTicket(), pAsk,ldStop,ldTake, 0, DarkGreen);
      Print("Modify OP_BUYLIMIT ");  Sleep(500);  RefreshRates(); }
      }}}}}
if(NumberOfOrders(NULL,OP_SELLLIMIT,Magic)>0 && NumberOfPositions(NULL,OP_SELL,Magic)<1){      
  if( ExistOPNearMarket(NULL,OP_SELLLIMIT,Magic,DistanceSet)==0 ) { 
   for (int isl= OrdersTotal()-1; isl>=0; isl-- )                  {
    if(OrderSelect(isl,SELECT_BY_POS,MODE_TRADES))                 {
     if(OrderSymbol()==Symbol() )                                   {
      if(OrderType()==OP_SELLLIMIT && OrderMagicNumber()==Magic)      { 
       double pBid=Bid+DistanceSet*Point;  
       if (sl!=0) double ldStop_=pBid+sl*Point;
       if (tp!=0) double ldTake_=pBid-tp*Point; 
     OrderModify(OrderTicket(), Bid+DistanceSet*Point,ldStop_,ldTake_, 0, DarkGreen);
      Print("Modify OP_SELLLIMIT");  Sleep(500);  RefreshRates(); }
      }}}}}            
}//выключатель модификации 
Où, - Function ExistOPNearMarket() -
//Cette fonction renvoie un indicateur de l'existence d'un ordre ou d'une position près du marché.
//(à une distance spécifiée en pips du marché). Une sélection plus précise des ordres ou des positions à vérifier
Les ordres ou les positions à //vérifier sont fixés par des paramètres externes :
//sy - Nom de l'instrument. Si ce paramètre est défini, la fonction vérifiera
vérifie les //ordres ou positions de seulement le symbole spécifié. "" ou NULL signifie
// symbole actuel.
//op - Opération commerciale, type d'ordre ou de position. Valeurs valables : OP_BUY,
// OP_SELL, OP_BUYLIMIT, OP_SELLLIMIT, OP_BUYSTOP, OP_SELLSTOP ou -1.
//La valeur par défaut de -1 signifie toute opération commerciale.
//mn - Identifiant de l'ordre ou de la position (MagicNumber). Valeur par défaut -1
// - tout identifiant.
//ds - Distance du marché en pips. La valeur par défaut est de 1000000.
//+----------------------------------------------------------------------------+
//| Автор : Ким Игорь                                                                |
//+----------------------------------------------------------------------------+
//| Версия : 19.02.2008 |
//| Описание : Возвращает флаг существования позиции или ордера около рынка |
//+----------------------------------------------------------------------------+
//| Параметры: |
//| sy - наименование инструмента ("" или NULL - текущий символ) |
//| op - торговая операция ( -1 - любая операция) |
//| mn - MagicNumber ( -1 - любой магик) |
//| ds - расстояние в пунктах от рынка ( 1000000 - по умолчанию) |
//+----------------------------------------------------------------------------+
bool ExistOPNearMarket(string sy="", int op=-1, int mn=-1, int ds=1000000) {
  int i, k=OrdersTotal(), ot;
  if (sy=="" || sy=="0") sy=Symbol();
  double p=MarketInfo(sy, MODE_POINT);
  if (p==0) if (StringFind(sy, "JPY")<0) p=0.0001; else p=0.01;
  for (i=0; i<k; i++) {
  if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
  ot=OrderType();
  if ((OrderSymbol()==sy) && (op<0 || ot==op)) {
  if (mn<0 || OrderMagicNumber()==mn) {
  if (ot==OP_BUY || ot==OP_BUYLIMIT || ot==OP_BUYSTOP) {
  if (MathAbs(MarketInfo(sy, MODE_ASK)-OrderOpenPrice())<ds*p) return(True);
  }
  if (ot==OP_SELL || ot==OP_SELLLIMIT || ot==OP_SELLSTOP) {
  if (MathAbs(OrderOpenPrice()-MarketInfo(sy, MODE_BID))<ds*p) return(True);
  }}}}} return(False); }

Et la fonction NumberOfOrders() -
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 28.11.2006                                                     |
//|  Описание : Возвращает количество ордеров.                                 |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любой ордер)                    |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
int NumberOfOrders(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal(), ko=0, ot;

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      ot=OrderType();
      if (ot>1 && ot<6) {
        if ((OrderSymbol()==sy || sy=="") && (op<0 || ot==op)) {
          if (mn<0 || OrderMagicNumber()==mn) ko++;
        }}}}  return(ko);}                        
 
rid


merci beaucoup, crunch m'a donné la fonction pour calculer la moyenne des ticks avec n'importe quelle période je lui ai promis une bière aussi, je vais devoir remplir une caisse d'un coup :)))) j'aimerais ne pas être trop ivre de joie moi-même !!!!!

 
J'ai reçu une lettre aujourd'hui dans le courrier B de mt4.
//-----------------------------
"Chers clients, veuillez noter qu'à partir du 14 avril 2010, l'action correspondant à la clause 1.3.6. de l'annexe, Accord BT-08 , prendra effet.
1.3.6 Fixation du bilan.
1.3.6.1 Le processus de fixation de la balance commerciale est effectué sur une base quotidienne, avant le processus d'accumulation des swaps.
Cette procédure consiste à calculer automatiquement le résultat financier de toutes les transactions effectuées et à le comparer au solde actuel du compte de trading. S'il y a un écart, le solde du compte de négociation sera corrigé du montant de l'écart.
À partir de ce moment, la procédure de fixation de l'équilibre sera effectuée sur une base quotidienne.
En casde divergences dans le résultat financier du compte de trading après cette procédure, vous pouvez contacter le service d'assistance technique ....."
//------------------------------------------------
Je ne comprends pas ce que c'est ?
Quelle est la différence entre les montants ? D'où vient-elle en théorie ?
De quoi parlons-nous ici ?
И - ".... le solde du compte de négociation sera ajusté" - comment ?

 

J'ai peur de me tromper, mais la clause 1.3.6.1 de l'accord BT-08 donne à l'entreprise une autre occasion de grignoter des clients.
D'où peuvent théoriquement provenir les divergences ?
Il y a deux possibilités.
La première est que si vos ordres ont été exécutés à des prix hors marché (vous savez, les pics et autres échecs) - la société décidera du sort de ces ordres et déterminera ce qu'est un "prix hors marché". Mais cela n'arrive pas très souvent et n'est pas si grave.
La deuxième option est plus importante pour le trader. Imaginons qu'au moment du fixing, l'entreprise élargisse les écarts de négociation. Cela signifie que sur toutes vos positions ouvertes, le bénéfice total diminuera, et cette différence sera déduite du solde. Cette procédure sera effectuée par la société à la fin de chaque journée de négociation, et ce sera comme un échange caché... Aucun diable, aucun diable ne peut empêcher la compagnie de faire ça... c'est l'hôtesse du CFD...

Bien sûr, tout le monde aimerait croire en l'intégrité de l'entreprise et qu'elle ne trichera pas comme ça... le temps nous le dira..., mais il faut bien trouver quelque part des fonds pour des litiges à l'étranger et des avocats coûteux....

 
GEFEL >>:

.....
Второй вариант более важен для трейдера. Представим себе, что на момент фиксинга, компания будет раздвигать торговые спреды. Это значит, что по всем Вашим открытым позициям суммарный профит будет уменьшаться, и эта разница будет списываться с баланса... Такую процедуру компания будет проводить в конце каждого торгового дня, - и это будет похоже на скрытое свопирование........

Je pense à .....
Les spreads s'élargissent assez fortement chaque jour à la clôture quotidienne de la session (pour les instruments pour lesquels il y a une pause entre les sessions quotidiennes, c'est-à-dire presque toutes les matières premières et les contrats à terme - pour notre méthodologie de négociation).
Ce n'est pas très clair. Dans cette situation, les capitaux propres (fonds) diminueraient temporairement, mais pas le solde.
Les postes restent ouverts et le solde ne peut en aucun cas être modifié.
Et si cet écart "élargi" (lors de l'ouverture d'une nouvelle session) est radié du bilan, c'est difficilement compréhensible.
Je dois sauvegarder un DECLARATION DETAILLEE chaque soir, et la comparer scrupuleusement avec un "nouveau bilan" le matin ...
Apparemment, oui.

 
Un ami a posé la question au support technique.
Vous obtiendrez une réponse.
http://www.procapital.ru/showthread.php?p=649145#post649145
 
rid писал(а) >>
Une connaissance a posé la question au support technique.
Vous obtiendrez une réponse.
>> http://www.procapital.ru/showthread.php?p=649145#post649145


J'ai également lu la réponse du support technique et je comprends que rien ne se passera (avec un peu de chance).

 

Solde = fonds + bénéfices totaux sur les positions ouvertes...

 

Et cette phrase dans la réponse, surlignée en rouge, ne vous dérange pas .... Encore une fois, les métiers fermés ne seront pas affectés par cette mesure, tous leurs chiffres resteront tels quels. Seul le solde final du compte est vérifié.
Bien sûr, personne n'allait réparer les positions déjà fermées. Ce serait un cambriolage. Mais ils pourraient entrer dans des endroits ouverts...
Je n'ai pas de réel en B... et je m'en fiche un peu, mais vous conseillez vraiment d'organiser un rapprochement de la balance du soir et du matin....