[ARCHIVO]Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No puedo ir a ningún sitio sin ti - 5. - página 313

 
hoz:

Cómo hacer para que cuando se pase un parámetro de tendencia a esta función, que será responsable de la transferencia de la tendencia principal asumida en el momento, el cálculo se base en este parámetro.

Es decir, si latendencia == a la baja, la función en el bucle era como ahora, y sila tendencia == al alza, se intercambiaban en el bucle el Open[i] y el Close[i], para que se cumplieran las condiciones. Porque en ese caso el precio de cierre de la barra será menor que el precio de apertura y la diferencia será menor.


bool trend;

if ((2*trend-1)*Δ=>const) cnt++;
if ((2*trend-1)*Δ<const) cnt=0;
En ese caso2*tendencia-1toma los valores +1 y -1, es decir, si tendencia=verdadera será alcista y tendencia=falsa será bajista mientras que Δ se tomará respectivamente con signo correcto o incorrecto. Este es sólo un ejemplo de cómo las matemáticas sustituyen al si.
 

gyfto, ¿te funciona el script de prueba del kit?

Yo lo habría hecho:

//в шапке
#include <SharedMemoryMT4.mqh>
//в инит. Создание и открытие не обязательно. Эти функции для ускорения работы с памятью.
MemoryCreate(1, "", NULL, -1, "ind", 60*GlobalVariableGet("ADXBars"));
// Вариант более быстрый, чем выше:
MemoryCreateProjection(1, "", NULL, -1, "ind", 60*GlobalVariableGet("ADXBars"));

//в деинит
MemoryCloseName(1, "", "ind");
//в старт вместо 
for(; i<Σ; i++) MemoryWriteInt(1, "", -1, "ind", i * 4, iBars(sn, 1));//ind[i]=iBars(sn, 1);
#property show_inputs
#include <SharedMemoryMT4.mqh>
extern int x;//сколько секунд назад с данного момента прикрепления смотрим значения TOLHCV

int init()
  {
//   MemoryOpen(1, "", -1, "ind"); // Это не требуется.
   return(0);
  }
int start()
  {
   //MemoryReadInt(1, "", -1, "ind", i) это ind[i], GlobalVariableGet("final") это последний элемент в массиве, а ф-ла выглядит так: n=ind[final]-ind[final-x]+1
   int n=MemoryReadInt(1, "", -1, "ind", GlobalVariableGet("final"))-MemoryReadInt(1, "", -1, "ind", GlobalVariableGet("final")-x)+1;
   Alert(TimeToStr(TimeCurrent(),TIME_SECONDS), ": Time=", TimeToStr(Time[n], TIME_SECONDS), ", Open=", Open[n], ", High=", High[n], ", Low=", Low[n], ", Close=", Close[n], ", Volume=", Volume[n]);
   return(0);
  }

El resto es correcto. No entró en el protocolo de transferencia de datos solamente.

La creación, apertura y asignación de memoria son opcionales. Estas funciones sirven para acelerar el manejo de la memoria. Para el funcionamiento más sencillo de la biblioteca, sólo se necesitan las funciones de lectura y escritura. La biblioteca hará el resto. Además, puedes leer antes de escribir. Se asignará la memoria del tamaño solicitado y la función devolverá cero. Ya que todavía no hay nada.

 

Zhunko, creo que no. Comment() no da salida, sólo escribe en el registro, en el log:

15:51:13 Check_SharedMemoryMT4.dll AUDUSD,M1 inputs: Area=1; InitPrefix=""; UserGlobal=25; UserTerminal=50; UserWindow=100; CheckWriteRead=false; CheckWrite=false; CheckRead=false; CheckGeneral=false
CheckProjection=false; CheckClose=false; NamePrefix="Check"; NameMemory0="CheckMemory0"; NameMemory1="CheckMemory1"; NameMemory2="CheckMemory2"; NameMemory3="CheckMemory3"; NameMemory4="Memory4"
Index=-1; StartByte=0; MemorySize=64000; bValue=true; cValue=123; ucValue=255; shValue=32100; ushValue=65535; nValue=2147012345; fValue=1234.56789012; dValue=1234.56789012; sValue0="Контроль = 1234.56789"
sValue1="Контроль = 9876.54321"; sValue2="Привет мир!!!"; sValue3="Миру мир!"; sValue4="Неправильное  имя";

Está todo en una línea, lo he movido aquí para que no haya un ancho de pantalla anormal.

 
gyfto:

Zhunko, creo que no. Comment() no da salida, sólo escribe en el registro, en el log:

Está todo en una línea, lo he movido aquí para que no haya un ancho de pantalla anormal.

Echa un vistazo al vídeo. Haz exactamente lo mismo. Si no funciona, lo resolveremos. A mí me funciona.
 
Probablemente estoy a punto de ganar un concurso por el error más tonto. No tenía declarada la variable GV ADXBars, por lo que escribí "error de método". Además no había alineación en el límite de la int. Pero la alerta sigue emitiendo todos los ceros, con o sin alineación. Veré el vídeo e intentaré resolverlo por mí mismo primero. Si fallo, intentaremos resolverlo juntos.
 

TarasBY artmedia70 hoz

¡Gracias señores oficiales!

 
CYBOPOB:

TarasBY artmedia70 hoz

¡Gracias señores oficiales!

¿Te disparaste a ti mismo? :)))
 
artmedia70:
¿Qué, te disparaste a ti mismo? :)))


Dos veces 8-[
 

Hola. Por favor, ayúdenme con este tema:

https://www.mql5.com/ru/forum/144634

¡Muchas gracias!

 

A mí también me dio el puto error. De hecho, no hay ninguna lógica. Para abrir una orden pendiente segúnhttps://book.mql4.com/ru/appendix/limits, el precio de apertura debe estar por debajo del Bid (para vender) o por encima del Ask (para comprar). Estoy haciendo lo que se requiere.

//+-------------------------------------------------------------------------------------+
//| Открытие длинной позиции                                                            |
//+-------------------------------------------------------------------------------------+
bool OpenBuy()
{
   int ticket = -1;
   double OOP = High[1] + i_thresholdToUp * pt;
   pr ("ND(OOP) = " + ND(OOP) + " ; Ask = " + Ask);

   if (ND(OOP) > Ask)
       ticket = OrderSend(Symbol(), OP_BUYSTOP, 0.1, ND(OOP), 3, 0, 0, NULL, i_magic, 0, CLR_NONE);
   else pr ("Ордер послать не удалось " + GetLastError());
   
   if (ticket > 0)
   {
       lastBarTime = Time[0];               // На текущем баре все необходимые действия..
                                            // .. успешно выполнены
       return (true);
   }
}

De vez en cuando me salen errores 0 y 130. Aunque el 130 es un error de stop erróneo, que puede ocurrir durante la modificación, pero no durante la apertura de la orden.

En la captura de pantalla la situación y la impresión mostrada utilizando la función pr.

Error de parada mal colocada

Por favor, aconséjeme cómo deshacerse de este error. Estoy realmente harto de este error. Lógicamente, no está en el tema en absoluto.

Razón de la queja: