Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 934

 
Aleksei Beliakov:

¿Por qué la última línea no tiene una barra, y es posible devolver un valor de una macro

esto es sintaxis de sustitución de macros, pegado de cadenas

este es un ejemplo de cómo devolver un valorhttps://www.mql5.com/ru/forum/318246/page10#comment_12652228

 
Por favor, ¿alguien puede ayudarme?
 
jaffer wilson:
Por favor, ¿alguien puede ayudarme?
en lugar de la letra, haz preguntas. Quien esté en el aire considerará y ayudará con la sustancia del foro.
 
si (MA5>MA20)
{
Señal=1;
}

if(Signal>TradeLevel) // TradeLevel se pone a 0.
{
ticket=OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Ask-SL*Point,Bid+TP*Point, "Optim",16384,0,Blue);
}



¿Puede decirme por qué esta lógica no funciona? (mql4)
Las ofertas no se abren

(todo lo demás, las variables, todo está descrito - plantilla owl estándar en MT, sin errores de compilación)
 
Ivan Butko:

   if (MA5>MA20)
     {
      Signal=1;
     }
   if(Signal>TradeLevel) // TradeLevel установлен в 0.
     {
      ticket=OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Ask-SL*Point,Bid+TP*Point,"Optim",16384,0,Blue);
     } 


¿Por qué no funciona esta lógica? (mql4)
Las operaciones no se abren

(todo lo demás, las variables, todo está descrito - plantilla owl estándar en MT, sin errores de compilación)

Entonces, ¿la lógica no funciona o las posiciones del EA no se abren?

Es una buena costumbre mirar primero la revista "Expertos": hay mucho que escribir. Y también haría bien en revisar el "Diario".

Veo exactamente dos errores y una incertidumbre al enviar una solicitud de comercio.

 
Artyom Trishkin:

Entonces, ¿la lógica no funciona o las posiciones del EA no se abren?

Es una buena costumbre mirar primero la revista "Expertos": hay mucho que escribir. Y no está de más mirar también el "Diario".

A bote pronto, veo exactamente dos errores y una incertidumbre al enviar una solicitud de intercambio.

Gracias, ¡funciona!

Acabo de reimplantar esta lógica en el EA MACD estándar.
Sólo necesitaba una base para desplegar diferentes señales y resumirlas.

Disculpe las molestias. (por cierto, el registro estaba vacío, tampoco había errores, simplemente no abría las operaciones y ya está).

Si no le importa, por favor, señale el error

 

Hay un código primitivo

templ(T)class CData{
public:CData(){};~CData(){};
       T Total(T &mas[]  ,int y){return(ArraySize(mas));}    
       T Total(T &mas[][],int y){return(ArraySize(mas));}}

Pregunta como llamar a la funciónTotal(), quiero llamarla por ejemplo en OnInit(), chicos por favor no sean groseros, soy un burro, no entiendo la ayuda? ¿Tengo que borrar la memoria de la clase, y si es así, dónde y cómo?

 

FALLO AL CALCULAR EL RIESGO POR OPERACIÓN.

TAREA: Calcule el tamaño del lote para un riesgo permitido por operación de 250 dólares para cualquier instrumento (incluyendo divisas, mullions, CFDs).

MI REALIZACIÓN (para BUY, fragmento de código de función):

//valSL - размер стопа
//price - цена открытия ордера
//iLots - размер лота
SL_punkt=(price-valSL)/MarketInfo(currencySelect,MODE_POINT); //Переводим денежное выражение в пункты
 double pricePunkt=NormalizeDouble(iLots*MarketInfo(symb,MODE_TICKVALUE)*SL_punkt,MarketInfo(symb,MODE_DIGITS)); //Вычисляем уровень убытка при заданном размере лота

EL PROBLEMA: Este código calcula correctamente las pérdidas para todos los activos, incluidos los pares de divisas (incluidos los cruces), el oro, el petróleo, PERO LOS ÍNDICES, nq100, POR EJEMPLO,NO SE CALCULAN correctamente. ¡Es decir, los datos de mi script (pérdidas potenciales de operaciones) son consistentemente 10 veces MENOS que lo que lee el Probador de Estrategias de MT4!

ALGUNAS NOTAS:

1. Las pruebas se realizaron en la terminal de Alpari.

2. Según el terminal, la forma de calcular los beneficios para XAUUSD, BRN (petróleo) y NQ100 es "CFD", para los pares de divisas, respectivamente, "forex".

Creo que el problema está en el tamaño del contrato, que no tengo en cuenta (para el petróleo - 1000, para XAUUSD - 100, para NQ100 - 10). Pero entonces, ¿por qué XAUUSD, BRN cuentan correctamente (y los pares de divisas también), pero NQ100 no? ¿Quizás, a pesar de que en las propiedades del símbolo del terminal de Alpari el método de cálculo de beneficios es "CFD", pero en realidad se cuenta como "Forex"? ¿Es esto posible?

En general, agradecería que alguien me explicara el error de mi script y cómo solucionarlo.

¡GRACIAS!

 
Сергей Михеев:

FALLO AL CALCULAR EL RIESGO POR TRANSACCIÓN.

MODO _TICKSIZE

 
Yurij Kozhevnikov 2019.08.10 17:57 ES
Сергей Михеев:

FALLO EN EL CÁLCULO DEL RIESGO POR OPERACIÓN.

MODO _TICKSIZE

Leer xxxxxxxx

Por desgracia, esto no resuelve el problema. Tengo

MODE_TICKVALUE равно MODE_POINT и равно MODE_TICKSIZE (для NQ100 это 0.1)

También he probado esta variante de código:

double StoimPunkt(string B){
double S = MarketInfo(B,MODE_TICKVALUE)/(MarketInfo(B,MODE_TICKSIZE)/MarketInfo(B,MODE_POINT));return(S);
}
//valSL - размер стопа
//price - цена открытия ордера
//iLots - размер лота
SL_punkt=(price-valSL)/MarketInfo(symb,MODE_POINT); //Переводим денежное выражение в пункты
 double pricePunkt=NormalizeDouble(iLots*StoimPunkt(symb)*SL_punkt,MarketInfo(symb,MODE_DIGITS)); //Вычисляем уровень убытка при заданном размере лота

EL RESULTADO ES EXACTAMENTE EL MISMO QUE EN MI EJEMPLO ANTERIOR.

¿Alguna otra idea?

Razón de la queja: