Aiuto per la codifica - pagina 667

 
Ho bisogno di qualcuno che mi aiuti a trasformare questo crossover di ema in un EA. aprire l'acquisto quando la freccia blu appare e vendere quando la freccia rossa appare uscire dal commercio quando la candela accanto alla freccia chiudere. pls lasciare che il SL E TP essere ajustable e le MAs. voglio solo usarlo per il commercio della candela
 
dotmund:
Ho bisogno di qualcuno che mi aiuti a trasformare questo crossover di ema in un EA. aprire l'acquisto quando la freccia blu appare e vendere quando la freccia rossa appare uscire dal commercio quando la candela accanto alla freccia chiudere. pls lasciare che il SL e TP essere regolabile e le MAs. voglio solo usarlo per il commercio della candela
Controlla questo post: https: //www.mql5.com/en/forum/180648/page940
 
mladen:

Per il tempo delle candele, meglio usare qualche indicatore specializzato per quello (come l'allegato)

Per quanto riguarda il separatore di periodo: è già nmc ma potresti voler usare l'allegato (dovrebbe essere più leggero sulla cpu)

Grazie mille. Sto cercando di aggiungere l' opzione "BarsLimit" ma non ci sono riuscito. Potreste aiutarmi, per favore. La ringrazio molto per il suo tempo.
 
Entropy:
Grazie mille. Sto cercando di aggiungere l' opzione "BarsLimit" ma non ci sono riuscito. Potreste aiutarmi, per favore. Grazie mille per il tuo tempo.

Entropia

Ecco una versione con questa opzione aggiunta

 

Ciao mladen puoi insegnarmi a risolvere la dichiarazione.

Questo è quello che ottengo l'avvertimento.

declaration of 'MinLots' hides global declaration at line 93    
declaration of 'MaxLots' hides global declaration at line 94    
declaration of 'Magic' hides global declaration at line 118     
void CalculateMM()
{
   double MinLots=MarketInfo(Symbol(),MODE_MINLOT);
   double MaxLots=MarketInfo(Symbol(),MODE_MAXLOT);
   Lots=AccountFreeMargin()/100000*RiskPercent;
   Lots=MathMin(MaxLots,MathMax(MinLots,Lots));
   if(MinLots<0.1)Lots=NormalizeDouble(Lots,2);
   else
   {
     if(MinLots<1)Lots=NormalizeDouble(Lots,1);
     else Lots=NormalizeDouble(Lots,0);
   }
   if(Lots<MinLots)Lots=MinLots;
   if(Lots>MaxLots)Lots=MaxLots;
   return;



int CloseBuyOrders(int Magic)
{
  int total=OrdersTotal();

  for (int cnt=total-1;cnt>=0;cnt--)
  {
    if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) 
    if(OrderMagicNumber()==Magic&&OrderSymbol()==Symbol())
    {
      if(OrderType()==OP_BUY)
      {
       ClTicket= OrderClose(OrderTicket(),OrderLots(),Bid,3);
      }
    }
  }
  return(0);
}

int CloseBuyOrdersHiddenTP(int Magic)
{
  int total=OrdersTotal();

  for (int cnt=total-1;cnt>=0;cnt--)
  {
    if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) 
    if(OrderMagicNumber()==Magic&&OrderSymbol()==Symbol())
    {
      if(OrderType()==OP_BUY&&Bid>(OrderOpenPrice()+TakeProfit*Point))
      {
        ClTicket=OrderClose(OrderTicket(),OrderLots(),Bid,3);
      }
    }
  }
  return(0);
}

Grazie.

 
stevenpun:

Ciao mladen puoi insegnarmi a risolvere la dichiarazione.

Questo è quello che ottengo l'avvertimento.



Grazie.

Prima questo:

void CalculateMM()
{
   double tMinLots=MarketInfo(Symbol(),MODE_MINLOT);
   double tMaxLots=MarketInfo(Symbol(),MODE_MAXLOT);
   Lots=AccountFreeMargin()/100000*RiskPercent;
   Lots=MathMin(tMaxLots,MathMax(tMinLots,Lots));
   if(tMinLots<0.1)Lots=NormalizeDouble(Lots,2);
   else
   {
     if(tMinLots<1)Lots=NormalizeDouble(Lots,1);
     else Lots=NormalizeDouble(Lots,0);
   }
   if(Lots<tMinLots)Lots=tMinLots;
   if(Lots>tMaxLots)Lots=tMaxLots;
   return;

e questo

int CloseBuyOrders(int tMagic)
{
  int total=OrdersTotal();

  for (int cnt=total-1;cnt>=0;cnt--)
  {
    if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) 
    if(OrderMagicNumber()==tMagic&&OrderSymbol()==Symbol())
    {
      if(OrderType()==OP_BUY)
      {
       ClTicket= OrderClose(OrderTicket(),OrderLots(),Bid,3);
      }
    }
  }
  return(0);
}

int CloseBuyOrdersHiddenTP(int tMagic)
{
  int total=OrdersTotal();

  for (int cnt=total-1;cnt>=0;cnt--)
  {
    if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) 
    if(OrderMagicNumber()==tMagic&&OrderSymbol()==Symbol())
    {
      if(OrderType()==OP_BUY&&Bid>(OrderOpenPrice()+TakeProfit*Point))
      {
        ClTicket=OrderClose(OrderTicket(),OrderLots(),Bid,3);
      }
    }
  }
  return(0);
}
 

Ciao Mladen,

Potresti dirmi con questo codice, signore, cosa deve essere corretto?

Inoltre, quando va a timeframe più alto, è possibile cambiare da

===> 1Min ~ 30 Min ==> ogni 10 pips

===> 1 Ora ======> ogni 50 pip

===> 4 Ore, Giornaliero ======> ogni 100 pips

===> Settimanale, Mensile ===> ogni 1000 pips

I rettangoli sono desiderati al posto delle linee signore.

#proprietà indicator_chart_window

#define ONDA_BEGINS 0

#define ONDA_CONTAINS 1



//+------------------------------------------------------------------+

//|Funzione di inizializzazione dell'indicatore personalizzata

//+------------------------------------------------------------------+

int init()

{

//---- indicatori


//----

return(0);

}

//+------------------------------------------------------------------+

//| Funzione di deinizializzazione dell'indicatore personalizzato |

//+------------------------------------------------------------------+

int deinit()

{

//----

for (int ix = 0; ix < nLines; ix++) // cancella le mie linee orizzontali

{

ObjectDelete("tensLines "+ix);

}


//----

return(0);

}

//+------------------------------------------------------------------+

//|Funzione di iterazione dell'indicatore personalizzata |

//+------------------------------------------------------------------+

int start()

{

int nLines = 40; // Numero di linee totali da disegnare

double lineInterval = 0.0010; // Intervallo tra le linee

double normPrice = NormalizeDouble(Close[1],3); // Il prezzo corrente è arrotondato al "10" più vicino


for (int ix = 0; ix < nLines; ix++) // Loop span numero di volte

{

if(ObjectFind("tensLines "+ix) < 0)

ObjectCreate("tensLines "+ix, OBJ_HLINE, 0, 0, normPrice+((ix-(nLines/2))*lineInterval)); // Posiziona metà sopra e metà sotto il prezzo corrente


else ObjectSet("tensLines "+ix, OBJPROP_PRICE1, normPrice+((ix-(nLines/2))*lineInterval));

ObjectSet("tensLines "+ix,OBJPROP_COLOR,DarkSlateGray); // Rende le linee più belle

}

//----

return(0);

}

//+------------------------------------------------------------------+


void ObjectNameDeleteAll(string name, int where=ONDA_BEGINS, int type=EMPTY)

{

for(int iObj=ObjectsTotal()-1; iObj >= 0; iObj--)

{

stringa on = ObjectName(iObj);

int iPos = StringFind(on, name);

se (iPos < 0) continua;

if (iPos > 0 && where == ONDA_BEGINS) continua;

if (type == EMPTY) ObjectDelete(on);

else if (type == ObjectType(on)) ObjectDelete(on);

}

}




//---

 
murnathan32:

Ciao Mladen,

Potresti dirmi con questo codice, signore, cosa deve essere corretto?

Inoltre, quando va a timeframe più alto, è possibile cambiare da

===> 1Min ~ 30 Min ==> ogni 10 pips

===> 1 Ora ======> ogni 50 pip

===> 4 Ore, Giornaliero ======> ogni 100 pips

===> Settimanale, Mensile ===> ogni 1000 pips

I rettangoli sono desiderati al posto delle linee signore.

#proprietà indicator_chart_window

#define ONDA_BEGINS 0

#define ONDA_CONTAINS 1



//+------------------------------------------------------------------+

//|Funzione di inizializzazione dell'indicatore personalizzata

//+------------------------------------------------------------------+

int init()

{

//---- indicatori


//----

return(0);

}

//+------------------------------------------------------------------+

//| Funzione di deinizializzazione dell'indicatore personalizzato |

//+------------------------------------------------------------------+

int deinit()

{

//----

for (int ix = 0; ix < nLines; ix++) // cancella le mie linee orizzontali

{

ObjectDelete("tensLines "+ix);

}


//----

return(0);

}

//+------------------------------------------------------------------+

//|Funzione di iterazione dell'indicatore personalizzata |

//+------------------------------------------------------------------+

int start()

{

int nLines = 40; // Numero di linee totali da disegnare

double lineInterval = 0.0010; // Intervallo tra le linee

double normPrice = NormalizeDouble(Close[1],3); // Il prezzo corrente è arrotondato al "10" più vicino


for (int ix = 0; ix < nLines; ix++) // Loop span numero di volte

{

if(ObjectFind("tensLines "+ix) < 0)

ObjectCreate("tensLines "+ix, OBJ_HLINE, 0, 0, normPrice+((ix-(nLines/2))*lineInterval)); // Posiziona metà sopra e metà sotto il prezzo corrente


else ObjectSet("tensLines "+ix, OBJPROP_PRICE1, normPrice+((ix-(nLines/2))*lineInterval));

ObjectSet("tensLines "+ix,OBJPROP_COLOR,DarkSlateGray); // Rende le linee più belle

}

//----

return(0);

}

//+------------------------------------------------------------------+


void ObjectNameDeleteAll(string name, int where=ONDA_BEGINS, int type=EMPTY)

{

for(int iObj=ObjectsTotal()-1; iObj >= 0; iObj--)

{

stringa on = ObjectName(iObj);

int iPos = StringFind(on, name);

se (iPos < 0) continua;

if (iPos > 0 && where == ONDA_BEGINS) continua;

if (type == EMPTY) ObjectDelete(on);

else if (type == ObjectType(on)) ObjectDelete(on);

}

}




//---

Prova così

#property indicator_chart_window

#define  ONDA_BEGINS   0

#define  ONDA_CONTAINS 1


    int nLines = 40;                                   // Number of total line to draw

//+------------------------------------------------------------------+

//| Custom indicator initialization function                         |

//+------------------------------------------------------------------+

int init()

  {

//---- indicators


//----

   return(0);

  }

//+------------------------------------------------------------------+

//| Custom indicator deinitialization function                       |

//+------------------------------------------------------------------+

int deinit()

  {

//----

    for (int ix = 0; ix < nLines; ix++) // delete my horizontal lines

      {

      ObjectDelete("tensLines"+ix);

      }


//----

   return(0);

  }

//+------------------------------------------------------------------+

//| Custom indicator iteration function                              |

//+------------------------------------------------------------------+

int start()

  {


   double lineInterval = 0.0010;                      // Interval between lines

   double normPrice = NormalizeDouble(Close[1],3);    // Current price is rounded to nearest "10"


   for (int ix = 0; ix < nLines; ix++)                // Loop span number of times

      {

      if(ObjectFind("tensLines"+ix) < 0) 

         ObjectCreate("tensLines"+ix, OBJ_HLINE, 0, 0, normPrice+((ix-(nLines/2))*lineInterval));    // Place half above and half below the current price


      else ObjectSet("tensLines"+ix, OBJPROP_PRICE1, normPrice+((ix-(nLines/2))*lineInterval));

      ObjectSet("tensLines"+ix,OBJPROP_COLOR,DarkSlateGray);      // Make the lines look better

      }

 

//----

   return(0);

  }

//+------------------------------------------------------------------+


void ObjectNameDeleteAll(string name, int where=ONDA_BEGINS, int type=EMPTY)

{

    for(int iObj=ObjectsTotal()-1; iObj >= 0; iObj--)

    {

        string on   = ObjectName(iObj);

        int    iPos = StringFind(on, name);

        if (iPos < 0)                         continue;

        if (iPos > 0 && where == ONDA_BEGINS) continue;

        if      (type == EMPTY)         ObjectDelete(on);

        else if (type == ObjectType(on)) ObjectDelete(on);

    }

}



 
hey ragazzi cercando di assumere qualcuno per scrivere un po 'di codice in python per me, disposto a pagare per il lavoro someones o se qualcuno lo fa per libero che è cool troppo lol. ma appena tornare a me ogni volta e fatemi sapere se qualcuno può aiutarmi fuori, ill andare in più dettagli una volta che ho l'attenzione di qualcuno. sarà su bande di Bollinger principalmente con un paio di altri indicatori. grazie per tutto l'aiuto ragazzi!
 
mladen:

Prova così

Wow. Tu sei l'uomo. Grazie mladen per le benedizioni.

Un'altra richiesta. Puoi fare la griglia in rettangoli come l'allegato/la foto qui sotto. Per esempio 10 pips per rettangolo. Avere il rettangolo proiettare il futuro.

Mi sembra che sia più facile per gli occhi rispetto alla griglia di default. E ci vuole mezzo secondo per vedere quanti pips di movimento stai guardando.

    ObjectCreate("Rect02", OBJ_RECTANGLE, 0, Time[0], Bid, Time[Bars], (Bid+0.0010) ); //make bar above cur price
      ObjectSet("Rect02", OBJPROP_COLOR, Silver );
      }
//================= Move the Rect with new ticks/candles ===========================
   
   else {
      ObjectMove("Rect01", 0, Time[0], WindowPriceMin()*0.95);
      ObjectMove("Rect02", 0, Time[0], Bid); 

}

File:
Motivazione: