Come codificare? - pagina 225

 

novizio...

prima di tutto felice anno nuovo a tutti!

poi grazie per tutta la conoscenza che state condividendo in questo forum

Mi sto avvicinando a mql4, non sono un coder.

Apprezzerei un piccolo supporto per scrivere questa strategia molto semplice:

entrate lunghe:

(ask-bid) <= Z_pips /* controllo dello spread */

e

(bollinger_up-bollinger_down) <= K_pips /* controllo volatilità */

e

ask < (bollinger_down + X_pips) /* controllo prezzo */

e

ma_Qperiodi >= ma_Wperiodi /* controllo tendenza */

uscite:

SL di negoziazione = 15 pips

Qualcuno ha tempo per darmi una possibilità?

Grazie in anticipo

neeverr

 

bisogno di aiuto con il mio indicatore nr7

ciao

sto codificando un indicatore per nr7.

l'algoritmo è

-calcola l'intervallo e memorizzalo nell'array

- se l'intervallo corrente <= ultimi 7 intervalli, allora la barra corrente è nr7

ma l'indicatore sembra segnalare ogni barra come nr7. non so dove ho fatto un errore.

Lo screenshot è qui

2010-01-18_0531

File:
nr7.mq4  3 kb
 

advancedsar EA

Ciao amici,

Ho bisogno del vostro aiuto, se qualcuno di voi può aiutarmi a modificare un EA che ho preso da un altro thread, ma purtroppo non ho il suo file mql.

Dalla logica originale di questo EA, voglio fare una piccola modifica come segue:

- Questo EA lavora solo su 4 cifre, per migliorare può lavorare anche su 5 cifre.

- Questo EA funziona secondo il comune sistema martingala, ho bisogno di aggiungere più modalità di funzionamento 2X methode,

1. Se l'EA apre l'ordine sull'ultimo trade, e colpisce il TP, allora l'EA inizierà un nuovo ciclo e aprirà il trade con lo stesso ordine dell'ultimo ordine. Esempio: se l'ultima operazione è un ordine di acquisto, e hanno colpito il TP, allora l'EA continuerà ad aprire l'ordine di acquisto a meno che non colpiscano lo SL e l'EA cambierà l'ordine in ordine di vendita in direzione opposta. la stessa cosa per l'ordine di vendita, fino a quando hanno profitto sull'ordine di vendita, allora continueranno ad aprire l'ordine di vendita con un nuovo ciclo fino a quando non hanno ottenuto lo SL e la direzione cambierà in ordine di acquisto.

2. Secondo modo di funzionamento. L'EA lavora sulla logica di sequenza acquisto-vendita-acquisto-vendita-acquisto, questa modalità è progettata per il mercato che oscilla senza tendenza.

sarà apprezzato per tutto il vostro aiuto.

grazie

yoha

File:
 

qualche idea sul perché questo EA non piazza gli ordini?

Ciao ragazzi, è stato un po 'da quando sono tornato in questo gioco .... comunque solo iniziando a rinfrescare su mql....lot è cambiato qui.

In pratica voglio piazzare ordini pendenti di acquisto e vendita a 10 pip dall'apertura di una barra su entrambi i lati. Il takeprofit è a 15 pip di distanza dagli ordini pendenti.

Il problema è che gli ordini non vengono mai piazzati...

int counted_bars = IndicatorCounted();

int pos = Bars - counted_bars + 1;

if (counted_bars == 0) pos = Bars - 10;

if (counted_bars>0) counted_bars--;

double currentPrice = iClose("EURUSD",PERIOD_M1,0);

while(pos>0)

{

//Putting Pending LongOrder

Print("Long...");

OrderSend("EURUSD",OP_BUYLIMIT,1,Open+10*Point,3,0,Open+25*Point,"Pending Long Order", 888, 0, Green);

Print("Short...");

//Putting Pending ShortOrder

OrderSend("EURUSD",OP_SELLSTOP,1,Open-10*Point,3,0,Open-25*Point,"Pending Short Order", 999, 0, Red);

pos--;

}
 

Non sono sicuro di cosa abbia a che fare il conteggio delle barre con un EA? Non è progettato per essere usato negli indicatori?

Penso che se togliessi quella parte potresti essere a posto.

 

variabile datetime

Ciao,

Voglio scrivere i dati attuali e il tempo

extern int starthour = 8;

extern int startminute = 0;

[/CODE]

in my variable

[CODE]

datetime starttime= 0;

Come posso scrivere questo?

Ma come posso scrivere questo

starttime = Data del giorno + starthour + startminute;

 

Non sono sicuro di cosa stai chiedendo, ma immagino che tu stia cercando di incrementare una data di un numero di ore e minuti. Se guardi il file di aiuto per TimeCurrent() vedrai che restituisce il tempo come secondi. Quindi logicamente puoi dedurre che per aggiungere i minuti dovresti moltiplicare per 60 e per le ore sarebbe per 3600 (60*60).

Quindi avreste qualcosa come...

TimeCurrent()+(starthour*3600)+(startmin*60);

Basta sostituire TimeCurrent() con qualsiasi tempo che avete designato come 'startdate'.

Lux

 
sunshineh:
Ciao,

Voglio scrivere i dati reali e l'ora

extern int starthour = 8;

extern int startminute = 0;

[/CODE]

in my variable

[CODE]

datetime starttime= 0;

Come posso scrivere questo?

Ma come posso scrivere questo?

starttime = Data del giorno + starthour + startminute;

Usa la funzione StrToTime. Se non passi il giorno a questa funzione ma solo l'ora e il minuto, userà il giorno corrente. Come questo:

datetime startTime = StrToTime( StartHour+": "+ StartMinute);

Dove StartHour e StartMinute sono stringhe:

string StartHour = 8;

stringa StartMinute = 0;

 

Molte grazie!

Ho anche un'altra domanda.

Come posso codificarlo, se voglio che il mio EA compri o venda solo al prezzo di chiusura della candela?

Ho pensato che posso scrivere

if(!Close[0]) return;

ma non funziona.

 
sunshineh:
Molte grazie!

Ho anche un'altra domanda.

Come posso codificarlo, se voglio che il mio EA compri o venda solo al prezzo di chiusura della candela?

Pensavo di poter scrivere

if(!Close[0]) return;
ma non funziona.

È necessario definire una variabile diciamo che sarà:

int barsNumber = 0;

nella sezione globale (es. subito prima della funzione init)

e poi nella funzione start dove hai la tua parte con la funzione sendOrder devi controllare questa condizione

if(Bars>barsNumber)

e se è vero allora impostate la nostra variabile barsNumber su Bars

barsNumber = Bars;

Quindi tutto sarebbe come questo:

#alcune proprietà

int barsNumber = 0;

int init()

{

}

int deinint()

{

}

int start()

{

if(Bars>barsNumber)

{

SendOrder(...);

barsNumber = Bars;

}

}