[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non potrei andare da nessuna parte senza di te - 2. - pagina 281

 
Pyro:

tara


È interessante, perché il prezzo di impostazione di un ordine è normalizzato a 4 cifre, cioè le frazioni di pip non possono esserci. Perché è così? E sì, ora funziona correttamente! THX

In realtà, la normalizzazione deve essere fatta al momento del calcolo:

   int dg=MarketInfo(Symbol(),MODE_DIGITS);        // Количество цифр после десятичного точки в цене инструмента
   if (NormalizeDouble(OrderOpenPrice()-(p1+more),dg)==0) {
      // ... тут код, если результатом сравнения стал ноль, т.е. сравниваемые величины равны
      }

e alcuni punti del vostro codice:

for(int i=1 ; i <= OrdersTotal() ; i++)   // делаете цикл от второго ордера в списке. Почему бы сразу не for(int i=0; i<OrdersTotal(); i++) ?
   {
   if(OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES))  // если выбрали ЛЮБОЙ ордер, пусть он даже открыт другим советником или вручную
      {                                           
      if(OrderOpenPrice()-(p1+more) == 0)          // сравниваете без нормализации
         {
         ordersethigh1=true;                       // желательно флагу ПЕРЕД циклом задать значение false
         break;
         }
      }
   }
     
if((ordersethigh1==false) && (p2-price>pointsclose))  // второе условие тоже не нормализовано
   {
   OrderSend(Symbol(),OP_SELLLIMIT,baselot,p1+more,3,NULL,NULL,"Comment",0001,0,White);
   }
 

artmedia70


Beh, ho scritto basandomi sul tuo codice. Semplificato per ora (lo sto capendo). L'unica cosa che è diventata chiara è che tutto deve essere normalizzato. È una specie di rivelazione (tutto ha funzionato sul tester). Lo sto risolvendo ora.

если выбрали ЛЮБОЙ ордер, пусть он даже открыт другим советником или вручную

In questo caso, non abbiamo bisogno di codice ridondante. Ma ho aggiunto un controllo per lo strumento.

Ho due varianti, entrambe funzionano:

if(OrderOpenPrice()-(channelhigh+more) <=Point*0.5)

if(NormalizeDouble(OrderOpenPrice()-(channelhigh+more),4) == 0)

Grazie, ha chiarito molto!



 
Pyro:

artmedia70


Beh, ho scritto basandomi sul tuo codice. Semplificato per ora (lo sto capendo). L'unica cosa che è diventata chiara è che tutto deve essere normalizzato. È una specie di rivelazione (tutto ha funzionato sul tester). Lo sto risolvendo ora.

Ilcodice eccessivo non è necessario in questo caso. Ma ho aggiunto un controllo per lo strumento.

Ho due opzioni, entrambe funzionano:


Grazie, molto è stato chiarito!

È ridondante controllare che tipo è l'ordine selezionato? Se è un ordine di acquisto o di vendita? Senza controllare, la vostra funzione vi dirà che c'è un ordine in sospeso (state controllando la sua presenza). Si vuole controllare se c'è un ordine in sospeso, e si otterrà true se c'è qualche tipo. Anche se lo si apre manualmente. Ci sono quattro tipi di ordini in sospeso. Per evitare confusione, è meglio passare in una funzione, quando la chiamate, il tipo di un ordine in sospeso, e poi controllare se il tipo di ordine che avete scelto corrisponde a quello passato nella funzione.
(Questo controllo non è presente nel mio esempio a pag. 277). Controlla solo se c 'è qualche pendente - se il tipo è inferiore a 1 e superiore a 5, si passa a selezionare il prossimo).

Il prossimo. Il tuo EA può lavorare su un TF, e sull'altro, un altro EA può lavorare simultaneamente. Entrambi lavorano sullo stesso strumento. Una posizione aperta da un altro EA sarà considerata da questo EA come "sì, c'è un ordine". Quindi, dobbiamo introdurre un controllo MagicNumber in modo che l'Expert Advisor possa distinguere i propri ordini e posizioni.

Pertanto, i controlli per il simbolo dello strumento di negoziazione, il numero magico e il tipo di ordine controllato non sono eccessivi, ma necessari. Questo è il minimo, ma non la ridondanza.

 

Saluti compagni!

Per favore consigliate: qualcuno ha incontrato il problema di cercare l'ultimo ordine chiuso. È diventato redditizio o non redditizio?

Quali metodi avete usato?

Grazie in anticipo.

R.S. Credo che l'operazione non sia difficile, ma non so come avvicinarmi ad essa.

 
artmedia70:

Pertanto, i controlli per il simbolo di uno strumento di negoziazione, il numero magico e il tipo di un ordine controllato non sono eccessivi, sono necessari. Questo è il minimo ma non eccessivo.

Il mio errore qui è stato che ho postato solo una funzione in sostanza. Ci saranno dei controlli, ovviamente. È solo che questo pezzo di codice, è un pezzo di formazione in molti modi, non è altro che una parte dell'EA. Grazie ancora per il vostro aiuto, amici!

 
ramirez17:
Immagino che sia un'operazione semplice, ma non so come procedere.
Sareste sorpresi di quanto sia popolare questa domanda.
Domanda di Google:
ultimo ordine chiuso sito:mql4.com
 
ramirez17:

Saluti compagni!

Per favore consigliate: qualcuno ha incontrato il problema di cercare l'ultimo ordine chiuso. È diventato redditizio o non redditizio?

Quali metodi avete usato?

Grazie in anticipo.

s.s. Credo che questa operazione non sia troppo complicata, ma non so come affrontarla.

https://www.mql5.com/ru/forum/131859/page4#434229

https://www.mql5.com/ru/forum/131859/page4#434230

 
granit77:
Sareste sorpresi di quanto sia popolare questa domanda.
Domanda di Google:
ultimo ordine chiuso sito:mql4.com

Ok. Mi sono dimenticato di Google. Sono andato direttamente qui :)
 
in quale cartella devo mettere il file impostato dall'EA?
 
drm1:
in quale cartella devo mettere il file impostato dall'EA?
esperto/preset
Motivazione: