Aiuto per la codifica - pagina 281

 
mladen:
stevenpun Tu dici che il buy ha 0.1 lot + 0.2 lot e il sell dovrebbe essere 0.4 lot. Ti dispiacerebbe chiarirlo?

Ciao mladen, scusa per la risposta tardiva.

Perché sono malato per qualche giorno.

Ho fatto una foto

Per esempio quando l'acquisto ha 2 ordini aperti (0.1 Lot + 0.2 Lot), ma improvvisamente il treno è cambiato in vendita.

L'ea aprirà una vendita di 0.1 Lot, ma io voglio che si apra per 0.4 Lot.

E' possibile modificarlo?

File:
lot_explain.jpg  121 kb
 
hermes:
Ciao ancora una volta,

Ho provato ad usare quanto sopra con un commento ma visualizzava solo il Max. Potete aiutarmi magari con due funzioni. Una che visualizzi il lineprice immediato sopra il Bid e la seconda la linea sotto il Bid. Grazie.

Ecco il codice.

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

//| SimpleGrid.mq4+

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

#include

#include

#proprietà strict

// variabili esportate

extern string GridStartingPrice = " Prezzo di partenza per piazzare le linee ";

extern double GSP = 0.0;

extern int GR = 5;

extern double GridStep = 5;

extern color CGL = Oro;

extern color BGL = Verde;

extern color SGL = Rosso;

extern bool ClearAllObjects = False;

// variabili locali

double PipValue=1; // questa variabile è qui per supportare i broker a 5 cifre

bool Terminated = false;

string LF = "\n"; // usalo nei blocchi personalizzati o di utilità dove hai bisogno di avanzamenti di linea

int NDigits = 4; // usato soprattutto per NormalizeDouble nei blocchi di tipo Flex

int ObjCount = 0; // conta di tutti gli oggetti creati sul grafico, permette la creazione di oggetti con nomi unici

int current = 0;

int init()

{

NDigits = Digits;

if (false) ObjectsDeleteAll(); // cancella il grafico

Comment(""); // cancella il grafico

return(0);

}

// Inizio esperto

int start()

{

se (Bars < 10)

{

Comment("Non ci sono abbastanza barre");

return (0);

}

if (Terminato == true)

{

Comment("EA Terminato");

return (0);

}

OnEveryTick7();

return (0);

}

void OnEveryTick7()

{

PipValue = 1;

if (NDigits == 3 || NDigits == 5) PipValue = 10;

CentreGridLine();

}

void CentreGridLine()

{ se (ObjectFind("CGL") == (-1) )

{

{

string objName = "CGL" ;

ObjectCreate(objName, OBJ_HLINE, 0, Time[0],GSP);

ObjectSet(objName, OBJPROP_PRICE1, GSP);

ObjectSet(objName, OBJPROP_COLOR,CGL);

}

TradeLine();

UprBnd();

LwrBnd();

}

}

void TradeLine()

{

int i;

double GridStep1= (GridStep*2);

double BGSP= (GSP+((GridStep/2)*PipValue*Point)) ;

double SGSP= (GSP-((GridStep/2)*PipValue*Point));

double BBGSP= (BGSP-((GridStep*(GR))*PipValue*Point)) ;

double SSGSP= (SGSP+((GridStep*(GR))*PipValue*Point));

{

for(i=0; i<GR;i++)

{

SGL("Vendi "+i,BBGSP+GridStep1*i*PipValue*Point);

}

}

{

for(i=0; i<GR;i++)

{

BGL("Buy "+i,SSGSP-GridStep1*i*PipValue*Point);

}

}

}

void BGL(string objName, double price)

{

ObjectCreate(objName, OBJ_HLINE, 0, 0, prezzo);

ObjectSet(objName, OBJPROP_STYLE, STYLE_SOLID);

ObjectSet(objName, OBJPROP_WIDTH, 1);

ObjectSet(objName, OBJPROP_COLOR, BGL);

}

void SGL(string objName, double price)

{

ObjectCreate(objName, OBJ_HLINE, 0, 0, 0, price);

ObjectSet(objName, OBJPROP_STYLE, STYLE_SOLID);

ObjectSet(objName, OBJPROP_WIDTH, 1);

ObjectSet(objName, OBJPROP_COLOR, SGL);

}

void UprBnd()

{ se (ObjectFind("UPRBND") == (-1) )

{

double BGSP= (GSP+((GridStep/2)*PipValue*Point)) ;

double price= (BGSP+((GridStep*(GR))*PipValue*Point)) ;

stringa objName = "UPRBND" ;

ObjectCreate(objName, OBJ_HLINE, 0, Time[0], price );

ObjectSet(objName, OBJPROP_PRICE1,price);

ObjectSet(objName, OBJPROP_COLOR, DodgerBlue);

ObjectSet(objName, OBJPROP_WIDTH,3);

}

}

void LwrBnd()

{ if (ObjectFind("LWRBND") == (-1) )

{

double SGSP= (GSP-((GridStep/2)*PipValue*Point));

double price= (SGSP-((GridStep*(GR))*PipValue*Point));

stringa objName = "LWRBND" ;

ObjectCreate(objName, OBJ_HLINE, 0, Time[0], price );

ObjectSet(objName, OBJPROP_PRICE1,price);

ObjectSet(objName, OBJPROP_COLOR, Tomato);

ObjectSet(objName, OBJPROP_WIDTH, 3);

}

}

int deinit()

{

se (ClearAllObjects) ObjectsDeleteAll();

return (0);

}

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

Hermes

Puoi allegare il file mq4?

 
mladen:
Hermes Puoi allegare il file mq4?

Ecco qui. Grazie

File:
simpleg.mq4  4 kb
 

Ciao,

Ho bisogno di aiuto con un Ea che ho fatto, è legato a 2 medie mobili e 2 timeframes diversi per filtrare il trend, vorrei aggiungere un indicatore RSI per filtrare gli scambi, impostare per esempio RSI periodo 8 livello 50, se superiore al livello 50 RSI all'incrocio apriamo solo ordini di vendita a mercato, se inferiore al livello 50 RSI all'incrocio apriamo solo ordini di acquisto a mercato. Allego l'Ea, all'inizio era legato a keltnerchannels, ma ora voglio che sia usato solo come Ma1 e Ma2.

Qualcuno può aiutarmi con queste modifiche?

Grazie a voi

File:
 
hermes:
Ecco qui. Grazie

Hermes

Prova questo: simpleg_1.mq4

File:
simpleg_1.mq4  6 kb
 
daniel1983:
Ciao,

Ho bisogno di aiuto con un Ea che ho fatto, è legato a 2 medie mobili e 2 timeframes diversi per filtrare il trend, vorrei aggiungere un indicatore RSI per filtrare gli scambi, impostare ad esempio RSI periodo 8 livello 50, se superiore al livello 50 RSI all'incrocio apriamo solo ordini di vendita a mercato, se inferiore al livello 50 RSI all'incrocio apriamo solo ordini di acquisto a mercato. Allego l'Ea, all'inizio era legato a keltnerchannels, ma ora voglio che sia usato solo come Ma1 e Ma2.

Qualcuno può aiutarmi con queste modifiche?

grazie

daniel1983

E' quasi sicuro che non otterrai mai incroci di mas e rsis allo stesso tempo (cioè - non otterrai quasi mai segnali). Prova: fai un semplice indicatore che fa quello che descrivi e vedrai quanto sia raro che queste condizioni si verifichino allo stesso tempo

 
mladen:
daniel1983 E' quasi sicuro che non avrai mai incroci di mas e rsis allo stesso tempo (cioè - non avrai quasi mai segnali). Prova: fai un semplice indicatore che fa quello che descrivi e vedrai quanto sia raro che queste condizioni si verifichino allo stesso tempo

Ciao Mladen,

Intendo dire che

- a qualsiasi livello tra 0 e 50 solo vendere

- a qualsiasi livello tra 50 e 100 solo comprare,

non in questo stesso punto di intersezione, l'incrocio può essere a qualsiasi livello (43, 41, 18, 25) per gli ordini di acquisto a mercato, confermando con il trend del time frame superiore. Ho testato questo e circa il 80% degli ordini aperti sembra che con questo filtro non si aprirà nella direzione opposta.

In questo momento l'Ea apre l'ordine di acquisto quando l'incrocio sta iniziando una tendenza al ribasso, con questo filtro nell'80% dei casi filtrerà questo incrocio senza inserire l'ordine a questo punto. dove quegli incroci Ma.

In questo Ea ho inserito un timeframe più alto, ma ho fatto dei test con risultati migliori usando un timeframe più basso per filtrare il trend.

Allego un'immagine di un esempio di test configurato:

Per EURUSD

In questo caso sto usando EMA 2 e EMA 67, e RSI (8) timeframe 1min e Hitimeframe 5min, in questo caso si ha un ordine di acquisto a mercato che non è redditizio, questo ordine di acquisto a mercato avviene all'incrocio delle EMa ma con RSI ad un livello inferiore a 50.

Poi si ha un ordine di vendita a mercato che si apre all'incrocio ma con RSI inferiore a 50, e questo ordine è l'ordine di mercato corretto che voglio filtrare da tutti i segnali.

E' possibile fare questo?

Grazie

Daniel

File:
rsi_filter.png  32 kb
 
mladen:
Hermes Prova questo: simpleg_1.mq4

Ciao Mladen,

Finalmente funziona usando questo. Grazie

void LoopBS()

{

double max =(ObjectGet("UPRBND",OBJPROP_PRICE1));

doppio min =(ObjectGet("LWRBND",OBJPROP_PRICE1));

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

{

string name = ObjectName(i);

if (StringSubstr(name,0,3)=="Buy")

{

double BS=ObjectGet(name,OBJPROP_PRICE1);

if ((Ask<BS) && (BSmin))

{

max = ObjectGet(name,OBJPROP_PRICE1);

{

Comment(DoubleToStr(BS,Digits)," ");

}

}

}

}

}

 

Segnali imprecisi

Segnali imprecisi

Cari artigiani! Potreste segnalare meglio di fare. M1, M5, M15

File:
.......png  31 kb
 
DMNIK:
Segnali imprecisi Cari, artigiani! Potreste segnalare meglio di fare. M1, M5, M15

Mostra semplicemente se le ultime 3 chiusure sono maggiori o minori delle ultime 3 aperture. Niente da migliorare in questo