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

 
artmedia70:

Vi è già stato detto qual è il motivo. Il punto non è i++ o i-- ma piuttosto da quale estremità della lista dovremmo iniziare a cancellare gli ordini - dall'inizio della lista (come hai fatto tu) o dalla fine della lista (come devi fare in questo caso).

Per capire cosa succede quando gli ordini vengono cancellati, è necessario conoscere e capire come gli ordini sono memorizzati nell'array.

Quando cancellate il primo ordine per primo (è indicizzato da i=0), gli indici di tutti gli ordini sono spostati nell'array - il primo ordine diventa nullo, il secondo diventa il primo, il terzo diventa il secondo e così via. Questo è il motivo per cui tutti gli ordini non sono completamente rimossi - infatti, quando i diventa 6, il sesto ordine è spostato alla quinta posizione nella matrice degli ordini e l'ordine non è selezionato dall'indice 6.

Quando cancelli gli ordini dalla fine della lista, lo spostamento non avverrà - il primo ordine ha una posizione zero nella lista, e continuerà ad averla. Il decimo ordine aveva la posizione 9, è stato cancellato, poi il nono ordine, che ha una posizione 8 nella lista viene cancellato, e così via, fino al primo ordine con una posizione zero nella matrice degli ordini.

Un GRANDE GRAZIE a artmedia70 per la loro risposta completa, solo un grazie a ilunga ... e anche a nadya per la sua partecipazione ... tutto il meglio ...
 
Per favore consigliatemi, ho impostato lo strumento multicurrency per lavorare con diverse valute da una finestra. Ma il problema è che il passaggio tra le valute è così veloce che non c'è tempo per aprire un ordine. In 3 minuti sono stati aperti 4 ordini + 4 ordini in sospeso. E c'è stato molto passaggio da una valuta all'altra.
 
volshebnik:
Cosa è meglio e cosa? )
Fare nomi unici e ricordarli. Non conosco il suo compito, forse non ne ha bisogno.
 
forexnew:
Per favore consigliatemi, ho impostato lo strumento multicurrency per lavorare con diverse valute da una finestra. Ma il problema è che il passaggio tra le valute è così veloce che non c'è tempo per aprire un ordine. In 3 minuti sono stati aperti 4 ordini + 4 ordini in sospeso. E c'è stato molto passaggio da una valuta all'altra.

http://vinin.ucoz.ru/forum/11
 

ci sono 2 modifiche utente Mod_1 e Mod_2

entrambi hanno condizioni di modifica:

double TS;
int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL);

if (TS < Min_Dist)
TS=Min_Dist;

Come cambiarlo in modo che la modifica non vada in porto con una condizione di stop loss, per comprare lo stop loss è inferiore al trailing stop,

e per vendere, lo stop loss è più grande del trailing stop

 

Salve.

Per favore aiutatemi a trovare un bug.

Il codice qui sotto non funziona sul tester, mentre non c'è questo problema sulla demo. Non c'è nessun errore nel registro.

Grazie in anticipo.

  //====================== Отлавливаем прибыль по рынку ===========================================
  if (RinProfit) {
    if(SchBuyLots>0 || SchBuyLots777>0)
     {
      if((SchSellStop_b(MAGIC)>0 && (maM_fast<maM_slow || maH_fast<maH_slow || maOtk_fast<maOtk_slow)) ||
         (SchSellStop_b(MAGIC)>0 && (speedup_H1_ff<(10000+H1_MA_factor_ff) || speedup_H1_ss<(10000+H1_MA_factor_ss) ||
                                     speedup_M15_ff<(10000+M15_MA_factor_ff) || speedup_M15_ss<(10000+M15_MA_factor_ss))) ||
         (SchSellStop_b(MAGIC)>0 && ((maHXX<=H1_point_min  && speedup_H1_ss<(10000+H1_MA_factor_ss)) || maHXX>=H1_point_max)) ||
         (SchSellStop_b(MAGIC)>0 && Fractal_fibo_buy>Fibo_prohibit) ||
         (SchSellStop_b(MAGIC)>0 && TF1S>0 && TF2S>0 && timf1s!=0 && timf2s!=0 && TF1S<TF2S) ||
         (SchSellStop_b(MAGIC)>0 && TF1S>0 && TF2S>0 && timf1s!=0 && timf2s!=0 && TF1S>=TF2S && Bid<price_S))
       {
        while (SchBuyLots+SchBuyLots777>0 && SchSellLots+SchSellLots777>0)
         {
          CloseVstrechnye(MAGIC);
          return (0);
         }
        CloseAll_bMAGIC(Proskalz, MAGIC);
        CloseAll777_b(Proskalz);
        DeleteOtlozhMAGIC(MAGIC);
        DeleteOtlozh777();
        Alert("Позиции Buy закрыты согласно рыночной ситуации.");
        RefreshRates();
        if (Timeout_Trade>0 && ProfHist<=0)
         {
          Comment (SMB,": ТАЙМАУТ ТОРГОВЛИ "); 
          Sleep (Timeout_Trade*60000);
         } 
        RefreshRates();
       }
    }
    if(SchSellLots>0 || SchSellLots777>0)
     {
      if((SchBuyStop_b(MAGIC)>0 && (maM_fast>maM_slow || maH_fast>maH_slow || maOtk_fast>maOtk_slow)) ||
         (SchBuyStop_b(MAGIC)>0 && (speedup_H1_ff>(10000-H1_MA_factor_ff) || speedup_H1_ss>(10000-H1_MA_factor_ss) ||
                                    speedup_M15_ff>(10000-M15_MA_factor_ff) || speedup_M15_ss>(10000-M15_MA_factor_ss))) ||
         (SchBuyStop_b(MAGIC)>0 && ((maHXX<=H1_point_min  && speedup_H1_ss>(10000-H1_MA_factor_ss)) || maHXX>=H1_point_max)) ||
         (SchBuyStop_b(MAGIC)>0 && Fractal_fibo_sell>Fibo_prohibit) ||
         (SchBuyStop_b(MAGIC)>0 && TF1B>0 && TF2B>0 && timf1b!=0 && timf2b!=0 && TF1B>TF2B) ||
         (SchBuyStop_b(MAGIC)>0 && TF1B>0 && TF2B>0 && timf1b!=0 && timf2b!=0 && TF1B<=TF2B && Bid>price_B))
       {
        while (SchBuyLots+SchBuyLots777>0 && SchSellLots+SchSellLots777>0)
         {
          CloseVstrechnye(MAGIC);
          return (0);
         }
        CloseAll_bMAGIC(Proskalz, MAGIC);
        CloseAll777_b(Proskalz);
        DeleteOtlozhMAGIC(MAGIC);
        DeleteOtlozh777();
        Alert("Позиции Sell закрыты согласно рыночной ситуации.");
        RefreshRates();
        if (Timeout_Trade>0 && ProfHist<=0)
         {
          Comment (SMB,": ТАЙМАУТ ТОРГОВЛИ "); 
          Sleep (Timeout_Trade*60000);
         } 
        RefreshRates();
       }
     } 
   }
  //===============================================================================================  
 

Qual è la differenza tra chiamare funzioni da dll in MT4 e MT5? Ho compilato la dll, funziona bene in MT5, ma in MT4 mi dà errore:

2011.10.06 23:00:34 Esecutore Solaris EURUSDm,M1: impossibile chiamare la funzione 'InfoOfTrading' dalla dll 'Solaris.dll'(errore 127)

Che diavolo è questo? - Mi sono scervellato. :(

 
fare un progetto Win32 dll
 
sergeev:
fare un progetto Win32 dll
Ma funziona bene in MT5!
 

Continuerò con la mia domanda di cui sopra.

Ho anche usato il codice di cui sopra in un altro EA. La situazione con quell'EA era simile a quella descritta sopra con la differenza che le condizioni del codice erano soddisfatte esattamente al contrario (nella demo, di nuovo, tutto funzionava senza errori). Ma un giorno il tester ha funzionato correttamente e il codice ha funzionato correttamente secondo le condizioni date.

È un vero misticismo.

Inoltre, a volte non riesco a ottimizzare il mio codice per qualche motivo. A volte ricalcola qualcosa ma azzera tutti i risultati per qualche motivo. Succede così sui terminali di diversi broker. Tuttavia, quando tutte le stelle e le costellazioni del cielo probabilmente convergono, tutto inizia a funzionare come dovrebbe.