Yeni başlayanlardan sorular MQL4 MT4 MetaTrader 4 - sayfa 68
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
//| 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 ;
}
başlangıçta parantez üzerindeki iki hata vurgulandı. for döngüsünde yeterince parantez yok gibi görünüyor, 11 hatayı vurgular, mucizeler !!!
başlangıçta parantez üzerindeki iki hata vurgulandı. for döngüsünde yeterince parantez yok gibi görünüyor, 11 hatayı vurgular, mucizeler !!!
Sayfa 25, 27, - noktalı virgül atlandı.
Sayfa 44, 48, 50, 69, - Textst, derleyici ne olduğunu anlamıyor, 'Metin' bildirilmiş bir tanımlayıcı değil = ele alınması gerekiyor.
Sayfa 48, 50, - işlenen bekleniyor = büyük olasılıkla iki nokta üst üste atlandı.
Sayfa 64 - Bilet = bildirilmemiş tanımlayıcı.
vb. hatalarınızı sıralayın.
Kodu olması gerektiği gibi eklemek istiyorum ve göremediğim bir şey var
eklenen koddan sonra şöyle bir şey yazmanız gerekir
***
forum hatası
Tasarım gereği son siparişi neden atlıyorsunuz?
{
if ( OrderSelect ( i- 1 , SELECT_BY_POS )== true ) //Eсли ордер выбран
{