Con el fin de no crear este tipo de casos especiales en Codebase, decorar la base una vez - ChartBuilder.
Esa es la cuestión, para las cosas más sencillas no hace falta aprender nada allí. En tu caso, todo es extremadamente elemental:
Formula1 = "AUDUSD - NZDUSD"; Basta con reescribir un conjunto de herramientas bien pensado de MQL4 a MQL5. Y podrás implementar casi el 99% de los indicadores inventados en el tema de pair trading a un buen nivel.
Para fines educativos, un indicador de este tipo es simplemente necesario.
Puedes ver de un vistazo qué añadir y dónde. Cuando mejoras (amplías la funcionalidad) entiendes mejor lo que está pasando.
Estoy intentando ponerle un canal, pero no funciona correctamente.
//+------------------------------------------------------------------+ //|ProjectName //|Copyright 2012, CompanyName | //| http://www.nombreempresa.net //+------------------------------------------------------------------+ #property indicator_separate_window #property indicator_buffers 4 #property indicator_plots 4 //--- trazar Etiqueta1 #property indicator_label1 "Label1" #property indicator_type1 DRAW_LINE #property indicator_color1 clrAqua #property indicator_style1 STYLE_SOLID #property indicator_width1 1 //--- trazar Label2 #property indicator_label2 "Label2" #property indicator_type2 DRAW_LINE #property indicator_color2 clrRed #property indicator_style2 STYLE_SOLID #property indicator_width2 1 //--- trazar Label3 #property indicator_label3 "Label3" #property indicator_type3 DRAW_LINE #property indicator_color3 clrRed #property indicator_style3 STYLE_SOLID #property indicator_width3 1 //--- trazar Label4 #property indicator_label4 "Label4" #property indicator_type4 DRAW_LINE #property indicator_color4 clrRed #property indicator_style4 STYLE_SOLID #property indicator_width4 1 //--- parámetros de entrada input string symbol1="EURUSD"; input string symbol2="GBPUSD"; input double mass_of_symbol1=1; input double mass_of_symbol2=1; input int ENPeriod = 14; input ENUM_MA_METHOD ENMethod = MODE_SMA; input double ENDeviation = 0.1; //--- tampones indicadores double UBuffer[]; double LBuffer[]; double CBuffer[]; #include <IncOnArray/IncEnvelopesOnArray.mqh> CEnvelopesOnArray en; int i,r1,r2,j; double S,prs,k1,k2,d1,d2; //--- tampones indicadores double ind1[]; //+------------------------------------------------------------------+ //| Función de inicialización del indicador personalizada | //+------------------------------------------------------------------+ int OnInit() { en.Init(ENPeriod,ENMethod,ENDeviation); //--- asignación de búferes indicadores SetIndexBuffer(0,ind1,INDICATOR_DATA); SetIndexBuffer(1,UBuffer,INDICATOR_DATA); SetIndexBuffer(2,LBuffer,INDICATOR_DATA); SetIndexBuffer(3,CBuffer,INDICATOR_DATA); PlotIndexSetInteger(1,PLOT_DRAW_BEGIN,en.BarsRequired()); PlotIndexSetString(1,PLOT_LABEL,en.Name()+" Upper"); PlotIndexSetInteger(2,PLOT_DRAW_BEGIN,en.BarsRequired()); PlotIndexSetString(2,PLOT_LABEL,en.Name()+" Lower"); PlotIndexSetInteger(3,PLOT_DRAW_BEGIN,en.BarsRequired()); PlotIndexSetString(3,PLOT_LABEL,en.Name()+" MA"); //--- return(0); } //+------------------------------------------------------------------+ //| Función de iteración del indicador personalizada | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { //--- ArraySetAsSeries(time,true);ArraySetAsSeries(open,true);ArraySetAsSeries(high,true);ArraySetAsSeries(low,true); ArraySetAsSeries(close,true);ArraySetAsSeries(tick_volume,true);ArraySetAsSeries(volume,true);ArraySetAsSeries(spread,true); ArraySetAsSeries(ind1,true); MqlRates rates1[]; ArraySetAsSeries(rates1,true); MqlRates rates2[]; ArraySetAsSeries(rates2,true); if(prev_calculated<rates_total) { for(i=0;i<rates_total;i++) { CopyRates(symbol1,0,time[i],1,rates1); CopyRates(symbol2,0,time[i],1,rates2); ind1[i]=mass_of_symbol1*rates1[0].close-mass_of_symbol2*rates2[0].close; } } en.Solve(rates_total,prev_calculated,ind1,CBuffer,UBuffer,LBuffer); //--- valor de retorno de prev_calculado para la siguiente llamada return(rates_total); } //+------------------------------------------------------------------+
Foro sobre negociación, sistemas automatizados de negociación y ensayo de estrategias de negociación
newdigital, 2014.01.12 08:59
¿Qué indica un spread a los operadores?
- Los spreads se basan en el precio de compra y venta de un par de divisas.
- Los costes se basan en los diferenciales y el tamaño del lote.
- Los spreads son variables y deben ser referenciados desde su software de trading.
Spreads y Forex
Todos los mercados tienen un diferencial y también lo tiene Forex. Un spread se define simplemente como la diferencia de precio entre donde un operador puede comprar o vender un activo subyacente. Los operadores que estén familiarizados con la renta variable lo denominarán sinónimamente "diferencial de compra": Ask spread.
A continuación podemos ver un ejemplo del cálculo del spread para el EURUSD. Primero encontraremos el precio de compra en 1,35640 y luego restaremos el precio de venta de 1,32626. Lo que nos queda después de este proceso es una lectura de 0,00014. Los operadores deben recordar que el valor del pip se identifica en el EURUSD como el cuarto dígito después del decimal, lo que hace que el spread final se calcule en 1,4 pips.
Ahora que sabemos cómo calcular el spread en pips, veamos el coste real en el que incurren los operadores.

Costes y cálculos del diferencial
Dado que el spread es sólo un número, ahora necesitamos saber cómo relacionar el spread en Dólares y Centavos. La buena noticia es que si puede encontrar el diferencial, hallar esta cifra es muy sencillo desde el punto de vista matemático una vez que haya identificado el coste del pip y el número de lotes que está negociando.
Utilizando las cotizaciones anteriores, sabemos que actualmente podemos comprar el EURUSD a 1,3564 y cerrar la operación a un precio de venta de 1,35474. Esto significa que tan pronto como nuestra operación esté abierta, un operador incurriría en 1,4 pips de diferencial. Para hallar el coste total, ahora tendremos que multiplicar este valor por el coste del pip teniendo en cuenta la cantidad total de lotes negociados. Cuando se negocia un lote EURUSD de 10k con un coste de pips de 1$, se incurriría en un coste total de 1,40$ en esta transacción.
Recuerde que el coste del pip es exponencial. Esto significa que tendrá que multiplicar este valor en función del número de lotes que esté negociando. A medida que aumente el tamaño de sus posiciones, también lo hará el coste incurrido por el spread.

Cambios en el diferencial
Es importante recordar que los diferenciales son variables, lo que significa que no siempre serán los mismos y cambiarán esporádicamente. Estos cambios se basan en la liquidez, que puede variar en función de las condiciones del mercado y los próximos datos económicos. Para consultar los diferenciales actuales, consulte siempre su plataforma de negociación.Foro sobre trading, sistemas automatizados de trading y prueba de estrategias de trading
newdigital, 2014.01.30 09:25
Forex Spreads y las Noticias (basado en el artículo de dailyfx)
- Los spreads se basan en el precio de compra y venta de un par de divisas.
- Los spreads son variables y pueden cambiar durante las noticias.
- Esté atento a la normalización de los diferenciales, poco después de los acontecimientos económicos.
Los mercados financieros pueden verse afectados drásticamente por la publicación de noticias económicas. Las noticias se suceden a lo largo de la semana, tal y como indica el calendario económico, y pueden aumentar la volatilidad del mercado, así como los diferenciales de sus pares de divisas favoritos.
Es imperativo que los nuevos operadores se familiaricen con lo que puede suceder durante estos eventos. Así que para prepararte mejor para las próximas noticias, vamos a repasar lo que ocurre con los diferenciales de Forex durante los mercados volátiles.

Losdiferenciales y las noticias
Las noticias son un momento notorio de incertidumbre en el mercado. Estas publicaciones en el calendario económico suceden esporádicamente y, dependiendo de si se cumplen las expectativas o no, pueden hacer que los precios fluctúen rápidamente. Al igual que los operadores minoristas, los grandes proveedores de liquidez no conocen el resultado de las noticias antes de su publicación. Por ello, intentan compensar parte de su riesgo ampliando los diferenciales.
Arriba se muestra un ejemplo de los diferenciales durante la publicación de la cifra de empleo NFP de enero. Observe cómo se ampliaron los diferenciales de los principales pares de divisas. Aunque se trata de un acontecimiento temporal, hasta que el mercado se normalice, los operadores tendrán que soportar mayores costes de negociación.

Cómomanejar los diferenciales
Es importante recordar que los diferenciales son variables, lo que significa que no siempre serán los mismos y cambiarán a medida que los proveedores de liquidez modifiquen sus precios. Arriba podemos ver lo rápido que se normalizan los diferenciales tras la noticia. En 5 minutos, los diferenciales del EURUSD pasaron de 6,4 pips a 1,4 pips. Entonces, ¿dónde deja esto a los operadores que quieren ejecutar órdenes en torno a las noticias?
Los operadores siempre deben tener en cuenta el riesgo de operar en mercados volátiles. Una de las opciones para operar con noticias es ejecutar inmediatamente las órdenes en el mercado con la esperanza de que la volatilidad del mercado cubra el aumento del coste del diferencial. O bien, los operadores pueden esperar a que los mercados se normalicen y aprovechar la liquidez adicional una vez que la actividad del mercado disminuya.
en lugar de utilizar la diferencia, ¿podemos utilizar el cociente? (símbolo1/símbolo2)
Gracias.
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso


Spread del los Símbolos:
El indicador muestra la gráfica de la diferencia (suma) de los precios de los símbolos de comercio. Es adecuado para una estimación visual de la correlación de los símbolos comerciales. Va a ser muy útil para los traders interesados en el pairs trading (spread trading). El indicador de las barras se sincroniza al mismo tiempo con las barras del gráfico del indicador cuando se pone en marcha.
Autor: Dmitry