[ARCHIVIO]Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non posso andare da nessuna parte senza di te - 5. - pagina 282

 
Zhunko:

Si deve formare dalle zecche. Il convertitore di periodo fa il minimo dai minuti.


Kovalev è corretto. Ho evidenziato in rosso ciò che non avete.

Capito, grazie mille.
 
MauzerVII:

Ragazzi, aiutatemi.

Non capisco perché la linea

Risultato: 2013.04.12 17 13 Print_v4 EURUSD,M15: SL == 1.3068

dà quattro cifre decimali?

Sono a conoscenza diDoubleToStr.



Se ne siete consapevoli, qual è la domanda, non capisco.

 

Domanda sul codice del raccoglitore di tick in kodobase. Una specie di strano controllo delle condizioni assegnate nell'intestazione delle variabili booleane che non cambiano ulteriormente nel codice. Non capisco come funziona.

//в шапке
           bool tick.time.local        =               false;
           bool tick.chart.update      =                true;
//в init()
   if(tick.chart.update == true)
     {
     if(MT4InternalMsg == 0)  
            {
            MT4InternalMsg = RegisterWindowMessageA("MetaTrader4_Internal_Message"); 
            }   
     }  
//в start()
     if(tick.time.local == true)//где менялось, я вообще не понял
       {
       time = TimeLocal();
       }
       else{
       time = TimeCurrent();
       }
//--------------------------------
       if(tick.chart.update == true)
         {
                   hwnd = WindowHandle(sn, 1);
         if(PostMessageA(hwnd, WM_COMMAND, 0x822c, 0) == false)
           {
           hwnd = 0;
           return;
           }
           PostMessageA(hwnd, MT4InternalMsg, 2, 1);             
           }                 
         } 

Il valore delle variabili booleane assegnate non cambia da nessuna parte nelle condizioni (e poi nel codice). Inoltre, start() controlla il valore inverso della variabile assegnata a tutti. Ma funziona. Come?

 

O è solo codice non ottimizzato? GetLastError() è dichiarato nell'intestazione

#import "ntdll.dll"
 int RtlGetLastWin32Error();
 int RtlSetLastWin32Error (int dwErrCode);

E queste funzioni NaiveAPI non sono usate da nessun'altra parte nel codice...

 

Colleghi programmatori, ditemi come risolvere un problema "semplice".

Per esempio, ho bisogno di cancellare la seconda riga di un file CSV. Non ho trovato alcuna informazione su come farlo nella documentazione.

Esempio:

12:30;1;1.34818;12:32;3;3;100;1.34939;18:45\r\n

14:00;1;1.32219;14:26;6;6;100;0.0000;00:00\r\n

19:00;0;1.35828;19:12;12;6;600;1.37939;19:59\r\n

 
tuner:


Lo farei, ma non ho tempo per pensare ad altro, mi dispiace.

Per quanto riguarda la domanda su dove vengono cambiati. La mia ipotesi è che siano flag di debug, che il programmatore ha usato quando ha scritto l'indicatore e lasciato nel codice per il debug, se qualcuno ne ha bisogno.

 

La linea di fondo è semplice. Lo swing veloce incrocia lo swing lento. Poi il prezzo torna a quello veloce e l'Expert Advisor dovrebbe aprire un ordine.

Al momento ho scritto la funzione per fissare il pullback come segue:

//+-------------------------------------------------------------------------------------+
//| Получение значений МА на указанном баре                                             |
//+-------------------------------------------------------------------------------------+
double GetMA(int index, int maPeriod)
{
   return (iMA(NULL, i_TF, maPeriod, 0, MODE_EMA, MODE_CLOSE, index));
}
//+-------------------------------------------------------------------------------------+
//| Имеет ли место отскок?                                                              |
//+-------------------------------------------------------------------------------------+
void IsRebound(int crossDir[], bool& returnSign[])
{
   for (int i = 0; i < 4; i++)
   {
      if (crossDir[i] == CROSS_NO)
         continue;

      returnSign[i] = false;
      double ema = GetMA(1, g_maPeriod[i]);

      if (crossDir[i] == CROSS_UP)
      {
         if (ND(MathAbs(ema - Ask)) <= i_thresholdFromMa * pt) // ..зазор между ценой покупки и машки, <= i_thresholdFromMa..
         {
            returnSign[i] = true;
            Alert("CROSS_UP");
         }
      }
      if (crossDir[i] == CROSS_DN)
      {
         if (ND(MathAbs(ema - Bid)) <= i_thresholdFromMa * pt) // ..зазор между ценой покупки и машки, <= i_thresholdFromMa..
         {
            returnSign[i] = true;
            Alert("CROSS_DN");
         }
      }
   }
}

È corretto? O dovrebbe essere fatto in modo diverso?

L'arraycrossDir[] memorizza valori sull'esistenza di un crossover. Se c'è, controlla lo scarto tra il prezzo di acquisto o di vendita corrente e il valore della maschera. Per qualche motivo, la condizione non è affatto soddisfatta.

Ecco di cosa ho bisogno:

rotolamento indietro

Dopo che un qualsiasi braccialetto attraversa 365, e non appena il prezzo torna al braccialetto corrispondente che ha attraversato 365, compra. COME POSSO RILASCIARE QUESTO?

 

Disegna una specie di diagramma logico di ciò che vuoi. Per te stesso.

Un anno consiste in circa 250 battute giornaliere.

 
Nessuno ha implementato questo. Non credo che sia molto complicato. Solo che non ho ancora molta esperienza, non capisco bene come formalizzare questo punto...
 
hoz:
Non l'ha mai fatto nessuno. Non credo che sia molto difficile. Solo che non ho ancora molta esperienza, non capisco bene come formalizzare questo punto...

Potresti farlo in un diagramma di flusso. Si potrebbe fare qualcos'altro, ma in modo molto approfondito e senza ambiguità. Così non potrò prenderti a calci per l'incoerenza dell'idea con la sua descrizione.

Non lo farò.