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

 
Un'altra cosa - quando avvio l'EA, un ordine si apre sulla prima candela, anche se non c'erano segnali in quel momento. Come può essere rimosso?
File:
 
artem artem prezzi di apertura nello stesso periodo - 29 ordini ?

+ diversi ordini hanno esplicitamente mancato il loro prezzo di apertura se sono stati testati da tick. Ho allegato uno screenshot che mostra

Prova

File:
artem.mq4  13 kb
 
Ora apre lo stesso numero di ordini sia per tick che per prezzo di apertura. 23ordini in totale durante lo stesso periodo di tempo. Solo che ora, per qualche motivo, entro dalla settima candela e non dalla quarta.
 
artem artem ordini in totale durante lo stesso periodo di tempo. Solo che ora stiamo entrando dalla settima candela, non dalla quarta.

Rimosso tutto il superfluo...sembra funzionare come dovrebbe

File:
artem.mq4  11 kb
 
Potete dirmi se c'è un modo per delimitare le stringhe delle impostazioni EA nel terminale in modo che non possano essere cancellate? Se scrivete extern string nel codice, vi permette di modificare la stringa, e se accidentalmente la cancellate, dovete premere "reset" per ripristinarla, ma poi tutte le impostazioni vengono resettate. Naturalmente possono essere salvati in un set-file in anticipo, ma sono solo curioso di sapere se è possibile fare una "tabella di pietra")
 

Controllato, sia sui tick che sul prezzo di apertura... RA-BO-TA-ET!!!!

MakarFX, grazie mille!!! Sono passate 2 settimane da quando ho giocato con questo puzzle, tutto senza risultato fino ad oggi. Grazie mille, ancora una volta! Mi restano letteralmente pochi chiarimenti, e non voglio trattenervi oltre, e tanto del vostro tempo è stato speso. In realtà, ecco quello che mi interessa:


1. Per quanto ho capito, se voglio cambiare il numero di "candele di conferma", allora devo solo cambiare un numero con un altro nella costante, ed è tutto?

void OnTick()
  {
//---
   StopLevel = MarketInfo(Symbol(), MODE_STOPLEVEL); 
   //---
   if(newbar!=Time[0])
     {
      if(CheckForOpen()!=Start)
        {Start=CheckForOpen(); cnt=1;}
      else
        {cnt+=1;}
      //---
      if(cnt==8)
        {
         // Открытие ордера по методу Пуриа
         if(CheckForOpen()==0) // Если сигнал для покупок 
           {
            if(OrderSend(Symbol(),OP_BUY,Lots(),Ask,Slip,Bid-StopLoss*Point,Ask+TakeProfit*Point,"",MagicNumber,0,Blue))
              {Print("BUY OK");}
              else {Print(GetLastError());}
           } 
         if(CheckForOpen()==1) // Если сигнал для продаж 
           {
            if(OrderSend(Symbol(),OP_SELL,Lots(),Bid,Slip,Ask+StopLoss*Point,Bid-TakeProfit*Point,"",MagicNumber,0,Red))
              {Print("SELL OK");}
              else {Print(GetLastError());}
           }
        }   
      newbar=Time[0];
     }
  }

2. Quando eseguo l'Expert Advisor, il primo ordine SELL viene aperto sulla prima candela, anche se non ci sono stati segnali. Questo significa che questo primo ordine è ridondante, e l'EA non dovrebbe aprire un affare immediatamente al primo ordine, solo perché l'EA è stato appena avviato. Come si può rimediare a questo? Ho l'idea che Init sia responsabile di questo e dovrei semplicemente cambiarlo in "false", o eliminare del tutto questo Init?

bool OrderBuy = true, OrderSell = true, Order = false, Init = true;

E infine, se lo lascio così e lo faccio funzionare per fare trading su diverse coppie di valute contemporaneamente, funzionerà come dovrebbe? Oppure devo prescrivere qualcos'altro nel codice, in modo che non ci siano bug e così via. In particolare, se questo EA lavorerà su diverse coppie di valute contemporaneamente?

In realtà, questo è tutto ciò che mi interessa, ma comunque - grazie mille ancora! Se l'avessi fatto io, non so quanto tempo ci sarebbe voluto)

 
artem artem #:

Controllato, sia sui tick che sul prezzo di apertura... RA-BO-TA-ET!!!!

MakarFX, grazie mille!!! Sono passate 2 settimane da quando ho giocato con questo puzzle, tutto senza risultato fino ad oggi. Grazie mille, ancora una volta! Mi restano letteralmente pochi chiarimenti, e non voglio trattenervi oltre, e tanto del vostro tempo è stato speso. In realtà, ecco quello che mi interessa:


1. Per quanto ho capito, se voglio cambiare il numero di "candele di conferma", allora devo solo cambiare un numero con un altro nella costante, ed è tutto?

2. Quando eseguo l'Expert Advisor, il primo ordine SELL viene aperto sulla prima candela, anche se non ci sono segnali. Questo significa che questo primo ordine è ridondante, e l'EA non dovrebbe aprire un affare immediatamente al primo ordine, solo perché l'EA è stato appena avviato. Come si può rimediare a questo? Ho l'idea che Init sia responsabile di questo e dovrei semplicemente cambiarlo in "false", o eliminare del tutto questo Init?

E infine, se lo lascio così e lo faccio funzionare per fare trading su diverse coppie di valute contemporaneamente, funzionerà come dovrebbe? Oppure devo prescrivere qualcos'altro nel codice, in modo che non ci siano bug e così via. In particolare, se questo EA lavorerà su diverse coppie di valute contemporaneamente?

In realtà, questo è tutto ciò che mi interessa, ma comunque - grazie mille ancora! Se avessi provato io stesso, non so quanto tempo ci sarebbe voluto)

1) Sì, questi sono i valori del numero di "candele di conferma" .

2) No, sulla prima non si apre, solo dopo un dato numero di "candele di conferma"

3) Cambiare il magik e metterlo su qualsiasi coppia

È meglio rendere la magia una variabile esterna

 
Ivan Butko #:
Potete dirmi se c'è un modo per delimitare le stringhe delle impostazioni EA nel terminale in modo che non possano essere cancellate? Se scrivete extern string nel codice, vi permette di modificare la stringa, e se accidentalmente la cancellate, dovete premere "reset" per ripristinarla, ma poi tutte le impostazioni vengono resettate. Possono, naturalmente, essere conservati in un file di set, ma sono solo curioso di sapere se è possibile fare un "tableau di pietra")
Fare un ENUM
 
MakarFX #:
Fare l'ENUM

Lo proverò, grazie.

 
Ivan Butko #:

Lo proverò, grazie.

enum MODE
  {
   MODE_1=1,    // Мертвая строка
  };
//--- input parameters
input MODE mode= MODE_1; // Эта строка