Scriverò un EA gratuitamente - pagina 41

 
Anton Kedo:
l'argomento sembra essere stato abbandonato.
No, perché... a volte lo leggono, è solo che richieste come "ho un'idea figa, come un graal" sono raramente seguite. Soprattutto senza un ToR.
 
Buon pomeriggio. Ho un'idea interessante su come migliorare ilean (martingala) per evitare il precipitare. L'essenza è molto lunga da descrivere qui, chi cercherà di spiegare l'essenza dell'idea in Skype.
 
Evgeniu Semenuta:
Buon pomeriggio. Ho un'idea interessante su come modificare l'illan (martingala) per evitare il precipitare. L'essenza di una descrizione molto lunga qui, che cercherà di spiegare l'essenza dell'idea in Skype.
Leggi il post precedente!
 

Ok. Lasciatemi provare a descriverlo. Diciamo che il prezzo scende, e l'illan ha già iniziato a comprare. Naturalmente, aggiunge posizioni per comprare aumentando il lotto e così via, fino a quando il prezzo scende o fino a quando il deposito è esaurito. Vorrei provare la seguente variante: quando il prezzo raggiunge le 10 ginocchia, il gufo piazza immediatamente 2 ordini pendenti (LOS totale degli ordini precedenti piazzati diviso 2) in 15 punti.

1 ordine imposta solo stop loss sul livello di profitto delle 10 ginocchia precedenti

2) Ordine Stop Loss sul livello di profitto delle precedenti 10 curve, profitto 15

Allora abbiamo due possibili risultati: il prezzo imposta uno stop loss, torna indietro, chiude la griglia di 10 curve e siamo fuori da due ordini perdenti. Oppure il mercato scende persistentemente, il 2° ordine chiude sul profitto e mette un altro o due ordini negativi dal netto di 10 curve dopo circa 10 punti e chiude uno o due negativi. Il secondo ordine pendente tira uno stop loss a pareggio e aspetta fino alla fine.

In qualche modo. È difficile da spiegare a parole (. Se siete interessati, vi spiegherò l'idea in dettaglio sul grafico in Skype.

 
Evgeniu Semenuta:

Ok. Lasciatemi provare a descriverlo. Diciamo che il prezzo scende, e l'illan ha già iniziato a comprare. Naturalmente, aggiunge posizioni per comprare aumentando il lotto e così via, fino a quando il prezzo scende o fino a quando il deposito è esaurito. Vorrei provare la seguente variante: quando il prezzo raggiunge le 10 ginocchia, il gufo piazza immediatamente 2 ordini pendenti (LOS totale degli ordini precedenti piazzati diviso 2) in 15 punti.

1 ordine imposta solo stop loss sul livello di profitto delle 10 ginocchia precedenti

2) Ordine Stop Loss sul livello di profitto delle precedenti 10 curve, profitto 15

Allora abbiamo due possibili risultati: il prezzo imposta uno stop loss, torna indietro, chiude la griglia di 10 curve e siamo fuori da due ordini perdenti. Oppure il mercato scende persistentemente, il 2° ordine chiude sul profitto e mette un altro o due ordini negativi dal netto di 10 curve dopo circa 10 punti e chiude uno o due negativi. Il secondo ordine pendente tira uno stop loss a pareggio e aspetta fino alla fine.

In qualche modo. È difficile da spiegare a parole (. Se siete interessati, vi spiegherò l'idea in dettaglio sul grafico in Skype.

La solita idea che porta all'inevitabile prugna! I dettagli non sono più interessanti!
 

Buon pomeriggio, l'opzione di rielaborare l'EA originale è considerata in questo thread? Se è così, qui sotto c'è la descrizione:

Ho un EA che ha bisogno di essere perfezionato (non chiude i trade da solo, quando il trading è permesso e due parametri non sono soddisfatti: indicazione dell'area di chiusura e indicazione della dimensione del volume di chiusura parziale) )Descrizione ToR :

Periodo di tempo: qualsiasi


Simboli usati:

Bande di Bollinger: periodo 20

outlier 2

applicato per chiudere



ADX: periodo 14

applicato per chiudere

impostare il livello a 25



Segnale di acquisto: durante un flat (quando il livello ADX è inferiore a 25), aspetta che il prezzo chiuda alla Bollinger Band inferiore (il parametro o definisce il punto di apertura dell'ordine, la distanza dalla Bollinger Band centrale alla Bollinger Band inferiore è definita come 100 %, 0 % è alla Bollinger Band inferiore, 10 % è superiore, ecc. Apriamo l'acquisto. La chiusura dell'ordine dipende dalle opzioni nell'EA, i parametri delle opzioni saranno spiegati più tardi. l'ordine viene chiuso con il parametro n quando tocca la banda centrale di bollinger (il parametro n è impostato in percentuale, definisce quale parte del volume viene chiuso, in lotti questo valore è arrotondato per difetto, 0% significa che non viene chiuso nulla). Lo stop loss viene impostato al prezzo di apertura dell'ordine, poi l'ordine viene chiuso completamente con il parametro f (la distanza dalla banda di bollinger media alla banda superiore è 100 per cento, il parametro f definito come una percentuale definisce il punto in cui l'ordine verrà chiuso se il prezzo lo raggiunge, 0 per cento è il punto alla banda di bollinger superiore 10 per cento è inferiore, ecc) )/

Ordine di vendita: durante un flat (quando l'ADX è inferiore a 25), aspetta che il prezzo chiuda alla Bollinger Band superiore (o specifica il punto di entrata dell'ordine, la distanza dalla Bollinger Band media alla banda superiore è definita come 100 per cento, 0 per cento è alla Bollinger Band superiore, 10 per cento è inferiore, ecc. Apriamo la vendita. La chiusura dell'ordine dipende dalle opzioni dell'EA, i parametri delle opzioni saranno spiegati in seguito. L'ordine viene chiuso con il parametro n quando tocca la banda di bollinger media. (il parametro n è impostato in percentuale, definisce quale parte del volume viene chiusa, in lotti questo valore è arrotondato per difetto, significa che non viene chiuso nulla). lo stop loss è impostato al prezzo di apertura, inoltre l'ordine viene chiuso completamente con il parametro f. (la distanza dalla banda di bollinger media alla banda inferiore è considerata come 100 %, il parametro f definito come una percentuale definisce il punto in cui l'ordine sarà chiuso se il prezzo lo raggiunge, 0 % punto alla banda di bollinger inferiore, 10 % superiore, ecc.)



Opzioni :

Gli stop loss possono essere impostati nelle opzioni di Expert Advisor o non esserlo affatto. Ci sono due tipi di Stop Loss: Stop Loss regolare che è dato in pip e Stop Loss a seconda del profitto atteso, cioè quando un ordine viene aperto dal prezzo dell'ordine alle Bande di Bollinger opposte (superiore o inferiore) viene calcolata la distanza in pip. Nelle opzioni, viene impostato il coefficiente S (da 0 a 1), che viene moltiplicato per il profitto potenziale. Questo valore è lo Stop Loss, cioè se il coefficiente è 0,5, allora lo Stop Loss sarà uguale alla metà del profitto potenziale. )

Ilprogrammatore che ha scritto questo EA è principalmente interessato a scrivere qualsiasi consigliere basato sulle linee di bollinger e non sono previste ulteriori modifiche. Nell'allegato vedo le statistiche della strategia sulla storia, su cui si basa l'advisor e i campioni di semi-settimana di esecuzione dell'advisor su VPS (ho eseguito tre termini con diverse gestioni). Qui sotto c'è il codice:

#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//--- input parameters
input int      BBPeriod=20;
input double   BBdeviation=2.0;
input int      ADX=14;
input double   AdxLevel=25;
input double      SL=2000;
input double      TP=0;
input int      Obuy=5;
input int      Osell=5;
input double   Lot=0.1;
input bool     CloseMiddle=true;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
bool buyOpen=false;
bool sellOpen=false;
double _Obuy;
double _OSell;
int TryShots= 3;
int Slippage=50;                         // Slippage
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
   _Obuy=Obuy/100;
   _OSell=Osell/100;

   if(!IsTradeAllowed())
     {
      string message="You must allow trading!";
      Print(message);
      Comment(message);
      return INIT_FAILED;
     }

   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   static datetime prevTime;
   datetime currentTime=iTime(Symbol(),0,0);
   if(prevTime==currentTime)
     {
      return;
     }
   else
     {
      prevTime=currentTime;
     }

   double adx=iADX(NULL,0,ADX,PRICE_CLOSE,0,2);

   if(adx<AdxLevel)
     {
      double bbMain1=iBands(NULL,0,BBPeriod,BBdeviation,0,PRICE_CLOSE,0,2);
      double close=iClose(NULL,0,2);
      if(!buyOpen)
        {
         double bbDown1=iBands(NULL,0,BBPeriod,BBdeviation,0,PRICE_CLOSE,2,2);
         BuyPosition(bbDown1,bbMain1,close);
        }
      else
        {
         double currentClose=iClose(NULL,0,0);
         double currentBB=iBands(NULL,0,BBPeriod,BBdeviation,0,PRICE_CLOSE,0,0);
         if(CloseMiddle && currentClose>currentBB)
           {
            CloseOpenPos(OP_BUY);
            buyOpen=false;
           }
        }

      if(!sellOpen)
        {
         double bbUp1=iBands(NULL,0,BBPeriod,BBdeviation,0,PRICE_CLOSE,1,2);
         SellPosition(bbUp1,bbMain1,close);
        }
      else
        {
         double currentClose=iClose(NULL,0,0);
         double currentBB=iBands(NULL,0,BBPeriod,BBdeviation,0,PRICE_CLOSE,0,0);
         if(CloseMiddle && currentClose<currentBB)
           {
            CloseOpenPos(OP_SELL);
            sellOpen=false;
           }
        }
     }

  }
//+------------------------------------------------------------------+

void BuyPosition(double bbDown,double bbMain,double close)
  {
   double dif=bbMain-bbDown;
   double proc=dif *_Obuy;
   double DownProc=bbDown+proc;

   if(close<DownProc)
     {
      double openCurrent=iOpen(NULL,0,1);
      double closeCurrent=iClose(NULL,0,1);
      if(closeCurrent>openCurrent)
        {

         for(int it=0; it<TryShots; it++)
           {
            ResetLastError();
            RefreshRates();
            double sl,tp;
            if(SL!=0)
               sl=NormalizeDouble(Bid-SL*Point,Digits);
            if(TP!=0)
               tp=NormalizeDouble(Bid+TP*Point,Digits);
            Print(Ask+" sl"+sl+" tp"+tp);
            if(!OrderSend(Symbol(),OP_BUY,Lot,NormalizeDouble(Ask,Digits),Slippage,sl,tp))
              {
               if(it>=TryShots) { Print("Failed OP_BUY !"); break; }
               int err=GetLastError();
               if(err==4 || err==6 || err==8 || err==128 || err==137 || err==141 || err==146) Sleep(1000*it);
               else { Print("Failed OP_BUY !"); break; }
              }
            else
              {
               buyOpen=true;
               break;
              }

           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void SellPosition(double bbUp,double bbMain,double close)
  {
   double dif=bbUp-bbMain;
   double proc=dif*_OSell;
   double UpProc=bbUp-proc;

   if(close>UpProc)
     {
      double openCurrent=iOpen(NULL,0,1);
      double closeCurrent=iClose(NULL,0,1);
      if(closeCurrent<openCurrent)
        {
         for(int it=0; it<TryShots; it++)
           {
            ResetLastError();
            RefreshRates();
            double sl,tp;
            if(SL!=0)
               sl=NormalizeDouble(Ask+SL*Point,Digits);
            if(TP!=0)
               tp=NormalizeDouble(Ask-TP*Point,Digits);
            Print(Bid+" sl"+sl+" tp"+tp);
            if(!OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),Slippage,sl,tp))
              {
               if(it>=TryShots) { Print("Failed OP_SELL !"); break; }
               int err=GetLastError();
               if(err==4 || err==6 || err==8 || err==128 || err==137 || err==141 || err==146) Sleep(1000*it);
               else { Print("Failed OP_SELL !"); break; }
              }
            else
              {
               sellOpen=true;
               break;
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Close open position                                              |
//+------------------------------------------------------------------+
void CloseOpenPos(int or_tp)
  {
   int i,err,k=OrdersTotal();
//---
   for(i=k-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol())
           {
            if(or_tp==OrderType())
              {
               for(int it=0; it<TryShots; it++)
                 {
                  ResetLastError();
                  RefreshRates();
                  double _price=Ask; if(or_tp==OP_BUY) _price=Bid;
                  //---
                  if(!OrderClose(OrderTicket(),OrderLots(),_price,Slippage))
                    {
                     if(it>=TryShots) { Print("Failed to close the order ",OrderTicket(),"!"); break; }
                     err=GetLastError();
                     if(err==4 || err==6 || err==8 || err==128 || err==137 || err==141 || err==146) Sleep(1000*100);
                     else { Print("Failed to close the order ",OrderTicket(),"!"); break; }
                    }
                  else break;

                 }
              }
           }
        }
     }
  }

//+------------------------------------------------------------------+

Sto aggiungendo altri screenshot da terminale, in esecuzione su VPS: screenshot "1" e "2" esempi quando l'advisor non apre le offerteda solo

Screenshot "Lock", l'Expert Advisor non ha chiuso la posizione Buy da solo e ha aperto una posizione Sell a causa delle condizioni Sell che appaiono.
Screenshot "ordine ricevuto", in questo caso l'ordine è stato aperto correttamente.
File:
Pictures.zip  775 kb
a2ji9v3g8.zip  14 kb
Statement.zip  23 kb
 

Chi ha uno script che chiude tutti gli ordini sul profitto totale - per favore ce lo mandi.

Lo apprezzerei molto.

 

Ci sto lavorando da molto tempo e ci sto lavorando da molto tempo, ci sto lavorando da molto tempo e ci sto lavorando da molto tempo.

In effetti, potrei anche provare a scriverne uno io stesso se capisco quali variabili usa per visualizzare sullo schermo i marcatori "occhio", blu e rosso!

 
baikot:

Ci sto lavorando da molto tempo e ci sto lavorando da molto tempo, ci sto lavorando da molto tempo e ci sto lavorando da molto tempo.

In effetti, potrei anche provare a scriverne uno io stesso, se capisco quali variabili usa per visualizzare sullo schermo i marcatori "occhio", blu e rosso!

Dov'è l'indicatore stesso?
 
Victor Nikolaev:
Dov'è l'indicatore stesso?
Non è necessario, però. Troverai solo il decompilatore ed entrerai nei bagni.