Aiuto per la codifica - pagina 161

 

2 ordini alla volta

Ciao, sto cercando di codificare un EA, e ho un problema, non so come risolverlo :?

quindi il problema è che voglio aprire 2 ordini (OPENSTOP e SELLSTOP) al momento attuale, ma su questo EA si apre maby di loro circa 100 o più, quindi come risolvere per aprire solo 2 :?

extern double Lots=1;

extern double h_beg=10;

extern double h_end=23;

extern double TakeProfit=20;

extern double StopLoss=90;

//+------------------------------------------------------------------+

int start()

{

double prevbar_H;

doppio prevbar_L;

doppio bar_H;

doppio bar_L;

doppio vendere;

doppio comprare;

bool trade_time;

bool sell_opened;

bool buy_opened;

//+------------------------------------------------------------------+

se (Ora()==h_beg)

{

trade_time = true;

for(int h=1; h<=11; h++)

{

bar_H = iHigh(NULL,0,h);

if (prevbar_H==0 || prevbar_H<bar_H)

{

prevbar_H = bar_H;

}

}

for(int l=1; l<=11; l++)

{

bar_L = iLow(NULL,0,l);

if (prevbar_L==0 || prevbar_L>bar_L)

{

prevbar_L = bar_L;

}

}

}

if (Hour()==h_end)

{

trade_time = false;

prevbar_H = 0;

prevbar_L = 0;

DeletePending();

DeleteBUY();

vendere=0;

buy=0;

}

//+--------------------------------------------------------buy or sell----------+

se(Ora()==h_beg)

{

if(sell==0)

{

OrderSend(Symbol(),OP_SELLSTOP,Lots,prevbar_L,3,prevbar_L+200*Point,prevbar_L-200*Point, "MA sample",16384,0,Green);

sell=1;

}

if(buy==0)

{

OrderSend(Symbol(),OP_BUYSTOP,Lots,prevbar_H,3,prevbar_H-200*Point,prevbar_H+200*Point, "MA sample",16384,0,Verde);

buy=1;

}

}

//+------------------------------------------------------------------+

return(0);

}

//+------------------------------------------------------------------+

void DeletePending()

{

for(int i=0; i<OrdersTotal(); i++)

{

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

{

OrderDelete(OrderTicket());

}

}

}

void DeleteBUY()

{

for(int i=0; i<OrdersTotal(); i++)

{

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

{

if (OrderType() == OP_BUY)

{

OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 5, Red );

}

}

}

}
 
carbonmimetic:
Ciao Mladen,

se voglio contare le barre tra 2 minimi, come posso evitare la barra di domenica 23.00 p.m a 00.00?

perché sul grafico a 4 ore c'è quella barra e dura solo un'ora.....e appare anche sul grafico giornaliero.

grazie in anticipo

carbonmimetic

Aggiungi un controllo del giorno della settimana simile a questo:

if (TimeDayOfWeek(Time[yourCounter])!=0)

0 è domenica e in questo caso devi saltare quella barra

 

perché il sistema che uso è come il sistema di trading martingala, una volta che ho messo l'ordine è circa 1 ordine di lavoro e 4 ordini in sospeso, quando perdo il 2 ° ordine in sospeso diventerà ordine di lavoro, quindi ho bisogno di spostare il TP prev uguale all'ordine corrente, quindi spero di poter avere EA per automatico a questo in modo che non ho bisogno di continuare a guardare, perché a volte bisogno di uscire per il pranzo o la cena. cerco di codice da solo, ma non so come selezionare il nuovo ordine e modificare l'ordine prev.

 
mladen:
carbonmimetic

Aggiungere un controllo del giorno della settimana simile a questo:

if (TimeDayOfWeek(Time[yourCounter])!=0)
0 è domenica e in questo caso devi saltare quella barra

ok....grazie mille!

 

ciao mladen,

potresti per favore aiutare ad esaminare il codice, vedo che nel grafico live, può ridisegnare la linea di segnale passata, quando premo il refresh del menu di mt4, la linea può spostare completamente la posizione, cioè la linea di segnale passata.

Potresti risolvere questo problema, non ridisegnare il passato o non può autorefresh problemi. è qualcosa come il conteggio delle barre che ha problemi o modi di loop interno? Sono solo un principiante superficiale del codice. Molte grazie per l'aiuto.

 
kenwa:
ciao mladen

potreste per favore aiutare ad esaminare il codice, vedo che nel grafico live, può ridisegnare la linea di segnale passata, quando premo il refresh del menu di mt4, la linea può spostare completamente la posizione, cioè la linea di segnale passata.

si potrebbe risolvere questo problema, non per ridipingere passato o non può autorefresh problemi. è qualcosa come il conteggio delle barre avendo problema o modi di ciclo interno? Sono solo un principiante superficiale del codice. Molte grazie per l'aiuto.

kenwa

Sostituisci init e inizia con questi:

double CCI_idx[];

double CCI_idt[];

int init()

{

IndicatorBuffers(2);

SetIndexStyle(0,DRAW_LINE);

SetIndexBuffer(0,CCI_idx);

SetIndexBuffer(1,CCI_idt);

return(0);

}

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

int start()

{

int i,counted_bars=IndicatorCounted();

if(counted_bars<0) return(-1);

if(counted_bars>0) counted_bars--;

int limit = MathMin(Bars-counted_bars,Bars-1);

for(i=limit;i>=0;i--) CCI_idt = iCCI(abc,0,CCI_Period,applied_price,i);

for(i=limit;i>=0;i--) CCI_idx = iMAOnArray(CCI_idt,Bars,MA_Period,0,MA_Method,i);

return(0);

}

Non potete usare lo stesso buffer per la raccolta dei valori cci e poi per memorizzare le medie di questi cci - questo causava il repainting. Inoltre, ho rimosso il riferimento al time frame dalla chiamata CCI. Se volete che calcoli anche in modalità multi time frame, deve essere scritto diversamente

__________________________

PS: lo stesso consiglio potrebbe essere applicato all'uso di simboli diversi su un grafico corrente. Il numero di barre modificate di un simbolo corrente non deve essere lo stesso del numero di barre di un altro simbolo target in modo da poter ottenere un effetto di riverniciatura, ma l'ho lasciato così com'è

 

Ciao mladen,

riferito a #1606 sopra, dato che sono un principiante molto superficiale o in effetti so molto poco, non riesco a capire il tuo significato, potresti allegare un indicatore funzionante qui? posso usare un buffer per calcolare il valore CCI e poi fare la media, invece di usare due buffer? menzioni simboli diversi, potrebbe essere possibile scrivere una versione semplice per accomodare due simboli sullo stesso grafico? se è mtf, come scrivere invece, molte grazie per l'aiuto.

 
kenwa:
Ciao mladen, in riferimento a #1606 qui sopra, siccome sono un principiante molto superficiale o comunque ne so molto poco, non riesco a capire il tuo significato, potresti allegare un indicatore funzionante qui? posso usare un buffer per calcolare il valore del CCI e poi fare la media, invece di usare due buffer? menzioni simboli diversi, potrebbe essere possibile scrivere una versione semplice per accomodare due simboli sullo stesso grafico? se è mtf, come scrivere invece, molte grazie per l'aiuto.

kenwa

Non puoi usare lo stesso buffer per calcolare il buffer e poi memorizzare i risultati della media di quel CCI nello stesso buffer - la media cambierà i valori passati

Per quanto riguarda l'indicatore multi-simbolo (quello che può accedere ad altri simboli da un grafico corrente): se io postassi la soluzione per questo temo che non sarebbe semplice. Non c'è una soluzione semplice per questo e bisogna prima chiarire cosa succede con due simboli diversi nello stesso tempo

Allego la versione che funziona correttamente su un simbolo corrente e nel time frame corrente (questo è l'unico modo in cui puoi calcolare la media di un cci se vuoi usare la funzione iMAOnArray())

 

kenwa

Questo sarebbe il modo più semplice possibile per farlo funzionare in multi time frame e per poter scegliere qualsiasi simbolo. Vedrete che non è così semplice come sembra a prima vista, ma questo fa tutto il necessario per raccogliere dati corretti e per evitare di ridipingere quando lo fa

 

ciao mladen,

grazie mille, come se il tuo mtf se scrivere in versione non-mtf essere? non posso modificare me stesso a causa del mio livello di codifica kindergarten. a proposito, perché sembra usato fino 2 buffer per calcolare, ma mt4 consentono solo 8 buffer massimo è vero?se voglio come l'indicatore di riferimento allegato (che non è in alcun modo un buon indicatore (ha bug all'interno penso, non così funzionante in live)), solo per il vostro riferimento, può mostrare otto simboli allo stesso tempo, non necessario valuta o qualsiasi simbolo che voglio inserire me stesso esternamente, (penso che sovrapporre lo stesso indicatore in sw non funziona come la scala verticale non è fisso lì) come si può aiutarmi a creare un cci mtf uno come quello di indicatore di riferimento (non necessario così complesso, ma ha funzioni simili?) Molte grazie ancora per gentile aiuto.

File:
reference.mq4  17 kb