neonobblu: Per favore, consigliatemi. Mi sono collegato al segnale e quindi copio i suoi ordini aperti, posso cambiare il volume dei lotti che negozia. Come posso cambiare il volume dell'ordine?
Lavoro con gli array - ho bisogno di scrivere il tempo di arrivo del tick nell'array - per esempio, scrivo un'offerta. Ad ogni spunta. Faccio tutto secondo i biglietti, per i quali sono grato ad Artyom Trishkin. Non tutto funziona. Combattuto per il secondo giorno. Stampe
Artyom Trishkin: Vedo che in init la variabile SIZE ha un valore di 0, quindi qual è la dimensione dell'array? Poi di nuovo in start SIZE è anche 0 ... Cosa c'è nel registro?
Artyom Trishkin: Beh, ho accennato al fatto che SIZE deve essere prima aumentato per renderlo non nullo, e solo dopo cambiare la dimensione dell'array.
:-)
Grazie.
Funziona - usatelo se ne avete bisogno.
//---------------------externint MaxDrawTicks=100;
externint Num_Aver_of_Ticks=5;
double xBuffer_Time []; // Массив значений динамический// В котором индекс - номер тика, значение - это бид int SIZE=0; // Вспомогательная переменная для массива int tickCounter, tickCounter_Current;
//+------------------------------------------------------------------+int init()
{
//--- устанавливаем размер динамического массиваif(ArrayResize(xBuffer_Time,2000000)<0) {Alert(" Ошибка в изменении размера массива времени поступления тиков "); return(false);}
//--- установим индексацию для буфера как в таймсерии для динамического массива// ArraySetAsSeries(xBuffer_Time,true); //--- Возвращает количество элементов указанного массива. int S=ArraySize(xBuffer_Time);
if (S>=0) Alert("Размер массива: ",S);
elsePrint("Ошибка. Массив не создан ",S);
ArrayInitialize(xBuffer_Time, 0);
return(0);
}
//+------------------------------------------------------------------+int start()
{
//ArrayResize(ValueArr,size);//ValueArr[size-1] = GetValue();//size++; //---------------------------------------- ArrayResize(xBuffer_Time,SIZE);
xBuffer_Time[SIZE-1] = Bid; //NormalizeDouble((iTime (_Symbol,1,0)-_start), 2); if ( SIZE >= 0 && ArraySize(xBuffer_Time) < 2147483647)
{
Alert (" Значение xBuffer_Time[SIZE-1] = ", DoubleToStr(xBuffer_Time[SIZE-1],Digits) );
Alert (" Значение SIZE = ", DoubleToStr(SIZE,2) );
}
SIZE ++;
//--------------------------------------- //------------return(0);
}
Qualcosa che non capisco - SIZE è zero, quindi perché dovrei cambiare la dimensione dell'array prima, e poi aumentare SIZE? Che pasticcio...
Una volta ho fatto un riempimento di array con ticks per un Expert Advisor ticks, che definisce l'intensità e la gamma dei ticks. Ho ritagliato dei pezzi per gli esempi:
//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+voidOnTick()
{
//---//--- Запись ID графика
gv_chart_id_name=Prefix+"_chart_id"; // имя GV терминалаlong chart_id=get.GetChartID(symbol); // id текущего графикаdouble chart_id_double=ToDouble(chart_id); // id в представлении doubleif(chart_id>=0) { // chart_id==0 в тестереif(!GlobalVariableCheck(gv_chart_id_name)) // Если GV-переменная удаленаGlobalVariableSet(gv_chart_id_name,chart_id_double); // создадим опять
}
else graph.Message("Чё-та нету chart_id : Symbol()="+symbol+", chart_id="+IntegerToString(chart_id));
//--- работа с тиками текущего графикаif(SymbolInfoTick(symbol,struct_tick)) {
double tick_bid=struct_tick.bid;
datetime tick_time=struct_tick.time;
WorkOnTick(symbol,tick_bid,tick_time,slowPeriod);
}
//---
}
//+------------------------------------------------------------------+
La funzione qui sotto organizza il lavoro con il simbolo desiderato memorizzato nella variabile simbolo, se avete bisogno di lavorare con un altro simbolo - scrivetelo lì. La funzione FillArrays() riempie solo gli array.
//+------------------------------------------------------------------+void WorkOnTick(string sy, double symbol_bid, datetime symbol_time, int limit) {
long chart_id=get.GetChartID(sy);
int index_symbol=get.PositionsSymbolInList(sy); // позиция символа в спискеdouble pt=SymbolInfoDouble(sy,SYMBOL_POINT);
double pa=SymbolInfoDouble(sy,SYMBOL_ASK);
double pb=SymbolInfoDouble(sy,SYMBOL_BID);
int stoplevel=(int)MarketInfo(sy,MODE_STOPLEVEL);
int dg=(int)SymbolInfoInteger(sy,SYMBOL_DIGITS);
//--- заполним массивы
FillArrays(sy,symbol_bid,symbol_time,table_price,table_time);
//--- расчёт среднего изменения цен тиковdouble avg_change_price=AverageChangePrice(index_symbol,limit,slowPeriod,table_price);
//--- вывод информации на график
wtf(index_symbol,avg_change_price,slowPeriod,table_price,table_time);
return;
Trailing(sy, 50, 3, magic);
}
//+------------------------------------------------------------------+
Avevo bisogno di riempire gli array di tick in questo modo:
//+------------------------------------------------------------------+void FillArrays(string sy, double price, datetime time, double &mass_price[][], datetime &mass_time[][]) {
//--- сместим данные в массивах влевоint index_symbol=get.PositionsSymbolInList(sy); // позиция символа в спискеfor(int i=99; i>0; i--) { // сместим данные в массивах влево
mass_price[index_symbol][i]=mass_price[index_symbol][i-1];
mass_time[index_symbol][i]=mass_time[index_symbol][i-1];
}
//--- запишем товый тик в массивы
mass_price[index_symbol][0]=price;
mass_time[index_symbol][0]=time;
}
//+------------------------------------------------------------------+
Non capisco - la SIZE è zero, quindi perché cambiare la dimensione dell'array prima e poi aumentare la SIZE? Che pasticcio...
Una volta ho fatto un riempimento di array con tick per un consulente di ticchettio, che determina l'intensità e la diffusione dei tick. Ho ritagliato dei pezzi per gli esempi:
La funzione qui sotto organizza il lavoro con il simbolo desiderato memorizzato nella variabile simbolo, se avete bisogno di lavorare con un altro simbolo - scrivetelo lì. La funzione FillArrays() riempie solo gli array.
Avevo bisogno di riempire gli array di tick in questo modo:
Ho bisogno di un tasso medio di 1 tick/in 1 sec in n - tick. Cioè n-tick sono ricevuti in k-secondi, k/n sono ricevuti in tick al secondo. Questa velocità deve essere misurata su ogni tick in arrivo. Cambierà ad ogni spunta successiva.
Per favore, consigliatemi. Mi sono collegato al segnale e quindi copio i suoi ordini aperti, posso cambiare il volume dei lotti che negozia. Come posso cambiare il volume dell'ordine?
Nel conto del fornitore tutte le operazioni vengono eseguite con un volume di 0,1 lotti. Voglio che questi trade mi vengano copiati con un volume maggiore, per esempio 0,3 lotti. Posso aumentare il volume manualmente?
Posso creare delle regole per copiare le transazioni del fornitore in quelle dell'abbonato?
Guarda, sul quattro, non riesco a passare...
Lavoro con gli array - ho bisogno di scrivere il tempo di arrivo del tick nell'array - per esempio, scrivo un'offerta. Ad ogni spunta. Faccio tutto secondo i biglietti, per i quali sono grato ad Artyom Trishkin . Non tutto funziona. Combattuto per il secondo giorno. Stampe
zeri.
https://www.mql5.com/ru/forum/145455/page913#1017464
Grazie.
Vedo che in init la variabile SIZE ha un valore di 0, quindi qual è la dimensione dell'array? Poi di nuovo in start SIZE è anche 0 ... Cosa c'è nel registro?
E anche gli zeri... Non capisco niente...
Nel conto del fornitore tutte le operazioni vengono eseguite con un volume di 0,1 lotti. Voglio che questi trade mi vengano copiati con un volume maggiore, per esempio 0,3 lotti. Posso aumentare il volume da solo?
Posso creare le mie regole per copiare le compravendite dal simbolo del fornitore al simbolo dell'abbonato?
E anche gli zeri... Non capisco niente...
Beh, ho accennato al fatto che SIZE deve essere prima aumentato per renderlo non nullo, e solo dopo cambiare la dimensione dell'array.
:-)
Grazie.
Funziona - usatelo se ne avete bisogno.
:-)
Grazie.
Funziona - usatelo se ne avete bisogno.
Qualcosa che non capisco - SIZE è zero, quindi perché dovrei cambiare la dimensione dell'array prima, e poi aumentare SIZE? Che pasticcio...
Una volta ho fatto un riempimento di array con ticks per un Expert Advisor ticks, che definisce l'intensità e la gamma dei ticks. Ho ritagliato dei pezzi per gli esempi:
La funzione qui sotto organizza il lavoro con il simbolo desiderato memorizzato nella variabile simbolo, se avete bisogno di lavorare con un altro simbolo - scrivetelo lì. La funzione FillArrays() riempie solo gli array.
Avevo bisogno di riempire gli array di tick in questo modo:
Non capisco - la SIZE è zero, quindi perché cambiare la dimensione dell'array prima e poi aumentare la SIZE? Che pasticcio...
Una volta ho fatto un riempimento di array con tick per un consulente di ticchettio, che determina l'intensità e la diffusione dei tick. Ho ritagliato dei pezzi per gli esempi:
La funzione qui sotto organizza il lavoro con il simbolo desiderato memorizzato nella variabile simbolo, se avete bisogno di lavorare con un altro simbolo - scrivetelo lì. La funzione FillArrays() riempie solo gli array.
Avevo bisogno di riempire gli array di tick in questo modo:
Ho bisogno di un tasso medio di 1 tick/in 1 sec in n - tick. Cioè n-tick sono ricevuti in k-secondi, k/n sono ricevuti in tick al secondo. Questa velocità deve essere misurata su ogni tick in arrivo. Cambierà ad ogni spunta successiva.
Puoi dirmi se c'è un orologio in mt4? Preferibilmente con una seconda mano.
o forse c'è un Expert Advisor che mostrerebbe l'ora da qualche parte nella linea inferiore del terminale