
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Controlla le funzioni temporali nella guida di Metatrader. poi prova qualcosa come questo
se (TimeHour(Time[0]) TradeHourStop)
{
Comment("Trading sospeso - fuori dall'orario di trading");
return(false);
}
dove TimeHourStart e stop sono variabili esterne impostate da voi. Il return(false); farà uscire la funzione start senza ulteriori elaborazioni.
Buona fortuna,
Grazie per la rapida risposta, Tzuman.
Purtroppo, la mia programmazione MT4 è limitata a un costruttore di EA online al momento.
Questo è proprio quello che stavo cercando però!
Come codificare la configurazione del colore del testo e la dimensione del carattere dei commenti...
Ciao a tutti,
Sto lavorando su un EA e sono solo un programmatore principiante...
E ho una domanda in generale come codificare la dimensione del carattere e il colore del testo dei commenti e renderlo configurabile dall'utente. Quali variabili esterne devo creare? E come lo programmo?
So come usare la funzione di commento, per esempio così:
if(TextOnScreen == true) Comment("Questo testo appare sullo schermo");
Ma come programmarla in modo che l'utente possa cambiare il fontsize del testo che appare sullo schermo e anche come cambiare il colore del testo cambiando l'impostazione nelle opzioni dell'EA?
Qualcuno può aiutarmi con qualche riga di codice? È molto apprezzato.
Grazie mille.
Johan
Ciao a tutti,
Sto lavorando su un EA e sono solo un programmatore principiante...
E ho una domanda in generale su come codificare la dimensione del carattere e il colore del testo dei commenti e renderlo configurabile dall'utente. Quali variabili esterne devo creare? E come lo programmo?
So come usare la funzione di commento, per esempio così:
if(TextOnScreen == true) Comment("Questo testo appare sullo schermo");
Ma come programmarla in modo che l'utente possa cambiare il fontsize del testo che appare sullo schermo e anche come cambiare il colore del testo cambiando l'impostazione nelle opzioni dell'EA?
Qualcuno può aiutarmi con qualche riga di codice? È molto apprezzato.
Grazie mille.
JohanDevi usare oggetti grafici come per esempio le etichette. Come fare questo - si può facilmente leggere nel manuale.
Ciao a tutti,
Sto lavorando su un EA e sono solo un programmatore principiante...
E ho una domanda in generale su come codificare la dimensione del carattere e il colore del testo dei commenti e renderlo configurabile dall'utente. Quali variabili esterne devo creare? E come lo programmo?
So come usare la funzione di commento, per esempio così:
if(TextOnScreen == true) Comment("Questo testo appare sullo schermo");
Ma come programmarla in modo che l'utente possa cambiare il fontsize del testo che appare sullo schermo e anche come cambiare il colore del testo cambiando l'impostazione nelle opzioni dell'EA?
Qualcuno può aiutarmi con qualche riga di codice? È molto apprezzato.
Grazie mille.
JohanJohan,
Studia l'indicatore allegato.
Parte del codice è per quando viene usato un template.
L'ho scoperto nel modo più difficile quando il testo di una coppia è apparso su un altro grafico a causa del template.
Se sono necessarie più linee di testo dovresti essere in grado di capirlo.
In caso contrario, scrivi di nuovo e ti mostrerò un esempio con più linee.
Robert
perché l'ordine di chiusura fallisce e come limitare l'ordine n.o.?
Sono un principiante in MQL4, ho appena testato un mio EA, ma sembra che non possa chiudere l'ordine, e aprirebbe l'ordine in ogni barra fino a quando il freemargin non diventa 0, poi obbligherebbe a fermare tutti gli ordini. Non so come limitare l'ordine aperto NO. Chi potrebbe dirmi, TKS apprezzando!
il codice come segue:
//+------------------------------------------------------------------+
//| Media mobile.mq4 |
//| Copyright ?2005, MetaQuotes Software Corp. |
//| TeamWox Groupware / MetaQuotes Software Corp. |
//+------------------------------------------------------------------+
#define MAGICMA 20110309
extern double Lots = 1;
extern double MaximumRisk = 0.02;
extern double DecreaseFactor = 10;
//+------------------------------------------------------------------+
//| Calcolare le posizioni aperte |
//+------------------------------------------------------------------+
int CalcolaOrdiniCorrenti(simbolo stringa)
{
int buys=0,sells=0;
//----
for(int i=0;i<OrdiniTotali();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==falso) break;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
{
if(OrderType()==OP_BUY) compra++;
if(OrderType()==OP_SELL) sells++;
}
}
//---- restituisce il volume degli ordini
if(buys>0) return(buys);
altrimenti return(sells);
}
//+------------------------------------------------------------------+
//| Calcola la dimensione ottimale del lotto
//+------------------------------------------------------------------+
doppio LottiOttimizzati()
{
double lot=Lots;
int orders=HistoryTotal(); // totale degli ordini storici
int losses=0; // numero di ordini in perdita senza pausa
//---- selezionare la dimensione del lotto
lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/100.0,1);
Print(MarketInfo(Symbol(), MODE_LOTSIZE));
Print(MarketInfo(Symbol(), MODE_MINLOT));
Print(MarketInfo(Symbol(), MODE_LOTSTEP));
Print(MarketInfo(Symbol(), MODE_MAXLOT));
//---- calcolare il numero di ordini di perdite senza una pausa
if(FattoreRiduzione>0)
{
for(int i=ordini-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Errore nella storia!"); break; }
if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continua;
//----
se(OrderProfit()>0) break;
se(OrderProfit()<0) perdite++;
}
if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);
//questo è un disegno tecnico intelligente, ma le perdite rappresentano la perdita di profitto, non il denaro può causare problemi.
//modificate come segue: accountfreemargin()-orderprofit()
}
//---- restituisce la dimensione del lotto
if(lot<1) lot=1;
return(lot);
}
//+------------------------------------------------------------------+
//|Controlla le condizioni di ordine aperto
//+------------------------------------------------------------------+
void CheckForOpen()
{
double m1,m2,m3,m4,ticket1,ticket2;
int res;
//---- fare trading solo per i primi tik della nuova barra
if(Volume[0]>1) return;
//---- ottenere la media mobile
m1=iMA(NULL,0,21,0,MODE_SMA,PRICE_CLOSE,0);
m2=iMA(NULL,0,55,0,MODE_SMA,PRICE_CLOSE,0);
m3=iMA(NULL,0,21,0,MODE_SMA,PRICE_CLOSE,1);
m4=iMA(NULL,0,55,0,MODE_SMA,PRICE_CLOSE,1);
//---- condizioni di vendita
se (m1<m3-0.0002)
{
ticket1=OrderSend(Symbol(),OP_SELL,1,Bid,5,Ask+105*Point,0, "My order #1",MAGICMA,0,Red);
ritorno;
}
se (m2<m4-0.0001)
{
ticket2=OrderSend(Symbol(),OP_SELL,1,Bid,5,Ask+105*Point,0, "Il mio ordine #2",MAGICMA,0,Giallo);
ritorno;
}
//---- condizioni di acquisto
se ( m1>m3+0,0002)
{
ticket1=OrderSend(Symbol(),OP_BUY,1,Ask,5,Bid-105*Point,0, "My order #1",MAGICMA,0,Blue);
ritorno;
}
se (m2>m4+0,0001)
{
ticket2=OrderSend(Symbol(),OP_BUY,1,Ask,5,Bid-105*Point,0, "Il mio ordine #2",MAGICMA,0,Verde);
ritorno;
}
//----
}
//+------------------------------------------------------------------+
//| Controlla le condizioni di chiusura dell'ordine |
//+------------------------------------------------------------------+
void CheckForClose()
{
doppio m1,m2,m3,m4;
//---- fare trading solo per i primi tik della nuova barra
if(Volume[0]>1) return;
//---- ottenere la media mobile
m1=iMA(NULL,0,21,0,MODE_SMA,PRICE_CLOSE,0);
m2=iMA(NULL,0,55,0,MODE_SMA,PRICE_CLOSE,0);
m3=iMA(NULL,0,21,0,MODE_SMA,PRICE_CLOSE,1);
m4=iMA(NULL,0,55,0,MODE_SMA,PRICE_CLOSE,1);
//----
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==falso) break;
if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continua;
//---- controllare il tipo di ordine
if(OrderType()==OP_BUY)
{
if(m1<m3+0,0002)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);
break;
}
se(m2<m4+0,0001)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
break;
}
}
if(OrderType()==OP_SELL)
{
if(m1>m3-0.0002)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Tan);
break;
}
se(m2<m4-0.0001)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Salmon);
break;
}
}
}
//----
}
//+------------------------------------------------------------------+
//| Funzione di avvio |
//+------------------------------------------------------------------+
void start()
{
//---- controlla la storia e il trading
if(Bars<55 || IsTradeAllowed()==false) return;
//---- calcola gli ordini aperti in base al simbolo corrente
if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
else CheckForClose();
//----
}
//+------------------------------------------------------------------+
Rilevare la versione di Windows
C'è qualcuno che conosce un modo semplice per scoprire quale versione di windows MT4 è in esecuzione usando solo una chiamata API di windows.
Qualcuno può dirmi come far funzionare questo:
#importare "kernel32.dll"
int GWINAPI GetVersionEA(_inout LPOSVERSIONINFO lpVersionInfo);
#importare
Funzione GetVersionEx (Windows)
Grazie
Aiuto necessario. Piccolo aggiustamento al mio CCI Divergence EA
Ho un CCI Divergence EA che usa un indicatore CCI Divergence personalizzato nella cartella Indicatori in MT4 per determinare quando piazzare un trade.
Quello che voglio fare è usare un indicatore Stocastico Divergenza personalizzato (che ho) invece.
Non so come cambiare il codice EA per indirizzarlo all'indicatore Stocastico Divergenza nella cartella degli indicatori.
Negli input dell'EA penso di dover sostituire
extern int CCI_Period = 10;
con
extern int Stoch_K = 5;
extern int Stoch_D = 3;
extern int Stoch_Slowing = 3;
Nella parte principale del codice ho trovato l'area che punta all'indicatore personalizzato CCI Divergence nella cartella Indicators:
dUp = iCustom(Symbol(), 0, "CCI_Divergence_Indicator", "", CCI_Period, 9, "", false, false, false, 0, 2);
dDn = iCustom(Symbol(), 0, "CCI_Divergence_Indicator", "", CCI_Period, 9, "", falso, falso, falso, 1, 2);
So che devo cambiare "CCI_Divergence_Indicator" in "Stochastics_Divergence_Indicator" che è il nome dell'indicatore di divergenza stocastica personalizzato nella cartella Indicators. E devo rimuovere il CCI_Period e il 9.
Ma non so come aggiungere lo Stoch_K, Stoch_D e Stoch_Slowing a questa parte del codice.
Ho provato a cambiarlo da solo, ma poi l'EA non si apre.
Qualcuno sa come codificare questa porzione di codice in modo che l'indicatore di divergenza stocastica possa sostituire l'indicatore di divergenza cci?
Ho pagato un programmatore per creare l'ea, ma è molto occupato con altri progetti di clienti. Quindi, quando si tratta di modifiche/correzioni minori, non ha il tempo di farlo per me, almeno non subito. Ecco perché sto chiedendo qui.
L'indicatore CCI Divergence ha troppi falsi segnali. L'indicatore Stocastico Divergenza è molto meglio. Questo è il motivo per cui voglio fare il cambio.
Grazie in anticipo.
Aiuto per favore
Ho una linea di codice che mi avviserà quando il prezzo di 1 barra (sia esso 1m 5m 189m) si muove 200 pips IN 1 BAR. ma non posso per la vita di me capire come impostare per avvisare SOLO direzione specifica. qui è.
if(High[0]-Low[0]>200*Point)PlaySound("Alert.wav"); //Questo funziona bene.
Ma voglio essere in grado di distinguere tra un 200 pip UP e 200 pip DOWN. Ho letto, chiesto nei forum, sono stato nelle chat room, e mi sono fatto impazzire per 3 giorni.
if(High[0]-Low[0]>200*Point && Close[0]<Open[0])PlaySound("Down.wav");[/CODE]
Actually, you should rather look at highs and lows of two last bars and compare close to close, to ensure gaps are included, too:
[CODE]if(Mathmax(High[0],High[1])-Mathmin(Low[0],Low[1])>200*Point && Close[0]>Close[1])PlaySound("Up.wav");
if(Mathmax(High[0],High[1])-Mathmin(Low[0],Low[1])>200*Point && Close[0]<Close[1])PlaySound("Down.wav");