Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 1327

 
SanAlex:

alle die gleichen Nullen und will keine Provisionen ausweisen

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);  }

Ich weiß nicht, ob es richtig oder falsch ist, aber ich habe es überprüft und es wird richtig angezeigt

 
Aleksandr Egorov:

So sieht es jedenfalls bei dem ausgewählten Paar aus

Ich danke Ihnen! - Ich werde es jetzt ausprobieren, ich muss diese Funktion doch noch herausfinden

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

Ja! Es funktioniert. Ich danke Ihnen!

Fx10 4

 
SanAlex:

Ich danke Ihnen! - Ich werde es jetzt ausprobieren, ich muss diese Funktion doch noch herausfinden

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

Ja, das sieht man. Ich danke Ihnen!


Es stellt sich heraus, dass die Funktion nicht korrekt funktioniert, wenn die Provision nur für eine Seite gezählt wird, da sie mit 2 multipliziert wird.

DEAL_ENTRY_IN
Wir müssen es irgendwie perfektionieren
 
Aleksandr Egorov:

Es stellt sich heraus, dass die Funktion nicht korrekt funktioniert, wenn die Provision nur für eine Seite gezählt wird, da sie mit 2 multipliziert wird.

Ich muss es perfekt machen

es scheint alles korrekt angezeigt zu werden

Ich habe einige Anpassungen vorgenommen - ich weiß nicht, ob das richtig ist oder nicht, aber die Warnungen sind weg

//+------------------------------------------------------------------+
//|                                                   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

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

Ich habe eine entgegengesetzte Position eröffnet und die Provision hat sich erhöht - scheint korrekt zu sein

BTCUSDH1

 
SanAlex:

Es scheint alles genau zu zeigen.

Ich habe es ein wenig optimiert - ich weiß nicht, ob es richtig ist oder nicht, aber die Warnungen sind weg

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

Ich habe eine entgegengesetzte Position eröffnet, und die Provision hat sich erhöht - das scheint korrekt zu sein.


Es muss geprüft werden, ob es für den Einstieg und den Ausstieg zählt oder nur für den Einstieg und die Rücknahme eines Teils der Position, wenn Sie mit 1 Lot eröffnen und dann mit 0,5 Lot schließen.

Ich habe eine Menge Arbeit vor mir.
 

Dieses Skript zeigt den Gewinn für den Zeitraum, das Gesamtlot und die Kommission für jedes Instrument an.
Nein, danke.

Dateien:
 
Dmitiry Ananiev:

Dieses Skript zeigt den Gewinn für den Zeitraum, das Gesamtlot und die Kommission für jedes Instrument an.
Danken Sie mir nicht.

Das Skript ist in Ordnung, aber die Sache ist, dass Sie eine comsa auf offene Positionen benötigen und dies ist in der Geschichte

 
Aleksandr Egorov:

Das Skript ist in Ordnung, aber die Sache ist die, dass man eine Comsa auf offenen Posen braucht, und das steht in der Geschichte.

Darüber wurde bereits früher gesprochen. Sie können die (vom Broker angegebene) Provision in den Handelsbedingungen des Brokers einsehen. Und die tatsächliche Provision für die Ausführung eines Auftrags (Order) können Sie erst nach der Ausführung des Auftrags erfahren, nicht vor der Ausführung.

ZS. Es ist wie der Spread auf den nächsten Tick. Im aktuellen Tick wissen wir nicht, was der nächste Tick sein wird, weder der Preis, noch der Spread, noch die Swaps, noch die Provision. Und der Makler hat das Recht, sie zu ändern.

 
Aleksandr Egorov:

Ich muss prüfen, was für den Einstieg und den Ausstieg zählt oder nur für den Einstieg und einen Teil der Position abziehen, wenn ich mit 1 Lot eröffnet und dann mit 0,5 Lot geschlossen habe.

Ich muss noch etwas herumprobieren.

Ich arbeite an etwas Komischem, das ich selbst noch nicht verstehe: Ich prüfe es getrennt, wenn ich eine Position eröffne und getrennt, wenn ich sie schließe.

weise

//+------------------------------------------------------------------+
//|                                                   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:

Darüber wurde bereits früher gesprochen. Sie können die (vom Broker angegebene) Provision in den Handelsbedingungen des Brokers einsehen. Und die tatsächliche Provision für die Auftragsausführung können Sie erst nach der Ausführung des Auftrags erfahren, nicht vor der Ausführung.

ZS. Es ist wie der Spread auf den nächsten Tick. Im aktuellen Tick wissen wir nicht, was der nächste Tick sein wird, weder der Preis, noch der Spread, noch die Swaps, noch die Provision. Und der Makler hat das Recht, sie zu ändern.

Er muss also über seine offenen Stellen Bescheid wissen.

Grund der Beschwerde: