Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 401

 
vadynik:


Я наверно не совсем точно задал вопрос, я имею в виду увидит ли функция магик который задан в глобальной переменной

конечно увидит.

глобальные переменные на то и глобальные, что видны глобально.

что тут неясного?

----

но по правилам хорошего тона - передавать в функцию желательно все параметры, котроые сделают её более независимой от среды вызова.

это делать для того, чтоб имена переменных внутри функции абстрагировать от имен переменных глобальных. и не привязываться к ним

 
Если возникают такие вопросы у меня я на фрешевском форуме у программистов спрашиваю и получаю ответ,конечно тут тяжело из всех советов выбрать один единственный правильный.
 

sergeev:

yan720:


Подскажите, пожалуйста, функция AccountEquity() делает запрос к терминалу или к брокеру?

к терминалу

Спасибо. Выходит, эта информация передаётся на терминал с каждым пакетом...

А где можно посмотреть, какие функции обращаются к брокеру, а какие к терминалу? Или, может быть, есть перечень данных (переменных), которые передаются от брокера на терминал постоянно, и/или тех, которые нужно получать по отдельному запросу?

 
//|+-------------------------------------------------------------------------------------------------------+
int Accounting_Orders()
{
int Counter_Orders = 0;
//|+-------------------------------------------------------------------------------------------------------+
ArrayCopy (Massif_Old_Orders, Massif_New_Orders);
Counter_Orders = 0;
ArrayInitialize (Massif_New_Orders,0);
ArrayInitialize (Massif_All_Orders,0);
//|+-------------------------------------------------------------------------------------------------------+
for(int q = 0; q < OrdersTotal(); q++)
{
if( (OrderSelect(q,SELECT_BY_POS)==true) && (OrderSymbol() == Symbol()) )
{
Counter_Orders++;
Massif_New_Orders[Counter_Orders][1] = OrderOpenPrice();
Massif_New_Orders[Counter_Orders][2] = OrderStopLoss();
Massif_New_Orders[Counter_Orders][3] = OrderTakeProfit();
Massif_New_Orders[Counter_Orders][4] = OrderTicket();
Massif_New_Orders[Counter_Orders][5] = OrderLots();
Massif_All_Orders[OrderType()]++;
Massif_New_Orders[Counter_Orders][6] = OrderType();
Massif_New_Orders[Counter_Orders][7] = OrderMagicNumber();
//|+-------------------------------------------------------------------------------------------------------+
if ( OrderComment() == "" )
{
Massif_New_Orders[Counter_Orders][8] = Order_False;   
}
else
{
Massif_New_Orders[Counter_Orders][8] = Order_True;
}
//|+-------------------------------------------------------------------------------------------------------+
Massif_New_Order[0][0] = Counter_Orders;
//|+-------------------------------------------------------------------------------------------------------+
return;
  }
//|+-------------------------------------------------------------------------------------------------------+
Как пользоваться функцией учета ордеров, а именно составляющими ее массивами?

Вариант 1
Я предполагаю, что надо вставлять определенные массивы в идентифицированные места кода.
Например:
OrderSend(Massif_New_Orders[Counter_Orders][4], // Уникальный номер 1.
Massif_New_Orders[Counter_Orders][6],           // Тип .
Massif_New_Orders[Counter_Orders][5],           // Кол - во лотов, при торге.
Massif_New_Orders[Counter_Orders][1],           // Тип части бара, на котором происходит открытие позиции.
10,                                             // Допустимое проскальзование.
Massif_New_Orders[Counter_Orders][2],           // Остановка потерь.
Massif_New_Orders[Counter_Orders][3],           // Принятие прибыли. 
Massif_New_Orders[Counter_Orders][7]);          // Уникальный номер 2.
Тогда мой разум порождает еще один вопрос:

- Стоит ли вообще использовать массивы? -.
Понимаю, что массивы используются для однотипных переменных, но в функции учета ордеров "не пахнет" однотипными переменными.

Вариант 2
Думаю, функция уже назначенного массива вызывается в случае необходимости использования сохраненных данных о ордерах (ордере).
Например:

if(Old_Sistem = 12475)                         //Если расчет объема торга надо вести по объему торга предыдущих ордеров,
{                                              //то 
O_Lots = Massif_New_Orders[Counter_Orders][5]; //вызывается значение лота предыдущего ордера из накопленной информации о ордерах.
}                                              //Конец.
 
yan720:



Спасибо. Выходит, эта информация передаётся на терминал с каждым пакетом...

А где можно посмотреть, какие функции обращаются к брокеру, а какие к терминалу? Или, может быть, есть перечень данных (переменных), которые передаются от брокера на терминал постоянно, и/или тех, которые нужно получать по отдельному запросу?

Торговые функции. Только они отсылают запрос конкретно на торговый сервер и получают ответ от него.
 
Link_x:
Как пользоваться функцией учета ордеров, а именно составляющими ее массивами?

Вариант 1
Я предполагаю, что надо вставлять определенные массивы в идентифицированные места кода.
Например:
Тогда мой разум порождает еще один вопрос:

- Стоит ли вообще использовать массивы? -.
Понимаю, что массивы используются для однотипных переменных, но в функции учета ордеров "не пахнет" однотипными переменными.

Вариант 2
Думаю, функция уже назначенного массива вызывается в случае необходимости использования сохраненных данных о ордерах (ордере).
Например:

Считаю пустая трата времени. Вся информация о открытых и закрытых ордерах хранится в терминале. Зачем её дублировать ещё в массивах? Важно научиться извлекать её из терминала.
 
yan720:

Спасибо. Выходит, эта информация передаётся на терминал с каждым пакетом...

вот как раз не факт, что Эквити передается постоянно.

большая вероятность, что она расчитывается самим терминалом исходя из ваших открытых позиций.

А где можно посмотреть, какие функции обращаются к брокеру, а какие к терминалу?

нигде. достаточно включить зравый смысл.

 
khorosh:
Считаю пустая трата времени. Вся информация о открытых и закрытых ордерах хранится в терминале. Зачем её дублировать ещё в массивах? Важно научиться извлекать её из терминала.


Такая информация, вероятно, извлекается определенной командой.
Это OrderSend?
 
Link_x:

Такая информация, вероятно, извлекается определенной командой.
Это OrderSend?
Это отправка торгового запроса на сервер.
 
Link_x:

Такая информация, вероятно, извлекается определенной командой.
Это OrderSend?
Почитайте про функции KimIV и поймёте, что большая часть из них предназначена для извлечения той или иной информации о открытых или закрытых ордерах.
Причина обращения: