Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 657
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Sembra essere tutto sul punto e anche con riferimenti... Proprio quando qualcuno dichiara di aver letto la documentazione e chiede di togliere la rete (che, tra l'altro, si usa su FORTS)... devi essere sarcastico qui.
Assicurati di non essere mandato via. )
in ritardo, sei già lì.
Esempio per un conto di copertura:
La prima operazione è Comprare 0.02 e la seconda operazione è Vendere 0.01. Totale due posizioni: Comprare 0.02 e Vendere 0.001. Poi chiudiamo la posizione Vendere 0.01 e chiudiamo la posizione Comprare 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);
}
}
//+------------------------------------------------------------------+
e il Journal:
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]
Cosa esattamente non è chiaro? Che è necessario aprire un ordine opposto con lo stesso volume per chiudere la posizione?
Chi lo sa -"POSITION_PROFIT" include commissioni e swap?
In caso contrario, quale parametro dovrebbe essere usato per trovare la quantità di commissione per un ordine in MQL5?
Chi lo sa -"POSITION_PROFIT" include commissioni e swap?
Se no - quale parametro è necessario per trovare la quantità di commissioni maturate in MQL5?
POSITION_PROFIT è semplicemente il profitto della posizione (senza deduzione di commissioni, swap...). Per scoprire lo swap accumulato diuna posizione, fate come segue:
POSIZIONE_SWAP
Swap cumulativo
doppio
E la commissione finale e lo swap totale, possono essere ottenuti dopo che la posizione è chiusa, nella storia delle transazioni:
COMMISSIONE_AFFARE
Commissione_di_affare
doppio
DEAL_SWAP
Swap accumulato alla chiusura
doppio
Chi lo sa -"POSITION_PROFIT" include commissioni e swap?
In caso contrario, quale parametro dovrebbe essere usato per scoprire l'ammontare della commissione addebitata per un ordine in MQL5?
In russo, un ordine non può realizzare un profitto o una perdita ed è solo un ordine da eseguire. Quando l'ordine viene eseguito, si riceve la posizione sul mercato al prezzo scelto.
POSITION_PROFIT è solo il profitto della posizione (senza commissioni, swap...). Potete scoprire lo swap accumulato dellaposizione in questo modo:
E la commissione finale e lo swap finale, si può scoprire dopo che la posizione è chiusa, nella storia delle transazioni:
Beh, tutto questo è sbagliato, o piuttosto incompleto.
Perché ho bisogno di conoscere la commissione dopo la chiusura, o meglio ho bisogno di conoscerla, ma in qualsiasi momento, diciamo, il conto ha una commissione e un pareggio o breakeven, come posso calcolare in modo che il primo innesco sia stato sul livello in cui commissione e swap sono sovrapposti in caso di rollback del prezzo e chiusura. Aggiungo 1pp per coprire la commissione. E per quanto riguarda gli swap, dato che la posizione può rimanere sul mercato per una settimana e durante questo periodo può richiedere 3pp per guadagnare swap ed essere chiusa con uno svantaggio quando scatta il Break Even?
O forse non capisco i calcoli?
In russo, un ordine non può essere né un profitto né una perdita, è solo un ordine da eseguire. Una volta che l'ordine viene eseguito, si ottiene la posizione sul mercato al prezzo scelto.
Tutto questo è sbagliato, o piuttosto incompleto.
Perché ho bisogno di conoscere la commissione dopo la chiusura, o meglio ho bisogno di conoscerla, ma in qualsiasi momento, supponiamo che il conto abbia una commissione e trailing o break-even, come faccio a calcolare in modo che il primo colpo sia stato a un livello che si sovrappone alla commissione e agli swap in caso di rollback del prezzo e chiusura. Aggiungo 1pp per coprire la commissione. E per quanto riguarda gli swap, dato che la posizione può rimanere sul mercato per una settimana e durante questo periodo può richiedere 3pp per guadagnare swap ed essere chiusa con uno svantaggio quando scatta il Break Even?
O mi manca qualcosa nei calcoli?
Chi lo sa -"POSITION_PROFIT" include commissioni e swap?
In caso contrario, quale parametro è necessario per scoprire la quantità di commissione applicata per un ordine in MQL5?
Non sto imponendo la libreria MT4Orders. Ma forse sarebbe più facile chiamare il buon vecchio OrderCommission?
Funziona non solo sui conti hedge, ma anche su quelli netti.
Capisco che"POSITION_PROFIT" include già tutto (swap, profitto, commissione).