[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non potrei andare da nessuna parte senza di te - 2. - pagina 226

 
doon:

Come posso fare in modo che un EA compri o venda in un certo momento(sonno da non usare)?

Le funzioni data-ora vi aiuteranno: https://book.mql4.com/ru/functions/datetime
 
Fam:
Le funzioni data-ora vi aiuteranno: https: //book.mql4.com/ru/functions/datetime

Grazie, ma dovrai comunque inserire una scivolata lì.

 
Gente! Sto cercando di fare, che avrebbe scambiato molto a seconda del rischio.... cosa non funziona.... scrive
 EURUSD,M15: OrderSend error 4051

dimmi dov'è l'errore....

void OpenBuy() { 
   double ldLot, ldStop, ldTake; 
   string lsComm; 
   ldLot = GetSizeLot(); 
   ldStop = GetStopLossBuy(); 
   ldTake = GetTakeProfitBuy(); 
   lsComm = GetCommentForOrder(); 
   OrderSend(Symbol(),OP_BUY,ldLot,Ask,Slippage,ldStop,ldTake,lsComm,MAGIC,0,clOpenBuy); 
   if (UseSound) PlaySound(NameFileSound); 
} 
void OpenSell() { 
   double ldLot, ldStop, ldTake; 
   string lsComm; 

   ldLot = GetSizeLot(); 
   ldStop = GetStopLossSell(); 
   ldTake = GetTakeProfitSell(); 
   lsComm = GetCommentForOrder(); 
   OrderSend(Symbol(),OP_SELL,ldLot,Bid,Slippage,ldStop,ldTake,lsComm,MAGIC,0,clOpenSell); 
   if (UseSound) PlaySound(NameFileSound); 
} 
string GetCommentForOrder() {   return(Name_Expert); } 
double GetSizeLot() { 
   double ldlot=Lots;
   int    orders=HistoryTotal();     // history orders total
   int    losses=0;                  // number of losses orders without a break
   ldlot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,1);
   if(DecreaseFactor>0)
     {
      for(int i=orders-1;i>=0;i--)
        {
         if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error in history!"); break; }
         if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continue;
         if(OrderProfit()>0) break;
         if(OrderProfit()<0) losses++;
        }
      if(losses>1) ldlot=NormalizeDouble(ldlot-ldlot*losses/DecreaseFactor,1);
     }
   if(ldlot<0.1) ldlot=0.1;
                         } 
double GetStopLossBuy() {       return (Bid-sStopLoss*Point);} 
double GetStopLossSell() {      return(Ask+sStopLoss*Point); } 
double GetTakeProfitSell() {    return(Bid-sTakeProfit*Point); } 
double GetTakeProfitBuy() {     return(Bid+sTakeProfit*Point); } 

return(0);
 

Grazie a tutti, lo proverò...
 
charter:

Temo che questo sia vero solo per le serie temporali.

Nel mio caso, non c'è nemmeno un posto dove metterlo.

La tua idea è corretta, cioè l'ordine deve essere invertito in qualche modo, ma non so ancora come


Non preoccupatevi, funziona.
 
Vovo4ka:
Gente! Sto cercando di fare, che avrebbe scambiato molto a seconda del rischio.... cosa non funziona.... scrive

dimmi dov'è l'errore....


ha dimenticato di mettere una linea nel lotto.
return (ldlot);
 
todem:

Ho dimenticato di mettere una linea nel lotto.

right...... dimenticato.... grazie mille.... ho già controllato 20 volte, non riuscivo a capire cosa diavolo...)
 

Aiuto con una domanda su requote+slippage.

La situazione è la seguente: invio una richiesta di transazione da Expert Advisor, Slippage=3 pt, si verifica l'errore 138 Requote. Ho provato a RefreshRates() e riprovato con un nuovo Ask, ma il prezzo del server è migliore dell'Ask che ho inviato (seconda volta dopo RefreshRates()), e logicamente ho bisogno di concordare, ma poiché la deviazione del prezzo del server è più grande dello Slippage nella richiesta - questa richiesta viene rifiutata. (((

Come si può controllare questa situazione? Cioè se il prezzo del server è migliore allora per spostare lo Slippage o cosa, in modo che la richiesta sia accettata dal server. O non è possibile?

 
ZZZEROXXX:

Aiuto con una domanda su requote+slippage.

La situazione è la seguente: invio una richiesta di transazione da Expert Advisor, Slippage=3 pt, si verifica l'errore 138 Requote. Ho provato a RefreshRates() e riprovato con un nuovo Ask, ma il prezzo del server è migliore dell'Ask che ho inviato (seconda volta dopo RefreshRates()), e logicamente ho bisogno di concordare, ma poiché la deviazione del prezzo del server è più grande dello Slippage nella richiesta - questa richiesta viene rifiutata. (((

Come si può controllare questa situazione? Cioè se il prezzo del server è migliore allora per spostare lo Slippage o cosa, in modo che la richiesta sia accettata dal server. O non è possibile?


Aumentare lo slittamento. Gli scambi devono essere stati aperti in un mercato veloce. Succede a volte dopo notizie importanti che l'Eurobucks è così veloce in 1-2 ticks che è un incubo. E mentre il server elabora l'ordine del consulente, il prezzo cambia molto bruscamente.
 
Zhunko:
MT4 ha un convertitore incorporato. Servizio -> Archivio citazioni.

Grazie! Ma l'obiettivo è il seguente. Offset di barre giornaliere (candele), aggiornato con l'arrivo delle quotazioni, il grafico si comporta come un normale grafico: è possibile appendere altri indicatori, EAs, costruire canali, livelli, ecc. su di esso. Dovrebbe essere qualcosa come i timeframe non standard, ma non standard nello spostamento delle barre (candele) relative al tempo terminale: H4 - a -3, -2, -1, 1, 2 o 3 ore; D1 - a -23, -22, ... 1, 2, ... o 23 ore; W1 - per -6, -5, ... o 6 giorni e così via. L'offset deve essere impostato nei parametri di ingresso dell'indicatore.

Esiste una cosa del genere?

Vi ringrazio in anticipo.