neonobblu: Bitte, beraten Sie mich. Ich habe mich mit dem Signal verbunden und kopiere seine offenen Aufträge. Kann ich das Volumen der gehandelten Lose ändern? Wie kann ich das Auftragsvolumen ändern?
Hören Sie, auf der Vier scheine ich nicht durchzukommen...
Ich arbeite mit Arrays - ich muss die Tick-Ankunftszeit in das Array schreiben - zum Beispiel, ich schreibe ein Gebot. Auf jede Zecke. Ich mache alles nach Karten, wofür ich Artyom Trishkin dankbar bin. Nicht alles funktioniert. Kämpfte den zweiten Tag lang. Drucke
Ich sehe, dass in init Variable SIZE ist 0, so was ist die Größe des Arrays dann? Dann wiederum ist SIZE beim Start auch 0 ... Was steht in dem Protokoll?
Artyom Trishkin: Wie ich sehe, hat die Variable SIZE in init den Wert 0. Wie groß ist dann das Array? Dann wiederum ist SIZE beim Start auch 0 ... Was steht in dem Protokoll?
Artyom Trishkin: Nun, ich habe angedeutet, dass SIZE zuerst erhöht werden muss, damit es nicht Null ist, und erst dann die Größe des Arrays geändert werden kann.
:-)
Danke.
Es funktioniert - verwenden Sie es, wenn Sie es brauchen.
//---------------------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);
}
Es funktioniert - verwenden Sie es, wenn Sie es brauchen.
Was ich nicht verstehe: SIZE ist Null, warum sollte ich also zuerst die Größe des Arrays ändern und dann SIZE erhöhen? Was für ein Chaos...
Ich habe einmal ein Array mit Ticks für einen Ticks Expert Advisor gefüllt, das die Intensität und den Bereich der Ticks definiert. Ich habe Stücke für Beispiele ausgeschnitten:
//+------------------------------------------------------------------+//| 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);
}
//---
}
//+------------------------------------------------------------------+
Die folgende Funktion organisiert die Arbeit mit dem gewünschten Symbol, das in der Symbolvariablen gespeichert ist. Wenn Sie mit einem anderen Symbol arbeiten müssen, schreiben Sie es dorthin. Die Funktion FillArrays() füllt nur Arrays.
//+------------------------------------------------------------------+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);
}
//+------------------------------------------------------------------+
Ich musste die Arrays auf diese Weise mit Ticks füllen:
//+------------------------------------------------------------------+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;
}
//+------------------------------------------------------------------+
Ich verstehe das nicht - die Größe ist Null, warum also erst die Größe des Arrays ändern und dann die Größe erhöhen? Was für ein Chaos...
Ich habe einmal ein Array mit Ticks für einen Tick-Advisor gefüllt, der die Intensität und Ausbreitung von Ticks bestimmt. Ich habe Stücke für Beispiele ausgeschnitten:
Die folgende Funktion organisiert die Arbeit mit dem gewünschten Symbol, das in der Symbolvariablen gespeichert ist. Wenn Sie mit einem anderen Symbol arbeiten müssen, schreiben Sie es dorthin. Die Funktion FillArrays() füllt nur Arrays.
Ich musste die Arrays auf diese Weise mit Ticks füllen:
Ich brauche eine durchschnittliche Rate von 1 Tick/in 1 Sekunde in n - Ticks. D.h. n-Ticks werden in k-Sekunden empfangen, k/n werden in Ticks pro Sekunde empfangen. Diese Geschwindigkeit muss bei jedem ankommenden Tick gemessen werden. Sie ändert sich mit jedem weiteren Häkchen.
Bitte, beraten Sie mich. Ich habe mich mit dem Signal verbunden und kopiere seine offenen Aufträge. Kann ich das Volumen der gehandelten Lose ändern? Wie kann ich das Auftragsvolumen ändern?
Auf dem Konto des Anbieters werden alle Geschäfte mit einem Volumen von 0,1 Lot ausgeführt. Ich möchte, dass diese Geschäfte mit einem größeren Volumen, z.B. 0,3 Lots, auf mich übertragen werden. Kann ich die Lautstärke manuell erhöhen?
Kann ich Regeln erstellen, um die Geschäfte des Anbieters auf die des Teilnehmers zu übertragen?
Hören Sie, auf der Vier scheine ich nicht durchzukommen...
Ich arbeite mit Arrays - ich muss die Tick-Ankunftszeit in das Array schreiben - zum Beispiel, ich schreibe ein Gebot. Auf jede Zecke. Ich mache alles nach Karten, wofür ich Artyom Trishkin dankbar bin. Nicht alles funktioniert. Kämpfte den zweiten Tag lang. Drucke
Nullen.
https://www.mql5.com/ru/forum/145455/page913#1017464
Ich danke Ihnen.
Wie ich sehe, hat die Variable SIZE in init den Wert 0. Wie groß ist dann das Array? Dann wiederum ist SIZE beim Start auch 0 ... Was steht in dem Protokoll?
Und Nullen sind es auch... Ich verstehe gar nichts...
Auf dem Konto des Anbieters werden alle Geschäfte mit einem Volumen von 0,1 Lot ausgeführt. Ich möchte, dass diese Geschäfte mit einem größeren Volumen, z.B. 0,3 Lots, auf mich übertragen werden. Kann ich mein Volumen selbst erhöhen?
Kann ich meine eigenen Regeln erstellen, um Trades vom Symbol des Providers auf das Symbol des Abonnenten zu kopieren?
Und Nullen sind es auch... Ich verstehe gar nichts...
Nun, ich habe angedeutet, dass SIZE zuerst erhöht werden muss, damit es nicht Null ist, und erst dann die Größe des Arrays geändert werden kann.
:-)
Danke.
Es funktioniert - verwenden Sie es, wenn Sie es brauchen.
:-)
Spc.
Es funktioniert - verwenden Sie es, wenn Sie es brauchen.
Was ich nicht verstehe: SIZE ist Null, warum sollte ich also zuerst die Größe des Arrays ändern und dann SIZE erhöhen? Was für ein Chaos...
Ich habe einmal ein Array mit Ticks für einen Ticks Expert Advisor gefüllt, das die Intensität und den Bereich der Ticks definiert. Ich habe Stücke für Beispiele ausgeschnitten:
Die folgende Funktion organisiert die Arbeit mit dem gewünschten Symbol, das in der Symbolvariablen gespeichert ist. Wenn Sie mit einem anderen Symbol arbeiten müssen, schreiben Sie es dorthin. Die Funktion FillArrays() füllt nur Arrays.
Ich musste die Arrays auf diese Weise mit Ticks füllen:
Ich verstehe das nicht - die Größe ist Null, warum also erst die Größe des Arrays ändern und dann die Größe erhöhen? Was für ein Chaos...
Ich habe einmal ein Array mit Ticks für einen Tick-Advisor gefüllt, der die Intensität und Ausbreitung von Ticks bestimmt. Ich habe Stücke für Beispiele ausgeschnitten:
Die folgende Funktion organisiert die Arbeit mit dem gewünschten Symbol, das in der Symbolvariablen gespeichert ist. Wenn Sie mit einem anderen Symbol arbeiten müssen, schreiben Sie es dorthin. Die Funktion FillArrays() füllt nur Arrays.
Ich musste die Arrays auf diese Weise mit Ticks füllen:
Ich brauche eine durchschnittliche Rate von 1 Tick/in 1 Sekunde in n - Ticks. D.h. n-Ticks werden in k-Sekunden empfangen, k/n werden in Ticks pro Sekunde empfangen. Diese Geschwindigkeit muss bei jedem ankommenden Tick gemessen werden. Sie ändert sich mit jedem weiteren Häkchen.
Können Sie mir sagen, ob es eine Uhr in mt4 gibt? Vorzugsweise mit einem Sekundenzeiger.
oder vielleicht gibt es einen Expert Advisor, der die Zeit irgendwo in der unteren Zeile des Terminals anzeigt