[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 698
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
derechos de autor
gracias
De nuevo, vuelvo a la pregunta que hice a https://forum.mql4.com/ru/15972/page693 - en este caso, la transferencia de parámetros entre indicadores y expertos. Por supuesto, el uso propuesto de las variables globales resuelve parcialmente este problema, ¡pero surge otra cuestión! Según la descripción de las variables globales ......... Una variable GV sólo puede ser de tipo doble, pero ¿cómo esperamos que los Asesores Expertos sepan si la variable se recibe de un determinado símbolo y marco temporal al recibir el valor de una variable global?
Codifica los símbolos. Aunque es posible utilizar nombres de variables para este fin, por ejemplo EUSRUSD_H1_Var1
Hecho en el programa Gorando, con la adición de su martin.
//+------------------------------------------------------------------+
//| Copyright 2005, Gordago Software Corp.
//| http://www.gordago.com/ |
//| versión 2.0 |
//+------------------------------------------------------------------+
void OpenBuy() {
double dStopLoss = 0, dTakeProfit = 0;
double Lotes_Nuevos = Lote;
si (isLossLastPos(NULL, -1, MAGIC))
Lots_New *= 2;
else if (!isLossLastPos(NULL, -1, MAGIC))
Lotes_Nuevos = Lote;
si (dBuyStopLossPoint > 0)
dStopLoss = Bid-dBuyStopLossPoint*Point;
si (dBuyTakeProfitPoint > 0)
dTakeProfit = Oferta + dBuyTakeProfitPoint * Punto;
int numorder = OrderSend(Symbol(), OP_BUY, Lots_New, Ask, nSlippage, dStopLoss, dTakeProfit, sNameExpert, MAGIC, 0, colorOpenBuy);
if (numorder > -1 && lFlagUseSound)
PlaySound(sSoundFileName);
}
void OpenSell() {
double dStopLoss = 0, dTakeProfit = 0;
double Lotes_Nuevos = Lote;
si (isLossLastPos(NULL, -1, MAGIC))
Lots_New *= 2;
else if (!isLossLastPos(NULL, -1, MAGIC))
Lotes_Nuevos = Lote;
si (dSellStopLossPoint > 0)
dStopLoss = Ask+dSellStopLossPoint*Point;
si (dSellTakeProfitPoint > 0)
dTakeProfit = Ask-dSellTakeProfitPoint*Point;
int numorder = OrderSend(Symbol(),OP_SELL, Lots_New, Bid, nSlippage, dStopLoss, dTakeProfit, sNameExpert, MAGIC, 0, colorOpenSell);
if (numorder > -1 && lFlagUseSound)
PlaySound(sSoundFileName);
}
Usted tiene
void OpenBuy() {
double dStopLoss = 0, dTakeProfit = 0;double Lotes_Nuevos = Lote;
si (isLossLastPos(NULL, -1, MAGIC))
Lots_New *= 2;
else if (!isLossLastPos(NULL, -1, MAGIC))
Lotes_Nuevos = Lote;
Es una función y al principio de esta función se asigna el valor = Lote a la variable Lote_Nuevo;
Piensa en cómo cambiará después si siempre lo devuelves a su estado original...
¿Dónde te dije que lo escribieras? En las variables externas antes de la función de inicio...
Y normalizar el valor del lote al tamaño correcto:
Lots_New = NormalizeLot(Lot*2, False, "");
Codificar los símbolos. Aunque, podemos utilizar nombres de variables para este propósito, por ejemplo, EUSRUSD_H1_Var1
¡Claro! ¡Gracias! Pero todavía no está claro... Resulta que en el indicador tengo que escribir todos los nombres de las variables, correspondientes a todo el número de símbolos posibles. Y si quiero pasar un parámetro del indicador en algún momento predefinido, tendré que escribir el código de definición del símbolo del indicador. Y luego, utilizando comparaciones u otras funciones de tipo case, determinaré en qué variable global con nombre se debe escribir el parámetro. ¡Lo entiendo todo bien! ?
Y aquí hay otra pregunta retórica, o simplemente para conocer su opinión. Existen los llamados "patrones" en la naturaleza del análisis. Los patrones no son más que pautas basadas en ciertos momentos (o parámetros) que se repiten. Pero, por desgracia, el mercado es una sustancia inestable, por lo que cada patrón puede, en cierta medida, ser tratado como un patrón inexacto, o un poco desviarse de ciertos parámetros, siendo fiel a la formación del patrón. Si tomamos un marco temporal cualquiera, por ejemplo 15 minutos, como base de análisis, veremos que habrá una cierta cantidad de patrones en él que aparecerán en determinadas condiciones. Y habrá algunas situaciones en las que el patrón no se forme, pero estas situaciones están muy cerca de la formación del patrón, simplemente no se ajustan a algunos parámetros determinados (se desviaron un poco). Esta situación podría haberse evitado con unas condiciones sensatas de formación de patrones. En este caso, habría más patrones y más posibilidades de entrar en el mercado, pero el número de patrones falsos aumentaría porque los parámetros no estaban especificados estrictamente. (Si consideramos que con parámetros estrictos el patrón puede incluso no aparecer en un día con estas condiciones).
Pregunta: ¿Con qué parámetros (condición dura o condición blanda) debo formar un patrón?
¡Ayúdame a resolver un problema!
Busco las órdenes que están abiertas o pendientes. Si están disponibles, entonces determino qué orden es de compra o de venta. Bajo ciertas condiciones (si una es mayor que la otra o menor que la tercera), quiero cerrar esta orden. Cambia sus parámetros y vuelve a abrirlo.
El problema es que siempre hay una señal para cerrar la orden y para abrirla. Por eso mi orden se cierra, luego se abre de nuevo, y así sucesivamente, se abre y se cierra... )))
¿Cómo se soluciona este problema? Ga
¡Exactamente! ¡Gracias! Pero todavía no está claro. Resulta que en mi indicador tendré que prescribir todos los nombres de las variables, correspondientes a todo el número de caracteres posibles. Y si quiero pasar un parámetro del indicador en algún momento predefinido, tendré que escribir el código de definición del símbolo del indicador. Y luego, utilizando comparaciones u otras funciones de tipo case, determinaré en qué variable global con nombre se debe escribir el parámetro. ¡Lo entiendo todo bien! ?
Y sólo una pregunta retórica, o sólo para conocer tu opinión. Existen los llamados "patrones" en la naturaleza del análisis. Los patrones no son más que pautas basadas en ciertos momentos (o parámetros) repetitivos. Pero, por desgracia, el mercado es una sustancia inestable, por lo que cada patrón puede, en cierta medida, ser tratado como un patrón inexacto, o un poco desviarse de ciertos parámetros, siendo fiel a la formación del patrón. Si tomamos un marco temporal cualquiera, por ejemplo 15 minutos, como base de análisis, veremos que habrá una cierta cantidad de patrones en él que aparecerán en determinadas condiciones. Y habrá algunas situaciones en las que el patrón no se forme, pero estas situaciones están muy cerca de la formación del patrón, simplemente no se ajustan a algunos parámetros determinados (se desviaron un poco). Esta situación podría haberse evitado con unas condiciones sensatas de formación de patrones. En este caso, habría más patrones y más posibilidades de entrar en el mercado, pero el número de patrones falsos aumentaría porque los parámetros no estaban especificados estrictamente. (Si consideramos que con parámetros estrictos el patrón puede incluso no aparecer en un día con estas condiciones).
Pregunta: ¿Con qué parámetros (condición dura o blanda) debo formar un patrón?
¡Ayúdame a resolver un problema!
Busco las órdenes que están abiertas o pendientes. Si están disponibles, entonces determino qué orden es de compra o de venta. Bajo ciertas condiciones (si una es mayor que la otra o menor que la tercera), quiero cerrar esta orden. Cambia sus parámetros y vuelve a abrirlo.
El problema es que siempre hay una señal para cerrar la orden y para abrirla. Por eso mi orden se cierra, luego se abre de nuevo, y así sucesivamente, se abre y se cierra... )))
¿Cómo resolver este problema? GaRoger, gracias, pero sigue sin funcionar correctamente. Intenté otro arrastre, pero el error sigue ahí :( ¿Hay alguna diferencia entre arrastrar una pose y arrastrar varias al mismo tiempo?
Lo entiendo, defines la variable ro al principio de la función, pero no la asignas a ningún sitio, es decir, es 0.