[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 4. - pagina 597

 
Grazie!
 

Ciao a tutti,

si prega di consigliare come trovare il prezzo massimo che era dopo la formazione di un frattale

 

Ecco la funzione di trading che apre le posizioni:

//+-------------------------------------------------------------------------------------+
//| Открытие позиций                                                                    |
//+-------------------------------------------------------------------------------------+
bool Trade (int signal)
{
  double sl = 0, tp = 0;

  if(signal == SIGNAL_BUY && FindOrders() == 0)                                     // Если сигнал на покупку и открытых ордеров нет...
  {
    g_ticket = OpenBuy();                                                           // открываем лимитный ордер на покупку
  
    if(g_ticket > 0 && OrderSelect(g_ticket,SELECT_BY_TICKET,MODE_TRADES) == true)  // Если ордер есть и он выбран..
    {
      if(i_sl != 0)                                                                 // Если входной параметр стоп-лосса не равен 0, то..
        sl = NormalizeDouble(OrderOpenPrice() - i_sl*Point,Digits);                 // Получаем значение стоп-лосса для выбранного ордера
      if(i_tp != 0)                                                                 // Если входной параметр тейкпрофита не равен 0, то..
        tp = NormalizeDouble(OrderOpenPrice() + i_tp*Point,Digits);                 // Получаем значение тейкпрофита для выбранного ордера
    }  
  }  
  else if(signal == SIGNAL_SELL && FindOrders() == 0)                               // Если сигнал на продажу и открытых ордеров нет..
  {
    g_ticket = OpenSell();                                                          // Открываем лимитный ордер на продажу
  
    if(g_ticket > 0 && OrderSelect(g_ticket,SELECT_BY_TICKET,MODE_TRADES) == true)  // Если ордер есть и он выбран..
    {
      if(i_sl != 0)                                                                 // Если входной параметр стоп-лосса не равен 0, то..
         sl = NormalizeDouble(OrderOpenPrice() + i_sl*Point,Digits);                // Получаем значение стоп-лосса для выбранного ордера
      if(i_tp != 0)                                                                 // Если входной параметр тейкпрофита не равен 0, то..
         tp = NormalizeDouble(OrderOpenPrice() - i_tp*Point,Digits);                // Получаем значение тейкпрофита для выбранного ордера
    }
  }
  if(sl != 0 || tp != 0)                                                            // Если полученные значения sl и tp не равныы 0, то..
  {
    OrderModify(g_ticket,OrderOpenPrice(),sl,tp,OrderOpenTime() + 86400,Lime);      // Модифицируем ордер
    return(true);
  }
  return(true);
}

Tutto chiaro e conciso. L'errore 130 continua a spuntare nel tester, anche se l'Expert Advisor funziona, ma l'errore 130 continua a spuntare. Qual è la ragione di questo?

Questa funzione utilizza funzioni di apertura delle posizioni, eccole:

//+-------------------------------------------------------------------------------------+
//| Открытие длинной позиции                                                            |
//+-------------------------------------------------------------------------------------+
int OpenBuy()
{
  g_ticket = -1;
  string myNote = "сов баянул";
         
  g_ticket = OrderSend(Symbol(),OP_BUYLIMIT,0.1,GetPriceToInput(),3,0,0,myNote,myMagic,0,Blue);
  if(g_ticket > 0 && OrderSelect(g_ticket,SELECT_BY_TICKET,MODE_TRADES) == true)
  
  return(g_ticket);
}
//+-------------------------------------------------------------------------------------+
//| Открытие короткой позиции                                                           |
//+-------------------------------------------------------------------------------------+
int OpenSell()
{
  g_ticket = -1;
  string myNote = "сов шортанул";

  g_ticket = OrderSend(Symbol(),OP_SELLLIMIT,0.1,GetPriceToInput(),3,0,0,myNote,myMagic,0,Red);
  if(g_ticket > 0 && OrderSelect(g_ticket,SELECT_BY_TICKET,MODE_TRADES) == true)
  
  return(g_ticket);
}

Ho pensato che avesse a che fare con il livello di stop, ho aggiunto il controllo, ma non è lo stesso. L'ho rimosso per ora perché su Alpari questo livello è 0. Si prega di suggerire cosa deve essere corretto per evitare questo errore.

 


 double min=Low[iLowest(NULL,PERIOD_M15,MODE_LOW,32,0)];

come registrare nel formato 1.30320 per EURUSD per esempio?
 
if(OrderTakeProfit()!=0&&OrderTakeProfit()!=OrderOpenPrice()+2*kio*Point&&Bid>OrderOpenPrice()+50*kio*Point)
               OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),OrderOpenPrice()+2*kio*Point,0);
Ciao a tutti, potete dirmi cosa c'è che non va in Error #1 e come risolverlo? grazie!
 
rigonich:

Dichiarare una variabile di tipo datetime e assegnarle il valoreTime[0]. Dopo che l'ordine è stato aperto, se non è uguale aTime[0], si può aprire l'ordine successivo, se è uguale ad esso, si esce dall'inizio. Per quanto riguarda i criteri, non ho guardato il codice, ma sembra che se si tratta di uno stocastico, dovrebbe scattare all'incrocio a livelli di ipercomprato/ipervenduto (di solito >80 e <20%). Per chiarezza, impostare i livelli a 20 e 80 % nelle impostazioni stocastiche
Rigonich:

Dichiarare una variabile di tipo datetime, assegnarle il valoreTime[0], dopo aver aperto un ordine, poi se non è uguale aTime[0, si può aprire l'ordine successivo, se è uguale a -exit from start. Per quanto riguarda i criteri, non ho guardato il codice, ma sembra che se si tratta di uno stocastico, dovrebbe scattare all'incrocio a livelli di ipercomprato/ipervenduto (di solito >80 e <20%). Per maggiore chiarezza, impostate i livelli del 20 e dell'80% nelle impostazioni stocastiche.
Grazie)
 
Buon pomeriggio per favore aiutatemi, non riesco a capire perché si aprono ordini inutili ((, cerchiati in rosso nello screenshot, ecco i criteri
// Торговые критерии
   M_1=iStochastic(NULL,0,Kperiod,Dperiod,Slowing,MODE_SMMA,Price_field,MODE_MAIN,  0);
   M_2=iStochastic(NULL,0,Kperiod,Dperiod,Slowing,MODE_SMMA,Price_field,MODE_MAIN,  1);
   S_1=iStochastic(NULL,0,Kperiod,Dperiod,Slowing,MODE_SMMA,Price_field,MODE_SIGNAL,0);
   S_2=iStochastic(NULL,0,Kperiod,Dperiod,Slowing,MODE_SMMA,Price_field,MODE_SIGNAL,1);
 
   if (M_2 < S_2 && M_1>=S_1 ) 
      { 
       if (Total==1)
         {
          if (Vremya== Time [0]) 
          return; 
          T=Close_Order (Lts,Tip);
          Vremya= Time [0];
          if (T==true)
           { 
           Total=0;
           }
         } 
       if (Total==0)         
         { 
         if (Vremya== Time [0])  
         return;                                     
   
          Open_Order_B (Lts); 
          Vremya= Time [0];
            
         }                                      
      }
   if (M_2 > S_2 && M_1<=S_1 ) 
      { 
       if (Total==1)
          {
           if (Vremya== Time [0]) 
           return; 
           T=Close_Order (Lts,Tip); 
           Vremya= Time [0];
           if (T==true)
             {
             Total=0;
             }
          }
       if (Total==0)         
          {                                          
          if (Vremya== Time [0]) 
          return;                                     
          
          Open_Order_S (Lts); 
          Vremya= Time [0];                                              
          }
       }   
 
Equilibrium:
Buon pomeriggio per favore aiutatemi, non riesco a capire perché gli ordini indesiderati si aprono ((, nello screenshot sono cerchiati in rosso, ecco i criteri

Prova a prendere i valori dell'indicatore da 1 e 2 barre. Qualcosa del genere.
 
i999i:

Ciao a tutti,

si prega di consigliare come trovare il prezzo massimo che era dopo la formazione di un frattale


Prossimo frattale superiore.
 

double min=Low[iLowest(NULL,PERIOD_M15,MODE_LOW,32,0)];

Buon pomeriggio per favore consigliatemi

Come faccio a registrare 1,30320 per EURUSD per esempio?