Spread trading dans Meta Trader - page 166

 
hrenfx:
Malheureusement, je ne peux pas me connecter (pour vérifier) au serveur Broco, il n'y a pas de connexion en ce moment pour une raison quelconque.

La connexion a été établie. Cela se produit sur leurs serveurs de démonstration.
 

Voici à quoi ressemble le tableau d'écarts :

Il semble que vous ayez une erreur dans vos calculs.

 

Vous pourriez probablement prendre les devises EURUSD et EURGBP.

Et pour l'indice du dollar dans l'indicateur de spread, introduisez une correction dimensionnelle en quelque sorte.

 

Il existe deux méthodes :

  1. Restez attaché aux pipsollars.
  2. Cessez de vous attacher à eux.

Pour l'analyse des graphiques d'écarts, la deuxième méthode est la plus précise.

Apportez le code responsable du calcul du triple écart. Nous allons chercher l'erreur ensemble.

 

Il ne s'agit pas d'une erreur. Les spreads des instruments connexes du même marché (par exemple, le soja ZS-ZM-ZL) sont rendus parfaitement dans toutes les combinaisons.

Mais bien sûr - regardez le code. Probablement, nous trouverons effectivement une erreur à cet endroit.

Voici le code du dessin étalé :

Lesens des positions est fixé ici par le signe à sa taille.

extern string    Symbol1.Name="6EH1"; // Нога 1. Если не указан, берет по умолчанию текущий инструмент.
extern string    Symbol2.Name="DXH1"; // Нога 2.
extern string    Symbol3.Name="EURGBP";  // Нога 3.
extern double    Symbol1.Vol=-0.1; // Объем сделки 1-ой ноги. 
extern double    Symbol2.Vol=-0.09;  // Объем сделки 2-ой ноги.
extern double    Symbol3.Vol=0.06;  // Объем сделки 3-ей ноги. 
extern bool      EquityScale = true;      // Показывать масштаб эквити.
 int init(){

// Пересчет изменения цены в изменение прибыли определяется следующим коэффициентом,
  // который впоследствии нужно будет умножить на объем сделки, выраженный в лотах
  if(EquityScale) {
    Symbol1.K = MarketInfo(Symbol1.Name, MODE_TICKVALUE)/MarketInfo(Symbol1.Name, MODE_TICKSIZE);
    Symbol2.K = MarketInfo(Symbol2.Name, MODE_TICKVALUE)/MarketInfo(Symbol2.Name, MODE_TICKSIZE);
    Symbol3.K = MarketInfo(Symbol3.Name, MODE_TICKVALUE)/MarketInfo(Symbol3.Name, MODE_TICKSIZE);
  }

int start() {


  // Формируем график прибыльности
  for (i=0;i<limit;i++) 
  {
    t=Time[i];
    last[i] = Symbol1.Vol*Symbol1.K*iClose(Symbol1.Name,0,iBarShift(Symbol1.Name,0,t)) 
            + Symbol2.Vol*Symbol2.K*iClose(Symbol2.Name,0,iBarShift(Symbol2.Name,0,t))
            + Symbol3.Vol*Symbol3.K*iClose(Symbol3.Name,0,iBarShift(Symbol3.Name,0,t));
   
  }
 
Il n'y a pas d'erreur dans le code, vous avez juste saisi les lots de manière inattentive.
 

Voici le graphique.

La fenêtre supérieure est votre variante.

Fenêtre inférieure - ma variante EURGBP - (6E + DX) =0 .06 :0.09:0.10

 
leonid553:

La fenêtre supérieure est votre option.

Ce n'est pas ma variante. Veuillez poster l'indicateur, je vais l'utiliser sur le mien.
 

Ok. Veuillez le charger aussi sur le tableau Euro 6EH1

Le reste des paramètres :

Dossiers :
 

Saisissez soigneusement les lots dans votre indicateur :