Pensavo di aver risolto il problema, ma non è così.
Quello che sto cercando di fare è avere un commento sul grafico e nel diario che indichi quale condizione di entrata è stata usata per aprire la posizione corrente.
Questo è stato fatto prima e come si fa, perché ci sto provando da un po' ma senza fortuna e non è così facile come pensavo.
Di seguito il mio ultimo tentativo.
qualsiasi aiuto sarebbe grande
buysig = Long || Long2 || Long3 || Long4;
sellsig = Short || Short2 || Short3 || Short4;
closebuy=sellsig;
closesell=buysig;
se (curprof>=AccountEquity()*ProfitExit/100.0) {
exit=true;
}
if (last>0 && (Time[0]-last)/(Period()*60)>=CancelOrderBars) {
remorder=true;
}
}
void CheckForOpen() {
int res,tr;
//---- condizioni di vendita
co=CalculateCurrentOrders(Symbol());
if(sellsig && lastsig!=-1) {
if ( Short == true)Print(" Segnale short preso ");
if ( Short2 == true)Print(" Segnale Short2 preso ");
if ( Short3 == true)Print(" Segnale Short3 preso ");
if ( Short4 == true)Print(" Segnale Short4 preso ");
co=CalculateCurrentOrders(Symbol());
se (co==0) {
res = OpenStop(OP_SELLSTOP,LotsRisk(StopLoss), Low[shift]-OrderPipsDiff*Point, StopLoss, TakeProfit1);
}
lastsig=-1;
last=Time[0];
ritorno;
}
//---- condizioni di acquisto
co=CalculateCurrentOrders(Symbol());
if(buysig && lastsig!=1) {
if ( Long == true) Print(" Segnale Long preso ");
if ( Long2 == true)Print(" Segnale Long2 preso ");
if ( Long3 == true) Print(" Segnale Long3 preso ");
if ( Long4 == true)Print(" Segnale Long4 preso ");
co=CalculateCurrentOrders(Symbol());
se (co==0) {
res = OpenStop(OP_BUYSTOP,LotsRisk(StopLoss), High[shift]+OrderPipsDiff*Point, StopLoss, TakeProfit1);
}
last=Time[0];
lastsig=1;
ritorno;
}
}
bool CloseAtMarket(int ticket,double lot) {
//chiusura dell'ordine a mercato tollerante ai guasti
Questo EA non si compila nemmeno, lo stoploss dovrebbe essere l'ultima delle tue preoccupazioni. Ci sono 5 variabili che hanno spazi casuali o la prima lettera non è maiuscola!
jturns23: Questo EA non si compila nemmeno, lo stoploss dovrebbe essere l'ultima delle vostre preoccupazioni. Ci sono 5 variabili che hanno spazi casuali o la prima lettera non è maiuscola!
Qui la versione corretta.
Ma questo ancora non può aprire alcuna posizione perché non c'è una logica nel codice per decidere come aprire posizioni lunghe / corte.
Sto cercando di modificare un codice ma dopo molti sforzi non sono ancora riuscito a farlo bene... se a qualcuno di voi non dispiace, potete dare un'occhiata a questo... grazie...
L'idea è quella di fermare il prossimo commercio se l'intervallo di prezzo è nella stessa zona come il commercio precedente. Il commercio lungo controllerà la zona per l'ultima POSIZIONE APERTA commercio lungo, e il commercio breve controllerà la zona per l'ultima POSIZIONE APERTA commercio breve.
Cioè, se il primo LONG a 1,4000, allora il secondo LONG si innescherà solo se il prezzo esce dalla zona (zona di 20 pip) meno di 1,3990 && più di 1,4010
Per favore controllate il seguente codice e ditemi perché questo non sta piazzando i trade sul mio conto demo. Il suo buon EA su GJ 1m ma purtroppo non funziona. Qualcuno può correggerlo per favore e renderlo utilizzabile come un EA senza bug.
Per favore controllate il seguente codice e ditemi perché questo non piazza i trade sul mio conto demo. Il suo buon EA su GJ 1m ma purtroppo non funziona. Qualcuno può correggerlo per favore e renderlo utilizzabile come un EA senza bug.
Ma, sto ancora affrontando problemi zero conoscenza di MQL. Puoi per favore copiare il codice nel file mq4 e testarlo sulla demo e poi dirmi se funziona bene. Il tuo supporto sarà contato come gentile aiuto Michel.
Consenti l'uso dei cookie per accedere al sito MQL5.com.
Abilita le impostazioni necessarie nel browser, altrimenti non sarà possibile accedere.
Hai effettuato l'accesso. L'autenticazione a due fattori è stata disattivata. Configurala di nuovo e scansiona un nuovo codice QR, oppure continua con l'autenticazione a due fattori disattivata.
Pensavo di aver risolto il problema, ma non è così.
Quello che sto cercando di fare è avere un commento sul grafico e nel diario che indichi quale condizione di entrata è stata usata per aprire la posizione corrente.
Questo è stato fatto prima e come si fa, perché ci sto provando da un po' ma senza fortuna e non è così facile come pensavo.
Di seguito il mio ultimo tentativo.
qualsiasi aiuto sarebbe grande
buysig = Long || Long2 || Long3 || Long4;
sellsig = Short || Short2 || Short3 || Short4;
closebuy=sellsig;
closesell=buysig;
se (curprof>=AccountEquity()*ProfitExit/100.0) {
exit=true;
}
if (last>0 && (Time[0]-last)/(Period()*60)>=CancelOrderBars) {
remorder=true;
}
}
void CheckForOpen() {
int res,tr;
//---- condizioni di vendita
co=CalculateCurrentOrders(Symbol());
if(sellsig && lastsig!=-1) {
if ( Short == true)Print(" Segnale short preso ");
if ( Short2 == true)Print(" Segnale Short2 preso ");
if ( Short3 == true)Print(" Segnale Short3 preso ");
if ( Short4 == true)Print(" Segnale Short4 preso ");
co=CalculateCurrentOrders(Symbol());
se (co==0) {
res = OpenStop(OP_SELLSTOP,LotsRisk(StopLoss), Low[shift]-OrderPipsDiff*Point, StopLoss, TakeProfit1);
}
lastsig=-1;
last=Time[0];
ritorno;
}
//---- condizioni di acquisto
co=CalculateCurrentOrders(Symbol());
if(buysig && lastsig!=1) {
if ( Long == true) Print(" Segnale Long preso ");
if ( Long2 == true)Print(" Segnale Long2 preso ");
if ( Long3 == true) Print(" Segnale Long3 preso ");
if ( Long4 == true)Print(" Segnale Long4 preso ");
co=CalculateCurrentOrders(Symbol());
se (co==0) {
res = OpenStop(OP_BUYSTOP,LotsRisk(StopLoss), High[shift]+OrderPipsDiff*Point, StopLoss, TakeProfit1);
}
last=Time[0];
lastsig=1;
ritorno;
}
}
bool CloseAtMarket(int ticket,double lot) {
//chiusura dell'ordine a mercato tollerante ai guasti
bool bres=false; int tr;
tries=0;
while (!bres && tries<OrderTriesNumber) {
RefreshRates();
bres=OrderClose(ticket,lot,OrderClosePrice(),slippage,White);
tries++;
tr=0; while (tr<5 && !IsTradeAllowed()) { tr++; Sleep(2000); }
}
if (!bres) Print("Errore nella chiusura dell'ordine: ",ErrorDescription(GetLastError());
}
int OpenStop(int mode,double lot, double prc, int SL, int TP) {
int res,tr,col;
stringa mail;
double openprice,sl,tp,stlev;
tries=0;
stlev=(1+MarketInfo(Symbol(),MODE_STOPLEVEL))*Point;
while (res<=0 && tries<OrderTriesNumber) {
tr=0; while (tr<5 && !IsTradeAllowed()) { tr++; Sleep(2000); }
RefreshRates();
se (mode==OP_SELLSTOP) {
if (prc<=Bid-stlev) openprice=prc;
altrimenti openprice=Bid-stlev;
se (SL>0) sl=openprice+SL*Point;
se (TP>0) tp=openprice-TP*Point;col=Rosso;
} else
se (mode==OP_BUYSTOP) {
se (prc>=Ask+stlev) openprice=prc;
altrimenti openprice=Ask+stlev;
se (SL>0) sl=openprice-SL*Point;
se (TP>0) tp=openprice+TP*Point;col=Blu;
} else return;
Print(Ask," ",Bid," ",Symbol()," ",mode," ",lot," ",openprice," ",sl," ",tp," ");
res=OrderSend(Symbol(),mode,lot,openprice,slippage,sl,tp,EAName+"_"+ MagicNumber, MagicNumber,0,col);
try++;
}
if (res<=0) Print("Errore nell'apertura dell'ordine pendente: ",ErrorDescription(GetLastError());
return(res);
Questo EA non si compila nemmeno, lo stoploss dovrebbe essere l'ultima delle tue preoccupazioni. Ci sono 5 variabili che hanno spazi casuali o la prima lettera non è maiuscola!
Questo EA non si compila nemmeno, lo stoploss dovrebbe essere l'ultima delle vostre preoccupazioni. Ci sono 5 variabili che hanno spazi casuali o la prima lettera non è maiuscola!
Qui la versione corretta.
Ma questo ancora non può aprire alcuna posizione perché non c'è una logica nel codice per decidere come aprire posizioni lunghe / corte.
Aiuto con questo EA
Chi è questo CHinGsMAroonCLK?
Come ricordo, questo EA non è altro che 10p3 di elCactus, ma forse mi sbaglio...
Controlla il suo thread, probabilmente troverai quello che stai cercando: https://www.mql5.com/en/forum/174975Ok... quindi ora il problema è che non riesco a mettere uno stoploss per questo EA... qual è il codice? mi può aiutare? thanx
nessuna zona di trading - aiuto codice
Ciao a tutti,
Sto cercando di modificare un codice ma dopo molti sforzi non sono ancora riuscito a farlo bene... se a qualcuno di voi non dispiace, potete dare un'occhiata a questo... grazie...
L'idea è quella di fermare il prossimo commercio se l'intervallo di prezzo è nella stessa zona come il commercio precedente. Il commercio lungo controllerà la zona per l'ultima POSIZIONE APERTA commercio lungo, e il commercio breve controllerà la zona per l'ultima POSIZIONE APERTA commercio breve.
Cioè, se il primo LONG a 1,4000, allora il secondo LONG si innescherà solo se il prezzo esce dalla zona (zona di 20 pip) meno di 1,3990 && più di 1,4010
Grazie a tutti.
//+------------------------------------------------------------------------------------------------------------------------+
//| Filtro per il mercato laterale - impedisce scambi multipli in un range di prezzo simile e crea una no-trade zone
//+------------------------------------------------------------------------------------------------------------------------+
extern int Zone1 = -10; // (zona inferiore)
extern int Zone2 = 10; // (zona superiore)
// zona di non scambio tra -10 e +10 dalla negoziazione precedente
bool CheckZone(int type)
{
int cnt = OrdiniTotali();
for (int i=0; i < cnt; i++)
{
if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continua;
se (OrderSymbol() != Symbol()) continua;
se (OrderMagicNumber() != Magic) continua;
se (OrderType() != tipo) continua;
se (tipo == OP_BUY)
{
if( (Bid - OrderOpenPrice()) > Zone1*Point && (Bid - OrderOpenPrice()) < Zone2*Point ) return(false);
}
se (tipo == OP_SELL)
{
if( (OrderOpenPrice()-Ask) > Zone1*Point && (OrderOpenPrice()-Ask) < Zone2*Point ) return(false);
}
}
return (true);
}
Risolvere il problema EA
Salve a tutti i programmatori MQL,
Per favore controllate il seguente codice e ditemi perché questo non sta piazzando i trade sul mio conto demo. Il suo buon EA su GJ 1m ma purtroppo non funziona. Qualcuno può correggerlo per favore e renderlo utilizzabile come un EA senza bug.
Sono grato in anticipo!
Cordiali saluti.
//+------------------------------------------------------------------+
extern int Length1 = 3;
extern int Length2 = 10;
extern int Length3 = 16;
double Histo[];
double MaHisto[]
double up[];
double dn[];
double upMode[]
doppio dnMode[];
int alertBar;
int init()
{
return(0);
}
int deinit()
{
return(0);
}
int start()
{
int limite;
int counted_bars=IndicatorCounted();
if(counted_bars<0) counted_bars=0;
se(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
for(int i = 0 ;i <= limite ;i++)Histo = iMA(Symbol(),0,Length1,0,MODE_EMA,PRICE_CLOSE,i) - iMA(Symbol(),0,Length2,0,MODE_EMA,PRICE_CLOSE,i);
for(int j = 0 ;j <= limite ;j++)MaHisto[j] = iMAOnArray(Histo,0,Length3,0,MODE_EMA,j);
for(int m = 0 ;m <= limite ;m++)
{
if(MaHisto[m+1] 0)
{
up[m] = Open[m]-(5*Point);
if(Bars > alertBar && m == 0)
{
//Alert(Symbol()+" "+Period()+" KI LONG ",Ask);
OrderSend(Symbol(),OP_BUY,0.1,Ask,3,25,15,0,0,0,0,Red);
alertBar = Bars;
}
}
else if(MaHisto[m+1] >= 0 && MaHisto[m]< 0)
{
dn[m] = Open[m]+(5*Point);
if(Bars > alertBar && m == 0)
{
OrderSend(Symbol(),OP_SELL,0.1,Ask,3,25,15,0,0,0,0,Red);
alertBar = Bars;
}
}
else
{
up[m] = EMPTY_VALUE;
dn[m] = EMPTY_VALUE;
}
if( MaHisto[m] > 0 )
{
upMode[m] = High[m];
dnMode[m] = Low[m];
}
else if( MaHisto[m] < 0 )
{
dnMode[m] = High[m];
upMode[m] = Low[m];
}
}
return(0);
}
//+------------------------------------------------------------------+
Salve a tutti i programmatori MQL,
Per favore controllate il seguente codice e ditemi perché questo non piazza i trade sul mio conto demo. Il suo buon EA su GJ 1m ma purtroppo non funziona. Qualcuno può correggerlo per favore e renderlo utilizzabile come un EA senza bug.
Sono grato in anticipo!
Cordiali saluti.
//+------------------------------------------------------------------+
extern int Length1 = 3;
extern int Length2 = 10;
extern int Length3 = 16;
double Histo[];
double MaHisto[]
double up[];
double dn[];
double upMode[]
doppio dnMode[];
int alertBar;
int init()
{
return(0);
}
int deinit()
{
return(0);
}
int start()
{
int limite;
int counted_bars=IndicatorCounted();
if(counted_bars<0) counted_bars=0;
se(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
for(int i = 0 ;i <= limite ;i++)Histo = iMA(Symbol(),0,Length1,0,MODE_EMA,PRICE_CLOSE,i) - iMA(Symbol(),0,Length2,0,MODE_EMA,PRICE_CLOSE,i);
for(int j = 0 ;j <= limite ;j++)MaHisto[j] = iMAOnArray(Histo,0,Length3,0,MODE_EMA,j);
for(int m = 0 ;m <= limite ;m++)
{
if(MaHisto[m+1] 0)
{
up[m] = Open[m]-(5*Point);
if(Bars > alertBar && m == 0)
{
//Alert(Symbol()+" "+Period()+" KI LONG ",Ask);
OrderSend(Symbol(),OP_BUY,0.1,Ask,3,25,15,0,0,0,0,Red);
alertBar = Bars;
}
}
else if(MaHisto[m+1] >= 0 && MaHisto[m]< 0)
{
dn[m] = Open[m]+(5*Point);
if(Bars > alertBar && m == 0)
{
OrderSend(Symbol(),OP_SELL,0.1,Ask,3,25,15,0,0,0,0,Red);
alertBar = Bars;
}
}
else
{
up[m] = EMPTY_VALUE;
dn[m] = EMPTY_VALUE;
}
if( MaHisto[m] > 0 )
{
upMode[m] = High[m];
dnMode[m] = Low[m];
}
else if( MaHisto[m] < 0 )
{
dnMode[m] = High[m];
upMode[m] = Low[m];
}
}
return(0);
}
//+------------------------------------------------------------------+"OrderSend(Symbol(),OP_SELL,0.1,Ask,3,25,15,0,0,0,R ed); "
Stai vendendo al prezzo Ask, dovrebbe essere Bid.
Il campo Commento dovrebbe essere "", non 0.
25 come SL dovrebbe essere Bid+25*Point.
15 come TP dovrebbe essere Bid-15*Point.
"R ed" non è un colore.
"OrderSend(Symbol(),OP_SELL,0.1,Ask,3,25,15,0,0,0,R ed); "
Stai vendendo al prezzo Ask, dovrebbe essere Bid.
Il campo Commento dovrebbe essere "", non 0.
25 come SL dovrebbe essere Bid+25*Point.
15 come TP dovrebbe essere Bid-15*Point.
"R ed" non è un colore.Grazie mille per il vostro supporto!
Ma, sto ancora affrontando problemi
zero conoscenza di MQL. Puoi per favore copiare il codice nel file mq4 e testarlo sulla demo e poi dirmi se funziona bene. Il tuo supporto sarà contato come gentile aiuto Michel.
I migliori saluti,
Kashif.
No, mi dispiace, non ho abbastanza tempo per ora.
In poche ore prendo una barca per tornare alla mia famiglia per Natale... e niente più pc...