controllo spread

Sezione dedicata a metatrader (ed altre piattaforme) ed al suo linguaggio di programmazione per il trading automatico
Rispondi
thinky
Messaggi: 8
Iscritto il: 22/03/2020, 10:26

controllo spread

Messaggio da thinky »

salve volevo un aiuto per sapere se si può aggiungere in un ea un opzione da poter regolare esternamente per non fare operare l'ea in presenza di forte spreed,e se esiste già qualcosa di scritto o bisogna scriverlo grazie.
E AUGURI.....................
Avatar utente
carlo10
Messaggi: 4261
Iscritto il: 08/05/2014, 21:17

Re: controllo spread

Messaggio da carlo10 »

Potresti semplicemente verificare la differenza Ask - Bid e mettere una if se maggiore/minore della tua soglia che può essere una variabile esterna.
thinky
Messaggi: 8
Iscritto il: 22/03/2020, 10:26

Re: controllo spread

Messaggio da thinky »

Grazie io però non sono molto pratico di scrittura ci sto provando ad imparare anche se con scarsi risultati ma con la tua dritta proverò a scrivere qualcosa, se mi poi dare ancora o fare qualche esempio mi daresti una mano a scrivere quel if.
grazie.
thinky
Messaggi: 8
Iscritto il: 22/03/2020, 10:26

Re: controllo spread

Messaggio da thinky »

Ho provato con questo if

Codice: Seleziona tutto

    {
       if (Spread >= ("Spread" ));
       int tichet = SYMBOL_TRADE_MODE_DISABLED;
     }
ma mi da diversi errori in compilazione solo warnings ma sul diarioi,
questo- TestGenerator: unmatched data error (volume limit 4443 at 2020.03.20 19:45 exceeded)
thinky
Messaggi: 8
Iscritto il: 22/03/2020, 10:26

Re: controllo spread

Messaggio da thinky »

Ciao ho riprovato con questo sempre senza errori ma non mi funziona mi potete aiutare ?

Codice: Seleziona tutto

{
       if (Ask-Bid >= Spread ) ;
       int tichet = (MODE_SPREAD);
    bool res= OrderModify(OrderTicket(),OrderOpenPrice(),SL(OP_BUY),TP(OP_BUY),0,0);
     if(!res) 
               Print("Error in OrderModify. Error code=",GetLastError()); 
            else 
               Print("Order modified successfully."); 
     }
senapazio
Messaggi: 142
Iscritto il: 13/09/2015, 1:47

Re: controllo spread

Messaggio da senapazio »

il blocco if deve essere tipo questo

Codice: Seleziona tutto

   if ( Condition )                                         // Header of the operator and condition
      Operator;
oppure cosi

Codice: Seleziona tutto

 if ( Condition )                                     // Header of the operator and condition
      {
      Block 1 of operators                         // If the condition is true, then..
      composing body 1                             //..the operators composing body 1 are executed
      }else                                         // If the condition is false..
      {
      Block 2 of operators                        // ..then the operators..
      composing body 2                             // ..of body 2 are executed
      }
quindi attenzione ai punti e virgola. Nel tuo caso specifico l'if non ha effetto sulla ordermodify, e in generale su nessuna riga perchè hai messo un ; subito dopo la condizione e non esegue nessuna operazione a condizione verificata.
thinky
Messaggi: 8
Iscritto il: 22/03/2020, 10:26

Re: controllo spread

Messaggio da thinky »

ho modificato cosi'

Codice: Seleziona tutto

 {
       if (Ask-Bid >= Spread ) 
       int tichet = (MODE_SPREAD);
    bool spread= OrderModify(OrderTicket(),OrderOpenPrice(),SL(OP_BUY),TP(OP_BUY),0,0);
     if(!spread) 
               Print("Error in OrderModify. Error code=",GetLastError()); 
            else 
               Print("Order modified successfully."); 
     }
  else
     
      // verifico condizioni per il buy
      if((ModeHL == false && Close[ShiftEntrata] <= bb_low) || (ModeHL == true && Low[ShiftEntrata] <= bb_low))       
     
       
    {

        int ticket = OrderSend(Symbol(),OP_BUY,Lotti,Ask,0,SL(OP_BUY),TP(OP_BUY),"StudioBandaRevers",MagicNumber,0,Blue);
     }
ma anche se non mi da errori in fase di compilazione ,mi da questo errore. EURUSD,M15: OrderModify error 4108
zetalakappa
Messaggi: 42
Iscritto il: 06/07/2015, 15:45

Re: controllo spread

Messaggio da zetalakappa »

Ciao.
Per poter eseguire la funzione OrderModify, devi aver prima selezionato l’operazione con OrderSelect
Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti