[ARCHIVIO] Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 3. - pagina 387

 
biragr:

Grazie per l'attenzione, ma non capisco la sua domanda. Puoi impostare la linea per qualsiasi data, e quando il grafico la raggiunge, l'EA si attiverà? O forse non capisco qualcosa, se non vi dispiace spiegarlo.
Ok, avete impostato la linea sul grafico giornaliero, e se fosse sull'orologio? Il tempo di apertura dell 'ordine sarà impostato dalla linea o strettamente impostato? È necessario impostare il programma per un mese con delle linee o è sufficiente un Expert Advisor seguendo il mio link?
 
kolyango:

Aiuto, per favore! L'indicatore https://www.mql5.com/ru/code/10067 deve essere convertito in un semplice EA funzionante (come esempio). Prinzip di azione:

Sulla coppia su cui verrà lanciato l'EA, non appena il valore è uguale a 0.9570, aprire un ordine di mercato per vendere 0.1 lotto con un numero maggiore (in modo che gli EA in diverse finestre non confondano gli ordini), Stop-Loss 100p, Take-Profit 200p.

Professionisti, non possiamo fare a meno di voi!



Aiuta un principiante!
 

kolyango:

Sulla coppia su cui verrà lanciato l'EA, non appena il valore è uguale a 0.9570, aprire un ordine di mercato per vendere 0.1 lotto con un numero maggiore (in modo che gli EA in finestre diverse non confondano gli ordini), Stop-Loss 100p, Take-Profit 200p.

Aiuto per un principiante!
Che senso ha scrivere un EA una tantum? Metti un ordine in sospeso e funzionerà come vuoi tu. E impostare gli EA sulle major, perché la pausa avrà zero major.
 
Reshetov:
Che senso ha scrivere un EA una tantum? Mettete una pausa e si attiverà come volete voi. E configurare gli EA per le major, perché la pausa avrà zero major.

Ho bisogno di capire come fare questo da un indicatore...
 

qual è il problema? Il problema è che l'ordine non sempre si apre quando la linea viene attraversata, cioè a volte lo fa e a volte no... Anche se funziona sullo stesso principio...

//+------------------------------------------------------------------+
//|                                                      Вайкофф.mq4 |
//|                                                   Sergey Kodolov |
//|                                              84232676421@mail.ru |
//+------------------------------------------------------------------+
#property copyright "Sergey Kodolov"
#property link      "84232676421@mail.ru"



int total,sum,sumr;  
datetime TimeBarH, TimeBarL;

int Crossed (double nach, double kon, double cenaniz, double cenaverh)
{
   static int last_dir = 0;
   static int cur_dir = 0;
   
   if(nach<cenaverh && kon>cenaverh)cur_dir=1;
   if(nach>cenaniz && kon<cenaniz)cur_dir=2;
   
   if(cur_dir != last_dir)
   {
      last_dir=cur_dir;
      return(last_dir);
   }
   else
      return(0);
}


  
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }

  
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
                     
bool NewBar = New(); //работаем только с нового бара

int volot = volotilnost(NewBar); //определяем волотильность
Hfr(NewBar,volot); //определяем фрактал верхний
Lfr(NewBar,volot); //определяем фрактал нижний

      double BuyLine, SellLine;
   
      BuyLine = ObjectGet("upline",OBJPROP_PRICE1);
      SellLine = ObjectGet("downline",OBJPROP_PRICE1);

int isCrossed = Crossed(Open[0],Bid,SellLine,BuyLine); //говорит о пересечении баром линии
OrderOpenFunction(isCrossed);



//----
   return(0);
  }
//+------------------------------------------------------------------+


bool New()
{
   static datetime lastbar = 0;
   datetime curbar = Time[0];
   //Print("lastbar = ",lastbar," curbar = ",curbar);
   if(lastbar!=curbar)
   {
      lastbar = curbar;
      //Print("ypa");
      return(true);
   }
   else
      return(false);
}

int volotilnost (bool NewBar)
{
   if(NewBar == true)
   {
      for(int i=0;i<=kolbar;i++)
      {
         sum = sum + MathAbs(High[i]-Low[i])*1000;
         //Print(sum);
      }
      sumr = sum/kolbar;
      Print(sumr);
      return(sumr);
   }   
}

void Hfr(bool NewBar, int volot)
{
   if(NewBar == true)
   {
      if(volot > kolbarv)
      {
         if(iHigh(Symbol(),TF,5)<iHigh(Symbol(),TF,4))
         {
            if(iHigh(Symbol(),TF,4)<iHigh(Symbol(),TF,3))
            {
               if(iHigh(Symbol(),TF,2)<iHigh(Symbol(),TF,3))
               {
                  if(iHigh(Symbol(),TF,1)<iHigh(Symbol(),TF,2))
                  {
                     ObjectDelete("upline");
                     ObjectCreate("upline",OBJ_HLINE,0,0,(iHigh(Symbol(),TF,3)));
                     TimeBarH = iTime(Symbol(),TF,3);
                  }
               }
            }
         }
      }   
   }   
}
         

void Lfr(bool NewBar, int volot)
{
   if(NewBar == true)
   {
      if(volot > kolbarv)
      {
         if(iLow(Symbol(),TF,5)>iLow(Symbol(),TF,4))
         {
            if(iLow(Symbol(),TF,4)>iLow(Symbol(),TF,3))
            {
               if(iLow(Symbol(),TF,2)>iLow(Symbol(),TF,3))
               {
                  if(iLow(Symbol(),TF,1)>iLow(Symbol(),TF,2))
                  {
                     ObjectDelete("downline");
                     ObjectCreate("downline",OBJ_HLINE,0,0,(iLow(Symbol(),TF,3)));
                     TimeBarL = iTime(Symbol(),TF,3);
                  }
               }
            }
         }
      }   
   }   
}

void OrderOpenFunction(int isCrossed)
{
   total = OrdersTotal();
   if(total<1)
   {
      if(isCrossed == 1)
      {
         OrderSend(Symbol(),OP_BUY,lots,Ask,slip,Bid-TS*Point,Bid+TP*Point,"Покупка",Magic,0,Green);
      }
      if(isCrossed == 2)
      {
         OrderSend(Symbol(),OP_SELL,lots,Bid,slip,Ask+TS*Point,Ask-TP*Point,"Продажа",Magic,0,Red);
      }
   }   
}
Penso che l'errore sia in isCrossed, ma non riesco a trovarlo lì... Ho cancellato una parte del codice (dove salvo alcuni dati negli array), perché sovraccarica il codice, ma se ne ho bisogno, sarò anche felice di condividerlo con voi
 
Buonasera, ho messo un ordine pendente bylimit, senza stop, errore 130 !!!! Cosa può essere? O mi sto sbagliando di nuovo? Per favore, consigliatemi!
 

Salve.

Potete dirmi come descrivere l'incrocio della linea principale e la linea di segnale dello stocastico?

 

Qualcosa del genere, nella mia mente

F=iStochastic( Symbol(), 0, 5, 3, 3, MODE_SMA, 1,MODE_MAIN , 0) ;
   SIGNAL=iStochastic( Symbol(), 0, 5, 3, 3, MODE_SMA, 1,MODE_SIGNAL , 0) ;
   if (F==SIGNAL) {Урра!!!!; }
 

un'altra domanda, perché il programma dice che l'oggetto esiste, quando in realtà non esiste (guardo solo il monitor e non vedo chiaramente l'oggetto)

void DrawLines()
{
   ObjectCreate("line1",OBJ_TREND,0,ArrayH[1],iHigh(Symbol(),TF,iBarShift(Symbol(),TF,ArrayH[1])),ArrayH[2],iHigh(Symbol(),TF,iBarShift(Symbol(),TF,ArrayH[2])));
   Print(GetLastError());
}

iBarShift(Symbol(),TF,ArrayH[1]) - dà il numero della barra, ho controllato tutto tramite Print(). Ma GetLastError mi dà l'errore 4200 - non capisco cosa sia cosa =)

 
kolyango:

Ho bisogno di capire come fare questo da un indicatore...

Non c'è modo di uscire dall'indicatore