Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 741 1...734735736737738739740741742743744745746747748...1504 Nuovo commento Alexey Volchanskiy 2017.04.07 00:50 #7401 fxsaber: Avete chiesto senza perversioni. E se l'hai fatto, allora...Ecco perché è così.double GetPositionCommission( void ){ double Commission = ::PositionGetDouble(POSITION_COMMISSION); // На случай, если POSITION_COMMISSION не работает if (Commission == 0) { const ulong Ticket = MT4ORDERS::GetPositionDealIn(); if (Ticket > 0) { const double LotsIn = ::HistoryDealGetDouble(Ticket, DEAL_VOLUME); if (LotsIn > 0) Commission = ::HistoryDealGetDouble(Ticket, DEAL_COMMISSION) * ::PositionGetDouble(POSITION_VOLUME) / LotsIn; } } return(Commission);} OppureMi rendo conto che il post è vecchio, ma mi ha colpito solo ora con una scheggia.Questo pezzo qui non è corretto, la commissione nel forex può essere zero// На случай, если POSITION_COMMISSION не работает if (Commission == 0) Maksym Moroz 2017.04.07 06:22 #7402 Artyom Trishkin: ObjectGetValueByShift() (solo MT4), ObjectGetValueByTime() (MT4, MT5) Grazie fxsaber 2017.04.07 06:24 #7403 Alexey Volchanskiy: Mi rendo conto che il post è vecchio, ma mi ha colpito solo ora con una scheggia.Questo pezzo qui non è corretto, la commissione nel forex può essere zero In che modo non è corretto? Klimenko_a_e 2017.04.10 00:08 #7404 Problema con il costruttore di copie in MQL5L'array dinamico this.arr, nel costruttore della copia, è visto dal debugger come unidimensionale.Come risultato, la dimensione di ob2.arr è uguale a 0 nell'output.Perché?Lo stesso frammento funziona correttamente in MQL4.Editor MT5MetaEditor 5.0 1578Editor MT4MetaEditor 5.0 1562class obj { public: double arr[][2]; obj(){} obj(obj &o) { ArrayCopy(this.arr,o.arr); } obj operator=(obj &o) { ArrayCopy(this.arr,o.arr); return &this; } }; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ obj Copy(obj &o) { return o; }; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OnStart() { //--- obj ob1,ob2; ArrayResize(ob1.arr,3); ob2=Copy(ob1); bool stop=true; } Questions from Beginners MQL5 Il mio approccio. Il Dividere le posizioni aperte fxsaber 2017.04.10 06:39 #7405 Klimenko_a_e: Il risultato è che la dimensione ob2.arr è 0 nell'output.Perché?obj* Copy(obj &o) { return & o; };Altrimenti state creando un nuovo oggetto. void operator=(obj &o) { ArrayCopy(this.arr,o.arr); return; // &this; }Altrimenti succedono cose inutili.Dubito che il vostro codice abbia funzionato correttamente in MQL4. Akinak 2017.04.10 15:10 #7406 Buon giorno, potete dirmi come aprire un singolo ordine in sospeso?Come faccio a fermare il ciclo se devo aprire un ordine in sospeso quando la baia è aperta?Posso aprirne un mucchio finché il deposito non si esaurisce!Non so come aprire un ordine in sospeso. Domande dai principianti MQL4 Caratteristiche utili da KimIV [ARCHIVIO] Qualsiasi domanda da Vladislav Andruschenko 2017.04.10 15:12 #7407 Akinak: Buon giorno, potete dirmi come aprire un singolo ordine in sospeso?Come faccio a fermare il ciclo se ho bisogno di aprire un ordine pendente quando la baia è aperta?Posso aprirne un mucchio finché il deposito non si esaurisce!Grazie in anticipo!Prima devi scoprire "chi è". Akinak 2017.04.10 16:18 #7408 Vladislav Andruschenko:Prima devi scoprire "chi è".Vladislav Andruschenko: Prima devi scoprire "chi è".for(int i=0; i<OrdersTotal();i++){if(OrderSelect(i,SELECT_BY_POS))se(OrderSymbol()==Symbol())se(OrderMagicNumber()==Magico)se(b>0){int tak=OrderSend(Symbol(),OP_SELLSTOP,Lots_work,SOPrase,Slip,0,0,",Magic,0,clrRed);se(tak>0)Stampa("SELLSTOP Ok");elseStampa("Errore SELLSTOP");} se(s>0){OrderSend(Symbol(),OP_BUYSTOP,Lots_work,BOPrase,Slip,0,0,",Magic,0,clrBlue);se(tik>0)Stampa("BUYSTOP Ok");elseStampa("Errore BUYSTOP");}} Questions from Beginners MQL5 Pending orders Qualsiasi domanda da principiante, Vladislav Andruschenko 2017.04.10 19:45 #7409 Bene, quello che si fa nel ciclo è questo:si apre una posizione - si apre un ordine, si aggiunge il numero di posizioni, il ciclo si ripete - all'infinito.int OrderSTotal=OrdersTotal(); for(int i=0; i<OrderSTotal;i++) { if(OrderSelect(i,SELECT_BY_POS)) if(OrderSymbol()==Symbol()) if(OrderMagicNumber()==Magic) { if(b>0) { int tak=OrderSend(Symbol(),OP_SELLSTOP,Lots_work,SOPrase,Slip,0,0,"",Magic,0,clrRed); if(tak>0) Print("SELLSTOP Ok"); else Print("SELLSTOP Error"); } if(s>0) { int tik=OrderSend(Symbol(),OP_BUYSTOP,Lots_work,BOPrase,Slip,0,0,"",Magic,0,clrBlue); if(tik>0) Print("BUYSTOP Ok"); else Print("BUYSTOP Error"); } } } //+------------------------------------------------------------------+ Devi sapere cosa sono b e s Klimenko_a_e 2017.04.10 19:58 #7410 fxsaber: Altrimenti state creando un nuovo oggetto.Altrimenti succedono cose inutili.Dubito che il tuo codice abbia funzionato correttamente in MQL4.Nel codice reale - la funzione restituisce un oggetto.Penso che il costruttore di copie dovrebbe creare una copia temporanea in questo caso.Il codice funziona correttamente in MQL5 build 1545.Nella nuova build, il costruttore di copie non può ridimensionare nemmeno un array unidimensionale: errore 4007.Questo non è corretto secondo me. MQL5 Il compilatore non Domande su OOP in Errori, bug, domande 1...734735736737738739740741742743744745746747748...1504 Nuovo commento
Avete chiesto senza perversioni. E se l'hai fatto, allora...
{
double Commission = ::PositionGetDouble(POSITION_COMMISSION);
// На случай, если POSITION_COMMISSION не работает
if (Commission == 0)
{
const ulong Ticket = MT4ORDERS::GetPositionDealIn();
if (Ticket > 0)
{
const double LotsIn = ::HistoryDealGetDouble(Ticket, DEAL_VOLUME);
if (LotsIn > 0)
Commission = ::HistoryDealGetDouble(Ticket, DEAL_COMMISSION) * ::PositionGetDouble(POSITION_VOLUME) / LotsIn;
}
}
return(Commission);
}
Mi rendo conto che il post è vecchio, ma mi ha colpito solo ora con una scheggia.
Questo pezzo qui non è corretto, la commissione nel forex può essere zero
ObjectGetValueByShift() (solo MT4), ObjectGetValueByTime() (MT4, MT5)
Grazie
Mi rendo conto che il post è vecchio, ma mi ha colpito solo ora con una scheggia.
Questo pezzo qui non è corretto, la commissione nel forex può essere zero
In che modo non è corretto?
Problema con il costruttore di copie in MQL5
L'array dinamico this.arr, nel costruttore della copia, è visto dal debugger come unidimensionale.
Come risultato, la dimensione di ob2.arr è uguale a 0 nell'output.
Perché?
Lo stesso frammento funziona correttamente in MQL4.
Editor MT5
MetaEditor 5.0 1578
Editor MT4
MetaEditor 5.0 1562
Il risultato è che la dimensione ob2.arr è 0 nell'output.
Perché?
Altrimenti state creando un nuovo oggetto.
Altrimenti succedono cose inutili.
Dubito che il vostro codice abbia funzionato correttamente in MQL4.
Posso aprirne un mucchio finché il deposito non si esaurisce!
Non so come aprire un ordine in sospeso.
Posso aprirne un mucchio finché il deposito non si esaurisce!
Grazie in anticipo!
Prima devi scoprire "chi è".
Prima devi scoprire "chi è".
Prima devi scoprire "chi è".
}
Bene, quello che si fa nel ciclo è questo:
si apre una posizione - si apre un ordine, si aggiunge il numero di posizioni, il ciclo si ripete - all'infinito.
Devi sapere cosa sono b e s
Altrimenti state creando un nuovo oggetto.
Altrimenti succedono cose inutili.
Dubito che il tuo codice abbia funzionato correttamente in MQL4.
Nel codice reale - la funzione restituisce un oggetto.
Penso che il costruttore di copie dovrebbe creare una copia temporanea in questo caso.
Il codice funziona correttamente in MQL5 build 1545.
Nella nuova build, il costruttore di copie non può ridimensionare nemmeno un array unidimensionale: errore 4007.
Questo non è corretto secondo me.