Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 657
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
Parece que todo está en su punto e incluso con referencias... Justo cuando alguien declara que ha leído la documentación y pide que se eliminen las redes (que, por cierto, se utilizan en los FORTS)... hay que ser sarcástico aquí.
Asegúrate de que no te echen. )
tarde, ya estás ahí.
Ejemplo para una cuenta de cobertura:
La primera operación es Comprar 0,02 y la segunda es Vender 0,01. En total dos posiciones: Comprar 0,02 y Vender 0,001. Luego cerramos la posición Vender 0,01 y cerramos la posición Comprar 0,02:
//| TestEA.mq5 |
//| Copyright © 2016, Vladimir Karputov |
//| http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2016, Vladimir Karputov"
#property link "http://wmua.ru/slesar/"
#property version "1.00"
#include <Trade\Trade.mqh>
#include <Trade\PositionInfo.mqh>
CTrade m_trade; // trading object
CPositionInfo m_position; // trade position object
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
static long counter=0;
counter++;
if(counter%300==0 && counter<700)
{
static int number=0;
number++;
if(number==1)
m_trade.Buy(0.02);
if(number==2)
m_trade.Sell(0.01);
}
if(counter>7000)
{
int positions= PositionsTotal();
if(positions == 0)
return;
int positions_total=PositionsTotal();
for(int i=positions_total-1;i>=0;i--)
if(m_position.SelectByIndex(i))
m_trade.PositionClose(m_position.Ticket(),-1);
}
}
//+------------------------------------------------------------------+
y Diario:
Trades 2016.02.25 00:13:35 deal #2 buy 0.02 EURUSD at 1.10167 done (based on order #2)
Trade 2016.02.25 00:13:35 deal performed [#2 buy 0.02 EURUSD at 1.10167]
Trade 2016.02.25 00:13:35 order performed buy 0.02 at 1.10167 [#2 buy 0.02 EURUSD at 1.10167]
TestEA (EURUSD,H1) 2016.02.25 00:13:35 CTrade::OrderSend: instant buy 0.02 EURUSD at 1.10167 [done at 1.10167]
Trade 2016.02.25 00:30:17 instant sell 0.01 EURUSD at 1.10157 (1.10157 / 1.10164 / 1.10157)
Trades 2016.02.25 00:30:17 deal #3 sell 0.01 EURUSD at 1.10157 done (based on order #3)
Trade 2016.02.25 00:30:17 deal performed [#3 sell 0.01 EURUSD at 1.10157]
Trade 2016.02.25 00:30:17 order performed sell 0.01 at 1.10157 [#3 sell 0.01 EURUSD at 1.10157]
TestEA (EURUSD,H1) 2016.02.25 00:30:17 CTrade::OrderSend: instant sell 0.01 EURUSD at 1.10157 [done at 1.10157]
TestEA (EURUSD,H1) 2016.02.25 02:12:06 PositionClose #3 POSITION_TYPE_SELL 0.01
Trade 2016.02.25 02:12:06 instant buy 0.01 EURUSD at 1.10131, close #3 (1.10123 / 1.10131 / 1.10123)
Trades 2016.02.25 02:12:06 deal #4 buy 0.01 EURUSD at 1.10131 done (based on order #4)
Trade 2016.02.25 02:12:06 deal performed [#4 buy 0.01 EURUSD at 1.10131]
Trade 2016.02.25 02:12:06 order performed buy 0.01 at 1.10131 [#4 buy 0.01 EURUSD at 1.10131]
TestEA (EURUSD,H1) 2016.02.25 02:12:06 CTrade::OrderSend: instant buy 0.01 position #3 EURUSD at 1.10131 [done at 1.10131]
TestEA (EURUSD,H1) 2016.02.25 02:12:06 PositionClose #2 POSITION_TYPE_BUY 0.02
Trade 2016.02.25 02:12:06 instant sell 0.02 EURUSD at 1.10123, close #2 (1.10123 / 1.10131 / 1.10123)
Trades 2016.02.25 02:12:06 deal #5 sell 0.02 EURUSD at 1.10123 done (based on order #5)
Trade 2016.02.25 02:12:06 deal performed [#5 sell 0.02 EURUSD at 1.10123]
Trade 2016.02.25 02:12:06 order performed sell 0.02 at 1.10123 [#5 sell 0.02 EURUSD at 1.10123]
TestEA (EURUSD,H1) 2016.02.25 02:12:06 CTrade::OrderSend: instant sell 0.02 position #2 EURUSD at 1.10123 [done at 1.10123]
¿Qué es exactamente lo que no está claro? ¿Que hay que abrir una orden opuesta con el mismo volumen para cerrar la posición?
¿Quién sabe si"POSITION_PROFIT" incluye la comisión y el intercambio?
Si no es así, ¿qué parámetro debe utilizarse para averiguar el importe de la comisión de un pedido en MQL5?
¿Quién sabe si"POSITION_PROFIT" incluye la comisión y el intercambio?
Si no, ¿qué parámetro se necesita para averiguar el importe de la comisión acumulada en MQL5?
POSITION_PROFIT es simplemente el beneficio de la posición (sin deducción de comisiones, swaps...). Para conocer el swap acumulado deuna posición, haga lo siguiente:
POSITION_SWAP
Canje acumulativo
doble
Y la comisión final y el swap total, se pueden obtener después de cerrar la posición, en el historial de transacciones:
COMISIÓN_DE_TRATAMIENTO
Comisión_de_tratos
doble
DEAL_SWAP
Intercambio acumulado al cierre
doble
¿Quién sabe si"POSITION_PROFIT" incluye la comisión y el intercambio?
Si no es así, ¿qué parámetro debe utilizarse para averiguar el importe de la comisión cobrada por un pedido en MQL5?
En ruso, una orden no puede generar beneficios ni pérdidas y sólo es una orden de ejecución. Cuando la orden se ejecuta, usted recibe su posición en el mercado al precio elegido.
POSITION_PROFIT es sólo el beneficio de la posición (sin comisiones, swaps...). Puedes conocer el swap acumulado dela posición así:
Y la comisión final y el canje final, lo puedes saber después de cerrar la posición, en el historial de transacciones:
Pues bien, todo esto está mal, o más bien incompleto.
Por qué necesito saber la comisión después del cierre, o mejor dicho, necesito saberla, pero en cualquier momento, digamos, la cuenta tiene una comisión y un empate o breakeven, cómo puedo calcular para que el primer desencadenamiento fuera en el nivel en el que la comisión y los swaps se superponen en caso de retroceso del precio y el cierre. Añado 1pp para cubrir la comisión. ¿Qué pasa con los swaps, ya que la posición puede permanecer en el mercado durante una semana y durante este tiempo puede tardar 3pp en ganar swaps y cerrarse con un inconveniente cuando se active el Breakeven?
¿O tal vez no entiendo los cálculos?
En ruso, una orden no puede ser ni una ganancia ni una pérdida, sólo es una orden de ejecución. Una vez que se ejecuta la orden, usted obtiene su posición en el mercado al precio elegido.
Todo esto está mal, o más bien incompleto.
Por qué necesito saber la comisión después del cierre, o más bien necesito saberla, pero en cualquier momento, supongamos que la cuenta tiene comisión y trailing o break-even, cómo calculo para que el primer golpe haya sido a un nivel que se superponga a la comisión y los swaps en caso de retroceso del precio y cierre. Añado 1pp para cubrir la comisión. ¿Qué pasa con los swaps, ya que la posición puede permanecer en el mercado durante una semana y durante este tiempo puede tardar 3pp en ganar swaps y cerrarse con un inconveniente cuando se active el Breakeven?
¿O me he perdido algo en los cálculos?
¿Quién sabe si"POSITION_PROFIT" incluye la comisión y el intercambio?
Si no es así, ¿qué parámetro se necesita para averiguar el importe de la comisión cobrada por un pedido en MQL5?
No estoy imponiendo la biblioteca MT4Orders. Pero tal vez sería más fácil llamar a la buena y vieja OrderCommission.
No sólo funciona en las cuentas de cobertura, sino también en las netas.
Entiendo que"POSITION_PROFIT" ya incluye todo (canje, beneficio, comisión).