EA "demo" works but problem with "real"
Posted: Mon May 08, 2023 6:39 pm
A friend of mine coded for me because I don't understand anything about code...
I know it's hard to look at a few strings of code but I hope it helps..
The ea enters under certain conditions and after it enters the first time, if the stock goes down, it enters again after a certain number of pips for a total of 6 entries.
On the demo account everything is ok and also on other real accounts it works but he doesn't enter the second time on the real account on ECN broker
thank's in advance
I know it's hard to look at a few strings of code but I hope it helps..
The ea enters under certain conditions and after it enters the first time, if the stock goes down, it enters again after a certain number of pips for a total of 6 entries.
On the demo account everything is ok and also on other real accounts it works but he doesn't enter the second time on the real account on ECN broker
thank's in advance
Code: Select all
if(!trade.Buy(PrimaEntrata_2,NULL,ASK,0,TP,"1 entrata " + Descrizione_EA))
PrintErrorGiooo("1 entrata " + Descrizione_EA,trade.ResultRetcode());
else
{
//Pos++; // Incremento Pos per non aprire altre posizioni
//GetAllTradingValues();
//spsostato dentro trade transaction
Ticket= trade.ResultOrder(); // Memorizzo numero del Ticket
open = trade.ResultPrice(); // Memorizzo Prezzo di apertura
Posizione_StopProfit=0;
//GetAllTradingValues(); //inutile fa perdere solo tempo
if(debug && Conto_Hedging == true)
Print(">>>>> open iniziale,",PrezzoMedioCarico," Ticket=",Ticket,//" Pos=",NumberOfPosition,
"NumberOfDeals=",NumberOfDeals," Lotti=",LottiinPancia);
if(debug && Conto_Hedging == false)
Print(">>>>> open iniziale,",PrezzoMedioCarico," Ticket=",Ticket,//" Pos=",NumberOfPosition,
" Lotti=",LottiinPancia);
//Print("PRIMA ENTRATA: Ingresso BUY OK: "+IntegerToString(trade.ResultOrder())+" | "+"PriceOpen: "+DoubleToString(trade.ResultPrice(),_Digits));
myAlert("Entrata a Mercato " + Nome_Div + "--- Lotti=" + DoubleToString(LottiinPancia));
if(debugOpenPrice)
GetPositionOpenPrice();
}
}
}
//+------------------------------------------------------------------+
//| Funzione Per Gestione Posizione |
//+------------------------------------------------------------------+
void GestionePosizione()
{
ASK= NormalizeDouble(SymbolInfoDouble(NULL,SYMBOL_ASK),_Digits);
BID= NormalizeDouble(SymbolInfoDouble(NULL,SYMBOL_BID),_Digits);
Spread=NormalizeDouble(ASK-BID,_Digits);
int Take_Profit_Protyettivo=50;
//GetAllTradingValues();
//spostato dentro trade transaction
//if (debug) Print("Sono in Gestione Posizione");
if((BID >= NormalizeDouble((PrezzoMedioCarico + (BreakEven_2*_Point)),_Digits)) && NormalizeDouble(LottiinPancia,_Digits) >NormalizeDouble(L1,_Digits))
{
//Print("--- CHIUSURA TOTALE ORDINI PER RAGGIUNGIMENTO BREAKEVEN ---");
if(debug)
Print(//"NumberOfPosition=",NumberOfPosition,
" BID=",BID, " BE=", NormalizeDouble(PrezzoMedioCarico + (BreakEven_2*_Point),_Digits));
//Print("chiamo Chiudi ordini");
//ChiusuraPosizioni();
//spostato dentro trade transaction
//if(debug) GetAllTradingValues();
}
if((TP1_DoppiaDivergenza==0 && NormalizeDouble(LottiinPancia,_Digits)==NormalizeDouble(L1,_Digits) ) || (TP1 ==0 && NormalizeDouble(LottiinPancia,_Digits)==NormalizeDouble(L1,_Digits))){
//spostato dentro trade transaction
//GetAllTradingValues();
//Se sale di 20 pipis
if(BID >= NormalizeDouble((PrezzoMedioCarico + (SogliaStopProfit*_Point)),_Digits) && Posizione_StopProfit==0){
if(debug && Conto_Hedging == true ) Print("open=",open," PrezzoMedioCarico=",PrezzoMedioCarico,//" Pos=",NumberOfPosition,
" NumberOfDeals=",NumberOfDeals," Lotti=",LottiinPancia);
if(debug && Conto_Hedging == false ) Print("open=",open," PrezzoMedioCarico=",PrezzoMedioCarico,//" Pos=",NumberOfPosition,
" Lotti=",LottiinPancia);
trade.SetExpertMagicNumber(MagicN);
if(!trade.PositionModify(Ticket,(open + (SogliaStopProfit/2)*_Point),0)) PrintErrorGiooo("Modifica StopProfit x raggiungimento " + IntegerToString(SogliaStopProfit/2) + " punti",trade.ResultRetcode());
else{
myAlert( "impostato StopProfit a " + IntegerToString(SogliaStopProfit/2));
//Posizione_StopProfit=1;
Posizione_StopProfit++;
}
}
//Se sale di 30 pipis
/*
SogliaStopProfit_2= SogliaStopProfit/2;
SogliaStopProfit_2= SogliaStopProfit+ SogliaStopProfit_2;
if(BID >= NormalizeDouble((open + (SogliaStopProfit_2*_Point)),_Digits) && Posizione_StopProfit==1){
if(debug && Conto_Hedging == true ) Print("open=",open," PrezzoMedioCarico=",PrezzoMedioCarico,//" Pos=",NumberOfPosition,
" NumberOfDeals=",NumberOfDeals," Lotti=",LottiinPancia);
if(debug && Conto_Hedging == false ) Print("open=",open," PrezzoMedioCarico=",PrezzoMedioCarico,//" Pos=",NumberOfPosition,
" Lotti=",LottiinPancia);
//ChiusuraPosizioni(Ticket,(LottiinPancia/2));
trade.SetExpertMagicNumber(MagicN);
if(!trade.PositionModify(Ticket,(open + (SogliaStopProfit_2/2)*_Point),0)) PrintErrorGiooo("Modifica StopProfit x raggiungimento " + IntegerToString(SogliaStopProfit_2/2) + " punti",trade.ResultRetcode());
else{
myAlert( "impostato StopProfit a " + IntegerToString(SogliaStopProfit_2/2));}
//Posizione_StopProfit=2;
Posizione_StopProfit++;
}
*/
//Se sale di 40 pipis
if(BID >= NormalizeDouble((open + ((SogliaStopProfit*2)*_Point)),_Digits) && Posizione_StopProfit==2){
if(debug && Conto_Hedging == true ) Print("open=",open," PrezzoMedioCarico=",PrezzoMedioCarico,//" Pos=",NumberOfPosition,
" NumberOfDeals=",NumberOfDeals," Lotti=",LottiinPancia);
if(debug && Conto_Hedging == false ) Print("open=",open," PrezzoMedioCarico=",PrezzoMedioCarico,//" Pos=",NumberOfPosition,
" Lotti=",LottiinPancia);
//ChiusuraPosizioni(Ticket,(LottiinPancia/2));
trade.SetExpertMagicNumber(MagicN);
if(!trade.PositionModify(Ticket,(open + SogliaStopProfit*_Point),0)) PrintErrorGiooo("Modifica StopProfit x raggiungimento " + IntegerToString(SogliaStopProfit) + " punti",trade.ResultRetcode());
else{
myAlert( "impostato StopProfit a " + IntegerToString(SogliaStopProfit));}
//Posizione_StopProfit=3;
Posizione_StopProfit++;
}
if(BID >= NormalizeDouble((open + ((SogliaStopProfit*3)*_Point)),_Digits) && Posizione_StopProfit==3){
if(debug && Conto_Hedging == true ) Print("open=",open," PrezzoMedioCarico=",PrezzoMedioCarico,//" Pos=",NumberOfPosition,
" NumberOfDeals=",NumberOfDeals," Lotti=",LottiinPancia);
if(debug && Conto_Hedging == false ) Print("open=",open," PrezzoMedioCarico=",PrezzoMedioCarico,//" Pos=",NumberOfPosition,
" Lotti=",LottiinPancia);
//ChiusuraPosizioni(Ticket,(LottiinPancia/2));
trade.SetExpertMagicNumber(MagicN);
if(!trade.PositionModify(Ticket,(open + (SogliaStopProfit*2)*_Point),0)) PrintErrorGiooo("Modifica StopProfit x raggiungimento " + IntegerToString(SogliaStopProfit*2) + " punti",trade.ResultRetcode());
else{
myAlert( "impostato StopProfit a 40 PIPS");}
//Posizione_StopProfit=4;
Posizione_StopProfit++;
}
if(BID >= NormalizeDouble((open + ((SogliaStopProfit*4)*_Point)),_Digits) && Posizione_StopProfit==4){
if(debug && Conto_Hedging == true ) Print("open=",open," PrezzoMedioCarico=",PrezzoMedioCarico,//" Pos=",NumberOfPosition,
" NumberOfDeals=",NumberOfDeals," Lotti=",LottiinPancia);
if(debug && Conto_Hedging == false ) Print("open75=",open," PrezzoMedioCarico=",PrezzoMedioCarico,//" Pos=",NumberOfPosition,
" Lotti=",LottiinPancia);
//ChiusuraPosizioni(Ticket,(LottiinPancia/2));
trade.SetExpertMagicNumber(MagicN);
if(!trade.PositionModify(Ticket,(open + (SogliaStopProfit*3)*_Point),0)) PrintErrorGiooo("Modifica StopProfit x raggiungimento " + IntegerToString(SogliaStopProfit*3) + " punti",trade.ResultRetcode());
else{
myAlert( "impostato StopProfit a " + IntegerToString(SogliaStopProfit*3));}
//Posizione_StopProfit=5;
Posizione_StopProfit++;
}
if(BID >= NormalizeDouble((open + ((SogliaStopProfit*5)*_Point)),_Digits) && Posizione_StopProfit==5){
//spostato dentro trade transaction
//GetAllTradingValues();
if(debug && Conto_Hedging == true ) Print("open=",open," PrezzoMedioCarico=",PrezzoMedioCarico,//" Pos=",NumberOfPosition,
" NumberOfDeals=",NumberOfDeals," Lotti=",LottiinPancia);
if(debug && Conto_Hedging == false ) Print("open=",open," PrezzoMedioCarico=",PrezzoMedioCarico,//" Pos=",NumberOfPosition,
" Lotti=",LottiinPancia);
//ChiusuraPosizioni(Ticket,(LottiinPancia));
trade.SetExpertMagicNumber(MagicN);
if(!trade.PositionModify(Ticket,(open + (SogliaStopProfit*4)*_Point),0)) PrintErrorGiooo("Modifica StopProfit x raggiungimento " + IntegerToString(SogliaStopProfit*4) + " punti",trade.ResultRetcode());
else{
myAlert( "impostato StopProfit a " + IntegerToString(SogliaStopProfit*4));}
Posizione_StopProfit++;
}
if(BID >= NormalizeDouble((open + ((SogliaStopProfit*6)*_Point)),_Digits) && Posizione_StopProfit==6){
//spostato dentro trade transaction
//GetAllTradingValues();
if(debug && Conto_Hedging == true ) Print("open=",open," PrezzoMedioCarico=",PrezzoMedioCarico,//" Pos=",NumberOfPosition,
" NumberOfDeals=",NumberOfDeals," Lotti=",LottiinPancia);
if(debug && Conto_Hedging == false ) Print("open=",open," PrezzoMedioCarico=",PrezzoMedioCarico,//" Pos=",NumberOfPosition,
" Lotti=",LottiinPancia);
//ChiusuraPosizioni(Ticket,(LottiinPancia));
trade.SetExpertMagicNumber(MagicN);
if(!trade.PositionModify(Ticket,(open + (SogliaStopProfit*5)*_Point),0)) PrintErrorGiooo("Modifica StopProfit x raggiungimento " + IntegerToString(SogliaStopProfit*5) + " punti",trade.ResultRetcode());
else{
myAlert( "impostato StopProfit a " + IntegerToString(SogliaStopProfit*5));}
Posizione_StopProfit++;
}
if(BID >= NormalizeDouble((open + ((SogliaStopProfit*7)*_Point)),_Digits) && Posizione_StopProfit==7){
//spostato dentro trade transaction
//GetAllTradingValues();
if(debug && Conto_Hedging == true ) Print("open=",open," PrezzoMedioCarico=",PrezzoMedioCarico,//" Pos=",NumberOfPosition,
" NumberOfDeals=",NumberOfDeals," Lotti=",LottiinPancia);
if(debug && Conto_Hedging == false ) Print("open=",open," PrezzoMedioCarico=",PrezzoMedioCarico,//" Pos=",NumberOfPosition,
" Lotti=",LottiinPancia);
//ChiusuraPosizioni(Ticket,(LottiinPancia));
trade.SetExpertMagicNumber(MagicN);
if(!trade.PositionModify(Ticket,(open + (SogliaStopProfit*6)*_Point),0)) PrintErrorGiooo("Modifica StopProfit x raggiungimento " + IntegerToString(SogliaStopProfit*6) + " punti",trade.ResultRetcode());
else{
myAlert( "impostato StopProfit a " + IntegerToString(SogliaStopProfit*6));}
Posizione_StopProfit++;
}
}
//spostato dentro trade transaction
//GetAllTradingValues();
//if(debug && (LottiinPancia == L1) ) Print("GGGG: (ASK < (open - (SogliaPrimaEntrata*_Point))) && NumeroMaxEntrate>=2)=","("+(string)ASK," < (",open," - (",SogliaPrimaEntrata*_Point,"))) && ",NumeroMaxEntrate,">=2)=");
//if(debug && (LottiinPancia == L1) ) Print("risultato di: (ASK < (open - (SogliaPrimaEntrata*_Point))) && NumeroMaxEntrate>=2)=",((ASK < (open - (SogliaPrimaEntrata*_Point))) && NumeroMaxEntrate>=2));
if((NormalizeDouble(LottiinPancia,_Digits) == NormalizeDouble(L1,_Digits)) && (ASK < (open - (SogliaPrimaEntrata*_Point))) && NumeroMaxEntrate>=2)
{