Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
//| 9.1.4.5 OrderDelete.mq4 |
//| Copyright 2016, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+1
void OnStart()
{
string Symb=Symbol(); //Финансовый инструмент
double Dist=1000000.0; //Предустановка
double Price;
int Limit_Stop=-1; // Пока отложенных нет
int Tip;
double Win_Price=WindowPriceOnDropped(); //Здесь брошен скрипт
//-------------------------------------------------------------------+2
for(int i=1; i<=OrdersTotal(); i++) // Цикл выбора ордеров
{
if(OrderSelect(i-1, SELECT_BY_POS)==true) //Eсли ордер выбран
{
//------------------------------------------------------------------+3
if(OrderSymbol()!=Symb) continue //не ваш фин. инструмент
int Tip=OrderType(); //Тип ордера
if(Tip<2) continue //Рыночный ордер
//------------------------------------------------------------+4
double Price=OrderOpenPrice(); //Цена откр. отлож. ордера
if(NormalizeDouble(MathAbs(Price-Win_Price),Digits)<
NormalizeDouble(Dist,Digits))
{
Dist=MathAbs(Price-Win_Price); // Новое значение
Limit_Stop=Tip; //Есть отложенный ордер
int Ticket=OrderTicket(); // номер ордера
}
}
//+---------------------------------------------------------------+5
switch(Limit_Stop)
{
case 2: string Texst="BuyLimint ";
break;
case 3: Texst="SellLimint ";
break;
case 4 Texst="BuyStop ";
break;
case 5 Texst="SellStop ";
break;
}
//------------------------------------------------------------------+6
//ЦИКЛ ЗАКРЫТИЯ ОРДЕРА
//--------------------------------------------------------------------
while(true) // цикл закрытия ордера
{
if(Limit_Stop==-1) //если отложенных нет
{
Alert("по ",Symb,"отложенных ордеров"); //если отложенных нет
break;
}
//-----------------------------------------------------------------+7
Alert("Попытка удалить ","",Ticket,"ожидание ответа..");
bool Ans=OrderDelete(Ticket); //Удаление ордера
//---------------------------------------------------------------------
if(Ans==true)
{
Alert("Удалён ордер ",Text,"",Ticket);
break;
}
int Error=GetLastError();
switch(Error)
{
case 4:Alert("Торговый сервер занят. Пробуем ещё раз..");
Sleep(3000); //Обновим данные
continue; //На следующую итерацию
case 137:Alert("Брокер занят. Пробуем ещё раз...");
Sleep(3000);
continue;
case 146:Alert("Подсистема торговли занята. Пробуем ещё раз...");
Sleep(500);
continue; // На следующую итерацию
}
switch(Error) //Критические ошибки
{
case 2:Alert("Oбщая ошибка.");
break; //Выход из switch
case 64:Alert("Счёт заблокирован.");
break; //Выход из switch
case 133:Alert("Торговля заблакирована.");
break;
case 139:Alert(" Ордер заблакирован и уже обрабатывается.");
break;
case 145:Alert("Модификация запрещена.Ордер слишком близок к рынку");
break;
default:Alert("Возникла ошибка.",Error); //Другие варианты //Выход из switch
}
break;
}
//---------------------------------------------------------------------+
Alert("Скрипт законччил работу-----------------------.");
return;
}
Tenho dois erros nos colchetes do início. parece que falta um colchete no loop, coloquei 11 erros no loop, milagre!!!!
Tenho dois erros nos parênteses do onstart. parece que falta um parênteses do for loop, coloquei 11 erros, milagre!!!!
Páginas 25, 27, - falta ponto-e-vírgula.
Páginas 44, 48, 50, 69, - Texst, o compilador não entende o que é, 'Texto' não é um identificador declarado = deve ser tratado.
Páginas 48, 50, - operando esperado = muito provavelmente falta um cólon.
Página 64 - Bilhete = identificador não declarado.
E assim por diante, resolva seus erros.
Estou apenas colando o código como deveria ser, mas não o vejo.
você tem que digitar algo como
***
falha no fórum
Por que você está pulando o último pedido - é essa a intenção?
{
if(OrderSelect(i-1, SELECT_BY_POS)==true) //Eсли ордер выбран
{