Buenas tardes, continuando con la codificación, tomé el ejemplo de EA del artículo de la sección de tutoriales, sustituí el código del ejemplo:
A una arbitraria con fines de formación:
Las operaciones no aparecen, por favor, aconseja cuál es la razón, cómo arreglar el código.
double MA_1[]; // нет обьявления размера, не видно как (локально или глобально) обьявлен,
// не видно оператора двигающего индекс массива.// лучше пока не освоили работу с массивами обьявите переменные и не парьтесьdouble MA_0=iMA(NULL,0,Period_MA,0,MODE_EMA,PRICE_CLOSE,0);
double MA_1=iMA(NULL,0,Period_MA,0,MODE_EMA,PRICE_CLOSE,1);
if (MA_1 < MA_0)
{ // ..МА последнего бара выше предыдущего
Opn_B=true; // Критерий откр. Buy
Cls_S=true; // Критерий закр. Sell
}
if (MA_1 > MA_0)
{ // ..МА последнего бара ниже предыдущего
Opn_S=true; // Критерий откр. Sell
Cls_B=true; // Критерий закр. Buy
}
Urain, gracias, no dejo de asombrarme de la lógica de mql, y si intentas usar for(int i=1; para probar, el script no se simplifica - ¿podrías decirme cómo formatearlo, aún no puedo sentir la lógica del lenguaje, cómo definir el operador que mueve el array?
P. S. Declaré la matriz, por error en el script de ejemplo ha eliminado:
Abzasc: Diferencias en los precios. En consecuencia, los resultados de los indicadores son diferentes, al contrario...
No veo nada diferente ahí. Olvídate de los indicadores, una vez más, el adecuado para ti es el que estás operando. No te estás concentrando en el derecho en absoluto.
extern int n = 20; extern int t3_period = 5; extern double b = 0,618; extern int mBars = 300; extern int Bares.Count = 0; int i,t,c; double Buf1[],Buf2[],CF_p[5001],CF_n[5001],Ch_p[5001],Ch_n[5001],k_n,k_p,ch_p,ch_n,cff_p,cff_n, AcBars,t3,t32,A1,A2,b2,b3,c1,c2,c3,c4,e1,e2,e3,e4,e5,e6,n1,w1,w2,e12,e22,e32,e42,e52,e62;
//+------------------------------------------------------------------+ int init() { SetIndexStyle(0, DRAW_LINE); SetIndexBuffer(0, Buf1); SetIndexStyle(1, DRAW_LINE); SetIndexBuffer(1, Buf2); return(0); } //+------------------------------------------------------------------+ int inicio() { int límite; if (IndicatorCounted()<0) return(-1); limit=Bars-IndicatorCounted(); if (Bars.Count>0 && limit>Bars.Count) limit=Bars.Count; for(int i=0; i<limit; i++) {
Buenas tardes. Se ha declarado un array, se ha establecido el operador que mueve el índice del array, pero los pedidos no se realizan. Por favor, dígame qué es lo que está mal.
¿Has leído el ayudante estándar de MetaEditore? Si no es así, lee todo el...
Craft:
Buenas tardes. He declarado un array y definido el operador que mueve el índice del array, pero las órdenes no se colocan. Por favor, indíqueme qué es lo que está mal.
¿Pueden decirme si es posible reescribir la función de Igor Kim, que cierra todas las órdenes perdedoras, cuya pérdida supera un determinado valor:
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 25.04.2008 |//| Описание : Закрытие тех позиций, у которых убыток в валюте депозита |//| превысил некоторое значение |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//| pr - профит/убыток |//+----------------------------------------------------------------------------+void ClosePosBySizeLossInCurrency(string sy="", int op=-1, int mn=-1, double pr=0) {
int i, k=OrdersTotal();
if (sy=="0") sy=Symbol();
for (i=k-1; i>=0; i--) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (mn<0 || OrderMagicNumber()==mn) {
if (OrderProfit()+OrderSwap()<-MathAbs(pr)) ClosePosBySelect();
}
}
}
}
}
}
Necesito encontrar una posición abierta que tenga la mayor pérdida. La cuestión es que tengo que encontrar la posición con más beneficios que la perdedora y cerrarlas en contracorriente. ¿Quizás alguien tenga alguna experiencia con esto, o se haya enfrentado a un problema así?
¿Por qué tres indicadores basados en principios diferentes no pueden mostrar casi la misma imagen (spearman, estocástico y mcdrsy), pero no pueden mostrar el movimiento correcto y la entrada con una probabilidad superior al 60%?
Hola, me pregunto qué código se necesita para cerrar una orden después de que haya pasado el punto X de beneficio y haya empezado a bajar hasta el punto Y>PrecioDeAperturaDeLaOrden y entonces necesite cerrarla.
Para iniciar sesión y usar el sitio web MQL5.com es necesario permitir el uso de Сookies.
Por favor, active este ajuste en su navegador, de lo contrario, no podrá iniciar sesión.
Ha iniciado sesión. La autenticación de dos factores se ha desactivado. Vuelva a configurarla y escanee un nuevo código QR, o continúe con la autenticación de dos factores desactivada.
Buenas tardes, continuando con la codificación, tomé el ejemplo de EA del artículo de la sección de tutoriales, sustituí el código del ejemplo:
A una arbitraria con fines de formación:
Las operaciones no aparecen, por favor, aconseja cuál es la razón, cómo arreglar el código.Urain, gracias, no dejo de asombrarme de la lógica de mql, y si intentas usar for(int i=1; para probar, el script no se simplifica - ¿podrías decirme cómo formatearlo, aún no puedo sentir la lógica del lenguaje, cómo definir el operador que mueve el array?
P. S. Declaré la matriz, por error en el script de ejemplo ha eliminado:
Diferencias en los precios. En consecuencia, los resultados de los indicadores son diferentes, al contrario...
#property indicator_buffers 2
#property indicator_color1 blue
#property indicator_color2 Rojo
extern int n = 20;
extern int t3_period = 5;
extern double b = 0,618;
extern int mBars = 300;
extern int Bares.Count = 0;
int i,t,c;
double Buf1[],Buf2[],CF_p[5001],CF_n[5001],Ch_p[5001],Ch_n[5001],k_n,k_p,ch_p,ch_n,cff_p,cff_n,
AcBars,t3,t32,A1,A2,b2,b3,c1,c2,c3,c4,e1,e2,e3,e4,e5,e6,n1,w1,w2,e12,e22,e32,e42,e52,e62;
//+------------------------------------------------------------------+
int init() {
SetIndexStyle(0, DRAW_LINE);
SetIndexBuffer(0, Buf1);
SetIndexStyle(1, DRAW_LINE);
SetIndexBuffer(1, Buf2);
return(0); }
//+------------------------------------------------------------------+
int inicio() {
int límite;
if (IndicatorCounted()<0) return(-1);
limit=Bars-IndicatorCounted();
if (Bars.Count>0 && limit>Bars.Count) limit=Bars.Count;
for(int i=0; i<limit; i++)
{
b2=b*b; b3=b2*b; c1=-b3; c2=(3*(b2+b3)); c3=-3*(2*b2+b3); c4=(1+3*b+b3+3*b2); n1=t3_period;
if(n1<1) n1=1; n1=1+0,5*(n1-1); w1=2/(n1+1); w2=1-w1;
if(AcBars==0) AcBars=Bars-mBars;
for(c=AcBars; c<=Bars-1; c +++) { i=Bars-1-c; {
if(Close[i]>Close[i+1]) { Ch_p[i]=Close[i]-Close[i+1]; CF_p[i]=Ch_p[i]+CF_p[i+1]; Ch_n[i]=0; CF_n[i]=0; }
Si no, { Ch_p[i]=0; CF_p[i]=0; Ch_n[i]=Cerrada[i+1]-Cerrada[i]; CF_n[i]=Ch_n[i]+CF_n[i+1]; }}
for(t=i+n; t>=i; t--) { ch_p=Ch_p[t]+ch_p; ch_n=Ch_n[t]+ch_n ; cff_p=CF_p[t]+cff_p; cff_n=CF_n[t]+cff_n; }
k_p=ch_p-cff_n; k_n=ch_n-cff_p;
A1=k_p; e1=w1*A1+w2*e1; e2=w1*e1+w2*e2; e3=w1*e2+w2*e3; e4=w1*e3+w2*e4;
e5=w1*e4+w2*e5; e6=w1*e5+w2*e6; t3=c1*e6+c2*e5+c3*e4+c4*e3; Buf1[i]=t3;
A2=k_n; e12=w1*A2+w2*e12; e22=w1*e12+w2*e22; e32=w1*e22+w2*e32; e42=w1*e32+w2*e42;
e52=w1*e42+w2*e52; e62=w1*e52+w2*e62; t32=c1*e62+c2*e52+c3*e42+c4*e32; Buf2[i]=t32;
AcBars=AcBars+1; ch_p=0; ch_n=0; cff_p=0; cff_n=0; }
}
return(0); }
Me puedes decir donde no se actualiza el error, el historial es normal y el online no
Buenas tardes. Se ha declarado un array, se ha establecido el operador que mueve el índice del array, pero los pedidos no se realizan. Por favor, dígame qué es lo que está mal.
Prueba conOrderSend, entonces funciona...
¿Has leído el ayudante estándar de MetaEditore? Si no es así, lee todo el...
Buenas tardes. He declarado un array y definido el operador que mueve el índice del array, pero las órdenes no se colocan. Por favor, indíqueme qué es lo que está mal.
Necesito encontrar una posición abierta que tenga la mayor pérdida.
La cuestión es que tengo que encontrar la posición con más beneficios que la perdedora y cerrarlas en contracorriente.
¿Quizás alguien tenga alguna experiencia con esto, o se haya enfrentado a un problema así?
Prueba con OrderSend, entonces funciona...
¿Has leído el ayudante estándar de MetaEditore? Si no, léelo todo...
De edad infantil para hacer una pregunta sin haber dirigido a ayudar y yandex han crecido. Hay muchos envíos, pero los puestos no se abren: