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

 
sergeev:

L'ho provato e non si è bloccato.


ha dato errore 129 su OrderClose.

Metti RefreshRates davanti.

Chiuso senza errori


Sì, ho fatto lo stesso, ma a volte smette di funzionare (e non il terminale stesso, ma l'EA)

 
doon:
Puoi spiegare perché questo codice a volte si blocca in un punto e bisogna riavviare il terminale per riprenderlo?


Vi è stato chiesto molto direttamente - A quale linea si blocca?

Il tuo codice apre e chiude immediatamente lo stesso ordine ed è molto ben documentato, quindi dovrebbe essere immediatamente visibile in Alerts quale linea il codice ha raggiunto. O è solo una parte del codice?

 
Roger:


Vi è stato chiesto abbastanza direttamente - Su quale linea si blocca?

Il tuo codice apre e chiude immediatamente lo stesso ordine ed è molto ben documentato, quindi dovresti essere in grado di vedere immediatamente negli avvisi quale linea ha raggiunto il codice. O è solo una parte del codice?


No, questo è tutto un codice. E si ferma alle linee di apertura e chiusura degli ordini (ma non sempre).

 
Sostituire ask e bid nel codice con MarketInfo(Symbol(),MODE_ASK) e MarketInfo(Symbol(),MODE_BID), dovrebbe funzionare
 

Da questo:

OrderSend(Symbol (), OP_BUY, 1, Ask, 10,0,0, "dsgdsf", 0, 0, CLR_NONE);

Su questo:

OrderSend(Symbol (), OP_BUY, 1, MarketInfo(Symbol(),MODE_ASK), 10,0,0, "dsgdsf", 0, 0, CLR_NONE);
?
 

No, si blocca ancora.

Dopo 4 minuti di sospensione, si è rivelato l'errore 128(il tempo di attesa della transazione è scaduto).

Forse questo vi aiuterà?

 

Cari colleghi, sono ancora un completo "manichino"nella programmazione MQL, ho iniziato a studiare questo argomento abbastanza recentemente. Ma ho già iniziato a scrivere il mio primo Expert Advisor, o almeno ci ho provato.

Nella 182esima pagina di questo argomento ho esposto i criteri di trading con cui questo EA dovrebbe operare. Si prega di vedere cosa dice (ultimo post della pagina). Ho lottato per tre settimane e ancora non riesco a scrivere qui la parte di codice responsabile dei criteri di trading. Ho lettoil capitolo del tutorial dedicato a questo argomento, ma non mi ha aiutato in questo caso particolare.

Ho scritto decine di varianti di questa parte del codice durante le mie battaglie di programmazione, ma nessuna di esse funziona correttamente. Ovviamente non ho abbastanza conoscenze, non posso padroneggiareMQL così velocemente .Comunque, ecco una delle varianti di codice che funziona, almeno approssimativamente, come voglio io.

//+-------------------------------------------------------------------------------------+
//| Расчет значений технических индикаторов с формированием сигналов для позиций        |
//+-------------------------------------------------------------------------------------+
void GetSignal()
{
 Signal = 0;
// - 1 - == Получение значений индикаторов ==============================================
 double SAR = iSAR(Symbol(), 0, SARStep, SARMaximum, 0);
 double EnvUp = iEnvelopes(Symbol(), 0, EnvPeriod, EnvMethod, EnvShift, EnvPrice,
 EnvDeviation, MODE_UPPER, 1);
 double EnvDn = iEnvelopes(Symbol(), 0, EnvPeriod, EnvMethod, EnvShift, EnvPrice,
 EnvDeviation, MODE_LOWER, 1);
 double StochM = iStochastic(Symbol(), 0, StochK, StochD, StochSlowing, StochMethod,
 StochPrice, MODE_MAIN, 1);
 double StochS = iStochastic(Symbol(), 0, StochK, StochD, StochSlowing, StochMethod,
 StochPrice, MODE_SIGNAL, 1);
// - 1 - == Окончание блока =============================================================

// - 2 - == Генерация сигнала ===========================================================
 if (SAR < Low[1])
   {
    Signal = 3;                                                          // Закрытие SELL
    if (StochM > StochS && StochM >= 80 && StochS >= 80 && High[1] >= EnvUp && SAR < Open[1])
      Signal = 1;                                                         // Открытие BUY
   }   
 
 if (SAR > High[1])
   {
    Signal = 4;                                                           // Закрытие BUY
    if (StochM < StochS && StochM <= 20 && StochS <= 20 && Low[1] <= EnvDn && SAR > Open[1])
      Signal = 2;                                                        // Открытие SELL
   }   
// - 2 - == Окончание блока =============================================================
}


So che il codice è tutto storto e inclinato, e in generale le posizioni dellabaia e vendita sono mescolate. Ma questa è l'unica variante del codice, quando Stocastico e Inviluppo stanno scambiando insieme, senza ignorarsi a vicenda. Allo stesso tempo, i segnali parabolici non sono presi in considerazione nel trading per qualche motivo. Comunque, per favore non rimproveratemi troppo per questa "presa per il culo", sono ben consapevole che il codice non è corretto.

Per favore aiutatemi, correggete il codice del mio Expert Advisor. Sto avendo un momento difficile con questo. Ho implementato strategie più semplici (Mooving + Momentum; Mooving +RSI), ma questa funziona. Per favore, aiutatemi. Per favore riscrivete tutte le linee sbagliate per far sì che il mio EA commercializzi secondo queste regole, che ho descrittoa pagina 182. Ne ho davvero bisogno.

P.S.: Non posso scrivere tutto il codice, perché ho usato dei modelli MQL già pronti .

 
doon:

No, si blocca ancora.

Dopo 4 minuti di sospensione, si è rivelato l'errore 128(il tempo di attesa della transazione è scaduto).

Forse questo vi aiuterà?


Dannazione, cambiate già il dealing center - è chiaro senza alcun suggerimento che se gli ordini di trading sullo stesso codice passano normalmente e poi si blocca, significa che il server sta morendo. L'ordine è uscito e non è tornato per 4 minuti. Avete davvero intenzione di condurre veri e propri scambi su questo server? Incrocia il tuo cuore e cambia diverse case di intermediazione alcune volte. Qualcuno ti ha insegnato ad usare il computer? Non è una macchina da scrivere o una console di gioco - richiede conoscenza. Questo è uno studio e un lavoro minuzioso. Se aveste una conoscenza di base della linea di comando, di come aprire i file e almeno una comprensione di base di come funziona una rete di computer, fareste domande diverse e sareste felici di ricevere aiuto. Tutto ciò di cui hai bisogno ora è fare un ping al server della tua società di intermediazione e confrontare il tempo di risposta con il tempo di risposta del server di altre società di intermediazione. Se passaste circa 30 minuti, capireste cosa è cosa. Se tu avessi provato a delineare l'interazione tra l'Expert Advisor e il server, potremmo anche stimare con MQL4 quanto velocemente il server della tua società di brokeraggio esegue gli ordini di trading.

Non ci sono parole. Come si può trattare con tanta noncuranza il processo del proprio lavoro?

 

daytrader19:

Per favore riscrivi le linee sbagliate in modo che l'EA faccia trading secondo le regole che ho descrittoa pagina 182.

Nota.

1) La condizione "linea1[1]>linea2[1]" non è sufficiente per il segnale "due linee che si incrociano". Надо "линия1[1]>линия2[1]&&линия1[2]<линия2[2]"

2) La parabolica non va confrontata con Open, ma con High e Low, e nota che la calcoli sulla barra zero e prendi Open[1] dalla prima barra.

 
doon:

No, si blocca ancora.

Dopo 4 minuti di sospensione, si è rivelato l'errore 128(il tempo di attesa della transazione è scaduto).

Forse questo vi aiuterà?


Può anche succedere con un cattivo internet, per esempio quando si scarica troppo un torrent. Ma non potrete controllare fino a lunedì.