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

 
законопослушный гражданин:

i gufi dovrebbero aprire trade secondo il loro algoritmo

se stop, poi il prossimo commercio con un martin, e così via fino al numero di moltiplicazioni che ho specificato (funzione -OrdersClose = .....;).

Inoltre, se il gufo è disabilitato insieme al terminale, basta premere il pulsante "auto-trade" con un altro gufo, poi il prossimo trade inizierà con il lotto di partenza, non con l'ultimo aumentato da una martingala.

Sarebbe anche bello potervi allegare un programma, ma questa idea mi è venuta in mente solo ora.

Per esempio: è stato attivato alle 10-00 di lunedì con il lotto di partenza, poi è stato spento durante il giorno quando è stato raggiunto qualche risultato, e il martedì mattina è stato attivato alle 10-00 ed è ripartito con il lotto di partenza.

tutto.

come affrontare questo problema fino alla fine?

 
законопослушный гражданин:

come si arriva al fondo di questa domanda?

Se rispondi, rispondi,

ma tu sparisci e poi ricevi di nuovo le stesse domande.

 
MakarFX:

rispondi, rispondi,

ma tu sparisci e poi ricevi di nuovo le stesse domande.

Mi hai mostrato di creare una variabile globale, ho provato ma poi ho una domanda

Ho già un datetime OpenTime; - dovrei sostituirlo conun datetimeStart o in aggiunta?

"e poi se non ci sono ordini aperti/chiusi in seguito "Iniziare "Lotti=Lotto;"- non è affatto chiaro a cosa fare riferimento?

Poi hai chiesto una breve descrizione della logica del gufo, cosa voglio da esso.

la tua domanda su come resettare automaticamente il lotto allo spegnimento non ha ancora ricevuto risposta.

 
законопослушный гражданин:

Mi hai mostrato di creare una variabile globale, ho provato ma poi ho una domanda

Ho già datetime OpenTime; - dovrei sostituirlo condatetimeStart o in aggiunta?

"e poi se non ci sono ordini aperti/chiusi in seguito "Iniziare "Lotti=Lotto;"- non è affatto chiaro a cosa fare riferimento?

Poi mi hai chiesto di descrivere brevemente la logica del gufo, cosa voglio da esso.

Quando ho chiesto come fare il reset automatico del lotto allo spegnimento, non ho avuto risposta.

Quando ho chiesto una descrizione della logica dell'EA, non intendevo il problema incontrato, ma le azioni generali

per esempio:

se c'è un segnale, apriamo un ordine

se l'ordine si chiude con un profitto, aspetteremo un nuovo segnale

se l'ordine si è chiuso con una perdita, allora aumenta il lotto e aspetta un nuovo segnale


Non ho bisogno della tua strategia, ho solo bisogno di capire cosa dovrebbe fare l'EA.

 
законопослушный гражданин:

Mi hai mostrato di creare una variabile globale, ho provato ma poi ho una domanda

Ho già datetime OpenTime; - dovrei sostituirlo condatetimeStart o in aggiunta?

"e poi se non ci sono ordini aperti/chiusi in seguito "Iniziare "Lotti=Lotto;"- non è affatto chiaro a cosa fare riferimento?

Poi mi hai chiesto di descrivere brevemente la logica del gufo, cosa voglio da esso.

Non ho avuto risposta alla mia domanda come fare il reset automatico del lotto allo spegnimento.

Ecco la funzione per cominciare:

//+----------------------------------------------------------------------------+
//|  Размер лота/профита и время последней закрытой позиции                    |
//|  1 - возвращает размер лота                                                |
//|  2 - возвращает размер профита с учетом комиссии и свопа                   |
//|  3 - возвращает время закрытия ордера                                      |
//+----------------------------------------------------------------------------+
double GetInfoLastPos(int a=1)
  {
   datetime t=0;
   double result=0,l=0,p=0;
   int i=OrdersHistoryTotal();

   for(int pos=0; pos<i; pos++)
     {
      if(OrderSelect(pos, SELECT_BY_POS, MODE_HISTORY))
        {
         if((OrderSymbol()==_Symbol)&&(OrderMagicNumber()==Magic))
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
              {
               if(t<OrderCloseTime()) {t=OrderCloseTime(); l=OrderLots(); p=OrderProfit()+OrderCommission()+OrderSwap();}
              }
           }
        }
     }
   if(a==1) {result=l;} else
   if(a==2) {result=p;} else
   if(a==3) {result=(double)t;}
   else     {result=0;}
   return(result);
  }

se un ordine è in perdita

   if(GetInfoLastPos(2)<0)
     {Lots=NormalizeDouble(GetInfoLastPos(1)*K_Martin,DigitsLot);}
   else 
     {Lots=NormalizeDouble(Lot,DigitsLot);}
 

Per quanto riguarda

datetime Start;

int OnInit()
{
   Start=TimeCurrent();
.....................
}
void OnTick()
{
   if (!IsTradeAllowed()) 
   {
      DrawLABEL("Торговля",0,0,0,Red,"Торговля запрещена");
      Start=TimeCurrent();
      return;
   } 
.....................
}

se l'ora dell'ultimo ordine chiuso è inferiore all'ora di inizio del consulente

   if(GetInfoLastPos(3)<Start)
     {Lots=NormalizeDouble(Lot,DigitsLot);}
 
MakarFX:

Quando ho chiesto una descrizione della logica dell'EA, non mi riferivo al problema riscontrato, ma alle azioni generali

per esempio:

se c'è un segnale, apriamo un ordine

se l'ordine si chiude con un profitto, aspetteremo un nuovo segnale

se l'ordine si è chiuso con una perdita, allora aumenta il lotto e aspetta un nuovo segnale


Non ho bisogno della tua strategia, ho solo bisogno di capire cosa dovrebbe fare l'EA.

se c'è un segnale, allora apriamo un ordine con il primo lotto

se l'ordine ha chiuso in profitto, aspetteremo un nuovo segnale

se l'ordine si è chiuso con una perdita, allora aumenta il lotto e aspetta un nuovo segnale

se il profitto raggiunge xxxx (nella valuta del deposito), il consulente chiude tutte le operazioni e ripristina il lotto a quello iniziale

se la perdita ha raggiunto yuu (nella valuta del deposito) il consulente chiude tutte le operazioni e resetta il lotto a quello di partenza

se il consulente è stato spento e poi riacceso - se c'è un segnale, apriamo un ordine con il lotto di partenza

giusto?

 
законопослушный гражданин:

se c'è un segnale, apriamo un ordine con un lotto iniziale

se l'ordine ha chiuso con un profitto, aspettiamo un nuovo segnale

Se l'ordine si è chiuso con una perdita, allora aumenta il lotto e aspetta un nuovo segnale

se il profitto raggiunge xxxx (nella valuta del deposito), il consulente chiude tutte le operazioni e ripristina il lotto a quello iniziale

se la perdita ha raggiunto yuu (nella valuta del deposito) il consulente chiude tutte le operazioni e resetta il lotto a quello di partenza

se il consulente è stato spento e poi riacceso - se c'è un segnale, apriamo un ordine con il lotto di partenza

come questo?

Sì, così.

Cosa succede se l'EA è stato disattivato e poi riattivato, e c'è un ordine aperto?

 
MakarFX:

Sì, è così.

Cosa succede se l'EA viene spento e poi riacceso e c'è un ordine aperto?

Se l'EA è spento, allora prima di essere spento, chiude tutti gli ordini aperti, indipendentemente dal fatto che siano in profitto o in perdita,

Quando il gufo viene riacceso, il "campo vuoto", il lotto di partenza, sarà chiuso.

Indicatore che dà un segnale di apertura, nell'esempio era RSI ma presumo di testare tre diversi gufi su diversi indicatori.

Quindi, se ho un codice di esempio per la logica di cui sopra, spero di poter rielaborare io stesso i codici di altri EA, che sono open source e disponibili gratuitamente.

 
законопослушный гражданин:

Se i gufi sono spenti, allora prima di essere spenti chiudono tutti gli ordini aperti, indipendentemente dal fatto che siano in profitto o in perdita,

L'indicatore che dà i segnali di apertura era RSI, ma presumo che non ha.

Indicatore che dà un segnale di apertura, nell'esempio era RSI ma presumo di testare tre diversi gufi su diversi indicatori.

Quindi, se ho un codice di esempio per la logica di cui sopra, spero di essere in grado di rielaborare io stesso i codici di altri EA, spero che siano open source e disponibili gratuitamente.

e owl.turns off quando cambiate l'orario, problemi di comunicazione, e 100500 e una ragione in più...

l'EA ricarica è la sua natura naturale