[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No podría ir a ningún sitio sin ti - 2. - página 521
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
¿Cómo puedo comprobarlo?
Gracias.
¿Es posible hacer que el ajuste MaxEquity funcione por ejemplo 500 veces sin reiniciar el EA?
Por ejemplo, si escribo 500 en el contador, que sea como sigue: Supongamos que el capital inicial es de 10 000,
Después de añadir a la equidad inicial de 10.000 (especificando en la configuración), los grandes déficits se cerrarán.
Se hará 500 veces (por ejemplo) (sigue siendo imposible multiplicar el patrimonio inicial 500 veces).
Esa es la diferencia resultará con su versión - que después de incrementos de 10 000 a la equidad inicial = 10 000 -
El EA no necesita ser reiniciado, y el ciclo continuará - a 20 000 más se añadirán 10 000, a 30 000 + 10 000 y así 500 veces ( por ejemplo). Bueno
y después de cada incremento = 10 000, se cerrará la orden perdedora con el mayor inconveniente ( o varias órdenes - a especificar en los ajustes) ?
Gracias.
¿Es posible hacer que el ajuste de MaxEquity funcione por ejemplo 500 veces sin reiniciar el EA?
Por ejemplo, si escribo 500 en el contador, que funcione así: Supongamos que el capital inicial es de 10 000,
Después de añadir a la equidad inicial de 10.000 (especificando en la configuración), los grandes déficits se cerrarán.
De la misma manera, digamos que 500 veces (por ejemplo) (después de todo, es imposible multiplicar el patrimonio inicial 500 veces).
En otras palabras, la diferencia aparecerá en su versión: después de añadir 10 000 al capital inicial = 10 000.
El Asesor Experto no necesita ser reiniciado, y el ciclo continuará - a 20 000 se añadirán 10 000, a 30 000 + 10 000 y así 500 veces ( por ejemplo). Por ejemplo:
Y, después de cada incremento igual a 10 000, se cerrará la orden perdedora con la mayor pérdida (o varias órdenes perdedoras, si así lo especifica en la configuración) ?
No es necesario hacer ningún reinicio. Es necesario actualizar los datos de la equidad inicial después de cerrar las posiciones y esperar a que la equidad aumente a partir de la nueva equidad inicial.
Pero según tengo entendido, todo se hace en código de programación. No tengo el poder de la programación).
Naturalmente. Sólo hay una función que controlará continuamente la equidad y enviará una orden para cerrar las posiciones no rentables si se supera el valor especificado. A continuación, una vez cerradas con éxito todas las posiciones, hay que registrar el nuevo estado patrimonial y seguir controlándolo.
¿Puede decirme cuál puede ser el problema?
Supongo que mi pregunta no contiene suficiente información para ayudarme). Completaré mi pregunta. A continuación proporciono una estructura con las principales funciones de mi Asesor Experto. Tal vez esto revele el problema que he esbozado.
Por el momento tengo que recompilar el EA cada vez después de activar/desactivar la función de gestión de dinero en los parámetros del EA, para que el informe se genere correctamente.
P.D. ¿Tal vez tenga algo que ver con la variable global fxprop_lot del terminal?
Supongo que no hay suficiente información en mi pregunta para ayudarme). Completaré mi pregunta. A continuación estoy proporcionando la estructura con las funciones básicas de mi EA. Tal vez de este modo sea posible identificar el problema, que he destacado.
Por el momento tengo que recompilar el EA cada vez después de activar/desactivar la función de gestión de dinero en los parámetros del EA para que el informe se genere correctamente.
P.D. ¿Tal vez tenga que ver con la variable globalfxprop_lot?
Si crees que eso es suficiente, supongo que lo es. Tendremos que esperar una respuesta. No tengo ninguno.
Si crees que es suficiente, supongo que sí. Estoy esperando una respuesta. No tengo ninguno.
Y en el siguiente post la función de generación de informes...Lamentablemente, mi experiencia hasta ahora no me permite juzgar si la información proporcionada es suficiente o no para abordar una cuestión concreta. No lo hago a propósito y me disculpo si lo haces). El caso es que, en mi opinión, el punto clave en el problema que destaqué es que todo funciona correctamente al recompilar el Asesor Experto. Pero esto también se debe a mi experiencia inmadura. Por favor, indíquenos qué información hay que proporcionar para resolver este problema. La función de gestión monetaria o de generación de informes aparece obviamente en el problema. Por eso te voy a dar la función de gestión del dinero:
void Short_Trade_Report(int Mgc_Src_LP_TS№1,int Mgc_LP01_TS№1,int Mgc_LP02_TS№1,int Mgc_LP03_TS№1,int Mgc_LP04_TS№1,int Mgc_LP05_TS№1,int Mgc_LP06_TS№1, int Mgc_Src_SP_TS№1,int Mgc_SP01_TS№1,int Mgc_SP02_TS№1,int Mgc_SP03_TS№1,int Mgc_SP04_TS№1,int Mgc_SP05_TS№1,int Mgc_SP06_TS№1, int Mgc_Src_LP_TS№2,int Mgc_LP01_TS№2,int Mgc_LP02_TS№2,int Mgc_LP03_TS№2,int Mgc_LP04_TS№2,int Mgc_LP05_TS№2,int Mgc_LP06_TS№2, int Mgc_Src_SP_TS№2,int Mgc_SP01_TS№2,int Mgc_SP02_TS№2,int Mgc_SP03_TS№2,int Mgc_SP04_TS№2,int Mgc_SP05_TS№2,int Mgc_SP06_TS№2, int Mgc_Src_LP_TS№3,int Mgc_LP01_TS№3,int Mgc_LP02_TS№3,int Mgc_LP03_TS№3,int Mgc_LP04_TS№3,int Mgc_LP05_TS№3,int Mgc_LP06_TS№3, int Mgc_Src_SP_TS№3,int Mgc_SP01_TS№3,int Mgc_SP02_TS№3,int Mgc_SP03_TS№3,int Mgc_SP04_TS№3,int Mgc_SP05_TS№3,int Mgc_SP06_TS№3) { #define RA 10000 // Range Array - Размер массива для отчёта double Acc_Bal_Close[RA]; // Массив для баланса на закрытии сделки(-ок) double Acc_Bal_Open[RA]; // Массив для баланса на открытии сделки(-ок) double Price_Open_Pos[RA]; double Price_Stop_Loss[RA]; double TS№1_DS[RA], TS№2_TA[RA], TS№3_SBH[RA]; int pos, handle, dgt, Magic, sign, index; double Swap_P; double Profit_P; double Commission; double Open_Price; double Stop_Loss; string Type_Pos; string comment; string Str_Stop_Loss; //--- ПРОВЕРКА НА КОЛ-ВО ЗНАКОВ В СИМВОЛЕ ДЛЯ РАСЧЁТА ОТСТУПА В СТРОКАХ КОММЕНТАРИЕВ --------------------------------// int digit_string; int digit = MarketInfo(Symbol(),MODE_DIGITS); switch(digit) { case 2 : digit_string = 4; dgt = 100; break; case 3 : digit_string = 5; dgt = 100; break; case 4 : digit_string = 6; dgt = 10000; break; case 5 : digit_string = 7; dgt = 10000; break; default: Print("Неизвестный символ! Количество знаков = ",digit); return(0); } handle = FileOpen("ShortReport.csv",FILE_CSV|FILE_WRITE); if(handle > 0) //1 { FileWrite(handle,"Time Close"+","+"Symbol"+","+"Type"+","+"Lots"+","+"Balance($)"+","+"Stop Loss(p)"+","+"Profit(p)"+","+"TS#1_DS(p)"+","+"TS#2_TA(p)"+","+"TS#3_SBH(p)"); for(pos = 0; pos < OrdersHistoryTotal(); pos++) // 2 { OrderSelect(pos,SELECT_BY_POS,MODE_HISTORY); Commission = OrderCommission(); Swap_P = (OrderSwap()/10)/OrderLots(); Profit_P = (OrderProfit()/10)/OrderLots()+(OrderSwap()/10)/OrderLots(); Open_Price = NormalizeDouble(OrderOpenPrice(),Digits); index = StringFind(OrderComment(),"[sl]",0); if(index != -1) { comment = StringSubstr(OrderComment(),0,StringLen(OrderComment())-4); } else { comment = StringSubstr(OrderComment(),0,StringLen(OrderComment())); } if(OrderType() < 2 && OrderCloseTime() == TimeCurrent() && (OrderMagicNumber() == Mgc_Src_LP_TS№1 || OrderMagicNumber() == Mgc_Src_SP_TS№1 || OrderMagicNumber() == Mgc_LP01_TS№1 || OrderMagicNumber() == Mgc_LP02_TS№1 || OrderMagicNumber() == Mgc_LP03_TS№1 || OrderMagicNumber() == Mgc_LP04_TS№1 || OrderMagicNumber() == Mgc_LP05_TS№1 || OrderMagicNumber() == Mgc_LP06_TS№1 || OrderMagicNumber() == Mgc_SP01_TS№1 || OrderMagicNumber() == Mgc_SP02_TS№1 || OrderMagicNumber() == Mgc_SP03_TS№1 || OrderMagicNumber() == Mgc_SP04_TS№1 || OrderMagicNumber() == Mgc_SP05_TS№1 || OrderMagicNumber() == Mgc_SP06_TS№1)) { TS№1_DS[pos] = Profit_P + Swap_P + Commission; Acc_Bal_Close[pos] = AccountBalance(); Str_Stop_Loss = StringSubstr(comment,StringLen(comment)-digit_string,digit_string); Price_Stop_Loss[pos] = MathAbs((StrToDouble(Str_Stop_Loss)-Open_Price)*dgt); } if(OrderType() < 2 && OrderCloseTime() == TimeCurrent() && (OrderMagicNumber() == Mgc_Src_LP_TS№2 || OrderMagicNumber() == Mgc_Src_SP_TS№2 || OrderMagicNumber() == Mgc_LP01_TS№2 || OrderMagicNumber() == Mgc_LP02_TS№2 || OrderMagicNumber() == Mgc_LP03_TS№2 || OrderMagicNumber() == Mgc_LP04_TS№2 || OrderMagicNumber() == Mgc_LP05_TS№2 || OrderMagicNumber() == Mgc_LP06_TS№2 || OrderMagicNumber() == Mgc_SP01_TS№2 || OrderMagicNumber() == Mgc_SP02_TS№2 || OrderMagicNumber() == Mgc_SP03_TS№2 || OrderMagicNumber() == Mgc_SP04_TS№2 || OrderMagicNumber() == Mgc_SP05_TS№2 || OrderMagicNumber() == Mgc_SP06_TS№2)) { TS№2_TA[pos] = Profit_P + Swap_P + Commission; Acc_Bal_Close[pos] = AccountBalance(); Str_Stop_Loss = StringSubstr(comment,StringLen(comment)-digit_string,digit_string); Price_Stop_Loss[pos] = MathAbs((StrToDouble(Str_Stop_Loss)-Open_Price)*dgt); } if(OrderType() < 2 && OrderCloseTime() == TimeCurrent() && (OrderMagicNumber() == Mgc_Src_LP_TS№3 || OrderMagicNumber() == Mgc_Src_SP_TS№3 || OrderMagicNumber() == Mgc_LP01_TS№3 || OrderMagicNumber() == Mgc_LP02_TS№3 || OrderMagicNumber() == Mgc_LP03_TS№3 || OrderMagicNumber() == Mgc_LP04_TS№3 || OrderMagicNumber() == Mgc_LP05_TS№3 || OrderMagicNumber() == Mgc_LP06_TS№3 || OrderMagicNumber() == Mgc_SP01_TS№3 || OrderMagicNumber() == Mgc_SP02_TS№3 || OrderMagicNumber() == Mgc_SP03_TS№3 || OrderMagicNumber() == Mgc_SP04_TS№3 || OrderMagicNumber() == Mgc_SP05_TS№3 || OrderMagicNumber() == Mgc_SP06_TS№3)) { TS№3_SBH[pos] = Profit_P + Swap_P + Commission; Acc_Bal_Close[pos] = AccountBalance(); Str_Stop_Loss = StringSubstr(comment,StringLen(comment)-digit_string,digit_string); Price_Stop_Loss[pos] = MathAbs((StrToDouble(Str_Stop_Loss)-Open_Price)*dgt); } if(OrderType() == OP_BUY) { Type_Pos = "buy"; } if(OrderType() == OP_SELL) { Type_Pos = "sell"; } if(OrderType() < 2) { FileWrite(handle,TimeToStr(OrderCloseTime(),TIME_DATE|TIME_MINUTES)+","+Symbol()+","+Type_Pos+"," +DoubleToStr(OrderLots(),2)+","+DoubleToStr(Acc_Bal_Close[pos],2)+","+DoubleToStr(Price_Stop_Loss[pos],2)+"," +DoubleToStr(Profit_P+Swap_P+Commission,2)+","+DoubleToStr(TS№1_DS[pos],2)+","+DoubleToStr(TS№2_TA[pos],2)+","+DoubleToStr(TS№3_SBH[pos],2)); } } FileClose(handle); // 2\ } //1 }
Por favor, ayude a resolver el problema.He intentado llamar a la función de gestión del capital durante la inicialización:
Pero eso no resuelve el problema...