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

 
Valeriy Yastremskiy #:
La nuova barra appare se iTime != OldTime allora Alert e OldTime =iTime su zero shift/bar.

quale valore dovrebbe essere scritto in OldTime? O_o

La freccia stessa è disegnata nel momento in cui la barra zero si apre.

Ho posto questa condizione.

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

Non funziona correttamente - anche nel tester, ci sono molti avvisi nel log.

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

Ricevo anche un sacco di avvisi - non so come scrivere questa cosa(((

 
DanilaMactep #:

quale valore dovrebbe essere scritto in OldTime? O_o

La freccia stessa è disegnata nel momento in cui la barra zero si apre.

Ho posto questa condizione.

Non funziona correttamente - anche nel tester, ci sono molti avvisi nel log.

Ricevo anche un sacco di avvisi - non capisco come scrivere questa cosa(((

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

Così, quando si avvia, si ottiene anche un avviso. Quando appare una nuova barraiTime(NULL,0,0) sarà cambiato e non ci sarà uguaglianza una volta, poi ci sarà uguaglianza e l'if sarà falso.

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 #:

In questo modo ci sarà anche un avviso durante il caricamento. Quando appare una nuova barraiTime(NULL,0,0) sarà cambiato e non ci sarà uguaglianza una volta, poi ci sarà uguaglianza e l'if sarà falso.

Grazie mille per l'aiuto - l'ho avvitato - ha dato 1 avviso durante la compilazione - vediamo cosa succede dopo:-)
 

"Nuova barra" è il male, in questo evento si possono ottenere dati dall'indicatore "ultima barra" cioè newbar-1.

Se si eseguono 3 terminali su un server e, a seconda della frequenza di trading il segnale salta in alcuni terminali, cioè prima di inviare la stampa dell 'ordine impostato (segnale Buy per esempio), e il valore di stampa dell'indicatore mostrerà il valore della barra precedente.

Naturalmente, è possibile eseguire alcuni controlli...

 
Valeriy Yastremskiy #:
La cartella generale di metaquote è la cartella del terminale, contiene le cartelle generali del terminale, lì i log del terminale, i dati e la cartella del tester, ha i suoi log e le sue cartelle di file. La cartella mcl contiene i log di EA, script, indicatori, finestre, sottofinestre.
tutto. Spc. Ieri l'ho pulito. Lo controllerò di nuovo oggi. Ripulito 30GB. Da circa 10 terminali e storia per lo più su strumenti e registri...
 
Artyom Trishkin:

In questo thread voglio iniziare ad aiutare coloro che vogliono veramente capire e imparare la programmazione nel nuovo MQL4 e vogliono passare facilmente a MQL5 - i linguaggi sono molto simili.

Questo blog sarà un buon posto per discutere di problemi, algoritmi della loro soluzione e qualsiasi altra domanda riguardante la programmazione MT in un modo o nell'altro.

Spero che altri membri esperti del nostro forum si uniscano alla discussione e che il ramo sia interessante per tutti.

Ciao, nessuno può aiutarmi con la funzione di chiusura dell'ordine, sto provando quanto segue,

per (int i=1; i<=OrdiniTotali(); i++)

{

if(OrderSelect(i-1,SELECT_BY_POS)==true)

{

if( Ask<= OrderOpenPrice())CloseBay();

}

}

Quando Ask è sopra l'order Bay, tutto va bene, non appena Bid diventa sopra l'order Bay l'ordine viene rimosso, e dovrebbe essere rimosso quando Ask è sotto il prezzo aperto. Per favore aiutatemi, vi sarò molto grato. Sinceramente Alexander.

 
Alexandr Spravchikov #:

Ciao, nessuno può aiutarmi con la funzione di chiusura dell'ordine, sto provando in questo modo,

Avete provato in questo modo?

void CloseBuy()
{
   for(int i= OrdersTotal()-1; i>=0; i--)
   {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {
         if((OrderSymbol()==_Symbol) && (OrderMagicNumber()==Magic) && (OrderType()==OP_BUY))
         {
            if( Ask<= OrderOpenPrice())
            if(!OrderClose(OrderTicket(),OrderLots(),Bid,Slip,Green))
            {
               Print("Error closing a buy order!"+  IntegerToString(_Period,0) +" Error code = " + IntegerToString(GetLastError(),0));
            }
         }
      }
   }
   return;
}
 

Saluti. Potete dirmi per favore come fare una query di trade api per "BTCUSDT" per indicare il numero di lotti non in BTC ma in USDT?

 

Ciao a tutti! Un consiglio, per favore.


L'idea è semplice. Scrivere un EA che aprirà una posizione e chiuderà quella opposta quando si rompe uno dei confini del canale globale. Il canale è costruito dall'indicatore.

Ho fatto una variante usando le guide di Internet. Questo bot apre/chiude le posizioni nello strategy tester, ma se si guarda il grafico, non soddisfa affatto le mie condizioni. Ho controllato tutte le variabili nel buffer e verificato gli errori. Non ho ottenuto alcun risultato.


Se qualcuno può, per favore mi consigli cosa c'è di sbagliato, in che direzione scavare. :3


Ho allegato un file con le variabili del buffer, la dimostrazione dell'indicatore, le sue variabili iniziali, la mia variante di Expert Advisor.

File:
9.png  14 kb
f2.png  26 kb
second.mq4  15 kb
 
E1Macho1 #:

Ciao a tutti! Puoi darmi un suggerimento, per favore?

Da che parte andare. :3

Scavare nella direzione dell'uso del debugger