[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 64

 
HoBu4ek >> :
Potete per favore consigliarmi come fare in modo che un EA apra un ordine per più simboli contemporaneamente? >> Grazie in anticipo!

Questo non è possibile perché l'EA può aprire un ordine per un solo simbolo, e poi bisogna aspettare il trade (e non sempre ha successo e non sempre è veloce) per rilasciare il flusso di trade per altri ordini.

 
Drugoy писал(а) >>

Signori, vi prego di consigliare un nuovo arrivato! Ho scaricato il tutorial MQl4BookRussian.chm (autore Sergey Kovalev), il problema è che la stampa da questo formato è molto disordinata. Probyby ha copiato questo testo in formato doc, le immagini scompaiono. Sai se il libro di testo è disponibile in un formato adatto alla stampa (per leggere su un monitor, gli occhi si stancano)?

Prova la versione online del libro di testo direttamente dal sito web - https://book.mql4.com/ru/. E si può trasferire su doc senza problemi.

 
Reshetov >> :

Questo non è possibile perché un EA può solo aprire un ordine su un simbolo, dopo di che bisogna aspettare che l'operazione di trading vada a buon fine (e non sempre ha successo e non sempre è veloce) e il flusso di trade diventerà disponibile per altri ordini.

Con il trade flow ho capito tutto, ma come fare successivamente su 3 strumenti con un intervallo minimo di apertura (secondo l'algoritmo dell'advisor l'apertura dovrebbe iniziare in un certo secondo su tre valute contemporaneamente)? Se non ti dispiace, potresti postare uno snippet di codice come esempio? Te ne sarei molto grato!

 
Dimoncheg >> :

int start()
{
if (OrdersTotal() == 0
&& TimeDayOfWeek(TimeCurrent()) == 5
&& TimeHour(TimeCurrent()) == 12
&& TimeMinute(TimeCurrent()) == 30
&& TimeSeconds(TimeCurrent()) >= 00)
{
Alert("Тра ляля");
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,"sell",999999,0,Red);
}


Nessuno sa perché nessun ordine si apre qui? Cosa sto facendo di sbagliato?

Se questo è l'intero codice, non si compila nemmeno. Se metti un numero al posto di Lot, l'EA funziona bene.


 
HoBu4ek >> :

Ho capito tutto con il flusso di trade, ma come far aprire le operazioni consecutivamente su 3 simboli con intervalli minimi (secondo l'algoritmo dell'EA, l'apertura dovrebbe iniziare in un certo secondo su tre valute contemporaneamente)? Se non ti dispiace, potresti postare uno snippet di codice come esempio? Vi sarò molto grato!

Immagino che tu abbia bisogno di 3 ordini da aprire per strumenti diversi? Perché non fare una variabile bandiera per esempio

Creare in variabili globali

int flag=0;
string Symb;

///////////////

ulteriore

int start()
{
if (условие открытия)
{flag=1;}

if (flag==1)
{
Symb="EURUSD";
OrderSend(Symb,...)///Открываем, переносим флаг во 2 состояние для открытия след ордера и
flag=2; ///выходим тк больше мы ни чего не можем сделать
return(0);
}

if (flag==2)
{
Symb="AUDUSD";
OrderSend(Symb,...)
flag=3;
return(0);
}

if (flag==3)
{
Symb="USDJPY";
OrderSend(Symb,...)
flag=0;//Возвращаем флаг в начальное состояние..
return(0);
}
return(0);}


Sarebbe anche bello aggiungere un controllo aperto e spostare la bandiera solo dopo che il controllo ha avuto successo.

 
Inzer >> :

Se questo è l'intero codice, non si compila nemmeno. Se metti un numero al posto di Lot, l'EA funziona bene.


Controlla il tipo di dati di Lot. Dovrebbe essere doppio.

 
TheXpert >> :

Così, a colpo d'occhio. Non ho capito i termini, ma non c'è crossover nella seconda variante.

Un'altra cosa -- la funzione OrderSend restituisce un int ticket, quindi è corretto controllare il successo in questo modo:

Nel vostro caso, è necessario controllare se è scorretto:

______

Sì, non so come gli altri, ma per me la parola "esperti" suona come una presa in giro. Forse è per questo che non hai avuto notizie per così tanto tempo. ;)

Ciao!!!!!!!!!!!!!!

Sì, come dici tu........ non chiamarlo così non chiamarlo..... Anche se esperti è abbreviato da specialisti (persone con conoscenze, insegnanti, per così dire).

Non mi interessa ...... Intendevo solo positivo e gentile ........

Ma non importa ........

All'inizio di questo thread ho chiesto del MA. Le risposte erano molto intelligenti. Ora ci sono tornato di nuovo.

Un'idea è venuta fuori.....

int start()
  {
//----
    double MA_0=iMA(NULL, 0, pMA, pSh, mode, price,0);
    double MA_1=iMA(NULL, 0, pMA, pSh, mode, price,1);
        
    if( MA_1< Open[1] && MA_0>Open[0])
     if( CheckOrders(OP_SELL))//продажа
      {
       if(!OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, 0, 0, NULL, MagicNumber))
         Print("Не открыт ордер Buy. Ошибка №", GetLastError()); 
       }
       
    if( MA_1>Open[1] && MA_0<Open[0])
     if( CheckOrders(OP_BUY))//покупка
      {
       if(!OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, 0, 0, NULL, MagicNumber))
         Print("Не открыт ордер Sell. Ошибка №", GetLastError()); 
       }
//----
   return(0);
  }

Ho deciso di modificare un po' le condizioni di trading. Ma non ha funzionato(((((((( Volevo mettere open_1 e open_0 (prezzo aperto sulla prima barra e

Prezzo aperto su una barra di zero) Quando ho controllato ha dato errori, ho dovuto tornare alla versione originale (che ho dato sopra).

Come mi è stato spiegato open[1] è una chiamata della cella dell'array con nome open e indice [1]. Tutto questo è buono...... ma ha solo bisogno di un prezzo aperto su 1(2,0) barra

Consigli per il manichino.....)))))))).....

 
Come posso rintracciare se un ordine in sospeso è scattato (ad esempio un ordine di acquisto)? È meglio cercarlo per id nella cronologia o c'è un'opzione più breve?
 
fima_ >> :
Come rintracciare che l'ordine pendente è scattato (per esempio, su buy)? È meglio cercarlo per il suo id nella storia o c'è un'opzione più breve?

Potresti provare questo

OrderSelect(1, SELECT_BY_POS)

if(OrderOpenTime()!=0)

{

///необходимая операция

}

Ma questa è solo un'opzione se hai solo 1 ordine!

 
Quale funzione viene utilizzata per determinare il valore di pip di uno strumento finanziario? Per esempio, per EURUSD, il valore di 0,0001 è di $10 (quando si negozia 1 lotto)