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

 
hoz:

Anch'io ho avuto il fottuto errore. In effetti, non c'è nessuna logica. Per aprire un ordine pendente secondohttps://book.mql4.com/ru/appendix/limits, il prezzo di apertura deve essere inferiore al Bid (per vendere) o superiore all'Ask (per comprare). Sto facendo come richiesto.

Di tanto in tanto ottengo 0 e 130 errori. Anche se 130 è un errore di stop sbagliato, che può accadere durante la modifica, ma non durante l'apertura dell'ordine.

Nella schermata la situazione e la stampa visualizzata utilizzando la funzione pr.

Si prega di consigliare come sbarazzarsi di questo bug. Sono davvero stufo di questo errore. Logicamente, non è affatto in tema.

Victor, a parte la conformità al di sopra e al di sotto, è necessario utilizzare la clearance preventiva, perché mentre l'ordine viene inviato, il prezzo non sta fermo, quindi si ottiene un passo o un passo nell'area riservata! Inserisci come in modifica e uno slittamento maggiore, e sarai a posto! Lavorare su Real senza errori! Buona fortuna!
 
borilunad:
Victor, oltre al sopra-sotto, è necessario utilizzare un gap preventivo, perché mentre l'ordine viene inviato, il prezzo non è fermo, quindi si ottiene un passo o un passo nella zona proibita! Inserisci come in modifica e uno slittamento maggiore, e sarai a posto! Lavorare su Real senza errori! Buona fortuna!


Boris, quindi lo slittamento vale già 3, questo, come ho capito 3 punti. Di quanto altro avete bisogno?

Vuoi dire così:

bool OpenBuy()
{
   int ticket = -1;
   double OOP = High[1] + i_thresholdToUp * pt;
   pr ("ND(OOP) = " + ND(OOP) + " ; Ask = " + Ask);
   pr ("g_stopLevel = " + g_stopLevel);

   if ((ND(OOP) - g_stopLevel)> Ask)
       ticket = OrderSend(Symbol(), OP_BUYSTOP, 0.1, ND(OOP), 3, 0, 0, NULL, i_magic, 0, CLR_NONE);
   else pr ("Ордер послать не удалось " + GetLastError());
   
   if (ticket > 0)
   {
 //      lastBarTime = Time[0];               // На текущем баре все необходимые действия..
                                            // .. успешно выполнены
       return (true);
   }
}

Mi sto chiedendo come implementarlo in un modo migliore, per non mettere funzioni extra qui dentro.

 

hoz, su mi chiedevo come accorciare ulteriormente il se. Vedi: se mettiamo una variabile

bool _if=((2*trend-1)*Δ≥const);//аналогично _if=(±Δ≥const)

abbiamo cnt=cnt+step, dove

if(_if) step=1;
}else{ step=-cnt;
}

Ma 1=cnt/cnt, a -cnt=cnt/(-1), l'unica differenza è il denominatore. Ora ricordiamo che x^0=1, x^1=x, cioè possiamo mettere la nostra variabile booleana _if nell'esponente, cioèpasso=cnt/a*(cnt^_if); dove

if(_if) a=1;
}else{ a=-1;
}

Ma ±a è presumibilmente 2*_if-1, cioè

bool _if=((2*trend-1)*Δ≥const);//аналогично _if=(±Δ≥const)
int step=cnt/(2*_if-1)*(cnt^_if);//принимает два значения: 1 и -cnt
cnt=cnt+step;

Oppure semplifichiamo

bool _if=((2*trend-1)*Δ≥const); cnt=cnt+cnt/((2*_if-1)*(cnt^_if));
 
hoz:


Boris, quindi lo slittamento è già 3, questo è quello che capisco per 3 punti. Di quanto altro avete bisogno?

Vuoi dire così:

Mi sto chiedendo come implementare questo in modo più intelligente per non mettere funzioni extra qui.

Spero che lo slittamento sia di 3 per 4 cifre se avete bisogno di 30 per 5!
 

Ragazzi, per favore consigliate uno script che dia un messaggio che il mercato è aperto e che il mercato è chiuso.

Cioè quando il lunedì arriva 0.00.01 dà un messaggio che il mercato si apre, poi il messaggio che "il mercato è aperto", allo stesso modo, che il mercato ha chiuso.

Ho scritto uno script ma non funziona (( Aiutatemi a capirlo.

// определяем начало и конец торгов.
      // начало торгов в понедельник в 0.00.01
      
      if(DayOfWeek()==1 && Hour()== 0 && Minute()== 0 && Seconds()==01)
      {
         Alert("Рынок открылся.");
      }
      // конец торгов в Пятницу в 23.59.59
      if(DayOfWeek()==5 && Hour()== 23 && Minute()== 59 && Seconds()==59)
      {
         Alert("Пятница, Рынок закрылся.");
      }

 

C'è qualche robot capace di piazzare ordini pendenti BAY STOP e SELL STOP In un certo momento , con un passo minimo di innesco dal prezzo in quel momento. In breve, sotto la notizia. Non ho tempo con le mani.
 
hoz:

Anch'io ho avuto il fottuto errore. In effetti, non c'è nessuna logica. Per aprire un ordine pendente secondohttps://book.mql4.com/ru/appendix/limits, il prezzo di apertura deve essere inferiore al Bid (per vendere) o superiore all'Ask (per comprare). Sto facendo come richiesto.

Di tanto in tanto ottengo 0 e 130 errori. Anche se 130 è un errore di stop sbagliato, che può accadere durante la modifica, ma non durante l'apertura dell'ordine.

Nella schermata la situazione e la stampa visualizzata utilizzando la funzione pr.

Si prega di consigliare come sbarazzarsi di questo bug. Sono davvero stufo di questo errore. Logicamente, non è affatto in tema.

Il 130° errore non è necessariamente un ordine di arresto. È anche una distanza dal piazzare ordini pendenti almeno int MarketInfo(Symbol(), MODE_STOPLEVEL)
 
borilunad:
Spero che lo slittamento 3 per 4 cifre, se avete bisogno di 30 per 5!

Quindi non c'è alcuno slittamento nel tester, se è per questo... Corretto a 30.

artmedia70:
130° errore non è necessariamente un ordine di arresto. È anche una distanza di ordini pendenti almeno uguale a int MarketInfo(Symbol(), MODE_STOPLEVEL)

Ecco qui:

//+-------------------------------------------------------------------------------------+
//| Открытие длинной позиции                                                            |
//+-------------------------------------------------------------------------------------+
bool OpenBuy()
{
   int ticket = -1;
   double OOP = High[1] + i_thresholdToUp * pt;
   pr ("ND(OOP) = " + ND(OOP) + " ; Ask = " + Ask);
   pr ("g_stopLevel = " + g_stopLevel);

   if (ND(OOP)> (Ask + g_stopLevel))
       ticket = OrderSend(Symbol(), OP_BUYSTOP, 0.1, ND(OOP), 30, 0, 0, NULL, i_magic, 0, CLR_NONE);
   else pr ("Ордер послать не удалось " + GetLastError());
   
   if (ticket > 0)
   {
 //      lastBarTime = Time[0];               // На текущем баре все необходимые действия..
                                            // .. успешно выполнены
       return (true);
   }
}

Dove:

g_stopLevel = MarketInfo(Symbol(),MODE_STOPLEVEL) * pt;

È scritto nello stesso modo del tuo Artem. Era lo stesso ieri per logica. Ma gli errori si accumulano. Non ha senso aggiungere punti extra per farlo funzionare nel tester, dove non ci sono requote o slittamenti.

Cosa dovrei fare in modo più universale per evitare di incorrere negli stessi errori? Ho visto così tanti Expert Advisor che non hanno mai aggiunto 2-3 punti extra se non per lo slippage. Dopo tutto, in questo caso ci sarà una deviazione di 6 p.p. dal prezzo richiesto. E questo non è giusto. Gli Expert Advisors sono scritti sia per i tick che per i minuti. E sembra che ci possa essere precisione nel trading. Quindi, voglio che sia accurato, che non abbia enormi rientri...

 

Amici!

È sorta una domanda globale

È possibile ottenere il flusso di tick nel terminale durante il fine settimana, in modo da poter scrivere e fare il debug degli EA in modo tranquillo?

Ho già qualche consiglio su come usarlo nel mio robot di trading.

Non posso usare un solo tick per attivare l'EA, ho bisogno di un flusso di tick in un certo intervallo

esiste una cosa del genere in natura?

server mt4 che emulano le quotazioni in streaming nei fine settimana?

 
pasha5282:

Ragazzi, per favore consigliate uno script che dia un messaggio che il mercato è aperto e che il mercato è chiuso.

cioè, quando lunedì 0.00.01 dà il messaggio che il mercato si apre, poi il messaggio che "il mercato è aperto", allo stesso modo, che il mercato ha chiuso.

ha scritto uno script ma per qualche motivo non funziona (( aiutatemi a capirlo.


Se è uno script e si trova nella cartella scpirts, allora ha funzionato una volta ed è stato rimosso dal grafico. Per mantenerlo in modo permanente, scrivete il vostro codice all'interno di questo


int start()
{
   while(!IsStopped())
   {
      // вот сюда

      Sleep(500);
   }
}