Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 35

 
alxm:
La documentazione dice che non c'è bisogno di sforzarsi.
Ok, allora.
 
alxm:
La documentazione dice che non c'è bisogno di preoccuparsi.

Ma la frase"Per gli oggetti contenenti stringhe e array dinamici, ZeroMemory() viene chiamata per ogni membro" è un po' ambigua. O la funzione ZeroMemory stessa esegue questo azzeramento, o il programmatore dovrebbe fare la chiamata lui stesso per ogni membro contenente un array dinamico.

...anche se. I casi di inapplicabilità sono chiaramente specificati.

 
Yedelkin:
Ma la frase"Per gli oggetti contenenti stringhe e array dinamici, ZeroMemory() viene chiamata per ogni membro" è ambigua. O questo azzeramento viene eseguito dalla funzione ZeroMemory stessa o il programmatore dovrebbe azzerare ogni array dinamico lui stesso.
E la frase"per gli array di oggetti complessi ZeroMemory() viene chiamata per ogni elemento" dovrebbe essere intesa come una chiamata per azzerare ogni elemento separatamente?
 
alxm:
E la frase"Per gli array di oggetti complessi ZeroMemory() viene chiamata per ogni elemento" dovrebbe anche essere intesa come una chiamata per azzerare ogni elemento separatamente?
Bene, e come ultima risorsa può essere facilmente controllato. :)
 
alxm:
E la frase"Per gli array di oggetti complessi ZeroMemory() viene chiamata per ogni elemento" dovrebbe anche essere intesa come una chiamata per azzerare ogni elemento separatamente?
Sì, confronta il significato del verbo russo "prodotto" con il significato del verbo russo "avviene" :) Risposta: no, non dovrebbe.
 
Yedelkin:
Sì, confronta il significato del verbo russo "prodotto" con il significato del verbo russo "avviene" :) La risposta è no, non dovrebbe.
Sono d'accordo. La documentazione deve essere scritta in modo tale che non si pensi a una doppia interpretazione.
 

Buon pomeriggio! Supponiamo che io chiuda parte di una posizione aprendo una posizione inversa. Quale stop loss e profitto dovrei impostare? Probabilmente sarà quello che ho impostato e non quello che avevo? No, non può essere, aprirò un trade inverso per ridurre la posizione e il profitto e la perdita sono gli stessi del precedente. Tutto sommato, mi sono confuso. Per favore, aiutatemi a chiarire.

Inoltre, la struttura ha un errore

 MqlTradeRequest request={0};
      MqlTradeResult result={0};

      request.action= TRADE_ACTION_DEAL;
      request.magic =MagicNumber;
      request.symbol=symb;
      request.price=BID
      request.deviation=30* Point(symb);
      request.volume=Lot;
      request.sl=s;
      request.tp=t;
      request.type=type;
      OrderSend(request,result);  

'deviazione' - qualche operatore previsto htghtgfhthf.mq5 103 15 operatore calcolato.... Bene, calcolato.

'Punto' - conteggio parametri errato htghtgfhthf.mq5 103 30

Penso che tutto sia corretto? In breve, per favore ditemi cosa metterci dentro che non giuri?

 
Dimka-novitsek: Inoltre, la struttura è maledetta con

Questo è ciò che dice:

Point(symb);

Non vengono forniti argomenti per questa funzione.

Vedi anche la descrizione del campo di deviazione. Non c'è bisogno di assegnare valori doppi.

 

Ora la situazione è questa. Voglio impostare il lotto per la posizione opposta, per questo trovo il lotto del trade, che ha partecipato a questa posizione combinata, e impostare la posizione opposta, cioè, vorrei provare a impostare. Questo lotto lo riconosco con la funzione HistoryDealGetDouble( TicetTojSdelki,DEAL_VOLUME).

Comunque, ecco la funzione e la sua chiamata

    if ( HistoryDealGetInteger( TicetTojSdelki,DEAL_TYPE)== DEAL_TYPE_BUY){
     OrderSendSELL( Symbol(),"OP_SELL",  HistoryDealGetDouble( TicetTojSdelki,DEAL_VOLUME), 10,10, 300,  300, " com " , 600, 600,0)
  ;}
  
  
                                                          }
 
   
   }
   
   
   
   
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+     
 ulong OrderSendSELL(string symb, string OP_POZA, double Lot, double BIDd,int slip, double  s,  double  t, string com, int MagicNumber, datetime expiration,color c){
  
         ENUM_ORDER_TYPE   type;
         if(OP_POZA=="OP_SELL"){type=ORDER_TYPE_SELL;}
        double BID =BID( symb);
          if(OP_POZA=="OP_BUY"){type=ORDER_TYPE_BUY;}
            BID =ASK( symb);
          

      MqlTradeRequest request={0};
      MqlTradeResult result={0};

      request.action= TRADE_ACTION_DEAL;
      request.magic =MagicNumber;
      request.symbol=symb;
      request.price=BID
     
      request.volume=Lot;
      request.sl=s;
      request.tp=t;
      request.type=type;
      OrderSend(request,result);    
      
        return (result.   deal );       }
 
 //+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double BID(string symbol) 
  {
   MqlTick last_tick;
   SymbolInfoTick(symbol,last_tick);
   double BID=last_tick.bid;
   return(BID);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double ASK(string symbol) 
  {

   MqlTick last_tick;
   SymbolInfoTick(symbol,last_tick);
   double ASK=last_tick.ask;
   return(ASK);  
  }

'Volume' - qualche operatore atteso htghtgfhthf.mq5 104 15

'Lot' - l'espressione non ha effetto htghtgfhthf.mq5 104 22

È la struttura stessa che viene rimproverata. Dowble variabile... Lotto uguale a lotto... Non lo capisco!

 
Grazie!!!