Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1327

 
SanAlex:

tutti gli stessi zeri e non vuole mostrare la commissione

double Komsa(string Pair) {
   double  commicion=0;
   int tikett,entry;
   ulong tik,ord;
//---------------------------------------------------------------   
   for(int i=PositionsTotal()-1;i>=0;i--) {
   if(PositionGetSymbol(i)==Pair){  tik=PositionGetTicket(i); 
//---------------------------------------------------------------         
   HistorySelect(0,TimeCurrent());
   for(uint r=HistoryDealsTotal()-1;r>0;r--)   {
   if((tikett=HistoryDealGetTicket(r))>0)   {
   ord=HistoryDealGetInteger(tikett,DEAL_ORDER);
   entry =HistoryDealGetInteger(tikett,DEAL_ENTRY);
   if(entry==DEAL_ENTRY_IN) {
   if(tik==ord)  { commicion+=HistoryDealGetDouble(tikett,DEAL_COMMISSION)*2;    }  }  } }  } }
//--------------------------------------------------------------  
  Comment( " commisia "+commicion);
   return(commicion);  }

Non so se è giusto o sbagliato, ma ho controllato e risulta correttamente

 
Aleksandr Egorov:

Comunque, è così che conta sulla coppia selezionata

Grazie! - Proverò ora, ho bisogno di capire questa funzione dopo tutto

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Sì, funziona. Grazie!

Fx10 4

 
SanAlex:

Grazie! - Lo proverò ora, devo capire questa funzione dopo tutto

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Sì, si vede. Grazie!


Si scopre che se la commissione sarà contata solo per un lato, allora la funzione non funzionerà correttamente perché viene moltiplicata per 2

DEAL_ENTRY_IN
Dobbiamo perfezionarlo in qualche modo
 
Aleksandr Egorov:

si scopre che se la commissione viene contata solo per un lato, allora la funzione non funziona correttamente perché viene moltiplicata per 2

Ho bisogno di aggiustarlo alla perfezione

sembra mostrare tutto correttamente

Ho fatto alcuni aggiustamenti - non so se è giusto o no, ma gli avvisi sono spariti

//+------------------------------------------------------------------+
//|                                                   Commission.mq5 |
//|                                  Copyright 2021, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   Komsa(_Symbol);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Komsa(string Pair)
  {
   double  commicion=0;
   ulong tikett,entry;
   ulong tik,ord;
//---------------------------------------------------------------
   for(int i=PositionsTotal()-1; i>=0; i--)
     {
      if(PositionGetSymbol(i)==Pair)
        {
         tik=PositionGetTicket(i);
         //---------------------------------------------------------------
         HistorySelect(0,TimeCurrent());
         for(uint r=HistoryDealsTotal()-1; r>0; r--)
           {
            if((tikett=HistoryDealGetTicket(r))>0)
              {
               ord=HistoryDealGetInteger(tikett,DEAL_ORDER);
               entry =HistoryDealGetInteger(tikett,DEAL_ENTRY);
               if(entry==DEAL_ENTRY_IN)
                 {
                  if(tik==ord)
                    {
                     commicion+=HistoryDealGetDouble(tikett,DEAL_COMMISSION);
                    }
                 }
              }
           }
        }
     }
//--------------------------------------------------------------
   Comment(" commisia "+DoubleToString(commicion,2));
   return(commicion);
  }
//+------------------------------------------------------------------+

Fx10 5

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Ho aperto una posizione opposta e la commissione è aumentata - sembra corretto

BTCUSDH1

 
SanAlex:

Sembra mostrare tutto accuratamente.

L'ho modificato un po' - non so se è giusto o no, ma gli avvisi sono spariti

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Ho aperto una posizione opposta e la commissione è aumentata - sembra corretto.


c'è bisogno di controllare se conta per l'entrata e l'uscita o solo per l'entrata e il ritiro di una parte della posizione se si apre con 1 lotto e poi si chiude con 0,5 lotti

Ho molto lavoro da fare.
 

Questo script mostra il profitto per il periodo, il lotto totale e la commissione per ogni strumento.
No, grazie.

File:
 
Dmitiry Ananiev:

Questo script mostra il profitto per il periodo, il lotto totale e la commissione per ogni strumento.
Non ringraziatemi.

Lo script è ok ma il fatto è che avete bisogno di una comsa sulle posizioni aperte e questo è nella storia

 
Aleksandr Egorov:

La sceneggiatura va bene, ma il fatto è che serve una comsa sulle pose aperte, e questo è nella storia.

È già stato discusso in precedenza. Puoi vedere la commissione (dichiarata dal broker) nelle condizioni di trading del broker. E la commissione reale per l'esecuzione di un ordine (ordine) si può scoprire solo dopo l'esecuzione dell'ordine, non si può scoprire prima dell'esecuzione.

ZS. È come lo spread sul prossimo tick. Nel tick attuale non sappiamo cosa sarà il prossimo tick, né il prezzo, né lo spread, né gli swap, né la commissione. E il broker ha il diritto di cambiarli.

 
Aleksandr Egorov:

Ho bisogno di controllare cosa conta per l'entrata e l'uscita o solo per l'entrata e dedurre parte della posizione se ho aperto con 1 lotto e poi chiuso con 0,5 lotti.

Devo ancora incasinarmi.

Sto elaborando qualcosa di strano - non l'ho ancora capito. Controllo separatamente quando apro una posizione e separatamente quando la chiudo.

saggio

//+------------------------------------------------------------------+
//|                                                   Commission.mq5 |
//|                                  Copyright 2021, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
#include <Trade\Trade.mqh>
CTrade trade;
#property script_show_inputs
//---
input bool Inp_open_close = false; // Open --> false || Close --> true
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart(void)
  {
//---
   if(!Inp_open_close)
     {
      if(!trade.PositionOpen(_Symbol,ORDER_TYPE_BUY,0.1,SYMBOL_ASK,0.0,0.0))
         Print(trade.ResultRetcode());
      PlaySound("ok.wav");
      CSV_OPEN();
     }
   if(Inp_open_close)
     {
      if(TerminalInfoInteger(TERMINAL_TRADE_ALLOWED) && Bars(_Symbol,_Period)>100)
         trade.PositionClose(_Symbol,3);
      PlaySound("ok.wav");
      CSV_CLOS();
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Komsa(void)
  {
   double  commicion=0;
   ulong tikett,entry;
   ulong tik,ord;
//---------------------------------------------------------------
   for(int i=PositionsTotal()-1; i>=0; i--)
     {
      if(PositionGetSymbol(i)==_Symbol)
        {
         tik=PositionGetTicket(i);
         //---------------------------------------------------------------
         HistorySelect(0,TimeCurrent());
         for(uint r=HistoryDealsTotal()-1; r>0; r--)
           {
            if((tikett=HistoryDealGetTicket(r))>0)
              {
               ord=HistoryDealGetInteger(tikett,DEAL_ORDER);
               entry =HistoryDealGetInteger(tikett,DEAL_ENTRY);
               if(entry==DEAL_ENTRY_IN)
                 {
                  if(tik==ord)
                    {
                     commicion+=HistoryDealGetDouble(tikett,DEAL_COMMISSION);
                    }
                 }
              }
           }
        }
     }
//--------------------------------------------------------------
   Comment(" commisia "+DoubleToString(commicion,2));
   return(commicion);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CSV_OPEN(void)
  {
//---
   ResetLastError();
   int filehandle=FileOpen("CommissionOpen.csv",FILE_READ|FILE_WRITE|FILE_CSV);
   if(filehandle==-1)
     {
      int res=GetLastError();
      Print("File open error :  ",
            res);
      return;
     }
   FileSeek(filehandle, 0, SEEK_END);
   FileWrite(filehandle,Komsa());
   FileClose(filehandle);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CSV_CLOS(void)
  {
//---
   ResetLastError();
   int filehandle=FileOpen("CommissionClose.csv",FILE_READ|FILE_WRITE|FILE_CSV);
   if(filehandle==-1)
     {
      int res=GetLastError();
      Print("File open error :  ",
            res);
      return;
     }
   FileSeek(filehandle, 0, SEEK_END);
   FileWrite(filehandle,Komsa());
   FileClose(filehandle);
  }
//+------------------------------------------------------------------+
 
Valeriy Yastremskiy:

È già stato discusso in precedenza. Puoi vedere la commissione (dichiarata dal broker) nelle condizioni di trading del broker. E la vera commissione per l'esecuzione dell'ordine (ordine) si può scoprire solo dopo l'esecuzione dell'ordine, non si può scoprire prima dell'esecuzione.

ZS. È come lo spread sul prossimo tick. Nel tick attuale non sappiamo cosa sarà il prossimo tick, né il prezzo, né lo spread, né gli swap, né la commissione. E il broker ha il diritto di cambiarli.

Quindi ha bisogno di sapere sulle sue posizioni aperte.

Forum sul trading, sistemi di trading automatico e tester di strategie

Domande dai principianti MQL5 MT5 MetaTrader 5

Aleksandr Egorov, 2021.07.14 22:30

Ho una buona visione della posizione che sto cercando di utilizzare nella storia

Motivazione: