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

 
lottamer:


questo modificatore non è stato scritto da me.

L'ho preparato dalle biblioteche.

È per questo che non posso nemmeno pulirlo. La cosa principale è che funziona al 100%.

Ma perché il parametro al suo interno non è ottimizzato - questa è la domanda.....

Non ci sono errori di base!

Il resto del codice funziona.

Mettere qualsiasi condizione sull'algoritmo.

- acquisto

-modificare

- vicino a

---------------------------

e cercare di ottimizzare il parametro all'interno della MODIFICA dell'ordine - cioè fermare e prendere

Beh, se funziona, e ancora di più se è al 100%, allora non c'è nessun problema. Perché dovremmo cercarvi degli errori? - Questo significa che non è il problema! - E se state cercando un errore, significa che non siete sicuri al 100%. Quindi il problema non è nel codice ma nei vostri criteri di valutazione, perché confondono anche voi. (Hai iniziato tu : ))) Sto solo aggiungendo l'olio...)

Quello che viene presentato qui - non so nemmeno come chiamarlo... Probabilmente - una singola azione gonfiata alla dimensione di una funzione. Nella maggior parte dei programmi questo tipo di applicazione non è ottimale - la modifica in un blocco va con qualcos'altro. - Anche se ci possono essere diverse condizioni di applicazione. Ma il mio punto è che non c'è niente da ottimizzare qui... Poiché è solo un'azione.

 
lottamer:

Guarda,

Se ora riporto tutto indietro, cioè rimuovo i parametri esterni STOP e TAKE e scrivo numeri all'interno della funzione al loro posto, allora l'EA è stato eseguito settimana dopo settimana per 10 settimane e mostra risultati chiari.

E se cambio manualmente i parametri di stop e takeaway - tutto funzionerà e darà risultati leggermente diversi (ovviamente)

E ora perché, quando prendo questi parametri fuori dal modificatore - l'ottimizzatore li considera insignificanti?

Questo è esattamente quello che sto cercando di dirvi - che il problema è molto probabilmente altrove, non in questa funzione. Quindi hai un'altra cosa in mente. Forse questi SL e TP sono applicati in qualche altro posto che in qualche modo si sovrappongono o qualcos'altro. Possiamo solo indovinare. - Ecco perché bisogna guardare tutto il codice. E nessuno può aiutarti alla cieca. - Non ci sono maghi qui.

Vedete, fate domande ma non date tutte le informazioni necessarie per scoprire la ragione (nascondendo ragionevolmente il vostro know-how). - Come nell'esempio con la spina. - Ma come si può aiutare in questo caso? - La risposta è che non si può. Tutto l'aiuto non ha senso. E ci vuole anche molta energia.

 
Chiripaha:

Beh, se funziona, e ancora di più se è al 100%, allora non c'è nessun problema. Allora perché dovreste cercare un errore in esso? - Quindi, il problema non è in esso! - Se state cercando un errore, significa che non siete sicuri al 100%. Quindi il problema non è nel codice ma nei vostri criteri di valutazione, perché confondono anche voi. (Hai iniziato tu : ))) Sto solo aggiungendo l'olio...)

Quello che viene presentato qui - non so nemmeno come chiamarlo... Probabilmente - una singola azione gonfiata alla dimensione di una funzione. Nella maggior parte dei programmi questo tipo di applicazione non è ottimale - la modifica in un blocco va con qualcos'altro. - Anche se ci possono essere diverse condizioni di applicazione. Ma il mio punto è che non c'è niente da ottimizzare qui... Poiché è solo un'azione.

Ci sto guardando dentro, perché l'abbiamo cambiato SOLO e perché è dove ci sono i parametri ottimizzabili.

come non c'è niente da ottimizzare? le dimensioni di stop e take sono ottimizzate!

 
Chiripaha:

Questo è esattamente quello che sto cercando di dirvi - che il problema è probabilmente da qualche altra parte, non in questa funzione. Quindi avete confuso qualcos'altro. Forse questi SL e TP sono applicati in altri posti che in qualche modo si sovrappongono o qualcos'altro... Possiamo solo indovinare. - Ecco perché bisogna guardare tutto il codice. E nessuno può aiutarti alla cieca. - Non ci sono maghi.

Vedete, voi fate domande e tralasciate alcune informazioni necessarie per identificare la causa (nascondendo sensibilmente il vostro know-how). - Come nell'esempio con gli inludi. - Ma come si può aiutare in questo caso? - La risposta è che non si può. Tutto l'aiuto non ha senso. E ci vuole anche molta energia.

Capisco...

dobbiamo fare una pausa... e pensare...

guardare....

e credo di sapere dove...

 
lottamer:

Ci sto guardando dentro, perché l'abbiamo cambiato SOLO e perché è dove ci sono i parametri ottimizzabili.

come non c'è niente da ottimizzare? le dimensioni di stop e take sono ottimizzate!

: )))))) Per cosa sono ottimizzati? la modifica dell'ordine? - Non è quello che ha appena detto.

Dovrebbero essere ottimizzati in relazione al programma, alle sue condizioni - che si nascondono in modo affidabile. E non si può ottimizzare in relazione a una singola azione.

In questo caso, lo sviluppatore deve solo decidere questi punti da solo. Ci passiamo tutti, credimi. : )) Lo stesso vale per me e per altri colleghi. Non si può chiedere aiuto e nascondersi. Poi devi rivelare - in questo caso renderlo pubblico a tutti, visto che il forum è pubblico - le tue carte.
 
Chiripaha:

: )))))) In che modo sono ottimizzati? In modifica dell'ordine? - Non è quello che ha appena detto.

Dovrebbero essere ottimizzati in relazione al programma, alle sue condizioni - che si nascondono in modo affidabile. Ma non si può ottimizzare in relazione a una singola azione.

In questo caso, lo sviluppatore deve solo decidere questi punti da solo. Ci passiamo tutti, credetemi. : )) Lo stesso vale per me e per altri colleghi. Non puoi chiedere aiuto e nasconderlo. Allora dovete divulgare - in questo caso, rendere pubblico tutto, visto che il forum è pubblico - le vostre carte.

Ora preparerò tutto il codice e mostrerò........
 

Ecco il codice:

Coppia EURUSD

//+------------------------------------------------------------------+
//|                                                           33.mq4 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
#include <WinUser32.mqh>
#include <b-Positions.mqh>

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+

extern  int  STOP = 100; 
extern  int  TAKE = 200;

double  Ma_1, Ma_2,  m2, m3; // m2 и m3 - это маркеры



//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
  
Ma_1=iMA(NULL,PERIOD_M15,20, 0,MODE_SMA,PRICE_CLOSE,1) ;

Ma_2=iMA(NULL,PERIOD_M15,100,0,MODE_SMA,PRICE_CLOSE,1) ;





//=============================BUY_CONDITIONS=============================================
    

if (Ma_1>Ma_2 && m2==0)     {My_close();  My_buy ();  My_modify();  m2=1;   }  // закрыть если висят открытые позы   
                                                                                                   // и открыть новую
//=============================SELL_CONDITIONS=============================================
 
if (Ma_1<Ma_2 && m3==0)     {My_close();  My_sell ();  My_modify();  m3=1;  }    
 
//======================================

if  ( OrdersTotal()==0 && (m2==1 || m3==1)) {m2=0; m3=0;}  // обнуляет маркеры при закрытии позиций,
                                                           // что дает возможность открывать снова
//==============переход в безубыток ========================
   
OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
   
if  (OrderProfit()>0.5)  {My_modify_close_zero ();}


return(0);
  }

//============================функция  ПРОДАТЬ==============================================

int My_sell()
{
    OrderSend (Symbol( ), OP_SELL,  0.01 ,Bid, 0, 0, 0, NULL, 0, 0, CLR_NONE);

}
return;

///==================================КУПИТЬ==========================================
int My_buy ()
{
     OrderSend (Symbol( ), OP_BUY, 0.01 ,Ask, 0, 0, 0, NULL, 0, 0, CLR_NONE);
}
return;


//+---------------------МОДИФИЦИРОВАТЬ сделку сразу по открытии---------------------------------------------+


int My_modify()
 {
   bool   result;
   double take_profit,stop_loss,point;
   int    cmd,total,error;
//----
   total=OrdersTotal();
   point=MarketInfo(Symbol(),MODE_POINT);
//----
//   for(int i=0; i<total; i++)
//     {
      if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
        {
         //---- print selected order
         OrderPrint();
         cmd=OrderType();
         //---- buy or sell orders are considered
         if(cmd==OP_BUY || cmd==OP_SELL)
           {
            //---- modify first market order
            while(true)
              {
               if(cmd==OP_BUY) stop_loss=OrderOpenPrice()-STOP*point;
               else            stop_loss=OrderOpenPrice()+STOP*point;
               
                if(cmd==OP_BUY) take_profit=OrderOpenPrice()+TAKE*point;
                           else take_profit=OrderOpenPrice()-TAKE*point;
               
               
               result=OrderModify(OrderTicket(),0,stop_loss, take_profit,0,CLR_NONE);
               if(result!=TRUE) { error=GetLastError(); Print("LastError = ",error); }
               else error=0;
               if(error==135) RefreshRates();
               else break;
              }
             //---- print modified order (it still selected after modify)
             OrderPrint();
//            break;
           }
        }
      else { Print( "Error when order select ", GetLastError()); }
//     }

   return(0);
  }
  
  
//==============================выставить стопы в безубыток============================================================
int My_modify_close_zero ()
{
   bool   result;
   double stop_loss,point;
   int    cmd,total,error;
//----
   total=OrdersTotal();
   point=MarketInfo(Symbol(),MODE_POINT);
//----
//   for(int i=0; i<total; i++)
//     {
      if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
        {
         //---- print selected order
         OrderPrint();
         cmd=OrderType();
         
         //---- buy or sell orders are considered
         if(cmd==OP_BUY || cmd==OP_SELL)
           {
            //---- modify first market order
            while(true)
              {
               if(cmd==OP_BUY) stop_loss=OrderOpenPrice();
               else            stop_loss=OrderOpenPrice();
               
               result=OrderModify(OrderTicket(),OrderOpenPrice(),stop_loss,OrderTakeProfit(),0,CLR_NONE);
               if(result!=TRUE) { error=GetLastError(); Print("LastError = ",error); }
               else error=0;
               if(error==135) RefreshRates();
               else break;
              }
             //---- print modified order (it still selected after modify)
             OrderPrint();
//             break;
           }
        }
      else { Print( "Error when order select ", GetLastError()); }
//     }
//----
   return(0);
  }

  
//=================ЗАКРЫТЬ СДЕЛКУ=======================================================
int My_close()
  {
   bool   result;
   double price;
   int    cmd,error;
//----
   if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
     {
      cmd=OrderType();
      //---- first order is buy or sell
      if(cmd==OP_BUY || cmd==OP_SELL)
        {
         while(true)
           {
            if(cmd==OP_BUY) price=Bid;
            else            price=Ask;
            result=OrderClose(OrderTicket(),OrderLots(),price,3,CLR_NONE);
            if(result!=TRUE) { error=GetLastError(); Print("LastError = ",error); }
            else error=0;
            if(error==135) RefreshRates();
            else break;
           }
        }
     }
   else Print( "Error when order select ", GetLastError());
//----
   return(0);
  }
 
lottamer:

Ecco il codice:

Coppia EURUSD

b-Positions.mqh allegarlo - altrimenti non potrete eseguirlo - non vedrete come funziona.
 
Chiripaha:
b-Positions.mqh attach - altrimenti non sarete in grado di eseguirlo - non sarete in grado di vederlo funzionare.

File:
b-positions.mqh  90 kb
 
lottamer:
Ho una domanda - perché avete bisogno di questo file come plug-in, se avete tutte le funzioni necessarie nell'Expert Advisor stesso? Hai intenzione di fare qualcos'altro?