Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 199

 
STARIJ:
Leggi il tuo commento: si scopre che se uno degli ultimi tre ordini chiude con un profitto, il trade si ferma!

Grazie per il suggerimento

APRIRE IL NUOVO ORDINE che ho dato solo a titolo di esempio. Non sono ancora in commercio.

Non capisco proprio come codificare questa condizione.

Se 3 - 4 - 5 ..... ultimi ordini hanno chiuso a STOP

NON HO IDEA DI COSA FARE.

 
Victor Nikolaev:


Le differenze sono minime. Una delle variabili è booleana.

L'output dirà vero o falso

Ugh, non riesco a capire come aggiungere le variabili - cioè diciamo che ho 4 variabili booleane e ho bisogno di passarle?

//+------------------------------------------------------------------+
//|                                                       Decode.mq4 |
//|                                            Copyright 2017, Vinin |
//|                                             http://vinin.ucoz.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, Vinin"
#property link      "http://vinin.ucoz.ru"
#property version   "1.00"
#property strict
#property script_show_inputs
//--- input parameters
input int N=15;  //0..162
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   for(int n=0;n<N;n++)
     {
      int tmp=n;
      bool a= (bool) MathMod(tmp,2);
      bool b= (bool) MathMod(tmp,3);
      bool c= (bool) MathMod(tmp,4);
      bool d= (bool) MathMod(tmp,5);

      Print("N=",n,"; A=",a,"; B=",b,"; C=",c,"; D=",d);
     }

  }

Capisco l'essenza del caso - dovrebbe esserci un resto minore o maggiore di zero dopo la divisione - ma non riesco a capire come ottenere questo :(

 
ANDREY:

Grazie per il suggerimento

APRIRE IL NUOVO ORDINE che ho dato solo a titolo di esempio. Non sono ancora in commercio.

Non capisco proprio come codificare questa condizione.

Se 3 - 4 - 5 ..... ultimi ordini hanno chiuso a STOP

HO SOLO BISOGNO DI AGIRE.

Prima di intraprendere qualsiasi azione, dovremmo prima guardare 3 o 4 o 5 posizioni che sono state chiuse in fila. Se tutto è in stop, allora prendete qualche iniziativa. Elementare, Watson...
 
ANDREY: È necessario che non solo l'ultimo ma anche il penultimo e il penultimo ordine siano stati chiusi su stop

e solo allora aprire un altro ordine

Lo script allegato - l'ho controllato, funziona, il risultato è allegato

//+-------------------------------------------------------+
//| Подсчет убыточных ордеров                 PROBA_MA.mq4|
//+-------------------------------------------------------+
#property strict
130
void OnStart()
{
  int Счет=0, Номер=OrdersHistoryTotal()-1;

  for( ; Номер>=0; Номер--)
  {
    if(!OrderSelect(Номер, SELECT_BY_POS, MODE_HISTORY)) continue;
    Alert(Номер, "  Тикет = ", OrderTicket(),"  T =",OrderOpenTime(), "  Профит = ", OrderProfit());
    if(OrderProfit()>=0) break;
    Счет++;
    if(Счет==3)
    {
      Alert("Вот тут и открываем новый ордер");
      return;
    }
  }
  Alert("Подряд идущих убыточных ордеров слишком мало");
}

Questa è tutta storia


E questo è un clic destro sulla storia e ha scelto il periodo fino al 3 maggio

 
STARIJ:

In allegato c'è lo script - testato, funziona, il risultato è allegato

Questa è tutta la storia.


E questo è cliccare con il tasto destro del mouse sulla cronologia e selezionare il periodo fino al 3 maggio

È una fermata. E non è affidabile. Dovete farlo indipendentemente dall'ordinamento.
 

Mi dispiace disturbarla, risponderò di nuovo alla mia domanda.

Penso che sia il momento di guardare il grafico, non sono un conoscitore di mql4.

Forse ho fatto una domanda nel ramo sbagliato.

 
STARIJ:

In allegato c'è lo script - testato, funziona, il risultato è allegato

Questa è tutta la storia.


E questo è cliccare con il tasto destro del mouse sulla cronologia e selezionare il periodo fino al 3 maggio

Grazie mille per tutto il vostro aiuto.
 
Artyom Trishkin Quindi è una fermata. E non è affidabile. Dovrebbe essere fatto indipendentemente dall'ordinamento.

Artem! Nell'angolo in basso a destra del terminale c'è l'indicatore degli scambi con il server - kilobyte ricevuti e inviati. L'indicatore mostrava 2318. Ho cliccato con il tasto destro sulla cronologia e ho selezionato Today (e oggi è domenica). La storia è stata svuotata. Lo script mostra che non ci sono ordini nella cronologia. Ho cliccato con il tasto destro sulla cronologia e ho selezionato Tutta la cronologia. L'indicatore ha preso vita con 518 kilobyte aggiunti. Quindi, quando si imposta il filtro su un periodo GRANDE, gli ordini vengono scaricati dal server. Se si imposta un periodo più piccolo, vengono cancellati. Pertanto, è meglio impostare Ultima settimana, Ultimi 3 giorni o Oggi per accelerare il tuo lavoro (meno ordini da elaborare). Questo può essere facilmente controllato con l'aiuto di uno script con Alert(OrdersHistoryTotal());

Riguardo all'ordinamento. Se cliccate sulle intestazioni delle colonne nella cronologia, potete ordinare visivamente la cronologia in modo discendente o ascendente di qualsiasi colonna. Tuttavia gli ordini sono sempre selezionati utilizzando la funzione OrderSelect(Number, SELECT_BY_POS, MODE_HISTORY), a partire dall'inizio dell'intervallo SELECTED della storia. E nella storia, gli ordini sono ordinati in base al tempo in cui sono stati inviati al server, che è il più naturale. Se il numero = 0, allora questo è l'ordine più vecchio dell'intervallo di storia SELEZIONATO. Se OrdiniHistoryTotal()-1, è l'ordine più recente dell'intervallo di storia scelto. Ho controllato questo molte volte. Ed è improbabile che venga mai cambiato.

 
STARIJ:

Nell'angolo in basso a destra del terminale c'è un indicatore di scambio con il server - i kilobyte ricevuti e inviati. Sull'indicatore era 2318. Ho cliccato con il tasto destro del mouse sulla cronologia e ho selezionato Today (e oggi è domenica). La storia è vuota. Lo script mostra che non ci sono ordini nella cronologia. Ho cliccato con il tasto destro sulla cronologia e ho selezionato Tutta la cronologia. L'indicatore ha preso vita con 518 kilobyte aggiunti. Quindi, quando si imposta il filtro su un periodo GRANDE, gli ordini vengono scaricati dal server. Se si imposta un periodo più piccolo, vengono cancellati. Pertanto, è meglio impostare Ultima settimana, Ultimi 3 giorni o Oggi per accelerare il tuo lavoro (meno ordini da elaborare). Questo può essere facilmente controllato con l'aiuto di uno script con Alert(OrdersHistoryTotal());

Riguardo all'ordinamento. Se cliccate sulle intestazioni delle colonne nella cronologia, potete ordinare visivamente la cronologia in modo discendente o ascendente di qualsiasi colonna. Tuttavia gli ordini sono sempre selezionati utilizzando la funzione OrderSelect(Number, SELECT_BY_POS, MODE_HISTORY), a partire dall'inizio dell'intervallo SELECTED della storia. E nella storia, gli ordini sono ordinati in base al tempo in cui sono stati inviati al server, che è il più naturale. Se il numero = 0, allora questo è l'ordine più vecchio dell'intervallo di storia SELEZIONATO. Se OrdiniHistoryTotal()-1, è l'ordine più recente dell'intervallo di storia scelto. Ho controllato questo molte volte. Ed è improbabile che questo venga mai cambiato.

Sei così nuovo qui che non sai tutto com'era. È una regola da trecento anni che una ricerca basata sul tempo è l'unico modo affidabile per identificare l'ultima/prima o le posizioni consecutive. Stai lavorando con i soldi. Ok, se solo con il tuo, ma anche con quello di qualcun altro. Anche indirettamente con il vostro programma.

E quello che mi stai dicendo non è un segreto o una rivelazione - tutti lo sanno da anni ;)

E quello che stavo dicendo - tu ancora non lo capisci...

 
Artyom Trishkin:

Sei così nuovo qui che non sai tutto com'era. È una regola da trecento anni che una ricerca basata sul tempo è l'unico modo affidabile per identificare le ultime/prime o consecutive posizioni. Stai lavorando con i soldi. Ok, se solo con il tuo, ma anche con quello di qualcun altro. Anche indirettamente con il vostro programma.

E quello che mi stai dicendo non è un segreto o una rivelazione - tutti lo sanno da anni ;)

E quello di cui stavo parlando - ancora non lo capisci...

Artem, o si tratta di trolling inguardabile o non sai di cosa stai scrivendo!!!

Nel tuo ultimo post hai parlato di ordinamento. Spiegato che non c'è dipendenza dall'ordinamento.

Ho visto e partecipato a una delle discussioni sulla selezione degli ordini in base al tempo. La conclusione è stata che gli ordini sono ora ordinati nel database degli ordini in base al momento in cui vengono inviati al server. Ma TEORETAMENTE c'è la paura che gli sviluppatori possano cambiare questo. Quella fu la fine della discussione. Come specialista di database vi assicuro che questa paura è infondata, un cambiamento è fuori questione. Puoi riferire il problema agli sviluppatori. Se scrivo qualcosa, so cosa scrivo. È il 50° anniversario della programmazione. Se notate nei miei post qualche pasticcio dal vostro punto di vista - scrivetemi di persona. Vi spiegherò e i vostri dubbi si dissolveranno. Ma qui battibeccare è improbabile che sia appropriato. Ho scritto all'uomo una sceneggiatura - mi ha ringraziato. Non è buono?

Circa l'altro giorno. Ho appena cambiato il mio nome utente, potete indovinare quale fosse per stile. Oppure controlla il tuo IP, probabilmente hai accesso... Si prega di lasciare senza risposta.