Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 451

 
//+------------------------------------------- --------------------+
//| bir siparişi silme ve/veya kapatma, hacme göre filtreleme |
//------------------------------------------------ ---------------------
#özellik show_inputs
//------------------------------------------------ --------------------
harici çift MinLot = 0.01; // silinecek/kapatılacak minimum lot
harici çift MaxLot = 0.1; //sildiğimiz/kapattığımız maksimum lot
extern bool Buy = false; // satın alma siparişlerinin yönünü sil/kapat
extern bool Sat = yanlış; // satış emirlerinin yönünü sil/kapat
extern bool beklemede = true; // bekleyen siparişleri sil
harici bool market = true ; //pazar pozisyonlarını kapat
dış int kayma = 2; //piyasa pozisyonlarını kapatırken fiyat kayması
//------------------------------------------------ --------------------
int başlangıç()
{
çift SL,TP;
string txt=StringConcatenate("Siparişi silmek veya kapatmak için komut dosyası, start ",TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS));
Yeniler();

bool hatası=doğru;
int Hata,OT,Bilet,nn;
çift OOP,OL;
süre(doğru)
{
for (int j = OrdersTotal()-1; j >= 0; j--)
{
if (OrderSelect(j, SELECT_BY_POS))
{
if ((OrderSymbol() == Symbol()))
{
OL = OrderLots();
(OL<MinLot || OL>MaxLot) devam ederse;
OT = SiparişTürü();
(!market && OT<2) devam ederse;
(!pending && OT>1) devam ederse;
Bilet = OrderTicket();
OOP = OrderOpenPrice();
eğer (OT==OP_SATIN AL)
{
error=OrderClose(Ticket,OrderLots(),NormalizeDouble(Teklif,Rakamlar),slippage,Red);
if (hata) txt = StringConcatenate(txt,"\nSatın alma siparişi kapatıldı ",Ticket);
else txt = StringConcatenate(txt,"\nKapanış Hatası ",GetLastError());
}
eğer (OT==OP_SAT)
{
error=OrderClose(Ticket,OrderLots(),NormalizeDouble(Sor,Rakamlar),kayma,Mavi);
if (hata) txt = StringConcatenate(txt,"\nSAT emri kapatıldı ",Ticket);
else txt = StringConcatenate(txt,"\nError ",GetLastError()," kapanış ",Ticket);
}
eğer (OT>1)
{
error=SiparişSil(Bilet);
if (hata) txt = StringConcatenate(txt,"\nOrder ",StrOrdersType(OT)," ",Ticket);
else txt = StringConcatenate(txt,"\nError ",GetLastError()," delete ",StrOrdersType(OT)," ",Ticket);
}
eğer (!hata)
{
Hata = GetLastError();
(Hata<2) devam ederse;
eğer (Hata==129)
{ Comment("Yanlış fiyat",TimeToStr(TimeCurrent(),TIME_SANİYE));
Uyku(5000);
Yeniler();
devam etmek;
}
if (Hata==146)
{
j++;
if (IsTradeContextBusy()) Sleep(2000);
devam etmek;
}
Comment("Hata",Hata," kapanış sırası N ",OrderTicket(),
" ",TimeToStr(TimeCurrent(),TIME_SANİYE));
}
}
}
}
intn=0;
için (j = 0; j < OrdersTotal(); j++)
{
if (OrderSelect(j, SELECT_BY_POS))
{
if (OrderSymbol() == Symbol())
{
OL = OrderLots();
(OL<MinLot || OL>MaxLot) devam ederse;
OT = SiparişTürü();
(!market && OT<2) devam ederse;
(!pending && OT>1) devam ederse;
n++;
}
}
}
eğer (n==0) kırılırsa;
nn++;
if (nn>10) {Comment("Tüm anlaşmalar kapatılamadı, hala ",n);break;}
uyku(1000);
Yeniler();
}
Comment(txt,"\nKomut dosyası işini bitirdi ",TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS));
dönüş(0);
}
//------------------------------------------------ --------------------
string StrOrdersType(int t)
{
if (t==OP_BUY) return("Satın Al");
if (t==OP_SEL) return("Sat");
if (t==OP_BUYLIMIT) return("BuyLimit");
if (t==OP_SELLLIMIT) return("SellLimit");
if (t==OP_BUYSTOP) return("BuyStop");
if (t==OP_SELLSTOP) return("SellStop");
}

//------------------------------------------------ --------------------

Bu komut dosyası, lotun büyüklüğüne göre yerleştirilecek çifti kapatır. lot büyüklüğüne göre tüm çiftler için tüm açık siparişleri kapatmak için ne eklemeli veya değiştirmeli. gecikmeler beni ilgilendirmiyor

 
Vitek, kodu girmek için SRC düğmesini kullan! Kim okunamayan bir ayak örtüsüne dalmaya ihtiyaç duyar ?!
 
pu6ka :
Evet, Satış fiyatları görünmüyor ama oradalar :)
Görselleştiricide duraklatabilir ve grafik özelliklerinde "Sorma satırını göster"i seçebilir ve teste devam edebilirsiniz. Ve nominal olarak, MT4'teki fiyat tablosu Bid'e göre oluşturulmuştur.

Testin kalitesini ne belirler ve onu en üst düzeye nasıl çıkarabilirim?
 
Zver4991 :

Testin kalitesini ne belirler ve onu en üst düzeye nasıl çıkarabilirim?
Dürüst olmak gerekirse, bilmiyorum. İhtiyacınız olana kadar siteyi arayın
 

Sevgili uzmanlar.
Lütfen döngüleri kullanmadan bekleyen siparişlerden oluşan bir ızgarayı nasıl açacağımı söyler misiniz?
Zor değilse, bu tür kodun en azından yaklaşık bir örneğini gösterin,
sonraki her ızgara siparişi için adım ve parti boyutunu değiştirme yeteneği ile.

 
Forexman77 :
çizgiler koydum

int Bilet yerine; hatalar çıkıyor:

'=' - dizi için sol kare parantez bekleniyor('=' - dizi için sol kare parantez bekleniyor)

'>' - dizi için beklenen sol kare parantez

'>' - beklenmeyen belirteç('>' - Beklenmeyen belirteç)

')' - atama bekleniyor(')' - atama bekleniyor )

'devam' - sadece bazı döngülerde kullanılan 'ara' veya 'devam et'

ve daha fazlası.


Bu, Ticket'in hala eski sürümde bir yerlerde kullanıldığı anlamına gelir. Kodu temizlemem gerekiyor...
 
1mql :

Sevgili uzmanlar.
Lütfen döngüleri kullanmadan bekleyen siparişlerden oluşan bir ızgarayı nasıl açacağımı söyler misiniz?
Zor değilse, bu tür bir kodun en azından yaklaşık bir örneğini gösterin,
sonraki her ızgara siparişi için adım ve parti boyutunu değiştirme yeteneği ile.

Evet, aslında, döngüdekiyle aynı ... sadece döngü olmadan. Bir döngüde nasıl açtığınızı gösteriyorsunuz ve bize neden döngüleri kullanmak istemediğinizi açıklıyorsunuz, aksi takdirde gerçekte ne elde etmek istediğiniz net değil .
 
borilunad :
Vitek, kodu yapıştırmak için SRC düğmesini kullan! Kim okunamayan bir ayak örtüsüne dalmaya ihtiyaç duyar ?!

 //+------------------------------------------------------------------+
//| удаления и/или закрытие ордера, с фильтрацией его по объему |
//---------------------------------------------------------------------
#property show_inputs
//--------------------------------------------------------------------
extern double MinLot = 0.01 ; //минимальный лот который удаляем/закываем
extern double MaxLot = 0.1 ; //максимальный лот который удаляем/закываем
extern bool Buy = false ; //удалять/закрывать направление buy ордеров
extern bool Sell = false ; //удалять/закрывать направление sell ордеров
extern bool pending = true ; //удалить отложенные ордера
extern bool market = true ; //закрыть рыночные позиции
extern int slippage = 2 ; //проскальзывание цены при закрытии рыночных позиций
//--------------------------------------------------------------------
int start()
{
double SL,TP;
string txt= StringConcatenate ( "Скрипт удаления или закрытие ордера, старт " , TimeToStr ( TimeCurrent (), TIME_DATE | TIME_SECONDS ));
RefreshRates ();

bool error= true ;
int Error,OT,Ticket,nn;
double OOP,OL;
while ( true )
{
for ( int j = OrdersTotal ()- 1 ; j >= 0 ; j--)
{
if ( OrderSelect (j, SELECT_BY_POS ))
{
if (( OrderSymbol () == Symbol ()))
{
OL = OrderLots ();
if (OL<MinLot || OL>MaxLot) continue ;
OT = OrderType ();
if (!market && OT< 2 ) continue ;
if (!pending && OT> 1 ) continue ;
Ticket = OrderTicket ();
OOP = OrderOpenPrice ();
if (OT== OP_BUY )
{
error= OrderClose (Ticket, OrderLots (), NormalizeDouble ( Bid , Digits ),slippage,Red);
if (error) txt = StringConcatenate (txt, "\nЗакрыт ордер BUY " ,Ticket);
else txt = StringConcatenate (txt, "\nОшибка закрытия " ,GetLastError());
}
if (OT== OP_SELL )
{
error= OrderClose (Ticket, OrderLots (), NormalizeDouble ( Ask , Digits ),slippage,Blue);
if (error) txt = StringConcatenate (txt, "\nЗакрыт ордер SELL " ,Ticket);
else txt = StringConcatenate (txt, "\nОшибка " ,GetLastError(), " закрытия " ,Ticket);
}
if (OT> 1 )
{
error= OrderDelete (Ticket);
if (error) txt = StringConcatenate (txt, "\nУдален ордер " ,StrOrdersType(OT), " " ,Ticket);
else txt = StringConcatenate (txt, "\nОшибка " ,GetLastError(), " удаления " ,StrOrdersType(OT), " " ,Ticket);
}
if (!error)
{
Error = GetLastError();
if (Error< 2 ) continue ;
if (Error== 129 )
{ Comment ( "Неправильная цена " , TimeToStr ( TimeCurrent (), TIME_SECONDS ));
Sleep ( 5000 );
RefreshRates ();
continue ;
}
if (Error== 146 )
{
j++;
if ( IsTradeContextBusy ()) Sleep ( 2000 );
continue ;
}
Comment ( "Ошибка " ,Error, " закрытия ордера N " , OrderTicket (),
" " , TimeToStr ( TimeCurrent (), TIME_SECONDS ));
}
}
}
}
int n= 0 ;
for (j = 0 ; j < OrdersTotal (); j++)
{
if ( OrderSelect (j, SELECT_BY_POS ))
{
if ( OrderSymbol () == Symbol ())
{
OL = OrderLots ();
if (OL<MinLot || OL>MaxLot) continue ;
OT = OrderType ();
if (!market && OT< 2 ) continue ;
if (!pending && OT> 1 ) continue ;
n++;
}
}
}
if (n== 0 ) break ;
nn++;
if (nn> 10 ) { Comment ( "Не удалось закрыть все сделки, осталось еще " ,n); break ;}
Sleep ( 1000 );
RefreshRates ();
}
Comment (txt, "\nСкрипт закончил свою работу " , TimeToStr ( TimeCurrent (), TIME_DATE | TIME_SECONDS ));
return ( 0 );
}
//--------------------------------------------------------------------
string StrOrdersType( int t)
{
if (t== OP_BUY ) return ( "Buy" );
if (t== OP_SELL ) return ( "Sell" );
if (t== OP_BUYLIMIT ) return ( "BuyLimit" );
if (t== OP_SELLLIMIT ) return ( "SellLimit" );
if (t== OP_BUYSTOP ) return ( "BuyStop" );
if (t== OP_SELLSTOP ) return ( "SellStop" );
}
//--------------------------------------------------------------------

Bu komut dosyası, lot boyutuna göre yerleştirilecek çifti kapatır. lot büyüklüğüne göre tüm çiftler için tüm açık siparişleri kapatmak için ne eklemeli veya değiştirmeli. gecikmeler beni ilgilendirmiyor

 
Vitek2010 :

Bu komut dosyası, lotun büyüklüğüne göre yerleştirilecek çifti kapatır. lot büyüklüğüne göre tüm çiftler için tüm açık siparişleri kapatmak için ne eklemeli veya değiştirmeli. gecikmeler beni ilgilendirmiyor

Son haricinin altında:
dış int kayma = 2; //piyasa pozisyonlarını kapatırken fiyat kayması

başka bir tane koy:
harici bool total_symb = doğru; //tüm çiftler için

ve satırların her biri:
if (( OrderSymbol () == Sembol ()))
ve
if ( OrderSymbol () == Sembol ())

bunu değiştirin:
if ( OrderSymbol () == Sembol () || total_symb)

teorik olarak çalışması gerekir, kontrol edin.

 
Böyle bir soru ortaya çıktı, örneğin bir günde %2'lik bir kayba ulaşıldığında tüm işlemleri kapatacak bir danışman veya senaryo yazmak mümkün müdür?
Neden: