Aide au codage - page 733

 
tfi_markets:

Bonjour Pro-Coders,

Je me demande si quelqu'un peut m'aider,

J'aimerais que mon EA ouvre une transaction d'achat et ferme une transaction de vente existante lors d'un changement de tendance.

Il le fait, mais seulement lorsqu'il a pris des bénéfices. Lorsque la tendance change alors que la position est toujours

ouverte, il fonctionne en StopLoss. (Voir l'image). Parfois cela fonctionne et parfois non.

Que pourrais-je améliorer ?

if(trendNow!=trendPrev)
         if(trendNow>0 && (NLD1>NLD2) && RSIfilter>55)
           {
            OpenBuy_  =true;
            CloseSell_=true;
           }
         else
         if(trendPrev>0 && (NLD1<NLD2) && RSIfilter<45)
           {
            OpenSell_=true;
            CloseBuy_=true;  
          }
Cette partie du code n'est pas suffisante pour conclure quoi que ce soit
 
mladen:
Cette partie du code n'est pas suffisante pour conclure quoi que ce soit

Bonjour Mladen,

Merci beaucoup d'avoir jeté un coup d'oeil à mon problème.

Veuillez trouver le code ci-dessous qui devrait fermer les ordres de vente et d'achat existants.

Il devrait également ouvrir un nouvel ordre d' achat ou de vente si la tendance va dans la bonne direction...

//+------------------------------------------------------------------+
//| Signal Exit Buy / Exit Sell)                                          
//| Iterate through open tickets
//+------------------------------------------------------------------+

   for(int i=0; i<Total; i++)
     {
      dummyResult=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())
        {
         if(OrderType()==OP_BUY && OrderMagicNumber()==MagicNumber)
           {

            for(int z=OrdersTotal()-1; z>=0; z--)
              {
               if(OrderSelect(z,SELECT_BY_POS,MODE_TRADES) && OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol())
                 {
                  if(OrderType()==OP_BUY)
                     buy_ticket=OrderTicket();
                  else
                  if(OrderType()== OP_SELL)
                     sell_ticket=OrderTicket();
                 }

// Close BUY

               if(CloseBuy_==true && buy_ticket!=0)
                 {
                  dummyResult=OrderClose(OrderTicket(),OrderLots(),Bid,Slippage*PipMultiplier,MediumSeaGreen);
                  if(EachTickMode) TickCheck = True;
                  if(!EachTickMode) BarCount = Bars;
                  Print("Error closing Buy #",(string)OrderTicket()," Error code ",(string)GetLastError());

// Open new Sell Order 

if(trendPrev>0 && (NLD1<NLD2) && RSIfilter<45) OpenSell_=true;                

 }


// Close SELL
               if(CloseSell_==true && sell_ticket!=0)
                 {
                  dummyResult=OrderClose(OrderTicket(),OrderLots(),Ask,Slippage*PipMultiplier,DarkOrange);
                  if(EachTickMode) TickCheck = True;
                  if(!EachTickMode) BarCount = Bars;
                  Print("Error closing Sell #",(string)OrderTicket()," Error code ",(string)GetLastError());


// Open new Buy Order                

if(trendNow>0 && (NLD1>NLD2) && RSIfilter>55) OpenBuy_  =true

 

}
              }
 
tfi_markets:

Bonjour Mladen,

Merci beaucoup d'avoir jeté un coup d'oeil à mon problème.

Veuillez trouver le code ci-dessous qui devrait fermer les ordres de vente et d'achat existants.

Il devrait également ouvrir un nouvel ordre d'achat ou de vente si la tendance pointe vers la bonne direction...

//+------------------------------------------------------------------+
//| Signal Exit Buy / Exit Sell)                                          
//| Iterate through open tickets
//+------------------------------------------------------------------+

   for(int i=0; i<Total; i++)
     {
      dummyResult=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())
        {
         if(OrderType()==OP_BUY && OrderMagicNumber()==MagicNumber)
           {

            for(int z=OrdersTotal()-1; z>=0; z--)
              {
               if(OrderSelect(z,SELECT_BY_POS,MODE_TRADES) && OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol())
                 {
                  if(OrderType()==OP_BUY)
                     buy_ticket=OrderTicket();
                  else
                  if(OrderType()== OP_SELL)
                     sell_ticket=OrderTicket();
                 }

// Close BUY

               if(CloseBuy_==true && buy_ticket!=0)
                 {
                  dummyResult=OrderClose(OrderTicket(),OrderLots(),Bid,Slippage*PipMultiplier,MediumSeaGreen);
                  if(EachTickMode) TickCheck = True;
                  if(!EachTickMode) BarCount = Bars;
                  Print("Error closing Buy #",(string)OrderTicket()," Error code ",(string)GetLastError());

// Open new Sell Order 

if(trendPrev>0 && (NLD1<NLD2) && RSIfilter<45) OpenSell_=true;                

 }


// Close SELL
               if(CloseSell_==true && sell_ticket!=0)
                 {
                  dummyResult=OrderClose(OrderTicket(),OrderLots(),Ask,Slippage*PipMultiplier,DarkOrange);
                  if(EachTickMode) TickCheck = True;
                  if(!EachTickMode) BarCount = Bars;
                  Print("Error closing Sell #",(string)OrderTicket()," Error code ",(string)GetLastError());


// Open new Buy Order                

if(trendNow>0 && (NLD1>NLD2) && RSIfilter>55) OpenBuy_  =true

 

}
              }
Pourquoi utilisez-vous une boucle dans la boucle ? Ce n'est pas du tout nécessaire. Débarrassez-vous-en, et lorsque le code sera simplifié, il sera plus facile de le nettoyer.
 
J'ai besoin de quelqu'un pour m'aider à faire un EA de cet indicateur.
 
mladen:
Pourquoi utilisez-vous une boucle dans la boucle ? Ce n'est pas du tout nécessaire. Débarrassez-vous-en, et lorsque le code sera simplifié, tout sera plus facile à nettoyer également.

Salut Mladen,

J'ai modifié le code en conséquence, pensez-vous que c'est mieux maintenant ?

Pourriez-vous s'il vous plaît jeter un coup d'oeil ? Ce code est toujours dans un état pseudo, pas encore testé.

Merci d'avance !

//+-------------------------------------------------------------------------+
//| Signal close Buy / close Sell / Open new BUY or SELL order when possible   

int PositionIndex;    
int TotalNumberOfOrders;  
TotalNumberOfOrders = OrdersTotal();// store number of Orders in the variable

for(PositionIndex = TotalNumberOfOrders - 1; PositionIndex >= 0 ; PositionIndex --)// for loop to loop through all Orders . .   COUNT DOWN TO ZERO !
   {
   if(!OrderSelect(PositionIndex, SELECT_BY_POS, MODE_TRADES)) continue;// if the OrderSelect fails advance the loop to the next PositionIndex
  
if(OrderMagicNumber() == MagicNumber   // does the Order's Magic Number match our EA's magic number ?
   && OrderSymbol() == Symbol()         // does the Order's Symbol match the Symbol our EA is working on ?
   && (OrderType() == OP_BUY           // is the Order a Buy Order ?
   || OrderType() == OP_SELL ))      // or is it a Sell Order ?
  
 if (! OrderClose( OrderTicket(), OrderLots(), OrderClosePrice(), Slippage*PipMultiplier,DarkOrange )) //try to close the order
  Print("Order Close failed, order number: ", OrderTicket(), " Error: ", GetLastError()); //if the Order Close failed print some helpful information
              
     if(trendNow>0 && (NLD1>NLD2) && RSIfilter>52) // Check if new entry condition is given
           {
            OpenBuy_=true;
             }
         else
     if(trendPrev>0 && (NLD1<NLD2) && RSIfilter<42)
           {
            OpenSell_=true;
              }
   } // end of For loop        
  
 
tfi_markets:

Salut Mladen,

J'ai modifié le code en conséquence, pensez-vous que c'est mieux maintenant ?

Pourriez-vous s'il vous plaît jeter un coup d'oeil ? Ce code est toujours dans un état pseudo, pas encore testé.

Merci d'avance !

//+-------------------------------------------------------------------------+
//| Signal close Buy / close Sell / Open new BUY or SELL order when possible   

int PositionIndex;    
int TotalNumberOfOrders;  
TotalNumberOfOrders = OrdersTotal();// store number of Orders in the variable

for(PositionIndex = TotalNumberOfOrders - 1; PositionIndex >= 0 ; PositionIndex --)// for loop to loop through all Orders . .   COUNT DOWN TO ZERO !
   {
   if(!OrderSelect(PositionIndex, SELECT_BY_POS, MODE_TRADES)) continue;// if the OrderSelect fails advance the loop to the next PositionIndex
  
if(OrderMagicNumber() == MagicNumber   // does the Order's Magic Number match our EA's magic number ?
   && OrderSymbol() == Symbol()         // does the Order's Symbol match the Symbol our EA is working on ?
   && (OrderType() == OP_BUY           // is the Order a Buy Order ?
   || OrderType() == OP_SELL ))      // or is it a Sell Order ?
  
 if (! OrderClose( OrderTicket(), OrderLots(), OrderClosePrice(), Slippage*PipMultiplier,DarkOrange )) //try to close the order
  Print("Order Close failed, order number: ", OrderTicket(), " Error: ", GetLastError()); //if the Order Close failed print some helpful information
              
     if(trendNow>0 && (NLD1>NLD2) && RSIfilter>52) // Check if new entry condition is given
           {
            OpenBuy_=true;
             }
         else
     if(trendPrev>0 && (NLD1<NLD2) && RSIfilter<42)
           {
            OpenSell_=true;
              }
   } // end of For loop        
  
Oui, beaucoup mieux :)
 

Mntiwana

Here is the EA for B& S with 15 warnings left. If some one could tell me how to clear Declaration of global  such as “declaration of 'trailingprofit' hides global declaration at line 62  mnt-BuyersSellers EA v1.00.mq4              915         53” I will clear it up.

I also need a few files to run it.

2016.12.17 16:01:35.347 2016.11.01 00:47  cannot open file 'C:\FXPrograms\Tallinex\MQL4\indicators\4BARS-MTF-BBH 1.06.ex4' [2]

2016.12.17 16:01:29.815 2016.11.01 00:17  cannot open file 'C:\FXPrograms\Tallinex\MQL4\indicators\BullBearHelper 1.00.ex4' [2]

2016.12.17 16:01:29.815 2016.11.01 00:17  cannot open file 'C:\FXPrograms\Tallinex\MQL4\indicators\AdaptiveLaguerreFilter.ex4' [2]

And ,"Slope Direction Line"

Let me Know

Ray

Dossiers :
 
traderduke:

traderduke

Merci pour votre intérêt, le paquet indi est joint, en fait le système entier est de FF (http://www.tradingsystemforex.com/ideas-for-expert-advisors/4662-buyers-sellers-ea.html)

gspe travaillait dessus mais je pense que le cadre entier de l'EA est de "funyoo" et je suis seulement intéressé par le code de l'EA comme échantillon/modèle de cadre pour créer un nouvel EA avec, le reste de leur stratégie n'est pas plein de fruits comme par ma supposition, nous pouvons former mieux que cela, nous avons des indicateurs 100 fois meilleurs pour le moment :)

Salutations

Dossiers :
package.zip  59 kb
 
traderduke:
Et si nous ajoutons "t" avant celui de (déclaration de ..... cacher déclaration globale) tous les avertissements seront supprimés, mais je ne suis pas sûr est correct ? ..... j'ai obtenu ce conseil à partir du fil de discussion (https://www.forex-tsd.com/forum/debates-discussions/18543-ea-not-working-under-build-610) et de la longue conversation croisée de deux pages/argu entre les deux .

"crsnapebtinternetcom" et MLADEN ..... puis j'ai testé et ça a marché mais il faut une certification :)

salutations

 
mntiwana:

traderduke

Merci pour votre intérêt, le paquet indi est joint, en fait le système entier est de FF (http://www.tradingsystemforex.com/ideas-for-expert-advisors/4662-buyers-sellers-ea.html)

gspe travaillait dessus mais je pense que le cadre entier de l'EA est de "funyoo" et je suis seulement intéressé par le code de l'EA comme échantillon/modèle de cadre pour créer un nouvel EA avec, le reste de leur stratégie n'est pas plein de fruits comme par ma supposition, nous pouvons former mieux que cela, nous avons des indicateurs 100 fois meilleurs pour le moment :)

Salutations

Les gars

Les EAs de Funyoos ont généralement montré de bons résultats en utilisant la martingale en back test. Je serais très prudent en les utilisant