ПОДСКАЖИТЕ ,КТО ЗНАЕТ... - страница 2

 
jartmailru >>:

:)

 

Помогите. Первая моя программа. Нужно выставить два ордера, если нет таких же. После запуска прога выставляет много ордеров - пока не остановишь её. ПЛИИЗ..., подскажите где ошибка.

//--------------------------------------------------------------- 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 --

 
увы.. не катит этот вариант.....с перебором минуток.. необходимо получать инфу внутри цикла
 
sllawa3 писал(а) >>
увы.. не катит этот вариант.....с перебором минуток.. необходимо получать инфу внутри цикла

В смысле? Напишите функцию.

К тому же необязательно перебирать все минутки постоянно.

 

внутри цикла ордер селект

if( OrderType() == OP_BUY) ...........и т.д......

 
sllawa3 >>:
увы.. не катит этот вариант.....с перебором минуток.. необходимо получать инфу внутри цикла

Не могу понять почему дело в минутах.

 

цикл внутри цикла дает сбои на этих сборках, даже если вызывать его из другой функции

 
просто необходимо сделать закрытие ордера при просадке от максимального профита на 30% ( или любой другой заданный коэф.)
 
sllawa3 >>:

внутри цикла ордер селект

if( OrderType() == OP_BUY) ...........и т.д......

Мне нужно что-бы ордера не выставлялись вне зависимости какие ордера есть: отложенные или открытые.

 
xrust >>:

цикл внутри цикла дает сбои на этих сборках, даже если вызывать его из другой функции

Как тогда изменить программу что-бы открылись два ордера, если они уже открыты, то ждать когда какой нибудь закроется и тогда открыть.

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