QuestionEA "demo" works but problem with "real"

1
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

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)
     {


CodeRe: EA "demo" works but problem with "real"

2
uradello wrote: 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


Hi, could you edit your post and use the upload code function to make life easier for anyone able to help.

Highlite and click 'code', I think is how it's done.



These users thanked the author Ogee for the post (total 2):
Jimmy, ChuChu Rocket

Re: EA "demo" works but problem with "real"

4

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)
     {

      if(debug)
         Print("SECONDA ENTRATA:sceso di 20 pips compro altri 0.02");
      trade.SetExpertMagicNumber(MagicN);
      if(debug)
         Print("ASK=",ASK);
      if(debug)
         Print("BID=",BID);
      //if(debug) Print("Spread=",Spread);
      ResetLastError();
      if(!trade.Buy(SecondaEntrata,NULL,ASK,0,0,"2 entrata " + Descrizione_EA))
         PrintErrorGiooo("2 entrata " + Descrizione_EA,trade.ResultRetcode());

Re: EA "demo" works but problem with "real"

5
uradello wrote: Tue May 09, 2023 3:49 am

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)
     {

      if(debug)
         Print("SECONDA ENTRATA:sceso di 20 pips compro altri 0.02");
      trade.SetExpertMagicNumber(MagicN);
      if(debug)
         Print("ASK=",ASK);
      if(debug)
         Print("BID=",BID);
      //if(debug) Print("Spread=",Spread);
      ResetLastError();
      if(!trade.Buy(SecondaEntrata,NULL,ASK,0,0,"2 entrata " + Descrizione_EA))
         PrintErrorGiooo("2 entrata " + Descrizione_EA,trade.ResultRetcode());
we would need all the code can't do anything with that
and why so much code commented ? "like" pos "counting number of positions ?


Re: EA "demo" works but problem with "real"

7
I'm freaking out...the problem is still there and it hasn't been fixed.
now the third entry takes place at the same price as the second.
In practice: the ea enters and then if it goes down it enters other times for a total of 6 entries for a total of 140 pips of descent in this way:
enter the first time
enter the second time if it falls 20 pips
enter the second time if it falls 40 pips from the first time
enter the third time if it falls 70 pips from the first time
enter the fourth time if it falls 100 pips from the first time
enter the sixth time if it falls 140 pips from the first time
if it enters for the first time and immediately rises by 10 pips, it closes at TAKE PROFIT
if the ea goes down, it puts a breakeven at + 10 pips from the average load price

thanks in advance


Who is online

Users browsing this forum: No registered users and 5 guests