Operar con spreads en Meta Trader - página 166

 
hrenfx:
Desgraciadamente, no puedo conectarme (para comprobarlo) al servidor de Broco, no hay conexión con él en este momento por alguna razón.

La conexión ha surgido. Ocurre en sus servidores de demostración.
 

Este es el aspecto del gráfico de la propagación:

Parece que tienes un error en tus cálculos.

 

Probablemente podría tomar puramente la moneda EURUSD y EURGBP

Y para el índice del dólar en el indicador del diferencial, introducir una corrección dimensional de alguna manera.

 

Hay dos métodos:

  1. Mantente unido a los pipsollos.
  2. Deja de estar pegado a ellos.

Para el análisis de los gráficos de spreads, el segundo método es el más preciso.

Trae el código responsable de calcular el triple diferencial. Buscaremos juntos el error.

 

Difícilmente se trata de un error. Los spreads de los instrumentos relacionados del mismo mercado (por ejemplo, soja ZS-ZM-ZL) se representan perfectamente en todas las combinaciones.

Pero, por supuesto, mira el código. Probablemente, ahí sí que encontraremos un error.

Aquí está el código del dibujo de la propagación:

Ladirección de las posiciones se establece aquí por el signo en su tamaño.

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));
   
  }
 
No hay ningún error en el código, simplemente has introducido los lotes sin atención.
 

Aquí está el gráfico.

La ventana superior es su variante.

Ventana inferior - mi variante EURGBP - (6E + DX) =0 ,06 :0,09:0,10

 
leonid553:

La ventana superior es su opción.

Esta no es mi variante. Por favor, publica el indicador, lo ejecutaré en el mío.
 

Bien. Por favor, cárguelo también en la tabla Euro 6EH1

El resto de los parámetros:

Archivos adjuntos:
 

Introdujo los lotes en su indicador con cuidado:

Razón de la queja: