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
Non sembra mai che qualcuno mi aiuti, ragazzi per favore rispondete
Con una moderata quantità di congetture, suggerirei che il problema è con l'indicatore, o la tua estensione ad esso, e non il tuo uso di iCustom. Forse sarebbe meglio assegnare i buffer 2 e 3 insieme agli avvisi? (Anche se non sono riuscito a capire come/quando i loro valori di indice zero ([0]) verrebbero comunque assegnati).
Informazioni sui dati dei prezzi
Le mie uscite ed entrate sono basate su segnali che generano una condizione sull'apertura della barra successiva (entrata ed uscita), dovrei usare i prezzi aperti per gli indicatori e le medie mobili? Ho sempre usato i dati di fine giornata per gli scambi azionari, quindi naturalmente è quello verso cui ho gravitato. Qual è il consenso là fuori?
Stavo pensando
come si imposta un trailing stop al livello di stop minimo della coppia, in modo che se il livello di stop è a 4 pip o 25 pip, lo sl entrerà in funzione a seconda della coppia.
Dovrei dire che come si usa la specifica del contratto per ogni coppia.
Grazie
Beno
Indicatore Sidus_Bago
Ciao aumento,
Mi chiedo se puoi aiutarmi a codificare Sidus_Bago per essere un indicatore MTF. Penso che questo indicatore molto buono troppo.
Sidus_Bago è qui:
Sidus conferma del sistema' indicatore?
Grazie mille.
Qualcuno può aiutarmi con questo EA?
Ciao a tutti,
Ho provato il mio primo EA ma non si compila; ottengo un errore "'\fine del programma' - parentesi sinistra sbilanciata" e l'ho esaminato più volte ma non riesco a trovare il problema. Non preoccupatevi della logica della strategia di trading (a meno che non siate appassionati), ci lavorerò una volta che avrà compilato ed eseguito...
A quanto pare non ho il permesso di allegare file, quindi scusate anche il taglia e incolla.
Grazie,
Rob,
Perth, Aus
//---------------
//+------------------------------------------------------------------+
//| Rob_Ea.mq4
//| Rob Cousins |
//| |
//+------------------------------------------------------------------+
#proprietà copyright "Rob Cousins"
#proprietà link ""
#define MAGICMA 20090216
//---- parametri di ingresso
extern double Lots;
extern int Short_MA=5;
extern int Long_MA=15;
extern double Stoch_Upper=70.0;
extern double Stoch_Lower=30.0;
extern double RSI_Upper=80.0;
extern double RSI_Lower=20.0;
//+------------------------------------------------------------------+
//| funzione di inizializzazione esperto |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| funzione di deinizializzazione esperto |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
stringa Current_Indication()
{
// Variabili della media mobile
doppio MA_Short
doppio MA_Long
stringa Current_MA_Indicator;
stringa Previous_MA_Indicator
stringa MA_Indicator;
// Variabili stocastiche
stringa Current_Stoch_Indicator
stringa Previous_Stoch_Indicator
stringa Stoch_Indicator;
// Variabili RSI
stringa Current_RSI_Indicator
stringa Previous_RSI_Indicator;
stringa RSI_Indicator;
// --------------------------------------
// prima otteniamo le MA e verifichiamo la presenza di una MA Cross
// --------------------------------------
MA_Short=iMA(NULL,0,Short_MA,0,1,PRICE_MEDIAN,0);
MA_Long=iMA(NULL,0,Long_MA,0,0,0,PRICE_MEDIAN,0);
se (MA_Short>MA_Long) Current_MA_Indicator="BUY";
se (MA_Short<MA_Long) Current_MA_Indicator="SELL";
// imposta il valore precedente e corrente usando la MA spostata (l'ultimo '1' nelle opzioni)
se (iMA(NULL,0,Short_MA,0,1,PRICE_MEDIAN,1)>iMA(NULL,0,Long_MA,0,0,PRICE_MEDIAN,1)) Previous_MA_Indicator="BUY";
se (iMA(NULL,0,Short_MA,0,1,PRICE_MEDIAN,1)<iMA(NULL,0,Long_MA,0,0,PRICE_MEDIAN,1)) Previous_MA_Indicator="SELL";
if ((Current_MA_Indicator=="BUY") && (Previous_MA_Indicator=="BUY")) MA_Indicator="ACQUISTA";
if ((Current_MA_Indicator=="SELL") && (Previous_MA_Indicator=="SELL")) MA_Indicator="SELL";
// ----------------------------
// Controllo indicatore stocastico
// ----------------------------
if(iStochastic(NULL,0,6,3,3,MODE_SMA,0,MODE_MAIN,0)>Stoch_Upper) Current_Stoch_Indicator="BUY";
if(iStochastic(NULL,0,6,3,3,MODE_SMA,0,MODE_MAIN,0)<Stoch_Lower) Current_Stoch_Indicator="SELL";
se(iStochastic(NULL,0,6,3,3,MODE_SMA,0,MODE_MAIN,1)>Stoch_Upper) Previous_Stoch_Indicator="BUY";
if(iStochastic(NULL,0,6,3,3,MODE_SMA,0,MODE_MAIN,1)<Stoch_Lower) Previous_Stoch_Indicator="SELL";
if ((Current_Stoch_Indicator=="BUY") && (Previous_Stoch_Indicator=="BUY")) Stoch_Indicator="BUY";
if ((Current_Stoch_Indicator=="SELL") && (Previous_Stoch_Indicator=="SELL")) Stoch_Indicator="SELL";
// ----------------------------
// Controllo indicatore RSI
// ----------------------------
if(iRSI(NULL,0,3,PRICE_CLOSE,0)>RSI_Upper) Current_RSI_Indicator="BUY";
se(iRSI(NULL,0,3,PRICE_CLOSE,0)<RSI_Lower) Current_RSI_Indicator="SELL";
se(iRSI(NULL,0,3,PRICE_CLOSE,1)>RSI_Upper) Previous_RSI_Indicator="BUY";
se(iRSI(NULL,0,3,PRICE_CLOSE,1)<RSI_Lower) Previous_RSI_Indicator="SELL";
if ((Current_RSI_Indicator=="BUY") && (Previous_RSI_Indicator=="BUY")) RSI_Indicator="COMPRA";
if ((Current_RSI_Indicator=="SELL") && (Previous_RSI_Indicator=="SELL")) RSI_Indicator="SELL";
//----------------------------------------
// Capire se si è in una situazione di acquisto o di vendita
//----------------------------------------
if((MA_Indicator=="BUY") && (Stoch_Indicator=="BUY") && (RSI_Indicator=="BUY") return("BUY");
if((MA_Indicator=="SELL") && (Stoch_Indicator=="SELL") && (RSI_Indicator=="SELL") return("SELL");
}
//+------------------------------------------------------------------+
//| Calcola le posizioni aperte
//+------------------------------------------------------------------+
stringa Current_Trade(string symbol)
{
//----
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)
{
ritorna ("NESSUNO");
break;
}
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
{
if(OrderType()==OP_BUY) return("BUY");
if(OrderType()==OP_SELL) return("SELL");
}
}
}
//----------------------------------------------------------------------
// Se il segnale ha cambiato direzione, la prima cosa da fare è chiudere
// il trade correntemente aperto prima di aprirne un altro.
//-----------------------------------------------------------------------
void CloseTrade(string symbol)
{
// doppio ma;
//---- andare a fare trading solo per i primi tik della nuova barra
// if(Volume[0]>1) return;
//----
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; // non ci sono operazioni aperte
if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continua;
//---- controllare il tipo di ordine
// lasciando entrambe le opzioni per il momento, nel caso in cui volessi fare diversamente
// ad esempio avere un colore diverso o altro. Altrimenti i due comandi sono gli stessi
// e ne servirebbe solo uno. Tranne i prezzi diversi, suppongo... Doh!
if(OrderType()==OP_BUY)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
break;
}
se(OrderType()==OP_SELL)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
break;
}
}
//----
}
//-----------------------------------------------------------
// Aprire una posizione se questo è quello che dicono le foglie di tè
//------------------------------------------------------------
void OpenTrade(string symbol,string Type)
{
int res;
//---- condizioni di acquisto
if(Type=="BUY") OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0, "ROB EA TEST",MAGICMA,0,Blue);
//---- condizioni di vendita
if(Type=="SELL") OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0, "ROB EA TEST",MAGICMA,0,Red);
}
//+------------------------------------------------------------------+
//| funzione di avvio esperto |
//+------------------------------------------------------------------+
void start()
{
//----
//---- calcola gli ordini aperti in base al simbolo corrente
//--- Se non ci sono compravendite aperte, basta aprirne una...
if(Current_Trade(Symbol())=="NONE") OpenTrade(Symbol(),Current_Indication());
// Ma se c'è una negoziazione aperta dobbiamo prima chiuderla prima di aprire la nuova.
if ((Current_Trade(Symbol())=="BUY") && (Current_Indication()=="SELL"));
{
CloseTrade(Symbol());
OpenTrade(Symbol(),Current_Indication());
}
se ((Current_Trade(Symbol())=="SELL") && (Current_Indication()=="BUY"));
{
CloseTrade(Symbol());
OpenTrade(Symbol(),Current_Indication());
}
ritorno;
}
ecco a voi.........................................
OK, è stato veloce! Grazie mille. Qual era il problema?
Rob.
Problema con la scrittura del file
Sto programmando un ea che usa dei file per mantenere i risultati del trade (perdita, vittoria) con i valori degli indicatori. Così quando l'EA entra nel trade scrivo i valori degli indicatori e il tempo, quando il trade è stato fatto, nel file "sellOpenInd.tab":
Dopo questa operazione il file include:
CCISDivPresent 22 69 0.000024 0.000046 0.000045 -0.000015 2002.05.07 13:00
CCISDivPresent 66 85 0.000064 0.000032 0.000037 -0.000033 2002.05.15 07:00
CCISDivPresent 77 90 0.000041 -0.000029 0.000008 -0.000020 2002.06.03 08:00
etc...
In next stage i open this file and look into history for dates of opened orders then i check results of this trades and write into file "sellResults.tab"+indicators values writen in previous stage(above) .And here problem occures, only one same trade is recorded:
Rule7 Rule6 Rule5 Rule4 Rule3 Rule2 Rule1 TradeOutcome
-0.000015 0.000045 0.000046 0.000024 69 22 CCISDivPresent win
-0.000015 0.000045 0.000046 0.000024 69 22 CCISDivPresent win
-0.000015 0.000045 0.000046 0.000024 69 22 CCISDivPresent win
etc..
Here is my code(i know is not looking nice ):
int dates=FileOpen("sellOpenInd.tab", FILE_CSV|FILE_READ,"\t");
if(dates>0){
for(k=0;k<=10;k++){ //i use for loop instead of while(!FileIsEnding(dates) ) because ea enters in infinite loop for unknown reasons
dates=FileOpen("sellOpenInd.tab", FILE_CSV|FILE_READ,"\t");
FileSeek(dates,filepos,SEEK_SET);
while (FileIsLineEnding(dates)==FALSE){filestr=FileReadString(dates)+"\t"+filestr;filepos=filepos+FileTell(dates);}
decodeFile(filestr);//calling function which decodes readed string line, then writing results to global varaiables filter7 ,filter6 etc.
Comment(filterS7);
for (i =OrdersHistoryTotal()-1; i>=0; i--) {
OrderSelect(i, SELECT_BY_POS, MODE_HISTORY);
if (OrderSymbol() == Currencies) {
if((OrderMagicNumber()==16381||OrderMagicNumber()==16383)&&OrderCloseTime()!=0){
historyDateTime=TimeToStr(OrderOpenTime());
OrderP=OrderProfit();
if(OrderP>0)orderresult="win";if(OrderP<=0)orderresult="loss";
if(filterS7==historyDateTime) {
testFline=filterS6+"\t"+filterS5+"\t"+filterS4+"\t"+filterS3+"\t"+filterS2+"\t"+filterS1+"\t"+filterS0+"\t"+orderresult;
results=FileOpen("sellResults.tab", FILE_READ|FILE_WRITE,"\t");
FileSeek(results,0,SEEK_END);
FileWrite(results,testFline);
testFline="";
filestr="";
}
}
}
}
if(!FileIsEnding(dates)){FileClose(dates);FileClose(results);filepos=0;break;
}
}
}
Ad ogni passo del tuo ciclo apri il file "sellOpenInd.tab" ancora e ancora.
Prova questo:
if(dates>0){
for(k=0;k<=10;k++){ //i use for loop instead of while(!FileIsEnding(dates) ) because ea enters in infinite loop for unknown reasons
FileSeek(dates,filepos,SEEK_SET);
while (FileIsLineEnding(dates)==FALSE){filestr=FileReadString(dates)+"\t"+filestr;filepos=filepos+FileTell(dates);}
decodeFile(filestr);//calling function which decodes readed string line, then writing results to global varaiables filter7 ,filter6 etc.
Comment(filterS7);
for (i =OrdersHistoryTotal()-1; i>=0; i--) {
OrderSelect(i, SELECT_BY_POS, MODE_HISTORY);
if (OrderSymbol() == Currencies) {
if((OrderMagicNumber()==16381||OrderMagicNumber()==16383)&&OrderCloseTime()!=0){
historyDateTime=TimeToStr(OrderOpenTime());
OrderP=OrderProfit();
if(OrderP>0)orderresult="win";if(OrderP<=0)orderresult="loss";
if(filterS7==historyDateTime) {
testFline=filterS6+"\t"+filterS5+"\t"+filterS4+"\t"+filterS3+"\t"+filterS2+"\t"+filterS1+"\t"+filterS0+"\t"+orderresult;
results=FileOpen("sellResults.tab", FILE_READ|FILE_WRITE,"\t");
FileSeek(results,0,SEEK_END);
FileWrite(results,testFline);
testFline="";
filestr="";
}
}
}
}
if(!FileIsEnding(dates)){FileClose(dates);FileClose(results);filepos=0;break;
}
}
}Ciao Roger09 ho provato questo prima e non aiuta, sembra che il puntatore non si sposti nella riga successiva ma non so perché.
Comunque grazie per la risposta.