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

 
xruss >> :

Più tardi posterò una sezione del mio codice, ma penso che sarebbe più figo con le caselle di controllo. come le scrivo in mql4?

https://book.mql4.com/ru/variables/arrays

Alla fine di questa sezione, il principio dell'uso delle bandiere è molto ben descritto da un esempio del fatto di formare una nuova barra. Allo stesso modo, creiamo due variabili di tipo bool che indicheranno la possibilità di aprire operazioni di un certo tipo, per esempio Buy_Allowed e Sell_Allowed. Per impostazione predefinita, assegniamo valori di true a queste variabili. Se c'è un segnale di acquisto, in caso di apertura positiva della posizione impostiamo Buy_Allowed=false; in questo caso prima di OrderSend() aggiungiamo la condizione della sua esecuzione per operazioni di acquisto solo se Buy_Allowed==true. Quando viene ricevuto un segnale di inversione, scartiamo il flag Buy_Allowed=true. Lo stesso schema è usato per le operazioni di vendita ma con il flag Sell_Allowed.

 
Everlost >> :

https://book.mql4.com/ru/variables/arrays

Alla fine di questa sezione il principio dell'uso delle bandiere è descritto molto bene dall'esempio del fatto di formare una nuova barra. Per analogia, creiamo due variabili di tipo bool che indicheranno la possibilità di aprire operazioni di un certo tipo, per esempio Buy_Allowed e Sell_Allowed. Per impostazione predefinita, assegniamo valori di true a queste variabili. Se c'è un segnale di acquisto, in caso di apertura positiva della posizione impostiamo Buy_Allowed=false; in questo caso prima di OrderSend() aggiungiamo la condizione della sua esecuzione per operazioni di acquisto solo se Buy_Allowed==true. Quando viene ricevuto un segnale di inversione, scartiamo il flag Buy_Allowed=true. Lo stesso schema è usato per le operazioni di vendita ma con il flag Sell_Allowed.

Grazie. Ho pubblicato parte del codice nell'ultimo post.

 

Ho già scaricato il mio Daydream EA da questo sito.Quando l'ho testato, il lotto massimo preso nel test era 0,1 e il saldo era 10.000. L'ho testato con GBPUSD 15 in Meta Trader 4 222.

Seconda domanda: cos'è l'"errore di corrispondenza" nel rapporto di prova?

La terza domanda, perché non riesco ad ottenere un segnale? Ho l'impressione che questo sia in qualche modo collegato alla prima domanda, cioè che qualcosa sia guasto nel programma. Ho provato ad usare EURUSD M1 MACD Sample (che è fornito di serie), ho diminuito il MACD OpenLevel a 1 e non ho ottenuto nulla.

Non so come usarlo.

 
xruss >> :

Grazie, mi istruirò. Ho pubblicato parte del codice nell'ultimo post.

int    ORDtype=-1, ORDtime=0;
double ORDprofit;

for (int i=OrdersHistoryTotal()-1; i>=0; i--) {
  if (OrderSelect( i, SELECT_BY_POS, MODE_HISTORY)) {
    if (OrderSymbol()==Symbol()) {
      if (OrderCloseTime()!=0 && OrderCloseTime()> ORDtime) {
        ORDtime=OrderCloseTime();
        ORDtype=OrderType();
        ORDprofit=OrderProfit();
      }
    }
  }
}

//........

if ( ORDtype==-1)
{
  // В истории не нашлось подходящих ордеров
}

if ( ORDtype==OP_SELL)
{
  // Последним был закрыт Sell
}

if ( ORDtype==OP_BUY)
{
  // Последним был закрыт Buy
}
La variante funzionante del vostro codice. Non avresti dovuto rimuovere il controllo (OrderCloseTime()>time). Senza di esso, l'intero senso sarebbe stato perso - stiamo scegliendo l'ultimo ordine chiuso confrontando il tempo di chiusura di ogni ordine ricercato con il più vecchio tempo di chiusura degli ordini trovati in precedenza, che salviamo nella variabile ORDtime. Ma avete appena passato tutti gli ordini della storia. Avevi anche una condizione su ORDprofit, ma puoi aggiungerla tu stesso. :)
 
Everlost >> :
Versione funzionante del tuo codice. Non avresti dovuto rimuovere il controllo (OrderCloseTime()>time) perché senza di esso l'intero senso sarebbe stato perso - stiamo scegliendo l'ultimo ordine chiuso confrontando il tempo di chiusura di ogni ordine cercato con il tempo più vecchio degli ordini trovati in precedenza. Avevi anche una condizione su ORDprofit, ma puoi aggiungerla tu stesso. :)

Sì, avevo una condizione per vietare l'apertura nella stessa direzione se l'ultimo ordine aveva un profitto :)

grazie mille!!!))

 
zas писал(а) >>

Seconda domanda: cosa sono gli "errori di discrepanza" nel rapporto di prova?

È stato chiesto molte volte, è più facile per voi cercare...

zas ha scritto >>.

Ho provato a usare GBPUSD 15 su un Meta Trader 4 222. La cosa interessante è che il test con 1 lotto su un altro computer era ok. Qual è il trucco?

Forse MT4 sull'altro computer è collegato al conto di un altro broker, broker diversi, condizioni di trading diverse... O forse l'EA determina il lotto in modo casuale?) Potreste aver bisogno del codice dell'Expert Advisor, delle dichiarazioni, e otterrete una risposta accurata.

zas ha scritto(a) >>.

La mia impressione è che sia in qualche modo legato alla prima domanda, cioè che ci sia qualcosa che non va nel programma. Ho provato a usare EURUSD M1 MACD Sample (che viene fornito come standard), ho diminuito il MACD OpenLevel a 1 e non ho ottenuto nulla.

Guardate il registro del tester, se state parlando di un tester. Pubblica il set di parametri e il risultato del test EA (dove non ci sono segnali). Sembra che tutti i tuoi problemi vengano dalla mancanza di esperienza, e non dai difetti del programma...

 
VladislavVG >> :

Un'opzione:

Impostare la variabile bool NeedAlert su true quando si inizia il trading.


Grazie, e ho pensato che non avrebbe funzionato - come il ciclo non funzionerà - si scopre che ho dimenticato la parentesi graffa))

 
Ecco una domanda: come faccio a calcolare la dimensione del lotto in modo che il profitto stimato per 20 pip sia il 4% del deposito attuale?
 
xruss писал(а) >>

Grazie, mi istruirò. Ho pubblicato parte del codice nell'ultimo post.

//+------------------------------------------------------------------+
// Проверка последнего ордера по условию                             |
//+------------------------------------------------------------------+
bool LastCloseOrd(string Sy = "",//Если Sy=="" на принадлежность символу не проверяем
                  int  Type = -1,//Если Typ==-1 любой тип ордера
                  int Magic = -1,//Если Magic=-1любой магик
                  int Pr_Ls =  0){//Если Pr_Ls =0 без проверки на профит, если <0 то фильтр лосевых , если >0 то фильтр профитных ордеров
                  int time=0;
if(OrdersHistoryTotal()<1){return(false);}//Если нет закрытых ордеров выходим 
  for(int i=0; i<OrdersHistoryTotal(); i++){//Перебираем закрытые ордера
    if(OrderSelect( i, SELECT_BY_POS, MODE_HISTORY)){//Выбираем ордер из истории
      if(OrderCloseTime()!=0){//Если ордер уже закрыт
        if( Sy==""||OrderSymbol()== Sy){//если совпадает символ, или нет проверки на символ
          if( Type==-1||OrderType()== Type){//если совпадает тип, или нет проверки на тип
            if( Magic==-1||OrderMagicNumber()== Magic){//если совпадает магик , или не проверки на магик
              if(OrderCloseTime()> time){//если время закрытия ордера больше чем предыдущее
                time=OrderCloseTime();//записываем время закрытия (в конце цикла у нас в ловушке булет сидеть последний закрытый ордер
              }                                                  //попадающий под все условия выставленных фильтров)
            }
          }
        }
      }
    }
  }  
if( Pr_Ls==0&&time!=0){return(true);}//если нет условия на профит-лосс подтверждаем наличие ордера
if( Pr_Ls<0&&OrderProfit()<0){return(true);}//если ордер лосевый подтверждаем наличие ордера
if( Pr_Ls>0&&OrderProfit()>0){return(true);}//если ордер профитный подтверждаем наличие ордера
return(false);//нет ни одного попадающего под выставленные условия ордера
} 
 

Questo riguarda gli errori nel tester.........

Se qualcuno lo sa, si prega di consigliare.....

')' - wrong parameters count	C:\Program Files\MetaTrader - Alpari\experts\expertCCI_WILLIAMS.mq4 (64, 37)
')' - wrong parameters count	C:\Program Files\MetaTrader - Alpari\experts\expertCCI_WILLIAMS.mq4 (65, 37)
Cosa significano i numeri 64,37 e 65,37?
Motivazione: