Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 916

 
Zorian43:
Buona sera a tutti, non so se sto scrivendo nel topic giusto, scusate se sono in quello sbagliato. Quando ho installato Metatrader 5 sul mio Android, un conto demo è stato creato automaticamente e sono stato collegato ad esso ogni volta che ho avviato l'applicazione. Quando ho voluto collegare un altro conto, questa volta del mio broker, non ho trovato la password del conto demo. Ho premuto "reset password" e non posso più connettermi al conto demo. C'è un modo per ripristinare l'accesso al conto demo?
No. Aprite un nuovo conto demo.
 

Ciao!

Potete dirmi perché il metodo CAccountInfo::MarginCheck() può restituire il margine richiesto di zero nel tester? Restituisce solo zero se chiamato per un ordine di acquisto con limite ORDER_TYPE_BUY_LIMIT.

Strumento Si-9.18 - futures sul dollaro del MICEX.

Nel progetto di prova, la prossima chiamata nel tester dà non zero, ma 90 - un valore piccolo, che sembra abbastanza implausibile:

ENUM_ORDER_TYPE     orderType   = NULL;
uint                orderVolume = 1;
double              orderPrice  = gvTick.last;
double marginRequired = 0;

orderType       = ORDER_TYPE_BUY_LIMIT;
marginRequired  = gnCAccountInfo.MarginCheck( gsIns, orderType, orderVolume, orderPrice);
Print("  Требуемая маржа ", marginRequired);
Log output: 2018.09.01 13:38:56.040 2018.06.13 12:10:00 Margine richiesto 90.0
 
rel18:

Ciao!

Potete dirmi perché il metodo CAccountInfo::MarginCheck() può restituire il margine richiesto di zero nel tester? Restituisce solo zero se chiamato per un ordine di acquisto con limite ORDER_TYPE_BUY_LIMIT.

Strumento Si-9.18 - futures sul dollaro del MICEX.

Nel progetto di prova, la prossima chiamata nel tester dà non zero, ma 90 - un valore piccolo, che sembra abbastanza implausibile:

Sospetto perché solo

ORDINE_TYPE_BUY

Ordine di acquisto sul mercato

TIPO D'ORDINE_VENDERE

Ordine di vendita sul mercato

 
Vladimir Karputov:

Sospetto che questo sia perché solo

ORDINE_TYPE_BUY

Ordine di acquisto sul mercato

TIPO D'ORDINE_VENDERE

Ordine di vendita sul mercato

Ecco il risultato dell'ordine Buy Limit Order nel tester per lo stesso esempio. Un margine di 90 è molto piccolo, è davvero così?


E qui abbiamo un margine di zero nel tester:



Tutti i test di storia sono fatti con un conto reale.
 

L'indicatore ha smesso di funzionare, aiuta a compilare
Grazie.

File:
VP-Range-v6.mq5  44 kb
VP-v6.mq5  42 kb
 
rel18:

Ecco il risultato di un ordine di acquisto limitato nel tester per lo stesso esempio. Un margine di 90 è molto piccolo, è così che funziona?


Forse è il conto demo? Prova su un conto reale con lo stesso broker.

 
Aliaksei Karalkou:

L'indicatore ha smesso di funzionare, aiuta a compilare
Grazie.

Dalla build 1861 c'è una funzione iBarShift integrata, non può essere usata come funzione personalizzata. Si prega di rinominare la funzione.

 

Ciao, per favore aiutami con questo compito. C'è un valore di tipo String nel formato"PERIODO_M1""PERIODO_M2""PERIODO_M3", ecc. Dobbiamo sostituire questi valori con valori di tipo ENUM_TIMEFRAMES - PERIOD_M1, PERIOD_M2, PERIOD_M3 rispettivamente, ecc.

Nell'ESEMPIO qui sotto tutto andrebbe bene, ma non possiamo usare una variabile stringa nell'istruzione switch, cosa dovremmo fare? Potremmo semplicemente usare un costrutto if....else, ma penso che ci siano modi più eleganti. Qualche suggerimento? Grazie!

//+------------------------------------------------------------------+
//| Преобразует строку в таймфрейм                                   |
//+------------------------------------------------------------------+
ENUM_TIMEFRAMES StringToTimeframe(string timeframe)
  {
   ENUM_TIMEFRAMES tfr=Period();
   switch(timeframe) 
     {
      case "M1"  : tfr=PERIOD_M5;  break;
      case "M2"  : tfr=PERIOD_M6;  break;
      case "M3"  : tfr=PERIOD_M5;  break;
      }
//---
   return(tfr);
  }
 
Tango_X:

Ciao, per favore aiutami con questo compito. C'è un valore di tipo String nel formato"PERIODO_M1""PERIODO_M2""PERIODO_M3", ecc. Dobbiamo sostituire questi valori con valori di tipo ENUM_TIMEFRAMES - PERIOD_M1, PERIOD_M2, PERIOD_M3 rispettivamente, ecc.

Nell'ESEMPIO qui sotto tutto andrebbe bene, ma non possiamo usare una variabile stringa nell'istruzione switch, cosa dovremmo fare? Si potrebbe semplicemente usare un costrutto if....else, ma penso che ci siano modi più eleganti. Qualche suggerimento? Grazie!

Usare il costrutto if()

 
Tango_X:

Ciao, per favore aiutami con questo compito. C'è un valore di tipo String nel formato"PERIODO_M1""PERIODO_M2""PERIODO_M3", ecc. Dobbiamo sostituire questi valori con valori di tipo ENUM_TIMEFRAMES - PERIOD_M1, PERIOD_M2, PERIOD_M3 rispettivamente, ecc.

Nell'ESEMPIO qui sotto tutto andrebbe bene, ma non possiamo usare una variabile stringa nell'istruzione switch, cosa dovremmo fare? Si potrebbe semplicemente usare un costrutto if....else, ma penso che ci siano modi più eleganti. Qualche suggerimento? Grazie!

//+------------------------------------------------------------------+
//| Преобразует строку в таймфрейм                                   |
//+------------------------------------------------------------------+
ENUM_TIMEFRAMES StringToTimeframe(string timeframe)
  {
   return
     (
      timeframe == "M1"   ?  PERIOD_M1  :
      timeframe == "M2"   ?  PERIOD_M2  :
      timeframe == "M3"   ?  PERIOD_M3  :
      timeframe == "M4"   ?  PERIOD_M4  :
      timeframe == "M5"   ?  PERIOD_M5  :
      timeframe == "M6"   ?  PERIOD_M6  :
      timeframe == "M10"  ?  PERIOD_M10 :
      timeframe == "M12"  ?  PERIOD_M12 :
      timeframe == "M15"  ?  PERIOD_M15 :
      timeframe == "M20"  ?  PERIOD_M20 :
      timeframe == "M30"  ?  PERIOD_M30 :
      timeframe == "H1"   ?  PERIOD_H1  :
      timeframe == "H2"   ?  PERIOD_H2  :
      timeframe == "H3"   ?  PERIOD_H3  :
      timeframe == "H4"   ?  PERIOD_H4  :
      timeframe == "H6"   ?  PERIOD_H6  :
      timeframe == "H8"   ?  PERIOD_H8  :
      timeframe == "H12"  ?  PERIOD_H12 :
      timeframe == "D1"   ?  PERIOD_D1  :
      timeframe == "W1"   ?  PERIOD_W1  :
      timeframe == "MN1"  ?  PERIOD_MN1 : 
      PERIOD_CURRENT
     );
  }
//+------------------------------------------------------------------+