Come codificare? - pagina 231

 

Eccellente, grazie!

 

Amico, array e funzioni, non sono il mio genere.

 

Aiuto per EA

Voglio fare quanto segue:

Usare i frame M15 e aprire durante questo intervallo due ordini al massimo confrontando il prezzo attuale con il precedente M15 close(close[1]). Tuttavia, non so come scrivere il codice per questo dato che voglio che questa procedura abbia luogo ogni successivo frame M15. Come mantenere le giuste variabili per il conteggio di 2 ordini in massimo ogni M15 dato che la funzione di inizio si esegue sempre da sola?

Grazie

 

Ho bisogno di aiuto con uno script per aprire gli ordini in sospeso.

So che ci sono molti script qui che aprono e chiudono gli ordini, ma non riesco a trovarne uno che apra gli ordini in sospeso.

Ho bisogno di 2 script, 1 Sellstop e 1 Buystop.

Vorrei che il Buystop aprisse un ordine Buystop 15 pips sopra il pivot giornaliero e che il SellStop aprisse 15 pips sotto il pivot giornaliero.

Ci ho giocato e ho ottenuto il codice qui sotto per un SellStop, ma non sono un codificatore e non funziona. Immagino di essermi lasciato sfuggire qualcosa.

Qualcuno può aiutarmi con questo, per favore.

PS. non importa, ho capito. Ho dovuto cambiare il mio prezzo di offerta al PVTGreen. Stavo ottenendo un errore 130..

Ora funziona...

Ok, un altro problema, qualcuno può dirmi come cambiare il tempo di scadenza da 24 ore dopo alle 22:00 dello stesso giorno.

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

//| script "send pending order with expiration data" |

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

int start()

{

int ticket,expiration;

double point;

double PVTYellow = iCustom(NULL, 0, "pivot_alllevels", 0, 0, 0);

double PVTBlue = iCustom(NULL, 0, "pivot_alllevels", 0, 1, 0);

double PVTGreen = iCustom(NULL, 0, "pivot_alllevels", 0, 2, 0);

double PVTRed = iCustom(NULL, 0, "pivot_alllevels", 0, 3, 0);

double PVTMagenta = iCustom(NULL, 0, "pivot_alllevels", 0, 4, 0);

//----

point=MarketInfo(Symbol(),MODE_POINT);

expiration=TimeCurrent()+PERIOD_D1*60;

//----

while(true)

{

ticket = OrderSend(Symbol(),OP_SELLSTOP, 0.10, PVTGreen-15*Point, 3, PVTGreen+20*Point, PVTGreen-20*Point, 0,0,expiration,Red);

if(ticket<=0) Print("Error = ",GetLastError());

else { Print("ticket = ",ticket); break; }

//---- 10 seconds wait

Sleep(10000);

}

//----

return(0);

}

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

Per rendere la scadenza 22:00 potresti fare così...

int iHour = TimeHour(TimeCurrent());

int iMinute = TimeMinute(TimeCurrent());

int iDiff = 22%iHour;

datetime dtExpiryDate = (TimeCurrent()+(iDiff*60*60))-(iMinute*60);

Print(TimeToStr(dtExpiryDate));

Non c'è un controllo degli errori, quindi se pensate di averne bisogno assicuratevi di aggiungerlo.

Lux

 

Afferra i simboli di Market Watch

Ciao a tutti,

Mi stavo chiedendo se c'è un modo per afferrare tutti i simboli disponibili in market watch per il monitoraggio invece di alimentare manualmente l'EA?

in altre parole voglio che il mio EA passi attraverso qualsiasi simbolo che è disponibile nella finestra di market watch e li monitorizzi per un certo criterio.

qualsiasi aiuto è molto apprezzato.

 

Aiutatemi - Saldo del conto domenica

Ciao,

Sto cercando da ieri di armeggiare una cache del mio tutta la settimana da quando l'Account Balance Sunday (market success Opening) rivela.

Ho bisogno di portare ad eseguire correttamente un saldo del conto EA di domenica all'apertura del successo di mercato all'Equity Manager.

doppio usedacc = 0;

...

if (usedacc == 0 | | DayOfWeek () == 0) usedacc = Account Balance ();

...

Solo non funziona

Forse qualcuno può aiutarmi come meglio posso

Scusate il cattivo inglese

 

per favore cancella questo post - thx

 

come ottengo i dati dall'indicatore

Ciao a tutti,

ho bisogno per un EA dei valori FIBO100 e FIBO0 dall'indicatore. Come posso ottenerli?

Grazie

derumuro

File:
 

Come si ottiene?

Mate ho colpito un problema simile

Scott

La comunicazione "inter script" (o comunicazione "inter indicatore") in MQL passa esclusivamente attraverso i buffer. Questo codice :

trendset = iCustom(NULL,0, "VGA HISTOGRAM~",0,0);

Significa che si vuole recuperare il valore della barra corrente dal primo buffer (pubblico) dell'indicatore "VGA HISTOGRAM~". Non potete recuperare i valori delle variabili dichiarate in altri indicatori (e non importa se sono dichiarate come esterne). Potreste provare con le variabili globali, ma le variabili globali sono difficili da usare e offrono più possibilità di commettere un errore che lavorare correttamente con loro o potete scrivere una DLL (metatrader usa una sola istanza di una DLL per grafico, indipendentemente dai parametri, quindi si può fare una sorta di "semaforo" che manterrebbe e restituirebbe i valori a seconda degli ID di qualsiasi tipo - questo garantirebbe la comunicazione tra codici mql ed eviterebbe letture errate delle variabili (le variabili globali per esempio possono essere facilmente scambiate e si possono leggere variabili da un grafico completamente diverso senza nemmeno saperlo))

saluti

Mladen

In realtà ho fatto un work around per questo che condividerò con voi.

Nel tuo indicatore crea una nuova funzione in modo che le cose non diventino confuse.

void PASSINFO() {

int trendcondtemp; //cambia questo con il nome che desideri, non importa, lascialo se sei pigro

if (Close[1] > Open[2] && Volume[1] < Volume[2]) trendcondtemp=1; //bullish - questo imposta solo un valore alla variabile usa il tuo codice

if (Close[1] < Open[2] && Volume[1] < Volume[2]) trendcondtemp=2; //bearish - stessa cosa, odore diverso

if (Volume[1] > Volume[2])trendcondtemp=3; //non succede un cazzo - meh

se (Symbol()=="USDCHF") GlobalVariableSet("TRENDSETUSDCHF ",trendcondtemp);

se (Simbolo()=="GBPUSD") GlobalVariableSet("TRENDSETGBPUSD",trendcondtemp);

se (Simbolo()=="EURUSD") GlobalVariableSet("TRENDSETEURUSD",trendcondtemp);

se (Simbolo()=="USDJPY") GlobalVariableSet("TRENDSETUSDJPY",trendcondtemp);

se (Simbolo()=="USDCAD") GlobalVariableSet("TRENDSETUSDCAD",trendcondtemp);

se (Simbolo()=="NZDUSD") GlobalVariableSet("TRENDSETNZDUSD",trendcondtemp);

se (Simbolo()=="AUDUSD") GlobalVariableSet("TRENDSETAUDUSD",trendcondtemp);

se (Simbolo()=="AUDNZD") GlobalVariableSet("TRENDSETAUDNZD",trendcondtemp);

se (Simbolo()=="AUDCAD") GlobalVariableSet("TRENDSETAUDCAD",trendcondtemp);

se (Simbolo()=="EURUSD") GlobalVariableSet("TRENDSETEURUSD",trendcondtemp);

se (Simbolo()=="AUDCHF") GlobalVariableSet("TRENDSETAUDCHF",trendcondtemp);

se (Simbolo()=="AUDJPY") GlobalVariableSet("TRENDSETAUDJPY",trendcondtemp);

se (Simbolo()=="CHFJPY") GlobalVariableSet("TRENDSETCHFJPY",trendcondtemp);

se (Simbolo()=="EURGBP") GlobalVariableSet("TRENDSETEURGBP",trendcondtemp);

se (Simbolo()=="EURAUD") GlobalVariableSet("TRENDSETEURAUD",trendcondtemp);

se (Simbolo()=="EURCHF") GlobalVariableSet("TRENDSETEURCHF",trendcondtemp);

se (Simbolo()=="EURJPY") GlobalVariableSet("TRENDSETEURJPY",trendcondtemp);

se (Simbolo()=="EURNZD") GlobalVariableSet("TRENDSETEURNZD",trendcondtemp);

se (Simbolo()=="GBPCHF") GlobalVariableSet("TRENDSETGBPCHF",trendcondtemp);

se (Simbolo()=="GBPAUD") GlobalVariableSet("TRENDSETGBPAUD",trendcondtemp);

se (Simbolo()=="GBPCAD") GlobalVariableSet("TRENDSETGBPCAD",trendcondtemp);

se (Simbolo()=="GBPJPY") GlobalVariableSet("TRENDSETGBPJPY",trendcondtemp);

if (Symbol()=="NZDJPY") GlobalVariableSet("TRENDSETNZDJPY",trendcondtemp);

//aggiungere petrolio/oro/sheckles/qualunque cosa si scambi dopo questo ho coperto tutto ciò che fa il mio broker

}

Ok, ora, poiché la sua valuta dipende dalla valuta, non c'è la possibilità che si incroci con un'altra valuta e che i valori si gonfino. Ora devi mettere questo nel tuo inizio / qualsiasi funzione prima di chiamare il valore.

int trendset;

if (Symbol()=="USDCHF") trendset= GlobalVariableGet("TRENDSETUSDCHF");

if (Symbol()=="GBPUSD") trendset= GlobalVariableGet("TRENDSETGBPUSD");

se (Symbol()=="EURUSD") trendset= GlobalVariableGet("TRENDSETEURUSD");

se (Symbol()=="USDJPY") trendset= GlobalVariableGet("TRENDSETUSDJPY");

se (Symbol()=="USDCAD") trendset= GlobalVariableGet("TRENDSETUSDCAD");

se (Symbol()=="NZDUSD") trendset= GlobalVariableGet("TRENDSETNZDUSD");

if (Symbol()=="AUDUSD") trendset= GlobalVariableGet("TRENDSETAUDUSD");

if (Symbol()=="AUDNZD") trendset= GlobalVariableGet("TRENDSETAUDNZD");

se (Symbol()=="AUDCAD") trendset= GlobalVariableGet("TRENDSETAUDCAD");

se (Symbol()=="EURUSD") trendset= GlobalVariableGet("TRENDSETEURUSD");

if (Symbol()=="AUDCHF") trendset= GlobalVariableGet("TRENDSETAUDCHF");

se (Symbol()=="AUDJPY") trendset= GlobalVariableGet("TRENDSETAUDJPY");

se (Symbol()=="CHFJPY") trendset= GlobalVariableGet("TRENDSETCHFJPY");

if (Symbol()=="EURGBP") trendset= GlobalVariableGet("TRENDSETEURGBP");

if (Symbol()=="EURAUD") trendset= GlobalVariableGet("TRENDSETEURAUD");

se (Symbol()=="EURCHF") trendset= GlobalVariableGet("TRENDSETEURCHF");

if (Symbol()=="EURJPY") trendset= GlobalVariableGet("TRENDSETEURJPY");

se (Symbol()=="EURNZD") trendset= GlobalVariableGet("TRENDSETEURNZD");

se (Symbol()=="GBPCHF") trendset= GlobalVariableGet("TRENDSETGBPCHF");

se (Symbol()=="GBPAUD") trendset= GlobalVariableGet("TRENDSETGBPAUD");

se (Symbol()=="GBPCAD") trendset= GlobalVariableGet("TRENDSETGBPCAD");

se (Symbol()=="GBPJPY") trendset= GlobalVariableGet("TRENDSETGBPJPY");

se (Symbol()=="NZDJPY") trendset= GlobalVariableGet("TRENDSETNZDJPY");

Nota bene!!! (probabilmente te ne sei già accorto) ma devi avere l'indicatore in funzione sulla tua valuta su cui il tuo ea sta funzionando perché i valori cambino, altrimenti otterrai solo la vecchia variabile che è stata memorizzata per settimane in mt4.

Motivazione: