[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 909

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

Помогите пожалуйста. Есть эксперт в учебнике, но он работает только с одним рыночным ордером,а я хочу сделать чтобы работал с несколькими, просто торговля будет вестить на разных фин.инструментах, на них будут одновременно открываться и закрываться ордера, одновременно. Ниже скинул пример, но тормознул, на том, где для учета ордеров присваивается значения первого ордера переменным. Как для второго ордера(с другой пары валют) сделать тоже самое? и если я захочу чтобы по этим парам валют работало не только по одному ордеру, а к примеру за день индюк показал несколько открытий, но закрытия еще не произошли, и на этих двух парах валют открыто попарно 3 или 5 ордеров. Как реализовать подскажите.


// Учёт ордеров
Symb1=SymbolN1(внешняя переменная); // Название фин.инстр.
Symb2=SymbolN2(внешняя переменная); // Название фин.инстр.
Total=0; // Количество ордеров
for(int i=1; i<=OrdersTotal(); i++) // Цикл перебора ордер
{
if (OrderSelect(i-1,SELECT_BY_POS)==true) // Если есть следующий
{ // Анализ ордеров:
if (OrderSymbol()!=Symb1 $$ OrderSymbol()!=Symb2)continue; // Не наш фин. инструм
if (OrderType()>1) // Попался отложенный
{
Alert("Обнаружен отложенный ордер. Эксперт не работает.");
return; // Выход из start()
}
Total++; // Счётчик рыночн. орд
if (Total>2) // Не более двух орд
{
Alert("больше 2 рыночных ордеров. Эксперт не работает.");
return; // Выход из start()
}
Ниже идет присваивание переменым значения ордера, чтобы потом с ним что то сделать и при второй итерации, т.к ордера будет 2( второй на другой паре валют) они поменяют значения на второй ордер, но мне надо чтобы зафиксировалась инфа по первому и по второму.
Ticket=OrderTicket(); // Номер выбранн. орд.
Tip =OrderType(); // Тип выбранного орд.
Price =OrderOpenPrice(); // Цена выбранн. орд.
SL =OrderStopLoss(); // SL выбранного орд.
TP =OrderTakeProfit(); // TP выбранного орд.
Lot =OrderLots(); // Количество лотов
Может просто для второго ордера зависти такие же переменные только с префиксом 1?
Ticket1=OrderTicket(); // Номер выбранн. орд.
Tip1 =OrderType(); // Тип выбранного орд.
Price1 =OrderOpenPrice(); // Цена выбранн. орд.
SL1 =OrderStopLoss(); // SL выбранного орд.
TP1 =OrderTakeProfit(); // TP выбранного орд.
Lot1 =OrderLots(); // Количество лотов
}
}

 
artmedia70:

ERR_LONGS_NOT_ALLOWED 4110 Длинные позиции не разрешены. Необходимо проверить свойства эксперта.

ERR_SHORTS_NOT_ALLOWED 4111 Короткие позиции не разрешены. Необходимо проверить свойства эксперта.


что значит длинные и короткие позиции, это как? как они выгледят?
 
artmedia70:

Примерно верно мыслите.

Это в подавляющем большинстве своём переменная типа bool.

А она может иметь только два значения:

true (истина) и false (ложь)

Таким образом, если флаг установлен (значение true), то значит ордер есть, если флаг сброшен (значение false), то ордера нет.

Совершенно необязательно чтобы значения true и false говорили вам о наличии/отсутствии.

Иногда значение false говорит о наличии какого-либо условия, а true - об его отсутствии.

Всё зависит от логики программы и тех критериев, которые проверяет программист.

В любом случае, если вы сами эти флаги устанавливаете, вы можете сами и назначить какое именно значение флага (истина или ложь)

будут соответствовать тому или иному состоянию данных.

В то же время, есть стандартные функции, которые возвращают вам true или false в зависимости от результата исполнения данной функции.

Эти значения вы можете посмотреть в справочнике по данной функции.

Артём, спасибо.
 
gheka:

что значит длинные и короткие позиции, это как? как они выгледят?

длинные = Long = Buy

короткие =Short = Sell


 

спасибо

 

Будьте добры, подскажите к кому обратится.Очень нужен скрипт закрывающий ордер только после закрытия бара выше,  или ниже 

указанного уровня, естественно должна быть настройка tf. 

. А ежели таков сущетсвует, дайте ссылку. Заранее благодарен

 

у меня ордера на покупку и продажу открывают по одной цене чуть ли не по 50-100 позиций,

как сделать чтобы у меня открывался только один ордер,если я не ошибаюсь то OrdersTotal()

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

 
gheka:

у меня ордера на покупку и продажу открывают по одной цене чуть ли не по 50-100 позиций,

как сделать чтобы у меня открывался только один ордер,если я не ошибаюсь то OrdersTotal()

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


Так надо было свой код приложить
 
gheka:

у меня ордера на покупку и продажу открывают по одной цене чуть ли не по 50-100 позиций,

как сделать чтобы у меня открывался только один ордер,если я не ошибаюсь то OrdersTotal()

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

OrderSend() срабатывает при каждом тике (я так понимаю). Чтобы снять проблему об'являеш переменную перед функцией start, например int Н=0.

Дальше код:

..........

if ( Н==0)

{

OrderSend(бла-бла-бла);

}

H=1;

И не надо алгебры. А OrdersTotal() для ограничения лучше не использовать.

Причина обращения: