[ARCHIVIO]Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non posso andare da nessuna parte senza di te - 5. - pagina 356
![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
un'altra domanda come aggiungere indicatori a MT4?
grazie
un'altra domanda come aggiungere indicatori a mt4?
grazie
La documentazione e il libro di testo non aiutano?
Grazie, ora controllo.
Potete per favore dirmi perché l'EA non fa trading. Mettilo in demo (sorride) - non funziona. Sembra che abbiano rimosso la funzione all'inizio che permette il trading solo durante i test.
extern double Lots=1.0;
extern int Begin=10;
extern inttern Lunghezza=4;
extern int EOD=24;
extern inttern Pips=5;
extern int StopLoss=50;
extern int BreakEven=30;
extern inttern TakeProfit=80;
//+------------------------------------------------------------------+
//| funzione di inizio esperto |
//+------------------------------------------------------------------+
int start()
{
//----
int i,Ticket,LastOrderTime,StartTime,EODTime,Bought=0,Sold=0;
doppio EntryLong,EntryShort,SLLong,SLShort,TPLong,TPShort;
//Impostazioni
se (Symbol()=="EURUSD"){
Inizio=10;
Lunghezza=4;
EOD=24;
Pips=5;
StopLoss=50;
BreakEven=30;
TakeProfit=80;
}
else if (Symbol()=="GBPUSD"){
Inizio=10;
Lunghezza=4;
EOD=24;
Pips=5;
StopLoss=70;
BreakEven=40;
TakeProfit=120;
}
else {
Inizio=10;
Lunghezza=4;
EOD=24;
Pips=5;
StopLoss=50;
BreakEven=30;
TakeProfit=80;
}
//Conta il tempo
se(Ora()>=Inizio-1)
{
StartTime= StrToTime(Begin+":00");
if(DayOfWeek()==5) EODTime = MathMin(StrToTime("22:55"),StrToTime(EOD+":00"));
else EODTime = StartTime+(EOD-Begin)*3600-60;
}
//Set ordini
if(CurTime()>= StartTime && CurTime()<StartTime+300){
//Determinare l'intervallo
EntryLong =High[Highest(NULL,0,MODE_HIGH,Length*60/Period(),0)]+(Pips+MarketInfo(Symbol(),MODE_SPREAD))*Point;
EntryShort =Low [Lowest (NULL,0,MODE_LOW, Length*60/Period(),0)]-Pips*Point;
SLLong =MathMax(EntryLong-StopLoss*Point,EntryShort);
SLShort =MathMin(EntryShort+StopLoss*Point,EntryLong);
TPLong =EntryLong+TakeProfit*Point;
TPShort =EntryShort-TakeProfit*Point;
//Controlla gli ordini
for (i=0;i<OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && (OrderType()==OP_BUYSTOP || OrderType()==OP_BUY)) Comprato++;
if(Bought>1){ //più di 1 ordine di acquisto
if(CurTime()<=GlobalVariableGet("LastOrderTime")+10) Sleep(10000);
if(OrderSymbol()==Symbol() && OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(),Bid,3,Red);
if(OrderSymbol()==Symbol() && OrderType()==OP_BUYSTOP) OrderDelete(OrderTicket();
}
if(OrderSymbol()==Symbol() && (OrderType()==OP_SELLSTOP || OrderType()==OP_SELL)) Venduto++;
if(Venduto>1){ //più di 1 ordine di vendita
if(CurTime()<=GlobalVariableGet("LastOrderTime")+10) Sleep(10000);
if(OrderSymbol()==Symbol() && OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,3,Red);
if(OrderSymbol()==Symbol() && OrderType()==OP_SELLSTOP) OrderDelete(OrderTicket());
}
}
if(Bought==0){ //nessun ordine di acquisto
if(CurTime()<=GlobalVariableGet("LastOrderTime")+10) Sleep(10000);
Ticket=OrderSend(Symbol(),OP_BUYSTOP,Lots,EntryLong,3,SLLong,TPLong,NULL,0,0,Green);
if(Ticket<0 && GetLastError()==130)
Ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,SLLong,TPLong,NULL,0,0,Green);
GlobalVariableSet("LastOrderTime",OrderOpenTime())
}
if(Sold==0){ //nessun ordine di vendita
if(CurTime()<=GlobalVariableGet("LastOrderTime")+10) Sleep(10000);
Ticket=OrderSend(Symbol(),OP_SELLSTOP,Lots,EntryShort,3,SLShort,TPShort,NULL,0,0,Green);
if(Ticket<0 && GetLastError()==130)
Ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,SLShort,TPShort,NULL,0,0,Green);
GlobalVariableSet("LastOrderTime",OrderOpenTime())
}
}
//Gestire gli ordini aperti
for (i=0;i<OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(CurTime()<=GlobalVariableGet("LastOrderTime")+10) Sleep(10000);
//uzavšenín pozic na konci dne
se(CurTime()>=EODTime){
if(OrderSymbol()==Symbol() && OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(),Bid,3,Red);
if(OrderSymbol()==Symbol() && OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,3,Red);
if(OrderSymbol()==Symbol() && OrderType()==OP_BUYSTOP) OrderDelete(OrderTicket());
if(OrderSymbol()==Symbol() && OrderType()==OP_SELLSTOP) OrderDelete(OrderTicket());
GlobalVariableSet("LastOrderTime",CurTime());
}
//muovere a BE se il profitto>BE
else {
if(OrderSymbol()==Symbol() && OrderType()==OP_BUY){
if(High[0]-OrderOpenPrice()>=BreakEven*Point && OrderStopLoss()!=OrderOpenPrice()){
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,Green);
GlobalVariableSet("LastOrderTime",CurTime());
}
}
if(OrderSymbol()==Symbol() && OrderType()==OP_SELL){
if(OrderOpenPrice()-Low[0]>=BreakEven*Point && OrderStopLoss()!=OrderOpenPrice()){
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,Green);
GlobalVariableSet("LastOrderTime",CurTime());
}
}
}
}
//Reset delle variabili globali a EOD
se(CurTime()>=EODTime) GlobalVariablesDeleteAll();
ritorno(0);
}
//+------------------------------------------------------------------+
Buon giorno a tutti. ho installato MT4 FIFTY-ZNAK. l'indicatore iMA dà 4 segni, ma come ricevere 5 segni? Per favore aiutatemi a capire.
Ha un valore con cinque cifre. Per vedere il suo valore, usate
stringa DoubleToStr( valore doppio , cifre int )
Converte un valore numerico in una stringa di testo contenente una rappresentazione di carattere di un numero in un formato di precisione specificato.Parametri:
value - Valore in virgola mobile.
digits - Numero di cifre dopo il punto decimale (0-8).
Romano ... È un piacere vederti. Provato, non funziona, non capisco cosa c'è che non va, visivamente c'è una storia per il periodo di cui sopra, ma quando si prova non c'è? :/
Come indichi al programma che la barra ha toccato la media mobile? Non hai bisogno di un valore massimo o minimo, hai bisogno di mostrare un tocco.
Come indichi al programma che la barra ha toccato la media mobile? Non hai bisogno di un valore massimo o minimo, hai bisogno di mostrare un tocco.