Ayuda a la codificación - página 733

 
tfi_markets:

Hola Pro-Coders,

Me pregunto si alguien podría ayudar,

Me gustaría que mi EA abriera una operación de compra y cerrara una operación de venta existente en el cambio de tendencia.

Lo hace, pero sólo cuando toma beneficios. Cuando la tendencia cambia mientras la posición está todavía

abierta, se ejecuta en StopLoss. (Ver imagen). A veces funciona y a veces no.

¿Qué podría mejorar?

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;  
          }
Esa parte del código no es suficiente para concluir nada
 
mladen:
Esa parte del código no es suficiente para concluir nada

Hola Mladen,

muchas gracias por echar un vistazo a mi problema.

Por favor, encuentre el código de abajo que cerrará las órdenes de venta y compra existentes.

También debería abrir una nueva orden de compra o venta si la tendencia apunta hacia la dirección correcta...

//+------------------------------------------------------------------+
//| 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:

Hola Mladen,

muchas gracias por echar un vistazo a mi problema.

Por favor, encuentre el código de abajo que cerrará las órdenes de venta y compra existentes.

También debería abrir una nueva orden de compra o venta si la tendencia apunta hacia la dirección correcta...

//+------------------------------------------------------------------+
//| 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

 

}
              }
¿Por qué utiliza un bucle dentro del bucle? No es necesario en absoluto. Deshágase de él, y cuando el código se simplifica, todo será más fácil de limpiar también
 
por favor necesito que alguien me ayude a hacer un EA DE ESTE INDICADOR
Archivos adjuntos:
 
mladen:
¿Por qué usas un bucle dentro del bucle? No es necesario en absoluto. Deshazte de él, y cuando el código se simplifique, todo será más fácil de limpiar también

Hola Mladen,

He modificado el código en consecuencia, ¿crees que está mejor ahora?

¿Podrías echarle un vistazo? Este código está todavía en un pseudo estado, no se ha probado todavía.

Gracias de antemano.

//+-------------------------------------------------------------------------+
//| 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:

Hola Mladen,

He modificado el código en consecuencia, ¿crees que está mejor ahora?

¿Podrías echarle un vistazo? Este código está todavía en un pseudo estado, no se ha probado todavía.

Gracias de antemano.

//+-------------------------------------------------------------------------+
//| 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        
  
Sí. Mucho mejor :)
 

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

Archivos adjuntos:
 
traderduke:

traderduke

Gracias por su interés, indi paquete se adjunta, en realidad todo el sistema es de FF (http://www.tradingsystemforex.com/ideas-for-expert-advisors/4662-buyers-sellers-ea.html)

gspe estaba trabajando en él, pero creo que todo el marco de EA es de "funyoo" y sólo estoy interesado en el código de EA como muestra / marco de modelo para crear algunos nuevos EA con, el resto de su estrategia no es la fruta completa como por mi conjetura, podemos formar mejor que de eso, tenemos 100 veces mejores indicadores por ahora :)

saludos

Archivos adjuntos:
package.zip  59 kb
 
traderduke:
Y si añadimos "t" antes de la (declaración de ..... ocultar la declaración global) todas las advertencias se eliminará, pero no estoy seguro de que es correcto? ..... tengo este consejo de la rosca (https://www.forex-tsd.com/forum/debates-discussions/18543-ea-not-working-under-build-610) y largo de dos páginas de conversación cruzada / argu en el medio

"crsnapebtinternetcom" y MLADEN ..... entonces yo pruebo y funcionó pero necesita alguna certificación :)

saludos

 
mntiwana:

traderduke

Gracias por su interés, indi paquete se adjunta, en realidad todo el sistema es de FF (http://www.tradingsystemforex.com/ideas-for-expert-advisors/4662-buyers-sellers-ea.html)

gspe estaba trabajando en él, pero creo que el marco de toda la EA es de "funyoo" y sólo estoy interesado en el código de EA como muestra / marco de modelo para crear algunos nuevos EA con, el resto de su estrategia no es la fruta completa como por mi conjetura, podemos formar mejor que de eso, tenemos 100 veces mejores indicadores por ahora :)

saludos

Chicos

Funyoos EAs generalmente mostraron buenos resultados cuando se utiliza la martingala en la prueba de espalda. Yo tendría mucho cuidado al usarlos