[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non potrei andare da nessuna parte senza di te - 2. - pagina 112

 

Buona sera!

Ho una semplice domanda.

Per quale motivo l'EA, dopo l'inizializzazione, non può andare a start(); ?

Forse qualcuno ha affrontato un problema simile?

Da init(); esco return(0); .

Grazie in anticipo per la risposta!

 
E come fa a sapere che "non è andato a Start"?
 
BBSL:

Buona sera!

Ho una semplice domanda.

Per quale motivo l'EA, dopo l'inizializzazione, non può andare a start(); ?

Forse qualcuno ha affrontato un problema simile?

Da init(); esco return(0); .

Grazie in anticipo per la risposta!

Nessuna citazione - nessun inizio. Le zecche sono necessarie per passare all'inizio + l'approvazione dell'esperto.
 

Ciao a tutti e profitti!

Ho un tale problema.

Sul mio computer di casa sto facendo un layout grafico. Come trasferirlo su un altro computer - quale file deve essere sovrascritto?

Non posso usare l'output come copiare l'intera cartella MT4 e poi copiarla con un nuovo nome su un altro computer perché è troppo complicato. La cosa interessante è che se lascio la cartella su un altro computer con il vecchio nome non c'è niente di nuovo sui grafici...

Chi lo sa, aiuto!

 

BBSL ,io scrivevo "start();" - è così che l'hai scritto? Non c'è bisogno di due punti lì. Forse non ci sono parentesi graffe

kiimar, l'hai chiuso? Se è così, devi vedere il codice

 
BBSL:

Buona sera!

Ho una semplice domanda.

Per quale motivo l'EA, dopo l'inizializzazione, non può andare a start(); ?

Forse qualcuno ha affrontato un problema simile?

Da init(); esco return(0); .

Grazie in anticipo per la risposta!

La risposta è ancora più semplice: la presenza dell'operatore return(0) alla fine del corpo di una funzione non significa che questo operatore sarà mai eseguito.
 

Come posso controllare se un ordine è attivato da TakeProfit o StopLoss? Grazie per la vostra risposta!

 
BBSL:

Per quale motivo l'EA, dopo l'inizializzazione, non può andare a start(); ?

Forse qualcuno ha affrontato questo problema?

A volte ci sono calcoli complessi o il caricamento della storia in init(), o il terminale ha un sacco di indicatori e EAs che sospendono il terminale o...

ma se durante l'inizializzazione del codice i terminali interrompono il codice, il seguente errore apparirà nel log: ".... timeout in esperto ...."

Se il terminale non stampa alcun errore nel log, significa che l'inizializzazione ha avuto successo. La funzione start() stessa è facile da controllare - scrivi Start() : Print("new tick") nella prima linea;

 
Sayod ,su quale timeframe hai fatto trading e con quali parametri?
 
Jaguar1974:

Come posso controllare se un ordine è attivato da TakeProfit o StopLoss? Grazie per la risposta!


Controlla la cronologia degli ordini, se il prezzo di chiusura è uguale a SL o TP - allora ..., ma penso che sarebbe più facile controllare il profitto di un ordine chiuso - se > 0 allora prendere altrimenti ...

Ecco un pezzo di codice significativo simile:

double history(){
int time = 0;double profit = 0;//обьявляем необходимые нам переменные куда мы положим интересующие нас характеристики ордера
for(int i = OrdersHistoryTotal();i>=0;i--){// Перебираем все закрытые ордера
  if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)){//если ордер с таким номером (i) в списке закрытых ордеров есть ( не путать с тикетом)
    if(OrderSymbol() == Symbol()){//если выбранный ордер был открыт по нашей валютной паре
      if(time<OrderCloseTime()){//(сравниваем его с хранящимся в пероеменной time) 
        time=OrderCloseTime();//если время закрытия ордера больше - ложим его в переменную
        profit=OrderProfit();//и заодно запоминаем прибыль ордера
      }
    }
  }
}
//по окончании этой процедуры в наших переменных будут сидет наибольшее время закрытия, и его профит. Или по нулям если история чистая.
//теперь мы можем выставлять условия в зависимости от результата процедуры
   
if(profit == 0 &&time == 0){//действия если история чистая

}
if(profit >= 0){//действия если последний ордер был прибыльным, или нулевым

}
if(profit <  0 ){//действия если последний ордер был убыточным

}
return(0);
}
Motivazione: