Lógica de aprendizaje - página 5

 
Vinin:


Esa no es mi línea. Es el autor

Código óptimo de start()

Estas dos líneas parecen extrañas, por decirlo suavemente:

   limit = Bars - counted_bars-1;
   if(Bars - counted_bars > 2) limit = Bars - nPeriod-1;

mejor así:

   if(Bars - counted_bars > 2) limit = Bars - nPeriod-1;
   else limit = Bars - counted_bars-1;
 
PapaYozh:

No entiendo por qué tenemos que bailar alrededor de las variables booleanas cuando podemos escribirlo de esta manera:

Me gustó, gracias por recordármelo, PapaYozh. Yo mismo he creado este tipo de construcciones, y he olvidado...
 
Vinin:


Y la lógica también, la lógica del pensamiento.

La tercera opción es abandonar por completo las condiciones lógicas del indicador. La pregunta que se plantea es si es posible.

Intentémoslo.

Para ello añadiremos un par de variables lógicas

El código completo de la función de inicio tiene ahora el siguiente aspecto


Me parece que se puede simplificar

for(int i = 0; i < limit; i++)
{
// Opción tres_v1

high=iMA(NULL,0,period,0,MODE_EMA,PRICE_HIGH,i);
low=iMA(NULL,0,period,0,MODE_EMA,PRICE_LOW,i);
atr=high-low;
MaTDn[i] = low - atr;
MaTUp[i] = high + atr;
}

Archivos adjuntos:
 
Mathemat:
Me gustó, gracias por recordármelo, PapaYozh. Yo mismo creé tales construcciones - y lo olvidé...

En mi opinión, hay un uso excesivo de la llamada a la función Symbol().

Yo lo escribiría así:

   string smbl=Symbol();
   showEUR  = ( StringFind(smbl, "EUR", 0) != -1);
   showUSD  = ( StringFind(smbl, "USD", 0) != -1);
   showGBP  = ( StringFind(smbl, "GBP", 0) != -1);
   showCHF  = ( StringFind(smbl, "CHF", 0) != -1);
   showJPY  = ( StringFind(smbl, "JPY", 0) != -1);
Pero no se trata de lógica :)
 
Vinin:

En realidad es muy sencillo. Hay un deseo de ayudar a los demás a hacer el mejor código, y de aprender de los demás.

No es ningún secreto que uno acaba por desarrollar ciertos estereotipos que a veces (la mayoría de las veces) ayudan y a veces entorpecen.

Prepararé una variante del indicador e intentaré explicar lo que se ha hecho y por qué. Si está interesado, por supuesto.


No hay manera de explicar con un ejemplo cómo hacer un código óptimo: habrá demasiadas omisiones.

La cuestión es que hay muchas reglas para crear un código óptimo. Por ejemplo, no muchos de los que están familiarizados con el lenguaje MQL4 saben que es mucho más fácil para un procesador realizar operaciones de suma y resta que de multiplicación y división. No mucha gente sabe que desde el punto de vista de la optimización del código es mejor escribir a=b+b que a=b*2. Así que creo que para entender la lógica de la programación y la optimización es mucho más útil enviar a los interesados a trabajos sobre la construcción de un código óptimo y el estudio de los lenguajes algorítmicos, así como acostumbrar a los usuarios a crear diagramas de flujo de los futuros programas para evitar omisiones y minimizar el retrabajo.

Adjunto un enlace a un libro muy bueno sobre la construcción de códigos que se puede descargar en este post.

С. S. McConnel "El código perfecto".


Puede descargar el libro aquí: http://depositfiles.com/files/ebk6t6t5h (tamaño de archivo 21 Mbytes. Formato - djvu)

Así que, en general, este hilo sólo puede tratar casos especiales de las secciones de código fuente y optimizado con explicaciones de por qué la sección de código optimizado es mejor que la fuente y por qué está optimizada de esta manera. Creo que eso es exactamente lo que querías en un principio.

 
drknn:


Adjunto a este post hay un enlace de descarga de un excelente libro sobre la construcción de códigos.

С. S. McConnel "El código perfecto".

+1, libro muy útil.
 
drknn:

Así que, en general, en este hilo sólo podemos discutir casos especiales de las secciones de código fuente y optimizado con explicaciones de por qué la sección de código optimizado es mejor que la fuente y por qué se optimiza de tal manera. Creo que eso es exactamente lo que querías desde el principio.

Tampoco está mal, pero aun así sería bueno aclarar el nombre de una rama o empezar a estudiar la lógica.

La verdad es que no sé cómo hacer lo segundo...))

 
denis_orlov:

Tampoco está mal, pero sería bueno aclarar el nombre de la rama o empezar a estudiar la lógica.

La verdad es que no sé cómo hacer lo segundo...))


Lógica(griego λογική - "ciencia del razonamiento", "arte de razonar" de λόγος - "discurso", "razonamiento", "pensamiento")- la ciencia de las formas, métodos y leyes de la actividad cognitiva intelectual, formalizada con el lenguaje lógico. Dado que este conocimiento se deriva de la razón, la lógica también se define como la ciencia de las formas y leyes del pensamiento correcto. Dado que el razonamiento adopta la forma de razonamiento en el lenguaje, del que la prueba y la refutación son casos especiales, la lógica se define a veces como la ciencia de los modos de razonamiento o la ciencia de las formas de probar y refutar. La lógica como ciencia estudia las formas de llegar a la verdad en el proceso de cognición de forma indirecta, no a partir de la experiencia sensorial, sino de los conocimientos obtenidos con anterioridad, por lo que también puede definirse como una ciencia sobre las formas de derivar el conocimiento por inferencia.

El conocimiento deductivo, obtenido mediante la aplicación de las leyes de la lógica y los métodos del pensamiento lógico, - la finalidad de toda acción lógica, dirigida a alcanzar la verdad y la aplicación del conocimiento resultante a un conocimiento más profundo de los fenómenos y acontecimientos del mundo.

Una de las principales tareas de la lógica es determinar cómo llegar a una conclusión a partir de una premisa(razonamiento adecuado) y cómo obtener un conocimiento verdadero sobre el tema del pensamiento para profundizar en los matices del objeto de estudio y sus relaciones con otros aspectos del fenómeno en cuestión.

La lógica es una de las herramientas de casi todas las ciencias.

 
denis_orlov:

Tampoco está mal, pero sería bueno aclarar el nombre de la rama o empezar a estudiar la lógica.

Yo mismo no sé cómo hacer lo segundo...)


Puedo compartir lo que fue para mí.

Tardé tres años en tratar de entender la lógica como ciencia; todavía no podía captar la esencia, por ejemplo, para qué necesito la lógica. No era más que un conjunto de patrones casi inútiles, pero sentí que algo no funcionaba, así que seguí leyéndolo, intentando razonar con sus esquemas, resolviendo todo tipo de problemas lógicos con la ayuda de fórmulas. Y entonces, de la nada, me di cuenta de repente... Luego, cuando finalmente me di cuenta del valor de esta disciplina, comencé a involucrar activamente a mis amigos en el estudio de la lógica. Estaba literalmente "en llamas" con la lógica. Mis amigos fueron atraídos activamente por todo el humor lógico, la belleza de las conclusiones difíciles, la insolubilidad de las paradojas, y mientras yo estaba cerca, aprendieron al menos algo. Pero cuando se les deja a solas consigo mismos, se desvanecen como las brasas de un incendio. Ninguno de ellos había encendido el fuego de su propio espíritu. Aquí comprendí que estaban interesados en mí, pero no más -ninguno de ellos tenía el poder de patear detrás de ellos que los obligaría a entrar en esta ciencia. Y luego todos los que realmente habían estudiado Lógica, para mí, los había dividido en dos categorías. Todos se vieron obligados a estudiarlo. No había forma de evitarlo. Algunos profesores que enseñan lógica en las universidades dicen que es muy difícil para los estudiantes. Al contrario, se sorprenden de lo difícil que les resultó y de lo fácil que es aplicarlo. Así que, para mí, he dividido a todos los forzados en dos clases: los que se enamoraron de la lógica mientras la estudiaban, y los que aprobaron sus créditos y se olvidaron de ella. Siempre me resulta agradable hablar con los que se han enamorado de ella: te entienden a la primera. Pero a veces es difícil lidiar con los olvidadizos: esas personas juegan a la ruleta rusa con su propia muerte. El hecho de que conscientemente sólo puede actuar sobre un plan preestablecido. Esta es la única manera de restablecer el orden en sus vidas. Elaborar un plan de acción es un proceso de reflexión. Si no se hace correctamente, el resultado no será bueno. El que tiene caos en su cabeza, también tiene desorden en sus asuntos. Así que resulta que el pensamiento controla nuestras vidas. Y abandonar la Lógica aquí es un camino rápido a la tumba.

:) Ya está bien, si no puedo estar horas hablando de esas cosas y al final nos aleja del tema de esta rama.

P.D.

Sólo puedo añadir que me encontraba en una situación tan difícil en mi vida que no sabía qué hacer: todos mis planes y esperanzas se habían desmoronado. Duele mucho. La desesperanza me asfixiaba. Decidí que hasta que no entendiera la situación, no podría decidir qué hacer con mi vida y cómo relacionarme con los que me rodean. Sabía por los libros que existe una ciencia como la Lógica. En ese momento, decidí que tenía que aprenderlo, para que mis conclusiones fueran correctas. La complejidad y el dolor de mi situación vital fueron la fuerza que me impulsó a buscar respuestas a mis preguntas no sólo en la lógica, sino también en muchas otras ciencias. Eso ya es cosa del pasado. ¿Por qué te digo esto? Sólo quería que entendieras lo que me llevó a estudiar lógica. Por así decirlo, te mostré con el ejemplo que no soy una excepción y que yo también tuve que estudiar esta disciplina por debajo de la vara. Pero no lo estudié en la universidad, sino por mi cuenta.

 
nikost:


Me parece que podemos simplificarlo aún más

for(int i = 0; i < límite; i++)
{
// variante tres_v1

high=iMA(NULL,0,period,0,MODE_EMA,PRICE_HIGH,i);
low=iMA(NULL,0,period,0,MODE_EMA,PRICE_LOW,i);
atr=alto-bajo;
MaTDn[i] = low - atr;
MaTUp[i] = alto + atr;
}


He tratado de mantener la representación como en el código original. El ATR se calcula de forma diferente. Si comparas los dos indicadores, verás la diferencia.