Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 219

 
artmedia70:
All Buy e All Sell sono due script diversi. Questo era chiaro fin dall'inizio. La domanda è - dovrebbe chiudere assolutamente tutte le posizioni? O dovrebbe chiudere solo le posizioni che sono sul grafico dove lo script è in esecuzione? Deve chiudere le posizioni aperte manualmente o quelle aperte da un Expert Advisor, o entrambe?

Altrimenti, possono scrivere messaggi di errore, controlli, ecc. Penso che questo script non abbia bisogno di niente del genere. Non uso EAs, ho solo trier ora, non ho piani per le classi nella mia vita nel prossimo mese, ho deciso di controllare forex.
 
bambastik:
È tutto assolutamente, ma secondo il tipo di grafico su cui si basa lo script, in modo che lo script sia il più semplice possibile. Non uso Expert Advisors, sto solo provando ora, non pianifico nessuna attività nella mia vita nel prossimo mese, ecco perché ho deciso di dare un'occhiata al forex.

Quindi è l'elaborazione degli errori di trading che fa la differenza tra un buon script e un tutorial in questo caso. Vuoi imparare da questo o vuoi che funzioni al 100%?

Se volete solo il principio, eccolo:

//-----------------------------------------------------------------------------+
void start() {
   string sy=Symbol();
   int    i, k=OrdersTotal()-1;

   for (i=k; i>=0; i--) {
      if (OrderSelect(i,SELECT_BY_POS)) {
         if (OrderSymbol()!=sy)  continue;
         if (OrderType()>1)      continue;
         if (OrderType()==OP_BUY)   OrderClose(OrderTicket(),OrderLots(),Bid,5,Blue);
         if (OrderType()==OP_SELL)  OrderClose(OrderTicket(),OrderLots(),Ask,5,Red);
         }
      }
   return;
}
//-----------------------------------------------------------------------------+

Chiude sia Buy che Sell.

Non c'è assolutamente nessuna gestione degli errori. Puoi chiudere solo Comprare o solo Vendere per te stesso - rimuovi una riga.

Bene... solo comprare:

//-----------------------------------------------------------------------------+
void start() {
   string sy=Symbol();
   int    i, k=OrdersTotal()-1;

   for (i=k; i>=0; i--) {
      if (OrderSelect(i,SELECT_BY_POS)) {
         if (OrderSymbol()!=sy)  continue;
         if (OrderType()==OP_BUY)   OrderClose(OrderTicket(),OrderLots(),Bid,5,Blue);
         }
      }
   return;
}
//-----------------------------------------------------------------------------+

Per vendere:

//-----------------------------------------------------------------------------+
void start() {
   string sy=Symbol();
   int    i, k=OrdersTotal()-1;

   for (i=k; i>=0; i--) {
      if (OrderSelect(i,SELECT_BY_POS)) {
         if (OrderSymbol()!=sy)  continue;
         if (OrderType()==OP_SELL)  OrderClose(OrderTicket(),OrderLots(),Ask,5,Red);
         }
      }
   return;
}
//-----------------------------------------------------------------------------+
 

Grazie mille. È proprio quello di cui ho bisogno. Ma cosa sono il rosso e il blu e a cosa serve, probabilmente mostra il punto di reset di ogni ordine, giusto? Quando lo proverò, lo aggiungerò subito al codebase di artmedia70. E a proposito, perché abbiamo bisogno dell'elaborazione di un normale se lo script è accurato e lo sviluppatore ha fiducia in esso?

E forse non ho bisogno di aggiungerli a proposito e lo sviluppatore stesso che è artmedia70 aggiungerà al codebase, risulteranno essere necessari lì, e io non ho un account lì, e ai commenti non sarà in grado di rispondere una parola, eh?

 
bambastik:

Grazie mille. Ma è proprio quello di cui ho bisogno. Ma cosa sono il rosso e il blu e a cosa serve, probabilmente mostra il punto di reset di ogni ordine, giusto? Quando lo proverò, lo aggiungerò subito al codebase di artmedia70.

No, non al codbase, per niente. Sono abituato a fare cose affidabili, non tutorial :)

Se ti avessi mostrato uno script normale, mi avresti detto che io, come tutti gli altri, ho scritto di nuovo ogni sorta di 'errori'... Ma... non si può fare a meno di loro. Questo è un lavoro con i nostri soldi.

Il blu e il rosso sono il colore del marchio di chiusura.

 
artmedia70:

No, non c'è bisogno di una base per gatti. Sono abituato a fare cose affidabili, non tutorial :)

Se vi avessi mostrato una sceneggiatura normale, mi avreste detto che io, come tutti, ho scritto ogni sorta di erre... Ma... non si può fare a meno di loro. Questo è un lavoro con i nostri soldi.

Il blu e il rosso sono il colore dell'icona di chiusura.


Ho capito tutto del cattobase e anche del rosso e del blu, in generale ancora una volta grazie mille per il tuo aiuto, ma non comincerò a blaterare se non molto raramente, l'Internet deve essere al di là dell'inchino e dell'adulazione e portare solo il pensiero e tra l'altro tu solo puoi essere cento volte più rispettoso di migliaia di voi, ma questo è il testo) in generale artmedia70 grazie mille, molto script aiutato e nel cattobase con esso non andrò. Ho un sacco di loro nella storia che ha pensato così e dove sono ora. imho, il denaro sarà annullato presto, lascerà un virtuale e calce, così ognuno potrebbe avere un conto con strettamente identificabile non più di un certo importo, il resto nel bilancio, ecc. quindi sono cool con loro, ma il processo dalle loro attività è sì, interessante. p.s. scusa per verbosità.
 
bambastik:

A proposito, perché avete bisogno di elaborare uno script regolare se è chiaro e lo sviluppatore ha fiducia in esso?

Lo sviluppatore avrà fiducia nel suo programma solo se il suo programma gestirà gli errori restituiti dal server di trading. Se non viene fatta alcuna gestione degli errori, il programma può inciampare al primo errore. L'errore NON è un errore del programma, ma un errore restituito dal server commerciale. Per esempio - lo script di cui sopra non ottiene dati freschi. Quindi il server potrebbe restituire un errore sul prezzo sbagliato. Per questo, si dovrebbe cercare di ricevere l'ambiente di scambio più recente prima della chiusura - eseguire il comando RefreshRates() o, invece del prezzo di chiusura Ask o Bid, usare il prezzo ottenuto usando MarketInfo(Symbol(),MODE_ASK) o MarketInfo(Symbol(),MODE_BID);

Allora lo script prenderà questa forma (per Vendere):

//-----------------------------------------------------------------------------+
void start() {
   string sy=Symbol();
   int    i, k=OrdersTotal()-1;
   
   for (i=k; i>=0; i--) {
      if (OrderSelect(i,SELECT_BY_POS)) {
         if (OrderSymbol()!=sy)  continue;
         if (OrderType()==OP_SELL)  {
            double pp=MarketInfo(sy,MODE_ASK);
            OrderClose(OrderTicket(),OrderLots(),pp,5,Red);
            }
         }
      }
   return;
}
//-----------------------------------------------------------------------------+

E se provate a processare altri errori restituiti dal server, crescerà a quei valori quando direte - "l'hai fatto di nuovo..." :)

 

Ora ho capito e sì, è importante. Internet non è buono qui, anche l'hardware è giovane, quindi non è davvero saggio affidarsi a loro per il pieno duecento per cento, ma il rischio è una cosa nobile =) ma grazie ancora per l'aggiunta, lo aggiungerò sia per comprare che per vendere.

È giusto per l'acquisto?

void start() {
string sy=Symbol();
int i, k=OrdersTotal()-1;

for (i=k; i>=0; i--) {
if (OrderSelect(i,SELECT_BY_POS)) {
if (OrderSymbol()!=sy) continue;
if (OrderType()==OP_BUY) {
double pp=MarketInfo(sy,MODE_BID);
OrderClose(OrderTicket(),OrderLots(),pp,5,Blue);
}
}
}
return;
}

E se ho bisogno di rimuovere solo 3 ordini di acquisto su 5 di tutti quelli disponibili, quale valore è il più grande, lo script diventerà più grande in dimensioni? E un'altra domanda, se non mi sto preoccupando di chiedere, perché questi controlli richiedono tutto il tempo, mi chiedo quale script ha una maggiore probabilità di slittamento di quello con controlli o quello senza controlli di errori?

 
bambastik:

Ora lo capisco e sì, è importante. Internet non è buono qui, anche l'hardware è giovane, quindi non è davvero saggio affidarsi a loro per il pieno duecento per cento, ma il rischio è una cosa nobile =) ma grazie ancora per l'aggiunta, lo aggiungerò sia per comprare che per vendere.

È corretto per l'acquisto?

Sì, ma non è tutto... ;)

Questo script, oltre agli errori simili non elaborati, toccherà anche gli ordini "alieni". Cioè, se hai un EA che lavora su questo simbolo, lo script chiuderà le sue posizioni e l'EA le riaprirà. È così che "combatteranno" tra di loro.

Per evitare questo, è necessario limitare lo script in termini di magia. Cioè, aggiungere una linea if (OrderMagicNumber()>0) continue; allora lo script funzionerà solo con gli ordini aperti manualmente.

Per vendere:

//-----------------------------------------------------------------------------+
void start() {
   string sy=Symbol();
   int    i, k=OrdersTotal()-1;
   
   for (i=k; i>=0; i--) {
      if (OrderSelect(i,SELECT_BY_POS)) {
         if (OrderMagicNumber()>0)  continue;
         if (OrderSymbol()!=sy)     continue;
         if (OrderType()==OP_SELL)  {
            double pp=MarketInfo(Symbol(),MODE_ASK);
            OrderClose(OrderTicket(),OrderLots(),pp,5,Red);
            }
         }
      }
   return;
}
//-----------------------------------------------------------------------------+

E c'è ancora molto da perfezionare per un'affidabilità "normale". Arriverà col tempo, non dubitare. ;)

 
artmedia70:

Sì, ma non è tutto... ;)

Questo script, oltre ai rimanenti errori simili non processati, toccherà anche gli ordini "alieni". Cioè, se hai un EA che lavora su questo simbolo, lo script chiuderà le sue posizioni e l'EA le riaprirà. È così che "combatteranno" tra di loro.

Per evitare questo, è necessario limitare lo script in termini di magia. Cioè aggiungere una linea if (OrderMagicNumber()>0) continue; allora lo script processerà solo gli ordini aperti manualmente.


Non so come fare, non arriverò mai a consulenti esperti, indicatori, segnali e il resto, così mi annoio giocando a Dota e comincio a frugare nel grafico, mi piace guardare il movimento di esso, è molto bello, quindi sono proprio così, per lo sviluppo generale e ora ho capito che cosa è un ordine magik che viene aperto da non-automatici e non-advisor, anche se probabilmente sono le stesse persone ;)
 
potete scrivere: uno script/advisor per chiudere due ordini opposti in n*pips in profitto?
Motivazione: