Come codificare? - pagina 41

 

Più EA

Si possono caricare solo 5 EA alla volta.

File:
kehedge.mq4  12 kb
 

Come scrivere "Se l'ultimo trade è stato vincente

In un EA come scrivere "Se l'ultimo trade era vincente" (per questa coppia) poi ...

Grazie per l'aiuto.

Jo

 

su MarketInfo()

ciao a tutti!

//

doppio A = MarketInfo("EURUSD",MODE_BID);

doppio B = MarketInfo("USDJPY",MODE_BID);

doppio C = MarketInfo("EURJPY",MODE_BID);

init()

{

A = MarketInfo("EURUSD",MODE_BID);

B = MarketInfo("USDJPY",MODE_BID);

C = MarketInfo("EURJPY",MODE_BID);

}

int start()

{

...

}

//

perché questi codici non funzionano? quando è conforme, che viene a così tanti errori:

'MarketInfo' - inizializzazione prevista

'A' - variabile non definita ...

..... e così via

 

Questo ha funzionato per me

Jovager:
In un EA come scrivere "Se l'ultimo trade era vincente" (per questa coppia) allora ...

Grazie per l'aiuto.

Jo

doppio LottiOttimizzati()

{

double lots = InitialLots;//default lots 0.1 - non ci sarà nessun errore se i lotti non saranno impostati dall'altra parte del codice

// int total = OrdersHistoryTotal();

for(int i=0;i<OrdersHistoryTotal();i++) // scansiona tutte le transazioni chiuse / cancellate

{

OrderSelect(i, SELECT_BY_POS, MODE_HISTORY );

if(OrderSymbol() == Symbol()&& OrderMagicNumber()==MagicNumber)

{

if(OrderProfit()<0)

{

lots = NormalizeDouble(OrderLots() * LotsFactor,2);

}

else

{

lots=InitialLots;

}

}

}

return(lots);

}

Ho usato questo per controllare se l'ultimo trade chiuso era vincente o no. Se non lo era ho marcato i lotti. Spero sia d'aiuto.

 
Sendra:
Ciao a tutti

Ho provato a creare un EA e ho ricevuto il seguente messaggio di errore:

'\fine_di_programma' - parentesi finale '}' prevista C:\...\My_First_EA.mq4(96,1)

Ho fatto doppio clic, ho raggiunto la linea, poi l'ho controllata con le parentesi finali di apertura prima di essa, e ancora non so dove ho sbagliato.

Questo è il secondo EA che ho provato, con lo stesso messaggio di errore, basato sullo stesso indicatore.

Grazie.

Sendra, manda il programma al mio indirizzo email come allegato e lo guarderò e cercherò di sistemarlo. Normalmente il problema è una parentesi mancante dopo una dichiarazione. Sfortunatamente, questo è un linguaggio di basso livello e poiché è un linguaggio di base, molte volte non è in grado di dirti esattamente dove si trova l'errore, quindi si limita all'errore che ti sta mostrando. Solo l'esperienza nella codifica aiuterà nella risoluzione di questo tipo di errore.

Dave

<<<

ddiebold7@aol.com

 

Ralph, AIUTO con qualche logica di chiusura giornaliera

Ciao Ralph.

Forse, se non ti dispiace un po 'di guida. Questo è stato un po 'di una sfida per me a capire! Voglio definire alcune condizioni per l'EA a guardare per determinare se chiudere o meno un commercio aperto. Usiamo un ordine di acquisto come esempio (so che l'ordine di vendita sarebbe la logica opposta). Quindi, ho un ordine di acquisto aperto il lunedì. Voglio che l'EA guardi la chiusura giornaliera nei prossimi X giorni. Se la chiusura giornaliera in ciascuno dei prossimi X giorni (diciamo 5 giorni per esempio) è inferiore al prezzo di apertura dell'ordine, allora voglio che l'EA esegua un OrderClose per chiudere l'operazione. Stavo anche pensando che un'altra possibile parte di questa condizione che potrei volere che l'EA guardi è se la chiusura giornaliera di ciascuno dei prossimi X giorni è inferiore alla chiusura del giorno precedente. Inoltre, il mio EA funziona sul time frame di un'ora.

Spero di aver spiegato quello che voglio realizzare abbastanza chiaramente da permettervi di capire.

Grazie in anticipo per il tuo aiuto.

 

Aiuto per la codifica per favore

Non sto chiedendo la codifica di un EA, solo un piccolo aiuto per un problema.

Quello che vorrei codificare è questo: se ho un ordine lungo aperto, voglio essere in grado di chiamare il prezzo più alto quotato che l'ordine ha visto dall'apertura di quello specifico ordine lungo. Ovviamente, quando l'ordine si apre per la prima volta, verrebbe restituito il prezzo aperto. Se l'ordine aumenta di 20 pip, verrebbe restituito il prezzo di OrderOpenPrice() + 20 pip. Se poi il prezzo diminuisce di 10 pip, il prezzo OrderOpenPrice() + 20 sarebbe ancora il valore restituito. So che questo può essere fatto all'interno di una barra specifica utilizzando OrderOpenPrice() + High[0], ma quando si forma una nuova barra, High[0] diventa High[1]. Userò anche la stessa logica al contrario per restituire il valore più basso che uno specifico ordine short ha visto. Quando l'ordine si chiude, i valori restituiti si azzerano di nuovo.

Sto avendo problemi a capire questo, qualcuno può aiutarmi?

Grazie!

 

Salva il valore più alto della quotazione della barra corrente in una variabile. Ogni volta che ottieni un'altra quotazione, confrontala con il valore della variabile. Se il nuovo valore è più alto, salvatelo nella variabile. Se il nuovo valore è più basso, mantenete la variabile uguale.

if(variabile < newquote)

variabile = newquote;

Spero che questo aiuti!

 
jimven:
Salva il valore quotato più alto della barra corrente in una variabile. Ogni volta che ottieni un'altra quotazione, confrontala con il valore della variabile. Se il nuovo valore è più alto, salvatelo nella variabile. Se il nuovo valore è più basso, mantenete la variabile uguale.

se(variabile < newquote)

variabile = newquote;

Spero che questo aiuti!

Grazie per l'aiuto, ho una domanda però. Cosa succede quando la barra corrente non è più quella in cui si è aperto l'ordine? Cosa succede se l'ordine si è aperto nella barra 5 barre fa? Ora voglio il valore quotato più alto di 5 barre, il prezzo quotato più alto da quando l'ordine si è aperto. Funzionerà ancora?

Grazie