Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
:)
Помогите. Первая моя программа. Нужно выставить два ордера, если нет таких же. После запуска прога выставляет много ордеров - пока не остановишь её. ПЛИИЗ..., подскажите где ошибка.
//--------------------------------------------------------------- 1 --
int start() // Спец.функция start
{
int Dist=100; // Заданный TP, SL
double Lot =0.1; // Лоты
string Symb=Symbol(); // Финанс. Инструмент
int x; // Переменная
int H=1000; // Переменная
//--------------------------------------------------------------- 2 --
for(double i=0.001; i<=0.002; i+=0.001) // Цикл открытия ордеров
{double Cena=NormalizeDouble(Ask,3); // Находим необходимую
double Price= NormalizeDouble(Cena+i,5); // цену для ордера
double TP=Price+Dist*Point; // Заявленная цена ТР
double SL=Price-Dist*Point; // Заявленная цена SL
x=2; // Переменная для выставления ордера
//--------------------------------------------------------------- 3 –
Alert("Кол-во ордеров = ", OrdersTotal());
for (int pos=0; pos<=OrdersTotal(); pos++) // цикл перебора всех ордеров
{ if (OrderSelect(pos, SELECT_BY_POS, MODE_TRADES) == true)// выделим ордер
{ double Ord_Price= OrderOpenPrice(); // Цена выбранн. орд.
double Ord_TP = OrderTakeProfit(); // TP выбранного орд.
double Ord_Lot = OrderLots(); // количество лотов
Alert("№=",OrderTicket()," Цена ",Ord_Price,"=",Price," ТР ",Ord_TP,"=",TP);
if(Ord_Price==Price)
{ if (Ord_TP==TP)
{x=5;
Alert("№ = ", OrderTicket(), " х = ",x);
}
}
}
else Print("Ошибка ", GetLastError(), " при выборе ордера номер ", pos);
}
//--------------------------------------------------------------- 4 -
Sleep(H*3); // Ждём 3 секунды
if (x==2)
{ Alert("Торговый приказ отправлен на сервер. Ожидание ответа...");
int ticket1=OrderSend(Symb, OP_BUYSTOP, Lot, Price, 0, SL, TP);
}
}
//--------------------------------------------------------------- 6 --
Alert ("Скрипт закончил работу -----------------------------");
return; // Выход из start()
}
//--------------------------------------------------------------- 7 --
увы.. не катит этот вариант.....с перебором минуток.. необходимо получать инфу внутри цикла
В смысле? Напишите функцию.
К тому же необязательно перебирать все минутки постоянно.
внутри цикла ордер селект
if( OrderType() == OP_BUY) ...........и т.д......
увы.. не катит этот вариант.....с перебором минуток.. необходимо получать инфу внутри цикла
Не могу понять почему дело в минутах.
цикл внутри цикла дает сбои на этих сборках, даже если вызывать его из другой функции
внутри цикла ордер селект
if( OrderType() == OP_BUY) ...........и т.д......
Мне нужно что-бы ордера не выставлялись вне зависимости какие ордера есть: отложенные или открытые.
цикл внутри цикла дает сбои на этих сборках, даже если вызывать его из другой функции
Как тогда изменить программу что-бы открылись два ордера, если они уже открыты, то ждать когда какой нибудь закроется и тогда открыть.