Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 899

 
Buon pomeriggio. Ho bisogno di aiuto, perché non so come codificare, scrivere o modificare gli indicatori da solo. Sarò breve.
Puoi aggiungere una notifica sonora (Alert) quando
CrossUpcambia da 0.00000 a -1.00000
CrossDown da -1.00000 a 0.00000.
Per favore aiutami, te ne sarò eternamente grato. Grazie.

File:
 
S.P.I:
Salve. Ho bisogno di aiuto, perché io stesso non so nulla di codifica, scrittura o modifica degli indicatori. Sarò breve.
Si può aggiungere una notifica sonora (Alert) quando il
CrossUpcambia da 0.00000 a -1.00000
CrossDown da -1.00000 a 0.00000.
Aiuto per favore, sarei eternamente grato. Grazie.

Formato sbagliato, hai bisogno di mq4

 
Alekseu Fedotov:

Formato sbagliato, hai bisogno di mq4

Potete anche fare questo con ex4 - risorse e leggere i buffer.

 
Artyom Trishkin:

È possibile fare questo compito anche con ex4 - alle risorse e ai buffer di lettura.

Perché? chiamata standard dell'indicatore dall'indicatore tramite iCustom(), penso che ci vorranno 15-20 minuti, che ci siano 2 file di indicatori

 
Igor Makanu:

Perché? Chiamata standard dell'indicatore tramite iCustom(), penso che ci vorranno 15-20 minuti, che ci siano 2 file di indicatori

C'è anche iCustom() nelle risorse, ma c'è un solo file.

Ho due file - che siano due, che sia uno. E c'è la stessa quantità di lavoro.

 
Alekseu Fedotov:

Esatto, fate i conti.

Sì, ma è già una percentuale del profitto, qualche costruzione dovrebbe essere fatta in modo che alla variabile drawdown sia assegnato un valore al drawdown, e se la posizione è in profitto, il valore drawdown = 0.
 
nalyk:
Sì, ma è già una percentuale di profitto, bisogna inventare una specie di costruzione, in modo che alla variabile drawdown sia assegnato un valore al drawdown, e se la posizione è in profitto, allora il valore drawdown = 0 .
   double drawdown=(AccountProfit()<0 ? AccountProfit()*100/AccountBalance() : 0);
   Comment("текущая просадка  = ",drawdown);
 

Ciao, potresti dirmi come scrivere correttamente l'apertura degli ordini dall'ultimo frattale. Ho provato a farlo in questo modo, ma non si apre nel tester.

void CheckForOpen()
{
  
   double hai_candle = iHigh(NULL,TimeCandleTrade,0);
   double low_candle = iLow(NULL,TimeCandleTrade,0); 
   fr_down = iFractals (Symbol(), 0, MODE_LOWER,3);
   fr_up = iFractals(Symbol(),0,MODE_UPPER,3);
   double SL, TP;
  
 if (BuyCount()==0 )
   {
  
    if (fr_down>0 && low_candle<Low[fr_down])
   {
     
      SL = NormalizeDouble(Ask - StopLoss*Point,Digits);
      TP = NormalizeDouble(Ask + TakeProfit*Point,Digits);
      ticket = OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,Digits),Slippage,SL,TP,NULL,magik,0,CLR_NONE);
      if (ticket <0)
       Print ("Не удалось открыть ордер на покупку",GetLastError());
   }
   
   }

int BuyCount()
  {
  int count = 0;
  for (int i=OrdersTotal()-1;i>=0;i--)
  {
    if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES) == true && 
        OrderMagicNumber()== magik &&                        
        OrderType() == OP_BUY )                       
        {
        count ++;
        }
    }
}

 
Artyom Trishkin:
Grazie.
 
nelenaby:

Ciao, potresti dirmi come scrivere correttamente l'apertura degli ordini dall'ultimo frattale. Ho provato a farlo in questo modo, ma non si apre nel tester.

Stai cercando il frattale sulla terza barra, potrebbe non esserci. Cerca il primo frattale nel ciclo.

 
 for (int s=2; s<100; s++) 
     {
    fr_down=iFractals(Symbol(), 0, MODE_LOWER, s);
    if (f!=0) break;
     }