Marché boursier. Les actions. Vitesse d'exécution des ordres de bourse. - page 8

 
Replikant_mih #:

Ne peut pas quoi ?) La meilleure offre - 10.1, je lance une limite pour acheter à 11, collecter toute la coupe à 11 si le volume dans la coupe à 11 n'est pas suffisant pour exécuter la demande entière, ou s'arrêter quelque part au milieu. S'il est nécessaire qu'elle soit exactement remplie, eh bien, faites un plus grand slam et c'est tout. Si je voulais que mon ordre soit exécuté avec précision, je devrais augmenter le prix maximum et fixer un prix quelque part devant, si je voulais que mon ordre soit exécuté avec précision. En général, si je balaie tout le verre à une grande profondeur - pour moi, c'est plutôt un signal que je fais quelque chose de mal))).


CIO - Eh bien, vous exécutez tout ce qui se trouve sur le chemin, puis vous enlevez le reste. Autant pour le CIO). Je ne fais pas de commerce d'arbitrage, peut-être que je ne comprends pas certaines spécificités étroites. Si vous voulez manger toutes les demandes jusqu'à un certain niveau - eh bien, vous pouvez regarder quel volume est là, et jeter à Rosno ce beaucoup, si vous n'êtes pas satisfait avec variante de retrait de reste. En bref, la tâche n'est pas claire pour moi).

J'ai déjà parlé, qu'ainsi je fais dans Quick

procedure TExpert.SellBuySpot;
var
  outStr, id: string;
  res: long;
  ErrCode: long;
  ErrSize: Dword;
  ErrStr: LPSTR;
  Dt: TDateTime;
begin
  FOrder:= 0;
  FTransID:= GetTransID();
  id:= IntToStr(TransID);
  case BuySell of
    1: outStr:= 'ACCOUNT=' + ExpData.SpotAccaunt + '; CLIENT_CODE=' +
               ExpData.Client + '; TYPE=L; TRANS_ID=' + id + '; CLASSCODE=' +
               ExpData.SpotData.ClassCode + '; SECCODE=' + ExpData.SpotData.SecCode +
               '; ACTION=NEW_ORDER; OPERATION=B' + '; PRICE=' +
               FloatToStr(ExpData.SpotData.SellPrice + 10 * ExpData.SpotData.Step) +
               '; QUANTITY=' + FloatToStr(aVol) + ';';
    2: outStr:= 'ACCOUNT=' + ExpData.SpotAccaunt + '; CLIENT_CODE=' +
               ExpData.Client + '; TYPE=L; TRANS_ID=' + id + '; CLASSCODE=' +
               ExpData.SpotData.ClassCode + '; SECCODE=' + ExpData.SpotData.SecCode +
               '; ACTION=NEW_ORDER; OPERATION=S' + '; PRICE=' +
               FloatToStr(ExpData.SpotData.BuyPrice - 10 * ExpData.SpotData.Step) +
               '; QUANTITY=' + FloatToStr(aVol) + ';';
  end;
  ErrCode:= 0;
  ErrSize:= 0;
  ErrStr:= nil;
  res:= T2QSendASyncTrans(LPSTR(AnsiString(outStr)), ErrCode, ErrStr, ErrSize);
  if(res <> TRANS2QUIK_SUCCESS) then
  begin
    FTransID:= 0;
    FTransBusy:= false;
  end else
  begin
    Dt:= now();
    FMemo.Lines.Add(DateToStr(Dt) + ' ' + FormatDateTime('hh:mm:ss.zzz', Now()) +
                              ' --> Ордер ' + ExpData.SpotData.SecCode + ' отправлен.');
  end;
end;

Mais parfois (cela arrive rarement) l'ordre reste dans le verre, donc

Il faut l'enlever, en mettre un nouveau et le regarder à nouveau - tout cela prend trop de temps.

De plus, il se peut qu'elle se ferme avant que vous ne puissiez l'enlever !

C'est pourquoi le plus fiable est le CIO, mais il n'est pas sur place.

En arbitrage, tout est très simple, si vous avez acheté 100 unités d'une jambe, alors vous devez immédiatement vendre 100 unités d'une autre jambe (le mot clé IMMÉDIATEMENT).

Le défi consiste donc à effectuer une contre-opération aussi rapidement que possible au bon prix et au bon volume.

Ajouté par

Dans MT-5, tout est beaucoup plus simple, plus rapide et il existe des options.

Par exemple, il n'y a aucun problème à parcourir le jeu SPOT et à ne pas prendre le meilleur prix en une seule fois, après avoir calculé le volume total du prix sélectionné + les (meilleurs) prix précédents.

C'est pourquoi je m'inquiétais de la vitesse d'exécution des ordres de transaction sur le Stock dans MT-5.

Mais tout de même, il n'y a aucune garantie que le marché change radicalement, et si vous prenez le prix trop à cœur, vous pouvez sortir de la situation d'arbitrage !

Dans Quick, la vitesse de transaction sur SPOT était de 240 à 490 ms, avec un ping de 3-4 ms !

Sur FORTS, au même ping, la transaction passe de 4.5 à 12 ms.

Malheureusement, en raison de la faible liquidité des Forts, vous devez d'abord vendre les contrats à terme.

 
prostotrader #:

J'ai déjà dit que c'est ce que je fais à Quick.

Mais parfois (c'est rare mais ça arrive) l'ordre reste dans le verre, donc

Je dois donc l'enlever, en mettre un nouveau et le regarder à nouveau - tout cela prend trop de temps.

De plus, il se peut qu'elle se ferme avant que vous ne puissiez l'enlever !

C'est pourquoi le plus fiable est le CIO, mais il n'est pas sur place.

En arbitrage, tout est très simple, si vous avez acheté 100 unités d'une jambe, alors vous devez immédiatement vendre 100 unités d'une autre jambe (le mot clé IMMÉDIATEMENT).

Le défi consiste donc à effectuer une contre-opération aussi rapidement que possible au bon prix et au bon volume.

Ajouté par

Dans MT-5, tout est beaucoup plus simple, plus rapide et il existe des options.

Par exemple, il n'y a aucun problème à parcourir le jeu SPOT et à ne pas prendre le meilleur prix en une seule fois, après avoir calculé le volume total du prix sélectionné + les (meilleurs) prix précédents.

C'est pourquoi je m'inquiétais de la vitesse d'exécution des ordres de transaction sur le Stock dans MT-5.

Mais tout de même, il n'y a aucune garantie que le marché change radicalement, et si vous prenez le prix trop à cœur, vous pouvez sortir de la situation d'arbitrage !

Dans Quick, la vitesse de transaction sur SPOT était de 240 à 490 ms, avec un ping de 3-4 ms !

Sur FORTS, au même ping, la transaction passe de 4.5 à 12 ms.

Malheureusement, en raison de la faible liquidité des forts, vous devez d'abord vendre les contrats à terme.


Je l'ai.
Est-il réel d'arbitrer une action contre un contrat à terme sur mt5-Quik ? Ou bien ai-je besoin d'une composante "intellectuelle" pour rivaliser avec mes camarades plus rapides ?

 
Replikant_mih #:


Je l'ai.
Est-il réaliste d'arbitrer l'action contre les futures à la vitesse de mt5-Quik ? Ou bien ai-je besoin d'un élément "intellectuel" pour rivaliser avec des camarades plus rapides ?

Si seulement Classic, alors Quick est suffisant, et si, comme je veux essayer, scalping, alors j'ai besoin au moins MT-5 (2 terminaux)

 
prostotrader #:

Si seulement Classic, alors Quick est suffisant, et si, comme je veux essayer, scalping, alors j'ai besoin au moins MT-5 (2 terminaux)

2 parce que le courtier ne permet pas de négocier des actions et des contrats à terme dans un seul terminal (comme dans Otkritie) ou parce que tout fonctionne dans la connexion de vos terminaux et qu'il n'y aura pas besoin de changer quoi que ce soit ? Juste mt5-mt5 au lieu de mt5-Quik.

 
Replikant_mih #:

2 parce que le courtier ne vous permet pas de négocier à la fois des actions et des contrats à terme dans un seul terminal (comme Otkritie) ou parce que tout fonctionne dans votre connexion au terminal et que vous n'aurez donc rien à refaire ? Ce sera juste mt5-mt5 au lieu de mt5-Quik.

Non, c'est seulement rapide maintenant, j'ai commencé à écrire mt5 - mt5

Ajouté par

Eh bien, voilà, c'est écrit.

Maintenant, il n'est pas clair quand il sera possible de tester...


 
prostotrader #:

Non, maintenant seulement Quick, j'ai commencé à écrire MT5 - MT5

Ajouté par

Eh bien, voilà, je l'ai écrit.

Maintenant, on ne sait pas quand il sera possible de le tester...


Félicitations !

Et comment planifiez-vous - pour chaque paire de futures spot votre EA ou un EA pour toutes les paires ?

 
Andrey Miguzov #:

Félicitations !

Comment prévoyez-vous - pour chaque paire de futures spot, un EA différent ou un EA pour toutes les paires ?

Mon propre ensemble client-serveur pour chaque paire

Pourquoi se casser la tête à suivre tous les futures et SPOTs à partir d'un seul EA ?

L'EA est essentiellement un seul (client), le serveur n'est qu'un exécutant - une béquille pour acheter des SPOTs :)

Ajouté

Conseiller - le client envoie (reçoit) automatiquement au (du) serveur toutes les données nécessaires.

Peu importe la paire, le conseiller s'adapte automatiquement à la paire de futurespot.

 
prostotrader #:

Pourquoi se casser la tête à suivre tous les futures et SPOTs à partir d'un seul EA.

Honnêtement, j'ai été grandement inspiré par vos captures d'écran de mon compte personnel chez Otkritie et je suis toujours en train de déboguer l'Expert Advisor pour le trading de futures-stocks (pas le scalping, mais les classiques en mode frontal).

L'approche logique consiste à entrer sur la paire avec un profit plus important avant l'expiration (en tenant compte de la commission et du nombre réel de contrats).

Par conséquent, nous devons analyser toutes les paires réelles. Si l'on définit un EA pour chaque paire - ils fonctionneront indépendamment l'un de l'autre.

Le mal de tête est bien présent, surtout lorsqu'on ferme des positions sur une paire et qu'on passe à une autre. De plus, je pense qu'il ralentira quand il y aura beaucoup de paires.


ZZZ : Vu la valeur actuelle des taux, dans un avenir proche, la rentabilité d'une telle stratégie sera encore plus grande, si la bourse est ouverte bien sûr :)

Je vois dans la vidéo + que vous avez vous-même écrit que vous écrivez pour le scalping. La moyenne d'entrée et de sortie est-elle la moyenne de l'EMA (lien) ou une autre moyenne (si ce n'est pas un secret) ?

 
Andrey Miguzov #:

La moyenne des entrées et des sorties est-elle la moyenne de l'EMA (lien) ou faites-vous la moyenne d'une autre manière (si ce n'est pas un secret) ?

Il n'y a pas de secret, je calcule simplement la moyenne à chaque fois que j'accède à la fonction

exp_data.midle_enter = exp_data.midle_enter * exp_data.m_ent_cnt;
  exp_data.m_ent_cnt++;
  exp_data.midle_enter = (exp_data.midle_enter + result)/exp_data.m_ent_cnt; 

exp_data.midle_exit = exp_data.midle_exit * exp_data.m_exit_cnt;
  exp_data.m_exit_cnt++;
  exp_data.midle_exit = (exp_data.midle_exit + result)/exp_data.m_exit_cnt;

Ces données sont nécessaires pour comprendre le niveau de prix de cette paire.

 
prostotrader #:

Il n'y a pas de secret, je calcule simplement la moyenne à chaque fois que la fonction est appelée.

J'ai besoin de ces données pour comprendre le niveau de prix d'une paire donnée.

Je vois, si en termes d'ondulation, c'estla SMA. Mais plus on s'éloigne du début du calcul, plus la valeur moyenne s'éloigne de la valeur actuelle.

En gros, cette méthode de calcul de la moyenne n'"oublie" pas les anciennes valeurs, car exp_data.m_ent_cnt augmente de plus en plus à chaque appel et chaque nouvelle valeur a de moins en moins d'effet sur le résultat final.

D'après mes observations, la valeur moyenne varie au cours de la journée et est assez sensible.

En théorie, l'EMA devrait être plus adapté au scalping, le code sera approximativement le suivant :

double EMA_period = 100.0; //Период ЕМА для усреднения, тиков
double SmoothFactor = 2.0/(1.0+EMA_period);
 
if (EMA_ask<0) EMA_ask=ask; //первый тик
   else
  EMA_ask=ask*SmoothFactor+EMA_ask*(1.0-SmoothFactor);