Come codificare? - pagina 318

 
mladen:
dasio Sta già facendo il looping di tutte le ore del giorno corrente. Ho messo iClose() e iOpen() solo come esempio di una chiamata da un time frame diverso da 1 ora. Se volete accedere a un giorno diverso da quello corrente, sostituite lo "0" sul datetime startTime=iTime(NULL,PERIOD_D1,0); con qualsiasi giorno per il quale desiderate che i dati siano raccolti

Grazie.

Forse devo studiare.

Non capisco come posso fare il calcolo separato per la candela 00:00 - 01:00 - 02:00 ecc.

Scusa

 

Problemi di segnale

Mladen

Grazie, ho guardato da vicino....Im ancora sperimentando il codice.

 

dasio

Questa parte

int i=iBarShift(NULL,PERIOD_H1,startTime);

imposta la i allo spostamento della prima candela oraria nel giorno specificato (questo è il motivo per cui è stato aggiunto datetime startTime=iTime(NULL,PERIOD_D1,0);- per trovare l'ora di inizio del giorno) dopo di che eseguirà il loop attraverso ogni valore della barra di 1 ora finché il giorno rimane lo stesso (per esempio il venerdì non eseguirà il loop 24 volte ma 22 o 23 a seconda del vostro broker)

Se hai bisogno di sentire qualche array che deve essere fatto un po' diversamente, fammi sapere se questa era la tua idea)

dasio:
Grazie.

Forse devo studiare.

Non capisco come posso fare il calcolo separato per la candela 00:00 - 01:00 - 02:00 ecc.

Scusa
 

Come fare un esperto si ferma?

Ciao codificatori,

Come codificare alcune linee di codifica extra in modo che un Esperto si fermi dopo un trade vincente?

I pip sono nella borsa, poi fare l'Esperto si ferma...

Grazie mille

Tomcat98

 
mladen:
dasio

Questa parte

int i=iBarShift(NULL,PERIOD_H1,startTime);

imposta la i allo spostamento della prima candela oraria nel giorno specificato (ecco perché è stato aggiunto datetime startTime=iTime(NULL,PERIOD_D1,0);- per scoprire l'ora di inizio del giorno) dopo di che eseguirà il loop attraverso ogni valore della barra di 1 ora finché il giorno rimane lo stesso (per esempio il venerdì non eseguirà il loop 24 volte ma 22 o 23 a seconda del vostro broker)

Se hai bisogno di sentire qualche array che deve essere fatto un po' diversamente, fammi sapere se questa era la tua idea)

Grazie,

sto capendo un po' di più.

Tuttavia ne ho bisogno per esempio.

Devo associare alle variabili qualcosa come questo:

(candela 00:00 ; variabile = Close+High

candela 01:00 ; Variabile1 = Close+Open

candela 02:00 ; Variabile2 = high+low;

E così via per tutte le candele dell'ora del giorno.

Quindi le variabili sono definite come doppie.

Dopo di che devo fare qualche calcolo matematico con la variabile e associare il risultato a un buffer (non è un problema)

Il problema per me è l'associazione della variabile....

 

Un altro problema... sto cercando di studiare la programmazione e a volte (solo a volte? eheh) ho bisogno di aiuto.

Se ho un ea che piazza due ordini pendenti come posso codificare se voglio che quando un ordine pendente viene aperto l'altro ordine pendente deve essere cancellato?

Grazie, grazie...

 

Devi utilizzare 2 cicli:

Prima devi contare gli ordini per scoprire se qualcuno degli ordini in sospeso è diventato un ordine "regolare" (quindi devi fare un conteggio regolare degli ordini che hanno tipo OP_BUY o OP_SELL e, se vuoi, contare anche il resto degli ordini).

Se ci sono ordini aperti, allora devi fare un altro ciclo e cancellare tutti gli ordini che non sono di tipo OP_BUY o OP_SELL.

Il codice potrebbe essere qualcosa del genere:

int opened =0;

int pending =0;

for(int i=OrdersTotal()-1; i>=0; i--)

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol() !=Symbol()) continue;

if(OrderMagicNumber()!=MagicNumber) continue;

if(OrderType()==OP_BUY || OrderType()==OP_SELL)

opened++;

else pending++;

}

if (opened>0 && pending>0)

{

for(i=OrdersTotal()-1; i>=0; i--)

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol() !=Symbol()) continue;

if(OrderMagicNumber()!=MagicNumber) continue;

if(OrderType()!=OP_BUY && OrderType()!=OP_SELL)

OrderDelete(OrderTicket());

}

}
dasio:
Un altro problema... sto cercando di studiare la programmazione e a volte (solo a volte? eheh) ho bisogno di aiuto.

Se ho un ea che piazza due ordini pendenti come posso codificare se voglio che quando un ordine pendente viene aperto l'altro ordine pendente deve essere cancellato?

Grazie a voi
 

Chiudere tutte le posizioni di vendita o tutte le posizioni di acquisto solo (quando si raggiunge il profitto prefissato)

Ciao a tutti...sono nuovo del FX e degli EA. Ho cercato di trovare un EA per "chiudere tutte le vendite" o "chiudere tutte le compravendite" quando si colpisce il target ma non l'ho trovato. Ho trovato solo chiudere tutte le vendite o tutti gli acquisti senza il "HIT TARGET o PROFIT". E' possibile se qualcuno può aiutarmi a creare 1 EA con le seguenti caratteristiche:-

1)Chiudere tutte le vendite se il profitto ha colpito X target.

2)Chiudere tutti gli acquisti se il profitto ha raggiunto il target X.

3)Includere il trailing stop (se possibile, se non è possibile nessun problema)

4) Non chiudere se l'equity o il livello di margine è inferiore a X % se chiudi tutti gli acquisti o chiudi tutte le vendite (Se possibile, se non è possibile nessun problema)

Nota:

Se no 4 è abbastanza difficile da codificare quindi solo no 1,2 e 3 in un EA.

Se no 4 e 3 difficile quindi solo no 1 e 2 in un EA

Se è ancora difficile creare solo i numeri 1 e 2 separatamente.

Sarebbe davvero grato se qualcuno potesse fornirmi quanto sopra.

Grazie in anticipo

 
pipsmonitor:
Ciao a tutti .. im nuovo a FX e EA. Ho provato a trovare un EA per "chiudere tutte le vendite" o "chiudere tutti gli acquisti" quando ha colpito l'obiettivo, ma non ho potuto trovare. Ho trovato solo chiudere tutte le vendite o tutti gli acquisti senza "HIT TARGET o PROFIT". E' possibile se qualcuno può aiutarmi a creare 1 EA con le seguenti caratteristiche:-

1)Chiudere tutte le vendite se il profitto ha colpito l'obiettivo X.

2)Chiudere tutti gli acquisti se il profitto colpisce l'obiettivo X.

3)Includere il trailing stop (se possibile, se non è possibile nessun problema)

4) Non chiudere se il capitale o il livello di margine è inferiore a X % se chiudi tutti gli acquisti o chiudi tutte le vendite (Se possibile, se non è possibile nessun problema)

Nota:

Se no 4 è abbastanza difficile da codificare quindi solo no 1,2 e 3 in un EA.

Se no 4 e 3 difficile quindi solo no 1 e 2 in un EA

Se è ancora difficile creare solo i numeri 1 e 2 separatamente.

Sarebbe davvero grato se qualcuno potesse fornirmi quanto sopra.

Grazie in anticipo

Ciao Pipsmonitor,

Forse trovato qualcosa qui su questa pagina https://www.mql5.com/en/forum/181179 anche fatto una ricerca goggle sulla barra di intestazione del forum utilizzato chiuso sul profitto trovato alcuni ci si può essere in grado di utilizzare, anche potrebbe provare una ricerca per Eas trailing, so di un Ema trailing e BBand stop trailing Ea.

 

Ciao,

sto cercando di unire questi due codici ma ho dei problemi.

Ho bisogno che quando un ordine pendente è riempito l'altro deve essere cancellato.

Grazie per la tua disponibilità

int opened =0;

int pending =0;

for(int i=OrdersTotal()-1; i>=0; i--)

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol() !=Symbol()) continue;

if(OrderMagicNumber()!=Magic) continue;

if(OrderType()==OP_BUY || OrderType()==OP_SELL)

opened++;

else pending++;

}

if (opened>0 && pending>0)

{

for(i=OrdersTotal()-1; i>=0; i--)

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol() !=Symbol()) continue;

if(OrderMagicNumber()!=Magic) continue;

if(OrderType()!=OP_BUY && OrderType()!=OP_SELL)

OrderDelete(OrderTicket());

}

} [/PHP]

[PHP] extern int Magic = 68415;

extern int Orario_Inizio = 0;

extern int Orario_Fine = 6;

extern int Buffer = 0;

extern double Lotti = 0.1;

extern int TakeProfit = 10;

extern int StopLoss = 50;

double Massimo;

double Minimo;

int BarCount;

int BarStart;

int BarShift;

double MinLot;

double LotSize;

int i;

int ticket;

string Status;

string BuyStatus1;

string SellStatus1;

double Range;

string CommentoRange;

double pipMultiplier = 1;

int init()

{

}

int start()

{

if (Digits==3 || Digits==5)

{pipMultiplier = 10;}

else {pipMultiplier = 1; }

double TakeProfit1 = TakeProfit*Point*pipMultiplier;

double StopLoss1 = StopLoss*Point*pipMultiplier;

double Buffer1 = Buffer*Point*pipMultiplier;

double StopLossPrice = NormalizeDouble(StopLoss1,Digits);

double TakeProfitPrice = NormalizeDouble(TakeProfit1,Digits);

double BufferPrice = NormalizeDouble(Buffer1,Digits);

//CALCOLA LE BARRE DEL RANGE

if(Orario_Inizio>Orario_Fine)

{

BarCount=24+Orario_Fine-Orario_Inizio;

}

if(Orario_Inizio<Orario_Fine)

{

BarCount=Orario_Fine-Orario_Inizio;

}

//CALCOLA IL MASSIMO E IL MINIMO DEL RANGE

if(Hour()>=Orario_Fine)

{

BarStart=Hour()-Orario_Fine;

BarShift=BarStart+BarCount;

Minimo=iLow(NULL,PERIOD_H1,BarStart);

Massimo=0;

for(i=BarStart;i<=BarShift;i++)

{

Massimo=MathMax(Massimo,iHigh(NULL,PERIOD_H1,i));

Minimo=MathMin(Minimo,iLow(NULL,PERIOD_H1,i));

Range=(Massimo-Minimo)/Point;

}

}

else

{

Massimo=0;

Minimo=0;

return(0);

}

//CONTROLLA SE E' L'ORARIO PER POTER TRADARE

if(Hour()==Orario_Fine && OrdersTotal()<2)

{

//CONTROLLA SE IL MASSIMO E' STATO ROTTO. CONDIZIONE BUY

double OpenPriceBuy = NormalizeDouble((Massimo+BufferPrice),Digits);

ticket=OrderSend(Symbol(),OP_BUYSTOP,Lotti,OpenPriceBuy,0,OpenPriceBuy-StopLossPrice,OpenPriceBuy+TakeProfitPrice,NULL,Magic,0,Blue);

//CONTROLLA SE IL MINIMO E' STATO ROTTO. CONDIZIONE SELL

double OpenPriceSell = NormalizeDouble((Minimo-BufferPrice),Digits);

ticket=OrderSend(Symbol(),OP_SELLSTOP,Lotti,OpenPriceSell,0,OpenPriceSell+StopLossPrice,OpenPriceSell-TakeProfitPrice,NULL,Magic,0,Red);

if (ticket != -1)

return(0);

}

}