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

 
artmedia70:

E devi essere molto specifico su ciò che vuoi ridisegnare.

Potrebbe essere necessario ricalcolare completamente tutti i buffer degli indicatori.
Dobbiamo sperimentare il comportamento dell'indicatore e la sua risposta ai cambiamenti esterni delle sue variabili interne.

Onestamente, non ho mai provato (no... beh, l'ho certamente fatto, e molte volte ho fatto degli indicatori che rispondono agli eventi e disegnano ciò che è richiesto. Ma all'inizio ho usato un approccio non standard per disegnare i buffer). Fate un indicatore di prova, che disegni qualcosa (anche un paio di punti sullo schermo sulle barre più vicine) e provate a cambiare il suo valore di buffer usando gli eventi. Se cambia - questo è un modo di lavorare con il vostro indicatore, se non cambia - questo è un altro approccio da considerare. Forse devi spostare tutti i calcoli in un timer, o direttamente in OnChartEvent() fare un ciclo di ricalcolo dopo che l'evento desiderato viene rilevato...

In breve - gli esperimenti sono necessari...

Grazie!

 
artmedia70:

Per qualche ragione l'apparizione di un TakeProfit non interrompe la somma. Conta tutti i meno nella storia.
 
Neron_plus34:
Per qualche ragione l'apparizione di un TakeProfit non interrompe la somma. Conta tutti i minus della storia.
Dispiegare l'anello.
 
artmedia70:
Dispiegare l'anello.
Grazie, funziona.
 

Salve... ero solito fare trading presso ForexClub con MT4 che ho scaricato da lì... ho deciso di aprire un altro conto presso InstaForex... ma quando mi connetto ad un altro conto, la schermata delle quotazioni azionarie dice "waiting for update" .... devo scegliere nuovamente"open chart" per aprire la schermata richiesta... ho provato a scaricare MT4 dal produttore, ma poi non posso connettermi ai conti di trading....pis no connection... cosa sto facendo di sbagliato? Per favore aiutatemi ....

 
Forexman77:

Grazie, l'ho fatto!

Come faccio a far ridisegnare l'indicatore dopo aver trascinato la linea?

// Определение LastBar по расположению StopLine на графике
bool fNewStopLine(){
   bool New;
   int StopBar, Error;
   double Shift;
   datetime StopLine;
   if( ObjectFind("StopLine")==0 ){                // Есть стоп-линия
      StopLine=ObjectGet("StopLine",OBJPROP_TIME1);// Время стоп-линии
      StopBar=iBarShift(NULL,0,StopLine);          // Бар стоп-линии
      LastBar=StopBar+1;                           // Бар окончания построения
      if( StopBar<=БарОкончания ){                 //    правее или на последнем баре
         LastBar=БарОкончания;                     // Перенести на нулевой бар
         StopBar=LastBar-1;
         StopLine=Time[StopBar];
         if( !ObjectMove("StopLine",0,StopLine,0) ){
            if( !РежимОтладки ) PlaySound("alert.wav");
            Print("***   StopLine - объект не перемещен, ошибка "+GetLastError());
      }  }
      if( StopLine!=OldStopLine ){                 // Новая стоп-линия
         ReInit();                                 // Повторная инициализация
         ClearScreen();                            // Очистить экран
         Shift=0.01*(WindowPriceMax()-WindowPriceMin())*СдвигИндикатораТиков;
         Error=fArrow("TickIndicator","",0,StopBar // Сформировать индикатор тика
                     ,WindowPriceMin()+Shift,0,0,0,0
                     ,ЗнакИндикатораТиков,ЦветИндикатораТиков,РазмерИндикатораТиков);
         OldStopLine=StopLine;                     // Стоп-линия обработана
         New=true;                                 // Выполнить построение заново
      }
      else{                                        // Нет новой стоп-линии
         New=false;                                // Построение заново не выполнять
   }  }
   else{                                           // Нет стоп-линии
      New=false;                                   // Построение заново не выполнять
      Error=fObjectDelete("TickIndicator");        // Удалить индикатор тика
   }
   return(New);
}
 
tara:

Grazie!
 

Sto affrontando un problema. Sto sviluppando il mio proprio indicatore sulla base di un indicatore, ma ci sono alcune stringhe che non capisco e queste stringhe usano la libreria dll. Se potete dirmi con parole vostre a cosa servono queste linee. Come posso cambiarli senza usare la libreria dll? Ho evidenziato queste righe qui sotto:

#import "user32.dll"
        int  RegisterWindowMessageA (string lpString); 
        int  PostMessageA           (int hWnd,int Msg,int wParam,int lParam);
                
#define  WM_COMMAND                     0x0111
#import

            int MT4InternalMsg;
            int hwnd;
            string sn; 
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- create timer
   EventSetTimer(60);

  if(MT4InternalMsg == 0)  
         {
         MT4InternalMsg = RegisterWindowMessageA("MetaTrader4_Internal_Message"); 
    }       
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- destroy timer
   EventKillTimer();
      
  }

//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
//---
                  hwnd = WindowHandle(Symbol(), 1);
        if(PostMessageA(hwnd, 0x0111, 0x822c, 0) == false)
          {
          hwnd = 0;
          return;
          }
          PostMessageA(hwnd, MT4InternalMsg, 2, 1);    
  }
//+------------------------------------------------------------------+
 
1. Come posso aprire due o più ordini allo stesso tempo?
2. Come faccio a sapere che l'ordine ha chiuso su TP o SL e chiamare qualcosa su questo evento?
3. Quali problemi possono sorgere durante il trading reale con l'Expert Advisor? I miei TP, SL, pending, ecc. non possono essere eseguiti su un server? Cosa faresti in un caso simile? Dove posso memorizzare i miei log commerciali in modo affidabile (in variabili globali, nel terminale, in file, ecc.)?
 
smart_man:
1. Come posso aprire due o più ordini allo stesso tempo?
2. Come posso sapere se un ordine è chiuso da TP o SL, e chiamare qualcosa su questo evento?
3. Quali problemi possono sorgere durante il trading reale con l'Expert Advisor? I miei TP, SL, pending, ecc. non possono essere eseguiti su un server? Cosa faresti in un caso simile? Dove posso memorizzare i miei log commerciali in modo affidabile (in variabili globali, nel terminale, in file, ecc.)?

Qui puoi trovare parte delle risposte: https://www.mql5.com/ru/forum/131859