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

 

Lasciate che vi dia il succo dell'idea.

È necessario trovare o identificare la prima freccia nella storia dalla barra corrente.

Non importa se è in alto o in basso.

(A) E poi salvare questa scoperta in una variabile o in una bandiera. Per esempio GlobalFlag =-1 (se la freccia è giù) e +1 se è su.

Poi il prezzo è andato più avanti e qualche freccia è stata disegnata di nuovo.

Nell'EA, il ciclo di ricerca viene avviato ogni volta con un nuovo tick, giusto?

Il ciclo è stato avviato di nuovo e ha trovato la freccia appena disegnata e l'ha salvata in una variabile o in una bandiera, cioè

cioè il punto A è stato eseguito.

Questa è l'idea.

Perché preoccuparsi della bandiera e del resto?

Poi questa bandiera, cioè dove la freccia starà guardando, sarà usata con un altro indicatore per confermare il segnale.

Per esempio, GlobalFlag=+1 (freccia verso l'alto) e un altro indicatore sta segnalando verso l'alto, significa che dovremmo entrare nel mercato.

Cioè, entrambe le condizioni dovrebbero coincidere negli indicatori.


Ti piace questo codice?

Cioè, non ho bisogno di calcolare su quale candela è la freccia, che prezzo c'è, ecc.

La cosa principale è fissare la disponibilità della freccia e la sua direzione.

Posso assegnare true e falce ???? invece di +1 e -1 o no?


double DataIndUP, DataIndDN;
int    i, GlobalFlag, nBars = 250 ;  // nBars = количество проверяемых баров вглубь истории

for (i=0; i<nBars; i++) 
{
   DataIndUP = iCustom(Symbol(),Period(),"Имя индюшонка", через запятую все параметры индюка , номер буфера стрелки вверх, i)
   DataIndDN = iCustom(Symbol(),Period(),"Имя индюшонка", через запятую все параметры индюка , номер буфера стрелки вниз, i)
   if (DataIndUP !=EMPTY_VALUE)     // или if (DataIndUP !=0) // найдена стрелка вверх
                                    // всё зависит от того, что выдаёт буфер при отсутствии стрелки 
                                    // нажмите Ctrl+D и посмотрите что вам в окне данных будет показано
      GlobalFlag=+1                 // присвоение значения +1(стрелка вверх)  переменной 
      Break;                        //выход из цикла, так как  нашлась последняя стрелка
if (DataIndDN !=EMPTY_VALUE)     // или if (DataIndDN !=0) // найдена стрелка вниз
                                    // всё зависит от того, что выдаёт буфер при отсутствии стрелки 
                                    // нажмите Ctrl+D и посмотрите что вам в окне данных будет показано
      GlobalFlag=-1                 // присвоение значения -1(стрелка вниз) переменной
      Break;                        //выход из цикла, так как  нашлась последняя стрелка
}
 
Tupen:


È un inizio.


Quindi, il punto di entrata A - vendere e comprare sta a 4 pip. 1 variante di comportamento - il prezzo scende - fissiamo il profitto in, diciamo, 5 punti dal punto di entrata. - Se il prezzo sale, cambia anche il numero di punti prima di fissare il profitto (un minimo per ora). cioè il programma dovrà piazzare 4 ordini in una volta sola, )) è possibile programmare?
 
Roman.:



Post cancellato per bestemmie oscene

 
Vinin:

Post cancellato per bestemmie oscene


Scusa, generoso, non ho potuto farne a meno. Stufo dei racconti del Bosco di Vienna...
 

Si prega di scrivere un programma con 4 ordini. ho bisogno di guardare la demo e vedere l'inversione

 
Tupen:

Per favore, scrivi un programma con 4 ordini. Ho bisogno di guardare la demo e vedere se posso capire l'opzione pivot.


Vedi il thread "Avalanche" - tutto è stato accuratamente pensato lì con "tutto", comprese le opzioni di inversione.

Non c'è bisogno di reinventare la ruota. Tutto è stato inventato da persone molto tempo fa. Leggete, analizzate, usate e sfruttate.

Non arriverai alla bicicletta "it" (leggi: la soluzione) abbastanza presto...

 

Può dirmi perché non c'è ciclicità? Nel tester, l'Expert Advisor apre solo due trade.

extern int F = 8; //periodo di МА veloce
extern int S = 20; //periodo di MA lento
extern double Lots = 0.1; // ordina il lotto
int Slippage = 5; // slippage in pip.
int Magic = 123; //numero di magia dell'Expert Advisor
int ticketsell;
int ticketbuy;
int start()
{
double MAfast = iMA(NULL,0,F,0,MODE_SMA,PRICE_CLOSE,1);
double MAslow = iMA(NULL,0,S,0,MODE_SMA,PRICE_CLOSE,1);
// nessun ordine con ticketell nel terminale O è chiuso E la MA veloce è inferiore a quella lenta, vendi !
if ( (OrderSelect(ticketsell,SELECT_BY_TICKET,MODE_TRADES) == false ) && MAfast < MAslow )
{
// se abbiamo già avuto un ordine opposto, comprare, chiudiamolo:
if ( OrderSelect(ticketbuy,SELECT_BY_TICKET,MODE_TRADES) == true )
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, CLR_NONE);
OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,Magic,0,Red)
}
if ( (OrderSelect(ticketbuy,SELECT_BY_TICKET,MODE_TRADES) == false ) && MAfast > MAslow )
{
if ( OrderSelect(ticketsell,SELECT_BY_TICKET,MODE_TRADES) == true )
OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, CLR_NONE);
ticketbuy = OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,0,Magic,0,Blue);
}
ritorno(0);
}

 

Mirgha Prova questo

extern int F = 8; //период быстрой МА
extern int S = 20; //период медл.МА
extern double Lots = 0.1; // лот ордера
int Slippage = 5; // проскальзывание в пп.
int Magic = 123; // магический номер эксперта
int ticketsell;  
int ticketbuy;

int start()
{
   double MAfast = iMA(NULL,0,F,0,MODE_SMA,PRICE_CLOSE,1);
   double MAslow = iMA(NULL,0,S,0,MODE_SMA,PRICE_CLOSE,1); 
   
   ticketsell = -1;
   ticketbuy = -1;
   for (int i = 0; i < OrdersTotal(); i++)
   {
      OrderSelect( i, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
      {
         if (OrderType() == OP_SELL) ticketsell = OrderTicket();
         if (OrderType() == OP_BUY)  ticketbuy  = OrderTicket();
      }
    }
   // ордера с тикетом ticketsell в терминале нету ИЛИ он закрылся И быстрая МА ниже медленной, продаем !
   if ( (OrderSelect(ticketsell,SELECT_BY_TICKET,MODE_TRADES) == false ) && MAfast < MAslow )
   {
      // если у нас при этом был противоположный ордер, бай, его закроем :
      if ( OrderSelect(ticketbuy,SELECT_BY_TICKET,MODE_TRADES) == true )
         OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, CLR_NONE);
      ticketsell = OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,0,Magic,0,Red);
   } 
   if ( (OrderSelect(ticketbuy,SELECT_BY_TICKET,MODE_TRADES) == false ) && MAfast > MAslow )
   {
      if ( OrderSelect(ticketsell,SELECT_BY_TICKET,MODE_TRADES) == true )
         OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, CLR_NONE);
      ticketbuy = OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,0,Magic,0,Blue);
   }
   return(0);
} 
 
Grazie!
 

La mia domanda rimane senza risposta.

Ancora, come posso filtrare il numero di segnali in arrivo dall'indicatore? Per esempio, l'Expert Advisor accetta il segnale numero tre per iniziare a lavorare, cioè i primi due segnali vengono saltati e il terzo viene accettato per l'azione. Come ho scritto sopra, ho cercato di implementarlo con variabili globali, ma non funziona....