[¡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 922
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
¿Cómo puedo determinar el tipo de orden abierta?
Tipo de pedido()
En realidad, deberías empezar con un libro de texto... :) O al menos usar F1 en el MetaEditor
OP_BUY - posición de compra,
OP_SELL - posición de venta,
OP_BUYLIMIT - orden de compra pendiente al llegar a un nivel especificado, el precio actual es mayor que el nivel,
OP_BUYSTOP - orden de compra pendiente cuando se alcanza el nivel especificado, el precio actual está por debajo del nivel,
OP_SELLLIMIT - orden de venta pendiente cuando se alcanza el nivel especificado, el precio actual está por debajo del nivel,
OP_SELLSTOP - orden de venta pendiente cuando se alcanza el nivel especificado, el precio actual está por encima del nivel.
El pedido debe ser preseleccionado mediante la función OrderSelect().
Un valor de punto flotante es un número real como el doble
Y en lugar de los dígitos utilizar una variable de tipo int
Por ejemplo int dg=MarketInfo ( Symbol(), MODE_DIGITS);
datetime time;
//--------------------------------------------------------------- 2 --
int start()
{
int Total;
bool
Ans =false, // Ответ сервера после закрытия
Cls_B=false, // Критерий для закрытия Buy
Cls_S=false, // Критерий для закрытия Sell
Opn_B=false, // Критерий для открытия Buy
Opn_S=false; // Критерий для открытия Sell
//--------------------------------------------------------------- 3 --
// Учёт ордеров
for(int i=OrdersTotal()-1;i>=0;i--)
if (OrderSelect(i,SELECT_BY_POS)&&OrderSymbol()==Symbol()&&OrderType()>1)Total++;
if(Total!=0 || time==Time[1])return;
static int KolBars;
if (Close[0]-Open[0] > Point && Close[1]-Open[1] > Point && Bars == KolBars)
{
KolBars=Bars ; // запоминаем кол-во бар при которых совершались действия
}
// Торговые критерии
// Критерий откр. Buy
Opn_B=true;
//--------------------------------------------------------------- 7 --
if (Opn_B)
{OrderSend(Symbol(),OP_BUY,Lot,Ask,0,0,0);time=Time[1];}
}
Por favor, ayuda, lo pido por tercera vez. Un EA elemental, abre una posición de compra al aparecer una nueva vela (siempre que las 2 velas anteriores estén en verde), y cierra la posición al cierre de la vela en la que se abrió la posición, o al cierre de la siguiente vela.
El que ves arriba abre una posición cada vez que aparece una nueva vela, sin reaccionar al criterio de apertura, pero no entiendo cómo cerrar la posición, no lo he encontrado en el tutorial ni en los foros.
El valor en coma flotante es un número real de tipo doble
Y en lugar de los dígitos utilizar una variable de tipo int
Por ejemplo int dg=MarketInfo ( Symbol(), MODE_DIGITS);
Me escribieron: "NormalizeDouble(), comprueba el límite de lote máximo/mínimo, si son cinco dígitos - aumenta el stop y el beneficio en 10 veces".
La documentación dice: "Redondear el número de punto flotante a la precisión especificada. Los valores calculados de StopLoss y TakeProfit, así como los precios de apertura de las órdenes pendientes deben ser normalizados a la precisión, cuyo valor se almacena en la variable predefinida Dígitos".
No lo encontré en el libro de texto. Entendí que debo normalizar el precio actual, el StopLoss y el TakeProfit con NormalizeDouble --- ¿cómo debo normalizarlo?
valor doble -- en lugar de valor doble puedo usar, por ejemplo, Prise
int digits -- y esta variable dg es igual a MarketInfo( Symbol(), MODE_DIGITS); ???
Me escribieron: "NormalizeDouble(), comprueba el límite máximo/mínimo del lote, si son cinco dígitos - aumenta el stop y el beneficio en 10 veces".
La documentación dice: "Redondear el número de punto flotante a la precisión especificada. Los valores calculados de StopLoss y TakeProfit, así como los precios de apertura de las órdenes pendientes deben ser normalizados a la precisión, cuyo valor se almacena en la variable predefinida Dígitos".
No lo encontré en el tutorial, entiendo que necesito usar NormalizeDouble --- para normalizar el precio actual, StopLoss y TakeProfit ? Si es así, ¿cómo exactamente?
valor doble -- en lugar de ello, puedo establecer, por ejemplo, Prise
int digits -- y esta variable dg es igual a MarketInfo( Symbol(), MODE_DIGITS); ???
int StopLoss=50; // StopLoss en pips
int TakeProfit=150; // TakeProfit en pips
intOrderDistance=50; // Distancia de la orden pendiente en puntos
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
int pt=MarketInfo(Symbol(), MODE_POINT); // Tamaño del punto en la moneda de cotización
int dg=MarketInfo(Symbol(),MODE_DIGITS); // Número de dígitos después del punto decimal en el precio del símbolo
int StLev=MarketInfo(Symbol(),MODE_STOPLEVEL); // Nivel mínimo permitido de stop loss/stake profit en puntos
double pa=MarketInfo(Symbol(), MODE_ASK); // Precio de venta
double pb=MarketInfo(Symbol(), MODE_BID); // Precio de oferta
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
double slB=NormalizeDouble(pa-StopLoss*pt, dg); // normalizar el nivel de precio del StopLoss para la posición de compra
double tpB=NormalizeDouble(pa+TakeProfit*pt, dg); // normalizar el nivel de precio del TakeProfit para la posición Bid
double slS=NormalizeDouble(pb+StopLoss*pt, dg); // normalizar el nivel de precio del StopLoss para la posición de venta
double tpS=NormalizeDouble(pb-TakeProfit*pt, dg); // normalizar el nivel de precio del TakeProfit para la posición de venta
doubleB=NormalizeDouble(pa+SetOrderDistance*pt, dg); // normalizar el nivel de precios para colocar una orden pendiente de compra
double SetS=NormalizeDouble(pb-SetOrderDistance*pt, dg); // normalizar el precio para colocar una orden pendiente de venta
double slBS=NormalizeDouble(SetB-StopLoss*pt, dg); // normalizar el nivel de precio del StopLoss para una orden de compra pendiente
double tpBS=NormalizeDouble(SetB+TakeProfit*pt, dg); // normalizar el nivel de precio del TakeProfit de la orden de compra pendiente
double slSS=NormalizeDouble(SetS+StopLoss*pt, dg); // normalizar el nivel de precio del StopLoss para la orden de venta pendiente
double tpSS=NormalizeDouble(SetS-TakeProfit*pt, dg); // Normalizar el nivel de precio del TakeProfit de la orden de venta pendiente
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Imagínatelo... :)
Y no olvide el StopLev - int StLev=MarketInfo(Symbol(), MODE_STOPLEVEL);
Compruebe la distancia mínima para fijar las paradas y las retiradas para que no sea inferior a este valor
int StopLoss=50; // StopLoss en puntos
int TakeProfit=150; // TakeProfit en puntos
intOrderDistance=50; // Distancia de colocación de la orden pendiente en puntos
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
int pt=MarketInfo(Symbol(), MODE_POINT); // Tamaño del punto en la moneda de cotización
int dg=MarketInfo(Symbol(),MODE_DIGITS); // Número de dígitos después del punto decimal en el precio del símbolo
int StLev=MarketInfo(Symbol(),MODE_STOPLEVEL); // Nivel mínimo permitido de stop loss/stake profit en puntos
double pa=MarketInfo(Symbol(), MODE_ASK); // Precio de venta
double pb=MarketInfo(Symbol(), MODE_BID); // Precio de oferta
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
double slB=NormalizeDouble(pa-StopLoss*pt, dg); // normalizar el nivel de precio del StopLoss para la posición de compra
double tpB=NormalizeDouble(pa+TakeProfit*pt, dg); // normalizar el nivel de precio del TakeProfit para la posición Bid
double slS=NormalizeDouble(pb+StopLoss*pt, dg); // normalizar el nivel de precio del StopLoss para la posición de venta
double tpS=NormalizeDouble(pb-TakeProfit*pt, dg); // normalizar el nivel de precio del TakeProfit para la posición de venta
doubleB=NormalizeDouble(pa+SetOrderDistance*pt, dg); // normalizar el nivel de precios para colocar una orden pendiente de compra
double SetS=NormalizeDouble(pb-SetOrderDistance*pt, dg); // normalizar el precio para colocar una orden pendiente de venta
double slBS=NormalizeDouble(SetB-StopLoss*pt, dg); // normalizar el nivel de precio del StopLoss para una orden de compra pendiente
double tpBS=NormalizeDouble(SetB+TakeProfit*pt, dg); // normalizar el nivel de precio del TakeProfit de la orden de compra pendiente
double slSS=NormalizeDouble(SetS+StopLoss*pt, dg); // normalizar el nivel de precio del StopLoss para la orden de venta pendiente
double tpSS=NormalizeDouble(SetS-TakeProfit*pt, dg); // Normalizar el nivel de precio del TakeProfit de la orden de venta pendiente
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Imagínatelo... :)
Y no olvide el StopLev - int StLev=MarketInfo(Symbol(), MODE_STOPLEVEL);
Compruebe la distancia mínima para fijar las paradas y las retiradas para que no sea inferior a este valor
¡¡¡Muchas gracias!!! Lo investigaré. )
La ventana de alerta ha dejado de aparecer. Hay una notificación sonora, hay una entrada de registro, pero la ventana flotante no aparece.
He limpiado el terminal, he recompilado todo. ¿Cuál podría ser la razón?
¿Cómo puedo crear una función y llamarla?
Por enésima vez, lee un libro de texto, estudia el material... :)