Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 741 1...734735736737738739740741742743744745746747748...1503 Novo comentário Alexey Volchanskiy 2017.04.07 00:50 #7401 fxsaber: Pediu sem perversões. E se o fez, então...É por isso que é assim.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);} OuCompreendo que o posto é antigo, mas acabou de me atingir com uma lasca.Esta parte aqui não é correcta, a comissão em forex pode ser zero// На случай, если POSITION_COMMISSION не работает if (Commission == 0) Maksym Moroz 2017.04.07 06:22 #7402 Artyom Trishkin: ObjectGetValueByShift() (MT4 apenas), ObjectGetValueByTime() (MT4, MT5) Obrigado fxsaber 2017.04.07 06:24 #7403 Alexey Volchanskiy: Compreendo que o posto é antigo, mas acabou de me atingir com uma lasca.Esta parte aqui não é correcta, a comissão em forex pode ser zero Como é que está incorrecto? Klimenko_a_e 2017.04.10 00:08 #7404 Problema com o construtor de cópias na MQL5A matriz dinâmica this.arr, no construtor de cópias, é vista pelo depurador como unidimensional.Como resultado, o tamanho do ob2.arr é igual a 0 na produção.Porquê?O mesmo fragmento funciona correctamente na 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 Quaisquer perguntas de recém-chegados Sinais : Pergunte e fxsaber 2017.04.10 06:39 #7405 Klimenko_a_e: O resultado é que o tamanho ob2.arr é 0 na saída.Porquê?obj* Copy(obj &o) { return & o; };Caso contrário, estará a criar um novo objecto. void operator=(obj &o) { ArrayCopy(this.arr,o.arr); return; // &this; }Caso contrário, acontecem coisas desnecessárias.Duvido que o seu código tenha funcionado correctamente na MQL4. Akinak 2017.04.10 15:10 #7406 Bom dia! Pode por favor dizer-me como abrir uma única encomenda pendente?Como parar o laço se tiver de abrir uma ordem pendente quando a baía está aberta??Posso abrir um monte deles até que o depósito se esgote!Não sei como abrir uma ordem pendente. Perguntas de Iniciantes MQL4 [Arquivo!] Qualquer pergunta de Perguntas de um "boneco" Vladislav Andruschenko 2017.04.10 15:12 #7407 Akinak: Bom dia! Pode por favor dizer-me como abrir uma única encomenda pendente?Como parar o laço se tiver de abrir uma ordem pendente quando a baía está aberta??Posso abrir um monte deles até que o depósito se esgote!Obrigado de antemão!Primeiro é preciso descobrir "quem ele é". Akinak 2017.04.10 16:18 #7408 Vladislav Andruschenko:Primeiro é preciso descobrir "quem ele é".Vladislav Andruschenko: primeiro precisa de descobrir "quem ele é".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)Imprimir("SELLSTOP Ok");senãoImprimir("SELLSTOP Error");} if(s>0){OrderSend(Symbol(),OP_BUYSTOP,Lots_work,BOPrase,Slip,0,0,",Magic,0,clrBlue);if(tik>0)Imprimir("BUYSTOP Ok");senãoImprimir("BUYSTOP Error");}} Questions from Beginners MQL5 [AVISO FECHADO!] Qualquer pergunta Pending orders Vladislav Andruschenko 2017.04.10 19:45 #7409 Bem, o que se faz no ciclo é isto:abre-se uma posição - abre-se uma ordem, o número de posições é acrescentado, o ciclo repete-se - até ao 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"); } } } //+------------------------------------------------------------------+ Precisa de saber o que são b e s Klimenko_a_e 2017.04.10 19:58 #7410 fxsaber: Caso contrário, estará a criar um novo objecto.Caso contrário, acontecem coisas desnecessárias.Duvido que o seu código tenha funcionado correctamente na MQL4.Em código real - a função devolve um objecto.Penso que o construtor de cópias deveria criar uma cópia temporária neste caso.O código funciona correctamente em MQL5 build 1545.Na nova construção, o construtor de cópias não pode redimensionar nem mesmo uma matriz unidimensional: Erro 4007.Isto não é correcto, na minha opinião. MQL5 O compilador não Erros, bugs, perguntas MetaEditor. Problemas e soluções. 1...734735736737738739740741742743744745746747748...1503 Novo comentário
Pediu sem perversões. E se o fez, então...
{
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);
}
Compreendo que o posto é antigo, mas acabou de me atingir com uma lasca.
Esta parte aqui não é correcta, a comissão em forex pode ser zero
ObjectGetValueByShift() (MT4 apenas), ObjectGetValueByTime() (MT4, MT5)
Obrigado
Compreendo que o posto é antigo, mas acabou de me atingir com uma lasca.
Esta parte aqui não é correcta, a comissão em forex pode ser zero
Como é que está incorrecto?
Problema com o construtor de cópias na MQL5
A matriz dinâmica this.arr, no construtor de cópias, é vista pelo depurador como unidimensional.
Como resultado, o tamanho do ob2.arr é igual a 0 na produção.
Porquê?
O mesmo fragmento funciona correctamente na MQL4.
Editor MT5
MetaEditor 5.0 1578
Editor MT4
MetaEditor 5.0 1562
O resultado é que o tamanho ob2.arr é 0 na saída.
Porquê?
Caso contrário, estará a criar um novo objecto.
Caso contrário, acontecem coisas desnecessárias.
Duvido que o seu código tenha funcionado correctamente na MQL4.
Posso abrir um monte deles até que o depósito se esgote!
Não sei como abrir uma ordem pendente.
Posso abrir um monte deles até que o depósito se esgote!
Obrigado de antemão!
Primeiro é preciso descobrir "quem ele é".
Primeiro é preciso descobrir "quem ele é".
primeiro precisa de descobrir "quem ele é".
}
Bem, o que se faz no ciclo é isto:
abre-se uma posição - abre-se uma ordem, o número de posições é acrescentado, o ciclo repete-se - até ao infinito.
Precisa de saber o que são b e s
Caso contrário, estará a criar um novo objecto.
Caso contrário, acontecem coisas desnecessárias.
Duvido que o seu código tenha funcionado correctamente na MQL4.
Em código real - a função devolve um objecto.
Penso que o construtor de cópias deveria criar uma cópia temporária neste caso.
O código funciona correctamente em MQL5 build 1545.
Na nova construção, o construtor de cópias não pode redimensionar nem mesmo uma matriz unidimensional: Erro 4007.
Isto não é correcto, na minha opinião.