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

 

Ho costruito il mio primo Expert Advisor dai codici gentilmente forniti (un ringraziamento speciale aMakarFX_ per la motivazione e il codice)

Tutto funziona come dovrebbe, ma con un problema. Non so dove cercarlo.

L'algoritmo è il seguente:

c'è un segnale - l'ordine si apre

chiuderlo usando stop o take order in punti, o dopo che i limiti di profitto e perdita sono stati raggiunti in depo valuta CountLoss e CountProfit. (quello che viene prima)

se uno stop - il prossimo ordine con un margine, se un take, CountProfit, CountLoss - il lotto viene riportato a quello iniziale

se lo Stop Loss è impostato su CountLoss , l'ordine successivo viene aperto con il lotto minimo, per esempio, invece del lotto di partenza:

nelle variabili esterne il lotto di partenza 0,02 è impostato, il prossimo ordine a CountLoss sarà il lotto 0,01.

Qualcuno può dirmi dov'è l'errore?

MakarFX
MakarFX
  • 2021.03.19
  • www.mql5.com
Профиль трейдера
File:
oilim1p11.mq4  17 kb
 
законопослушный гражданин:

Ho costruito il mio primo Expert Advisor dai codici gentilmente forniti (un ringraziamento speciale aMakarFX_ per la motivazione e il codice)

Tutto funziona come dovrebbe, ma con un problema. Non so dove cercarlo.

L'algoritmo è il seguente:

c'è un segnale - l'ordine si apre

chiuderlo usando stop o take order in punti, o dopo che i limiti di profitto e perdita sono stati raggiunti in depo valuta CountLoss e CountProfit. (quello che viene prima)

se uno stop - il prossimo ordine con un margine, se un take, CountProfit, CountLoss - il lotto viene riportato a quello iniziale

se lo Stop Loss è impostato su CountLoss , l'ordine successivo viene aperto con il lotto minimo, per esempio, invece del lotto di partenza:

nelle variabili esterne il lotto di partenza 0,02 è impostato, il prossimo ordine a CountLoss sarà il lotto 0,01.

Qualcuno può dirmi dov'è l'errore?

Guardate cosa ho cambiato nella funzione double Lots()

File:
oilim1p11.mq4  17 kb
 
MakarFX:

Stamperà una volta quando appare un'operazione non redditizia

Grazie per il pensiero. Ho confrontato l'orario di chiusura dell'ordine attuale con quello dell'ordine precedente e tutto è andato come doveva. Ho anche fatto la funzione per aprire un ordine nella direzione opposta con uno stop loss, anche se non ha aiutato molto.
 
Petronet:
Grazie, ho capito l'idea. Ho confrontato l'orario di chiusura dell'ordine attuale con quello dell'ordine precedente e tutto è andato come doveva. Ho anche fatto la funzione di aprire un ordine nella direzione opposta con uno stop loss, anche se non ha aiutato molto.

Più specificamente...

 

Buon pomeriggio a tutti. Cerco di implementare il calcolo dei profitti e degli stop usando l'indicatore atr. La fermata funziona bene. Ma il profitto è sempre impostato sullo stesso valore. Ecco il codice per il calcolo del profitto

  if(Tip_tp == en_TP_po_atr)// ЕСЛИ ПРОФИТ ПО АТР//-------------------------------------------------------------------------------------------------+
  {
  tp =NormalizeDouble(iATR(NULL,PeriodForWork_sl,atr_sl_period,1),Digits);// ПРИСВАЕВАЕМ ЗНАЧЕНИЙ АТР ДЛЯ ВЫСТАВЛЕНИЯ СТОПЛОССА
      if(tp<stoplevel)  // ЕСЛИ ПРОФИТ МЕНЬШЕ ЧЕМ МИНИМАЛЬНО ДОПУСТИМЫЙ УРОВЕНЬ ЕГО УСТАНОВКИ ТО
        {
         tp=NormalizeDouble(tp*1.5,Digits); // ПРОФИТУ ПРИСВАЕВАЕМ МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ ЕГО УСТАНОВКИ
        } 
  }
  tp= NormalizeDouble(tp*Point, Digits());// НОРМАЛИЗУЕМ ПРОФИТ, ЧТОБЫ РАБОТАЛО НА ЛЮБЫХ КАТИРОВКАХ
  

  
  
  //+--КОНЕЦ РАСЧЁТА ПРОФИТА---------------------------------------------------------------------- Разделитель ---+

Qual è l'errore che il profitto ha sempre lo stesso valore? Eh?

 
DanilaMactep:

Buon pomeriggio a tutti. Cerco di implementare il calcolo dei profitti e degli stop usando l'indicatore atr. La fermata funziona bene. Ma il profitto è sempre impostato sullo stesso valore. Ecco il codice per il calcolo del profitto

Qual è l'errore che il profitto ha sempre lo stesso valore? Eh?

   // ЕСЛИ ПРОФИТ ПО АТР//-------------------------------------------------------------------------------------------------+
   if(Tip_tp == en_TP_po_atr)
     {
      tp =NormalizeDouble(iATR(NULL,PeriodForWork_sl,atr_sl_period,1),Digits);// ПРИСВАЕВАЕМ ЗНАЧЕНИЙ АТР ДЛЯ ВЫСТАВЛЕНИЯ СТОПЛОССА
      if(tp<stoplevel)  // ЕСЛИ ПРОФИТ МЕНЬШЕ ЧЕМ МИНИМАЛЬНО ДОПУСТИМЫЙ УРОВЕНЬ ЕГО УСТАНОВКИ ТО
        {
         tp=NormalizeDouble(tp*1.5,Digits); // ПРОФИТУ ПРИСВАЕВАЕМ МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ ЕГО УСТАНОВКИ
        } 
     }
   //+--КОНЕЦ РАСЧЁТА ПРОФИТА---------------------------------------------------------------------- Разделитель ---+
 
MakarFX:
Grazie per il tuo aiuto - ho cambiato un pezzo di codice e tutto ha funzionato. Ma puoi descrivere a parole qual era l'errore, visto che non riesco a superarlo a occhio?
 
MakarFX:

Vedi cosa ho cambiato nella funzione Lots() doppia

super! grazie mille!

 
DanilaMactep:
Grazie per il tuo aiuto - ho cambiato un pezzo di codice - tutto ha funzionato. Ma puoi descrivere a parole qual è stato l'errore, visto che non riesco ad andare avanti a occhio?

il tuo codice è stato diviso

В этой части кода ты задаешь tp значение АТР
  if(Tip_tp == en_TP_po_atr)// ЕСЛИ ПРОФИТ ПО АТР//-------------------------------------------------------------------------------------------------+
  {
  tp =NormalizeDouble(iATR(NULL,PeriodForWork_sl,atr_sl_period,1),Digits);// ПРИСВАЕВАЕМ ЗНАЧЕНИЙ АТР ДЛЯ ВЫСТАВЛЕНИЯ СТОПЛОССА
      if(tp<stoplevel)  // ЕСЛИ ПРОФИТ МЕНЬШЕ ЧЕМ МИНИМАЛЬНО ДОПУСТИМЫЙ УРОВЕНЬ ЕГО УСТАНОВКИ ТО
        {
         tp=NormalizeDouble(tp*1.5,Digits); // ПРОФИТУ ПРИСВАЕВАЕМ МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ ЕГО УСТАНОВКИ
        } 
  }
А в этой части ты обнуляешь предыдущее действие и задаешь непонятно что...
  tp= NormalizeDouble(tp*Point, Digits());// НОРМАЛИЗУЕМ ПРОФИТ, ЧТОБЫ РАБОТАЛО НА ЛЮБЫХ КАТИРОВКАХ
 
Buon pomeriggio, per favore aiutatemi a far funzionare il mio terminale - il mercato non funziona. Voglio scaricare un indicatore gratuito dal mercato e non posso.

Ho cambiato la password, riavviato, ma non funziona niente.

Il programma registra quanto segue

2021.08.23 11:54:18.236 MQL5 Mercato non è riuscito a scaricare il prodotto 'MACD Intraday Trend'(www.mql5.com:443 invio fallito [426: ])


Saluti, Olga