consulente esperto - domande varie - pagina 34

 
Marco vd Heijden:

No, è per verificare se è un conto demo o un conto live, il concorso è usato raramente.
Il lotto massimo può essere molto semplice.

Grazie per la pronta risposta.

Ho solo bisogno di applicare la dimensione del lotto max solo conto demo.
(ma naturalmente in realtà conto live - questo è solo per prova - voglio provare se conto Demo, se la dimensione del lotto migliore poi dimensione del lotto max non aprirà ordini di vendita e di acquisto - ma se conto live o conto concorso - quindi questo lotto max non si applica entrambi (live o concorso))

Potrei usare lo switch operator?

Grazie mille.
(Proverò più tardi).

 
Sì, puoi usare l'operatore di commutazione.
 
Marco vd Heijden:
//---
// calculate lotsize here
//---

// check if lotsize is not too high

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

Voglio chiedere - vuoi dire - se "lotsize > lotsize_max" la dimensione del lotto dovrebbe essere "lotsize = lotsize_max" per il conto Demo? Ho capito bene, per favore?

Grazie mille.
(Ci sto lavorando)

 
Max Enrik:

Voglio chiedere - vuoi dire - se "lotsize > lotsize_max" la dimensione del lotto dovrebbe essere "lotsize = lotsize_max" per il conto Demo? Ho capito bene, per favore?

Grazie mille.
(Ci sto lavorando)

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

Oh, bello! Grazie mille.

----
funzione dovrebbe chiedermi - o No- penso che questo potrebbe essere meglio per ora. (Ho solo bisogno di esperienza per questa funzione che come funziona per me sul conto demo (naturalmente dal vivo) - testerò questa funzione lunedì - se riesco a finire questa parte di codice)
( ora non so abbastanza su questa funzione - spero di poter fare fino a domani )

Qualsiasi buon commento sarebbe il miglior aiuto per me.
Grazie in anticipo.

 

Sì, certo, con tutti i mezzi andare con esso senza il lotsmax e se poi in seguito si vuole mettere a punto la vostra strategia o si vuole limitare il rischio si può utilizzare in modo che non è una necessità in quanto tale attualmente.

Puoi semplicemente eliminarlo, volevo solo mostrarti alcune linee del mio meccanismo di sicurezza.


Se volete una conferma, potete usare un

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
}

Ecco le principali bandiere che si impostano nella funzione messagebox dopo il messaggio:

Costante

Valore

Descrizione

MB_OK

0x00000000

La finestra dei messaggi contiene solo un pulsante: OK. Predefinito

MB_OKCANCELLA

0x00000001

La finestra del messaggio contiene due pulsanti: OK e Annulla

MB_ABORTRETRYIGNORE

0x00000002

La finestra del messaggio contiene tre pulsanti: Abort, Retry e Ignore

MB_YESNOCANCEL

0x00000003

La finestra del messaggio contiene tre pulsanti: Sì, No e Annulla

MB_YESNO

0x00000004

La finestra del messaggio contiene due pulsanti: Sì e No

MB_RETRYCANCEL

0x00000005

La finestra del messaggio contiene due pulsanti: Riprova e Annulla

MB_CANCELTRYCONTINUE

0x00000006

La finestra del messaggio contiene tre pulsanti: Annulla, Riprova, Continua


E qui i valori di ritorno:

Costante

Valore

Descrizione

IDOK

1

Il pulsante "OK" è stato premuto

IDCANCEL

2

Il pulsante "Annulla" è stato premuto

IDABORT

3

È stato premuto il pulsante "Abort".

IDRETRY

4

Il pulsante "Riprova" è stato premuto

IDIGNORE

5

Il pulsante "Ignora" è stato premuto

IDYES

6

Il pulsante "Sì" è stato premuto

IDNO

7

Il pulsante "No" è stato premuto

IDTRYAGAIN

10

Il pulsante "Riprova" è stato premuto

IDCONTINUE

11

Il pulsante "Continua" è stato premuto


Messagebox() non funziona nel tester.

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

Sì, naturalmente, con tutti i mezzi, andare con esso senza il lotsmax e se poi più tardi si vuole mettere a punto la vostra strategia o si vuole limitare il rischio è possibile utilizzare in modo che non è una necessità come tale attualmente.
Puoi semplicemente eliminarlo, volevo solo mostrarti alcune linee del mio meccanismo di sicurezza.

Grazie ancora per il vostro grande aiuto.

Allora, ho appena provato come il metodo qui sotto, sto facendo bene, per favore?
(Avevo bisogno di chiedere prima di portarli nel mio file .mq4 principale - ci sto lavorando)

Grazie in anticipo.

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

Solo un consiglio di stile, che renderà il vostro codice (molto, molto leggermente) più efficiente... ma ehi, tutto torna!

Hai una casella di messaggio con 2 pulsanti. Se non è IDYES, deve essere IDNO (o la funzione non è stata completata con successo).

Quindi non c'è bisogno di testare result_message due volte.

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 preferisci vederlo scritto, usa una dichiarazione 'else if':

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:

Solo un consiglio di stile, che renderà il vostro codice (molto, molto leggermente) più efficiente... ma ehi, tutto torna!
Hai una casella di messaggio con 2 pulsanti. Se non è IDYES, deve essere IDNO (o la funzione non è stata completata con successo).
Quindi non c'è bisogno di testare result_message due volte.

Grazie ancora per tutto.
Ora posso metterli nell'EA principale.
( anche io ho bisogno di esperienza per MessageBox() )

 
Max Enrik:

Grazie ancora per tutto.
Ora posso inserirli nell'EA principale.
( anche io ho bisogno di esperienza per MessageBox() )

Non c'era niente di sbagliato nello scrivere nell'altro modo, è solo una cosa di preferenza personale. Sono contento che tu abbia risolto il problema.