[¡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

 
valenok2003:

derechos de autor
string copyright = "\xA9";
 
ToLik_SRGV:

gracias
 
De nuevo, vuelvo a la pregunta que hice a https://forum.mql4.com/ru/15972/page693 - aquí, el paso de parámetros entre indicadores e indicadores - 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 ?
 
Infinity:
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
 
cyclik33:


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, "");

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 16.05.2008                                                     |
//|  Описание : Возвращает нормализованное значение торгуемого лота.           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    lo - нормализуемое значение лота.                                       |
//|    ro - способ округления          (   False    - в меньшую,               |
//|                                        True     - в большую сторону)       |
//|    sy - наименование инструмента   ("" или NULL - текущий символ)          |
//+----------------------------------------------------------------------------+
double NormalizeLot(double lo, bool ro=False, string sy="") {
  double l, k;
  if (sy=="" || sy=="0") sy=Symbol();
  double ls=MarketInfo(sy, MODE_LOTSTEP);
  double ml=MarketInfo(sy, MODE_MINLOT);
  double mx=MarketInfo(sy, MODE_MAXLOT);

  if (ml==0) ml=0.1;
  if (mx==0) mx=100;

  if (ls>0) k=1/ls; else k=1/ml;
  if (ro) l=MathCeil(lo*k)/k; else l=MathFloor(lo*k)/k;

  if (l<ml) l=ml;
  if (l>mx) l=mx;

  return(l);
}
 
Vinin:

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


 
Infinity:


¡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?

Esto se puede hacer con parámetros, pero no con patrones. Primero hay que definir los criterios. Parecido, no similar. Y si es similar, en qué medida. Al menos en cuánto (porcentajes). En un caso el componente de tiempo, y en el otro el de precio. Cómo correlacionarlos entre sí. Aunque puedo adjuntar una capa neuronal. La capa Kohonen hace un buen trabajo con eso
 

¡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? Ga
 
Necron:
Roger, 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.