Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1210

 
MQL_User:

Non pensavo di incontrare un tale problema, perché a prima vista dovrebbe essere una cosa ovvia ridisegnare il grafico dal programma. In questa luce, lo scopo della funzione ChartRedraw() non è chiaro...

Non è per gli indicatori, ma per visualizzare le modifiche apportate alle proprietà degli oggetti grafici.

È necessario inviare un tick all'indicatore - poi l'indicatore sarà ridisegnato. Bene, cioè farà quello che dovrebbe fare sul nuovo tick.

E per inviare un nuovo tick, è necessario o aspettare per esso, che non è un'opzione, o aggiornare il grafico da PCM --> Refresh, che non è anche un'opzione, o utilizzare la funzione ChartSetSymbolPeriod() con tali parametri per il grafico corrente:

ChartSetSymbolPeriod(0,NULL,PERIOD_CURRENT);
Документация по MQL5: Операции с графиками / ChartSetSymbolPeriod
Документация по MQL5: Операции с графиками / ChartSetSymbolPeriod
  • www.mql5.com
Меняет значения символа и периода указанного графика. Функция работает асинхронно, то есть отдает команду и не ждет окончания ее выполнения. Отданная команда поступает в очередь сообщений графика и выполняется только после обработки всех предыдущих команд. Возвращает true в случае удачного помещения команды в очередь графика, иначе false. Чтобы...
 


Salve, aiutatemi, ho scritto uno script che apre un ordine limite ma a prezzo di mercato. Tutto funziona, ho deciso di cambiarlo per mettere un limite sotto/sopra il mercato, niente funziona, anche se il codice di ritorno del server di trading 10009, e GetLastError() restituisce 0. Codice:

void OnStart()
 {MqlTradeRequest request={0};
  MqlTradeResult  result={0};
 double Bid=SymbolInfoDouble(Symbol(),SYMBOL_BID);
 double Ask=SymbolInfoDouble(Symbol(),SYMBOL_ASK);
 int digits=SymbolInfoInteger(_Symbol,SYMBOL_DIGITS);  
 double p=NormalizeDouble(ChartPriceOnDropped(),digits); 
 if( SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE)==10)
 {p=NormalizeDouble(ChartPriceOnDropped()*0.1,digits)/0.1;
 } 
 int V=75;
           if (p<Ask)
            {
             request.action   =TRADE_ACTION_PENDING;                     // тип торговой операции
             request.symbol   =Symbol();                              // символ
             request.volume   =MathFloor(AccountInfoDouble(ACCOUNT_BALANCE)/V/((Ask-p)/
             SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE)*SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE)));  
             if (request.volume>AccountInfoDouble(ACCOUNT_BALANCE)/SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_INITIAL)) 
             { request.volume=MathFloor(AccountInfoDouble(ACCOUNT_BALANCE)/SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_INITIAL));
             }                             
             request.type     =ORDER_TYPE_BUY_LIMIT;                        // тип ордера
             request.price    =Ask;                                    // цена для открытия
             request.deviation=50;                                     // допустимое отклонение от цены
             request.sl      =p;                                      // Stop Loss позиции
             request.tp      =NormalizeDouble(Ask+(Ask-p)*3,digits);    // Take Profit позиции
             request.type_filling=ORDER_FILLING_IOC;
             request.type_time=ORDER_TIME_DAY;
             request.stoplimit=Ask;
             OrderSend(request,result);
            }
se request.price per esempio mette: Ask-Point()*30 non lo imposta, anche la normalizzazione dei prezzi non dà nulla
 
Artem, cosa puoi dire, alla domanda di cui sopra, parere interessante. come esperienza di apprendimento.
 
Artyom Trishkin:

Questo non è per gli indicatori, ma per mostrare le modifiche apportate alle proprietà degli oggetti grafici.

È necessario inviare un tick all'indicatore - poi l'indicatore ridisegnerà. Cioè, farà quello che dovrebbe fare sul nuovo tick.

Per inviare un nuovo tick dovete aspettare, il che non è un'opzione, o aggiornare il grafico usando PKM --> Refresh, anche questo non è un'opzione, o usare ChartSetSymbolPeriod() con questi parametri per il grafico corrente:

Artem, grazie.

Funziona tutto. :)

 
Qualcuno sa come disabilitare la visualizzazione di tutti gli indicatori utilizzati nell'EA sul grafico durante il test visivo?
 
Сергей Таболин:
Qualcuno sa come disabilitare la visualizzazione di tutti gli indicatori utilizzati nell'EA sul grafico durante il test visivo?

TesterHideIndicators(true);

 

Come posso dire se l'indicatore non è pronto per lavorare con un altro timeframe?

La storia non è impaginata (non costruita) per gli intervalli di tempo adiacenti. L'indicatore funziona su M15, ma ho bisogno di guardare H1 (in cima al grafico M15), quando lo cambio - il grafico è vuoto. Quando aggiorno tra un paio di secondi - bellezza, tutti i buffer sono resi.

Come posso fare in modo che l'indicatore controlli la storia su un altro timeframe e trattenere il calcolo finché non appare?

 
Igor Zakharov:

TesterHideIndicators(true);

Grazie mille ))))

 

Non posso ottenere i valori ATP da un altro lasso di tempo:

ATR_handle=iATR(_Symbol,ATR_TF,ATR_Period);
CopyBuffer(ATR_handle,0,time[i],1,ATR);

dal timeframe corrente - funziona. da timeframe precedenti - sempre 0

 

Sui futures, come si crea un contratto continuo per l'analisi tecnica dei grafici?

Motivazione: