Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1943

 
Maksim Kalachev #:

Ho letto che solo l'indicatore è impostato come indicatore. Ma quando si carica la demo appare negli EAs

Non postare la stessa domanda in diversi thread del forum.

Ti ho risposto lì:

Forum sul trading, sistemi di trading automatico e strategie di trading di prova

Bug, bug, domande

Artyom Trishkin, 2022.04.05 15:13

L'avete scritto usando i vecchi gestori.

Dovreste usare OnCalculate().


 
Artyom Trishkin #:

Non postare la stessa domanda in diversi thread del forum.

Vi ho risposto lì:


Lo sto già leggendo. Grazie!

 
Posso cancellare la mia corrispondenza con una persona? Voglio chiudere una chat con un utente
 
makssub #:

Buon pomeriggio.

Aiuto con il codice, forse ci sono esempi.
Compito:

Ci sono diversi ordini aperti, con diversi lotti, in diverse direzioni. Uno di loro è sepolto con profitto, supponiamo 20. Tuttavia, c'è un ordine aperto con un profitto negativo, supponiamo -55 con 0,05 lotti. Voglio chiudere una parte di un ordine negativo dell'importo del profitto di un ordine chiuso positivamente per diminuire il drawdown.

Ho provato a scrivere questo usando l'operatore while, ma non è andata bene.

Grazie in anticipo.

Non hai scritto se questo è sullo stesso strumento o su posizioni diverse?
 

Perché il codice MT5 funziona ma MT4 no? costruire 1Z5Z

Salva il modello ma non lo applica

//+------------------------------------------------------------------+
//|                                              File Read Write.mq4 |
//|                      Copyright © 2008, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
string SYMBOL;
string ccname;
void OnStart()
  {

   SYMBOL = _Symbol;
   ccname = SYMBOL;
   SaveTemplate();
 
 DownloadTemplate();
     
  }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void SaveTemplate(void)
  {
   if(ChartSaveTemplate(0, ccname))
      Print("Template successfully saved!  " + SYMBOL);
   else
      Print("Template save Failed!  " + SYMBOL);
   return;
  }
//+------------------------------------------------------------------+
void DownloadTemplate(void)
  {

   if(ChartApplyTemplate(0,ccname))
      return;
   else
      Print("Template download Failed!  " + SYMBOL);
  }

 
Potete per favore dirmi come far funzionare il programma solo quando una nuova candela è iniziata e, dopo aver eseguito il codice, rimanere fermi e aspettare che la prossima candela inizi?
 
Ivan Butko una nuova candela è iniziata e dopo aver eseguito il codice per appostarsi e aspettare l'inizio della prossima candela?

si chiamano prezzi di apertura.
è elementare.

 
Pavel Malyshko #:

Si chiamano prezzi di apertura.
è elementare.

Non lo capisco. Arriva una spunta, l'assegno passa. Il prossimo tick arriva e controlla di nuovo. Lo stesso timer non entra nell'apertura.

L'unica cosa che mi viene in mente è memorizzare l'ora dell'apertura, aggiungervi l'ora della candela e controllare l'ora attuale rispetto al nuovo valore

 
Ivan Butko #:

Non capisco. Arriva una zecca e viene controllata. Quando arriva la prossima spunta, si controlla di nuovo. Lo stesso timer non entra nell'apertura.

Posso solo ricordare l'ora di apertura, aggiungervi l'ora della candela e controllare l'ora attuale contro il nuovo valore

Forum sul trading, sistemi di trading automatico e test di strategia.

Tutte le domande dei neofiti in MQL4 e MQL5, qualsiasi aiuto e discussione di algoritmi e codici

Valeriy Yastremskiy, 2022.03.30 09:37

 
static datetime OldTime=0;
if(iTime(NULL,0,0)!=OldTime)
      {
      Alert("ДИВЕРГЕНЦИЯ НА "+Symbol()); OldTime=iTime(NULL,0,0);
      }

Se non conosci l'algoritmo, riceverai un avviso quando il prezzo raggiunge la fine della giornata. Quando appare una nuova barra,iTime(NULL,0,0) sarà cambiato e l'uguaglianza non sarà una volta, quindi l'uguaglianza e l'if saranno falsi.

Si può anche fare in questo modo.

static bool FlagNewBar=false;
   if(BarTime!=Time[0])
     {
      BarTime=Time[0];
      FlagNewBar=true;
     }

Oppure potremmo ottenere una nuova barra su qualsiasi timeframe.

bool FlagNewBarF(int prd, datetime &ArgBarTime,bool &FlagNbar)
  {
   FlagNbar=false;
   if(ArgBarTime!=iTime(NULL,prd,0))
     {
      ArgBarTime=iTime(NULL,prd,0);
      FlagNbar=true;
     }

   return(FlagNbar);
  }

La chiamata sarebbe la seguente

 if(FlagNewBarF(1, BarTime1,FlagNewBar1))
     {
      Alert("FlagNbar1 ",FlagNewBar1,"BarTime1 ",TimeToStr(BarTime1,TIME_DATE|TIME_SECONDS));
      
     }

   if(FlagNewBarF(5, BarTime5,FlagNewBar5))
     {
      Alert("FlagNbar5 ",FlagNewBar5,"BarTime5 ",TimeToStr(BarTime5,TIME_DATE|TIME_SECONDS));
     
     }

 
Valeriy Yastremskiy #:
Non hai scritto se questo è sullo stesso strumento o su posizioni diverse?

Che sia tutto all'interno della stessa coppia di valute, EurUsd per esempio. Entrambi sono aperti in Buy.

Motivazione: