[ARCHIVIO] Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 3. - pagina 578
Ciao, ho ridisegnato il Macd Sample EA standard, aggiungendo capacità multivalutarie. Il problema è che anche se apre i trade come multicurrency, li chiude solo su profitto o trailing stop - anche se la chiusura dopo aver cambiato una condizione è anche scritta nell'EA. Sto chiedendo aiuto alla nostra comunità :)
//+------------------------------------------------------------------+//| MACD Sample_1.mq4 |//| Corp. |//| http:// |//+------------------------------------------------------------------+externdouble Lots = 0.1;
externdouble TrailingStop = 50;
externdouble MACDOpenLevel=3;
externdouble MACDCloseLevel=2;
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+string lSymbol;
int init(){lSymbol=Symbol(); return(0);}
int deinit(){return(0);}
int start()
{
double MacdCurrent, MacdPrevious, SignalCurrent; //значения индикаторовdouble SignalPrevious,bid,ask,point,digits;
int cnt, ticket, total; //вычисляемые значения
total=SymbolOrdersTotal(lSymbol);
if(total<1)
{
bid = MarketInfo(lSymbol,MODE_BID);
ask = MarketInfo(lSymbol,MODE_ASK);
point = MarketInfo(lSymbol,MODE_POINT);
digits= MarketInfo(lSymbol,MODE_DIGITS);
// on a chart of less than 100 barsif(Bars<100)
{
Print("bars less than 100");
return(0);
}
// to simplify the coding and speed up access// data are put into internal variables
MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);
MacdPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1);
SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);
SignalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);
// no opened orders identifiedif(AccountFreeMargin()<(1000*Lots))
{
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
// check for long position (BUY) possibilityif(MacdCurrent<0 && MacdCurrent>SignalCurrent && MacdPrevious<=SignalPrevious &&
MathAbs(MacdCurrent)>(MACDOpenLevel*point) )
{
ticket=OrderSend(lSymbol,OP_BUY,Lots,ask,3,0,0,"macd sample new",12345,0,Green);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice()," as ", lSymbol);
}
elsePrint("Error opening BUY order :",GetLastError()," as ", lSymbol);
return(0);
}
// check for short position (SELL) possibilityif(MacdCurrent>0 && MacdCurrent<SignalCurrent && MacdPrevious>=SignalPrevious &&
MacdCurrent>(MACDOpenLevel*point) )
{
ticket=OrderSend(lSymbol,OP_SELL,Lots,bid,3,0,0,"macd sample new",12345,0,Red);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice()," as ", lSymbol);
}
elsePrint("Error opening SELL order : ",GetLastError()," as ", lSymbol);
return(0);
}
return(0);
}
// it is important to enter the market correctly, // but it is more important to exit it correctly... for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && // check for opened position OrderSymbol()==lSymbol) // check for symbol
{
if(OrderType()==OP_BUY) // long position is opened
{
// should it be closed?if(MacdCurrent>0 && MacdCurrent<SignalCurrent && MacdPrevious>=SignalPrevious &&
MacdCurrent>(MACDCloseLevel*point))
{
OrderClose(OrderTicket(),OrderLots(),bid,3,Violet); // close positionreturn(0); // exit
}
// check for trailing stopif(TrailingStop>0)
{
if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
return(0);
}
}
}
else// go to short position
{
// should it be closed?if(MacdCurrent<0 && MacdCurrent>SignalCurrent &&
MacdPrevious<=SignalPrevious && MathAbs(MacdCurrent)>(MACDCloseLevel*point))
{
OrderClose(OrderTicket(),OrderLots(),ask,3,Violet); // close positionreturn(0); // exit
}
// check for trailing stopif(TrailingStop>0)
{
if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
return(0);
}
}
}
}
}
return(0);
}
int SymbolOrdersTotal(string lSymbol)
{
int Res=0;
int total=OrdersTotal();
for (int i=0;i<total;i++)
{
if (OrderSelect(i, SELECT_BY_POS))
{
if (OrderSymbol()==lSymbol)
{
Res++;
}
}
}
return(Res);
}
// the end.
Ragazzi, potete dirmi come affrontare questo, prima tutto andava bene - i rapporti venivano salvati in opera... Ora si sta gettando nella finestra quando si cerca di salvare un rapporto di tester di strategia.
Problema risolto. L'ho capito. Il mio computer ha iniziato ad aprire file html con wordpress per qualche motivo... Ho convertito a Opera - tutto funziona come dovrebbe.
Buon pomeriggio. Si prega di consigliare un principiante.
Come correggere l'EA "tradingexpert.mq4" dal tutorial MQL4. Se volessi aprire un nuovo ordine in quella direzione, e l'EA sarebbe in attesa di un segnale dall'indicatore per aprire nella direzione opposta.
Mi è stato detto di usare la funzione aka KimIV - "GetTypeLastClosePos()". Ho provato ad applicarlo, ma le transazioni non si aprono. Si prega di consigliare come correggere l'EA. Ecco il codice con le mie modifiche evidenziate in rosso.
Ragazzi, potete dirmi come affrontare questo, prima tutto andava bene - i rapporti venivano salvati in opera... Ora si sta gettando nella finestra quando si cerca di salvare un rapporto di tester di strategia.
Problema risolto. L'ho capito. Il mio computer ha iniziato ad aprire file html con wordpress per qualche motivo... Ho convertito a Opera - tutto funziona come dovrebbe.
Forse i tuoi file html sono aperti di default con notepad? prova a guardare nel pannello di controllo sotto la scheda programma predefinito
link1: Per favore consigliatemi, ho scritto un EA, nessun errore, nello Strategy Tester lo prova, ma non fa trading su un conto demo. Qual è il problema?
forse nel codice è necessario aggiungere una condizione che il conto sia un demo
Ho ricevuto il suggerimento, ma non posso mostrarvi il codice.
Allora l'unico consiglio che posso darti è di mettere delle stampe in tutti i posti potenzialmente problematici, e darci i log del non-trading EA. A meno che, ovviamente, tu non riesca a capire le impronte da solo.
Ragazzi, potete dirmi come affrontare questo, prima tutto andava bene - i rapporti venivano salvati in opera... Ora si sta gettando nella finestra quando si cerca di salvare un rapporto di tester di strategia.
Problema risolto. L'ho capito. Il mio computer ha iniziato ad aprire file html con wordpress per qualche motivo... Ho convertito a Opera - tutto funziona come dovrebbe.
Buon pomeriggio. Si prega di consigliare un principiante.
Come correggere l'EA "tradingexpert.mq4" dal tutorial MQL4. Se volessi aprire un nuovo ordine in quella direzione, e l'EA sarebbe in attesa di un segnale dall'indicatore per aprire nella direzione opposta.
Mi è stato detto di usare la funzione aka KimIV - "GetTypeLastClosePos()". Ho provato ad applicarlo, ma le transazioni non si aprono. Si prega di consigliare come correggere l'EA. Ecco il codice con le mie modifiche evidenziate in rosso.
Ragazzi, potete dirmi come affrontare questo, prima tutto andava bene - i rapporti venivano salvati in opera... Ora si sta gettando nella finestra quando si cerca di salvare un rapporto di tester di strategia.
Problema risolto. L'ho capito. Il mio computer ha iniziato ad aprire file html con wordpress per qualche motivo... Ho convertito a Opera - tutto funziona come dovrebbe.
Forse i tuoi file html sono aperti di default con notepad? prova a guardare nel pannello di controllo sotto la scheda programma predefinito
Si prega di consigliare come scrivere la condizione "se l'ultimo tipo di ordine chiuso era OP_BUY" in MQL4.
Per favore consigliatemi, ho scritto un EA, nessun errore, nello Strategy Tester lo prova, ma non fa trading su un conto demo. Qual è il problema?
Per queste domande c'è un ramo speciale)))
aha x ))))))
Mi chiedo chi mi stia rispondendo telepaticamente ;)
Forse è necessario aggiungere qualche condizione al codice, che il conto è una demo
Ho avuto il tuo suggerimento, ma il codice, purtroppo, non può metterlo fuori (
aha x ))))))
e mi chiedo chi mi risponde telepaticamente ;)
forse nel codice è necessario aggiungere una condizione che il conto sia un demo
Ho ricevuto il suggerimento, ma non posso mostrarvi il codice.