assessor especializado - perguntas diversas - página 34

 
Marco vd Heijden:

Não, isso é para verificar se é uma conta demo ou uma conta ativa, a competição raramente é usada.
O lote máximo pode ser muito fácil.

Obrigado por uma resposta rápida.

Eu só preciso aplicar o tamanho máximo do lote apenas a conta Demo.
( mas é claro que, na verdade, conta ativa - isto é apenas para teste - eu quero tentar se conta Demo, se o tamanho do lote for melhor que o tamanho do lote máximo não abrirá pedidos de venda e compra - mas se conta ativa ou conta concurso - então este tamanho máximo de lote não aplicará os dois ( ativa ou concurso )

Eu poderia usar o operador do interruptor?

Muito obrigado.
( Vou tentar mais tarde. )

 
Sim, você pode usar o operador do interruptor.
 
Marco vd Heijden:
//---
// calculate lotsize here
//---

// check if lotsize is not too high

if(lotsize>lotsize_max)
{
  lotsize=losize_max;
}

Eu quero perguntar - você quer dizer - se " lotsize > lotsize_max " tamanho do lote deve ser " lotsize = lotsize_max " para conta Demo? Eu o entendi corretamente, por favor...

Muito obrigado.
( Estou trabalhando nisso )

 
Max Enrik:

Eu quero perguntar - você quer dizer - se " lotsize > lotsize_max " tamanho do lote deve ser " lotsize = lotsize_max " para conta Demo? Eu o entendi corretamente, por favor...

Muito obrigado.
( Estou trabalhando nisso )

Tente
if(IsDemo() && lotsize>lotsize_max) lotsize=lotsize_max;
 
honest_knave:
Experimente
if(IsDemo() && lotsize>lotsize_max) lotsize=lotsize_max;

Oh! ótimo! Muito obrigado.

----
funcionam deveria me perguntar - Sim ou Não- acho que isto poderia ser melhor por enquanto. ( Eu só preciso de experiência para esta função que como ela funciona para mim na conta demo ( naturalmente ao vivo ) - eu testarei esta função na segunda-feira - se eu puder terminar esta parte do código )
( agora eu não sei o suficiente sobre esta função - espero poder fazer até amanhã )

Qualquer bom comentário seria a melhor ajuda para mim.
Obrigado de antemão.

 

Sim, claro, por todos os meios, vá com ele sem o lotsmax e se mais tarde você quiser afinar sua estratégia ou quiser limitar o risco, você pode usá-lo para que não seja uma necessidade como tal atualmente.

Você pode simplesmente eliminá-la, eu só queria mostrar-lhe algumas linhas do meu mecanismo de segurança.


Se você quiser confirmação, você pode usar um

MessageBox()

https://docs.mql4.com/common/messagebox


int result=MessageBox(" This is a Messagbox, Do you want to proceed?","Warning",MB_YESNO);

if(result==IDYES)
{
  // Yes Pressed
   Print("OK");
}

if(result==IDNO)
{
  // No Pressed
}

Aqui estão as principais bandeiras que você coloca na função de caixa de mensagens após a mensagem:

Constante

Valor

Descrição

MB_OK

0x00000000

A janela de mensagem contém apenas um botão: OK. Predefinição

MB_OKCANCEL

0x00000001

A janela de mensagens contém dois botões: OK e Cancelar

MB_ABORTRETRYREIGNORE

0x00000002

A janela de mensagens contém três botões: Abortar, Triturar e Ignorar

MB_YESNOCANCEL

0x00000003

A janela de mensagens contém três botões: Sim, Não e Cancelar

MB_YESNO

0x00000004

A janela de mensagens contém dois botões: Sim e Não

MB_RETRYCANCEL

0x00000005

A janela de mensagens contém dois botões: Tirar e cancelar

MB_CANCELTRYCONTINUE

0x00000006

A janela de mensagens contém três botões: Cancelar, tentar novamente, continuar


E aqui os valores de retorno:

Constante

Valor

Descrição

IDOK

1

O botão "OK" foi pressionado

IDCANCEL

2

O botão "Cancelar" foi pressionado

IDABORT

3

O botão "Abortar" foi pressionado

IDRETRY

4

O botão "Retry" foi pressionado

IDIGNORE

5

O botão "Ignorar" foi pressionado

IDYES

6

O botão "Sim" foi pressionado

IDNO

7

O botão "Não" foi pressionado

IDTRYAGAIN

10

O botão "Try Again" foi pressionado

IDCONTINUE

11

O botão "Continuar" foi pressionado


A Messagebox() não funciona no testador.

MessageBox - Common Functions - MQL4 Reference
MessageBox - Common Functions - MQL4 Reference
  • docs.mql4.com
MessageBox - Common Functions - MQL4 Reference
 
Marco vd Heijden:

Sim, claro, por todos os meios, vá com ela sem o lotsmax e se mais tarde você quiser afinar sua estratégia ou quiser limitar o risco, você pode usá-la para que não seja uma necessidade como tal atualmente.
Você pode simplesmente eliminá-la, eu só queria mostrar-lhe algumas linhas do meu mecanismo de segurança.

Muito mais obrigado por sua grande ajuda.

Então, eu apenas tentei como no método abaixo, estou fazendo certo, por favor?
( Eu precisava perguntar antes de trazê-los ao meu arquivo principal .mq4 - estou trabalhando nisso )

Obrigado de antemão.

if(sparam==SellButton)
{
  result_message=MessageBox("Do you want to proceed?","Warning",MB_YESNO);

  if(result_message==IDYES)
    {
     ordersell(); // Send Order function here
     Print("Clicked YES"," Sell Order Applied");
    }

  if(result_message==IDNO)
    {
     Print("Clicked NO"," Sell Order Canceled");
    }
  ObjectSetInteger(0,sparam,OBJPROP_STATE,false);
}
 

Apenas uma dica de estilo, que fará seu código funcionar (muito, muito ligeiramente) mais eficiente... mas ei, tudo se soma!

Você tem uma caixa de mensagens com 2 botões. Se não for IDYES, ela deve ser IDNO (ou a função não foi concluída com sucesso).

Portanto, não há necessidade de testar duas vezes o resultado_message.

if(sparam==SellButton)
{
  result_message=MessageBox("Do you want to proceed?","Warning",MB_YESNO);

  if(result_message==IDYES)
    {
     ordersell(); // Send Order function here
     Print("Clicked YES"," Sell Order Applied");
    }
   else
    {
     Print("Clicked NO"," Sell Order Canceled");
    }
  ObjectSetInteger(0,sparam,OBJPROP_STATE,false);
}

Se você preferir vê-la anotada, use uma declaração de "outro se":

if(sparam==SellButton)
{
  result_message=MessageBox("Do you want to proceed?","Warning",MB_YESNO);

  if(result_message==IDYES)
    {
     ordersell(); // Send Order function here
     Print("Clicked YES"," Sell Order Applied");
    }

  else if(result_message==IDNO)
    {
     Print("Clicked NO"," Sell Order Canceled");
    }
  ObjectSetInteger(0,sparam,OBJPROP_STATE,false);
}
 
honest_knave:

Apenas uma dica de estilo, que fará seu código funcionar (muito, muito ligeiramente) mais eficiente... mas ei, tudo se soma!
Você tem uma caixa de mensagens com 2 botões. Se não for IDYES, ela deve ser IDNO (ou a função não foi concluída com sucesso).
Portanto, não há necessidade de testar duas vezes o resultado_message.

Muito mais obrigado por tudo.
Agora, posso colocá-los nos EA principais.
( também preciso de experiência para MessageBox() )

 
Max Enrik:

Muito mais obrigado por tudo.
Agora, posso colocá-los nos EA principais.
( também preciso de experiência para MessageBox() )

Não havia nada de errado com ela escrita de outra forma, é apenas uma coisa de preferência pessoal. Fico feliz que você tenha conseguido classificar.