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

 

Ciao a tutti!

Potete dirmi come insegnare all'Expert Advisor a ricordare che c'è stato un fatto di apertura di un ordine (dopo aver chiuso l'ordine). Le variabili logiche globali sono adatte, ma solo per uno strumento. Se ho più di un simbolo in un terminale, le variabili cambiano e non funzionano come previsto.

 
demlin:

Ciao a tutti!

Potete dirmi come insegnare all'Expert Advisor a ricordare che c'è stato un fatto di apertura di un ordine (dopo aver chiuso l'ordine). Le variabili logiche globali sono adatte, ma solo per uno strumento. Se ho più di un simbolo in un terminale, le variabili cambiano e non funzionano come previsto.


Quindi ogni strumento ha la sua variabile globale).
 
tol64:

Quindi ogni strumento ha la sua variabile globale).
Ha senso, allora come faccio a far sì che il programma generi i nomi? Non voglio stipare manualmente 60 variabili nel codice))
 

Ciao a tutti!

Ho delle difficoltà... Ho lavorato con l'EA sul grafico 24 ore al giorno, questo pomeriggio su EUR/USD ho avuto una condizione per aprire uno short, (l'apertura della candela precedente era superiore alla MA, e la sua chiusura era inferiore alla MA), ma l'ordine non si è aperto, ho eseguito questa sezione nel tester ora - l'ordine si è aperto come un bel,

Dov'è l'errore nel codice - non capisco, ho specificamente inserito la condizione, se l'ordine non ha aperto - provare ad aprirlo 10 volte, ma non sembra aiutare, si prega di aiutare un principiante ...

void CheckForOpensell()
  {
   double maopensell;
   int    ticketsell=0;


//---- go trading only for first tiks of new bar
   if(Volume[0]>1) return;
//---- get Moving Average 
   maopensell=iMA(NULL,TF,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0);
//---- sell conditions
   if(Open[1]>maopensell && Close[1]<maopensell)
   for (int it=1; it<=10; it++)
    {
      while (!IsTradeAllowed()) Sleep(5000); 
      RefreshRates();
      ticketsell=OrderSend(Symbol(),OP_SELL,LotsOptimizedsell(),Bid,3,0,0," MA Sell M"+TF,MAGICMA,0,Red);
      if(ticketsell>0)
         {
          OrderModify (ticketsell,OrderOpenPrice(),Bid+StopLoss*Point,Bid-TakeProfit*Point,0,Gold);
          return;  
         }
      
      else
       {
        int err=GetLastError();
        if (err==128 || err==142 || err==143 || err==144) 
         {
           Sleep(2000);
           Print("Error(",err,") opening position: ",ErrorDescription(err),", try ",it);
           continue;
         }
        if (err==146) while (IsTradeContextBusy()) Sleep(2000);
        Print("Error(",err,") opening position: ",ErrorDescription(err),", try ",it);
        if (err==2 || err==64 || err==65 || err==4110 || err==4111) break;
        Sleep(2000);
       }
      
     }
  }
 
Abylhat:

Ciao a tutti!

Ho delle difficoltà... Ho lavorato con l'EA sul grafico 24 ore al giorno, questo pomeriggio su EUR/USD ho avuto una condizione per aprire uno short, (l'apertura della candela precedente era superiore alla MA, e la sua chiusura era inferiore alla MA), ma l'ordine non si è aperto, ho eseguito questa sezione nel tester ora - l'ordine si è aperto come un bel,

Se l'ordine non si è aperto, ho provato ad aprirlo 10 volte, ma non è servito, per favore aiutate un principiante ...


È molto probabile che il problema sia in questa zona

 if(Volume[0]>1) return;

I segnali con tale condizione possono essere saltati. Ma nel tester funzioneranno di sicuro.

Non c'è nessun tick che salta nel tester

 
Vinin:


È molto probabile che il problema sia in questa sezione

I segnali con questa condizione possono essere mancati. Ma funzioneranno sicuramente nel tester.

Nessun tick che salta nel tester


Grazie, potresti dirmi come impostare la condizione in modo diverso?
 
Abylhat:

Grazie, potresti dirmi come impostare la condizione in modo diverso?

int start(){
   static int prevtime=0;
   if (Time[0]==prevtime) return(0);
   prevtime=Time[0];

//
   return(0);
}
Potete usare TimeCurrent() invece di Time[0]
 
demlin:

Ciao a tutti!

Puoi dirmi come insegnare a un Expert Advisor a ricordare che c'era un ordine aperto (dopo che l'ordine è stato chiuso). Le variabili logiche globali sono adatte, ma solo per uno strumento. Se ci sono diversi simboli in un terminale, le variabili cambieranno e non funzioneranno come previsto.

Quindi, l'Expert Advisor negozia diversi simboli contemporaneamente?

Se lui/lei commercia solo uno strumento, il numero magico di Expert Advisor può essere aggiunto al nome della variabile globale.

 
rlx:

L'Expert Advisor negozia più di uno strumento alla volta?

Se ne fa solo uno, il numero Magic dell'Expert Advisor può essere aggiunto al nome della variabile globale.

L'Expert Advisor negozia diversi strumenti allo stesso tempo
 
Vinin:

Potete usare TimeCurrent() invece di Time[0]

grazie, farò domanda e test....
Motivazione: