[ARŞİV] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 3. - sayfa 283

 
Shniperson :

Merhaba! Büyüme/düşme için çubukların kontrolünü nasıl "döngüleyeceğimi" söyleyebilir misiniz? Yani bu durumu anlatmak için mümkün olduğu kadar kısa

Kapat[0]>Aç[0]&& Kapat[1]>Aç[1]&& Kapat[2]>Aç[2]&& Kapat[3]>Aç[3]&& Kapat[4]>Aç[4]&& Kapat[5]>Aç[5]&& Kapat[6]>Aç[6]&& Kapat[7]>Aç[7]

 bool Res= true ;
for ( int i= 0 ;i< 8 ;i++) Res = Res && Close[i]>Open[i];

şimdiden teşekkürler.


Bu mümkün, ancak daha hızlı olması pek mümkün değil. Koşulların genişletilmesi gerekiyor
 

Bunu nasıl gerçeğe dönüştüreceğimi bilmiyorum, bunu yapmak mümkün mü?

Stratejim, ideal olarak, terminalde 8-00'de, kâr ederse, ertesi güne kadar tutamaçlarla açılır. Benim yönüme gitmediyse, o zaman bir kayıpla, pozisyonu tamamen + - çeviriyoruz, bu gün artık önemli değil, pozisyon açmıyoruz, sabah 8'i bekliyoruz. Onlar. maksimum artık iki sipariş olmalıdır. Kâra ulaşmadıysa tüm pozisyonları trol ediyoruz, ancak trol başa baş noktasına taşındı, sonra da dönüyoruz. Elbette her şeyi kalemlerle yapabilirsiniz ancak iş pozisyonları takip etmenize izin vermiyor. Bu nedenle, bir sipariş vermek arzu edilir ve daha sonra pozisyona bir danışman eşlik eder. RSI, test cihazında test etmek için berbattı.

sadece yeterince vardı

 extern int Hour_To_Open = 08 ; //час открытия (-1 - не задано), терминальное время
extern int Minute_To_Open = 00 ; //минута открытия (-1 - не задано), терминальное время
extern double TakeProfit = 50 ;
extern double StopLoss = 30 ;
extern double Lot = 0.1 ;
extern int MagicNumber = 655433 ;


//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
if (( Hour ()==Hour_To_Open) && ( Minute ()==Minute_To_Open)) 
{ //если настало время открытия сделок
int total = OrdersTotal ();
for ( int i = 0 ; i < total; i++) 
{
OrderSelect (i, SELECT_BY_POS, MODE_TRADES);
if ( OrderSymbol () == Symbol () && OrderMagicNumber () == MagicNumber)
{
return ( 0 );
}
} 
int ticket= 1 ;
if ( iRSI ( NULL , 0 , 14 , PRICE_CLOSE , 0 )> iRSI ( NULL , 0 , 14 ,PR ICE_CLOSE, 1 ))
{
ticket= OrderSend ( Symbol (),OP_BUY,Lot,Ask, 3 ,Bid - StopLoss * Point ,Bid + TakeProfit * Point , "My order #" ,MagicNumber, 0 , Blue );
if (ticket< 0 )
{
Sleep ( 30000 );
}
}
else
{
ticket= OrderSend ( Symbol (),OP_SELL,Lot,Bid, 3 ,Ask + StopLoss * Point ,Ask - TakeProfit * Point , "My order #" ,MagicNumber, 0 , Red );
if (ticket< 0 )
{
Sleep ( 30000 );
}
}
} //end if((Hour()==Hour_To_Open) && (Minute()==Minute_To_Open))
//----
return ( 0 );
}
//+------------------------------------------------------------------+

Böyle bir iz var, başka bir danışmandan aldım ama benim için çalışmıyor

 extern bool UseTrailing = true; //включение/выключение T-SL
extern int TrailingStop = 50 ; // Фиксированный размер трала
extern int TrailingStep = 1 ; // Шаг трала

//+-------------------------------------------------------------------------------------------------------------------+
//| трейлинг стоп лосс |
void T_SL() {
int i= 0 ;
for (i= 0 ; i< OrdersTotal (); i++) {
if (!( OrderSelect (i, SELECT_BY_POS, MODE_TRADES))) continue ;
if ( OrderSymbol () != Symbol ()) continue ; 

if ( OrderType ()==OP_BUY) {
if ( NormalizeDouble (Bid- OrderOpenPrice (), Digits )> NormalizeDouble (TrailingS top* Point , Digits )) {
if ( NormalizeDouble ( OrderStopLoss (), Digits )<Normali zeDouble(Bid-(TrailingStop+TrailingStep- 1 )* Point , Digits ))
OrderModify ( OrderTicket (), OrderOpenPrice (), NormalizeDouble (Bid-TrailingStop* Point , Digits ), OrderTakeProfit (), 0 , CLR_NONE );
} //end if(NormalizeDouble(Bid-OrderOpenPrice(),Digits)>NormalizeDouble(TrailingS top*Point,Digits))
} //end if(OrderType()==OP_BUY)

if ( OrderType ()==OP_SELL) {
if ( NormalizeDouble ( OrderOpenPrice ()-Ask, Digits )> NormalizeDouble (TrailingStop* Point ,Dig its)) {
if ( NormalizeDouble ( OrderStopLoss (), Digits )>Normali zeDouble(Ask+(TrailingStop+TrailingStep- 1 )* Point , Digits ))
OrderModify ( OrderTicket (), OrderOpenPrice (), NormalizeDouble (Ask+TrailingStop* Point , Digits ), OrderTakeProfit (), 0 , CLR_NONE );
} //end if(NormalizeDouble(OrderOpenPrice()-Ask,Digits)>NormalizeDouble(TrailingStop*Point,Dig its))
} //end if(OrderType()==OP_SELL)
} //end for(i=0; i<OrdersTotal(); i++)
} //end void T_SL()
//| трейлинг стоп лосс |
//+-------------------------------------------------------------------------------------------------------------------+

Nasıl batırırsın? Ve tam tersi, böylece bir pozisyon açıldıktan sonra yalnızca bir kez çalışır

 

Anladığım ya da anlamadığım için bunun tersi muhtemelen burada bir yerde aranmalı?

bool OrderCloseBy ( int bilet, int ters, renk Renk=CLR_NONE)
Aynı enstrüman için açık olan bir pozisyonun başka bir pozisyon ile kapatılması, ancak ters yönde. İşlev başarıyla tamamlandığında TRUE döndürür. İşlev başarısız olduğunda YANLIŞ döndürür. Bir hata hakkında bilgi almak için GetLastError() işlevini çağırmanız gerekir.
Seçenekler:
bilet - Kapatılan siparişin benzersiz seri numarası.
zıt - Karşı sıranın benzersiz seri numarası.
renk - Grafikteki kapat okunun rengi. Parametre yoksa veya değeri CLR_NONE'a eşitse, ok grafikte görüntülenmez.
Misal:
 if(iRSI(NULL,0,14,PRICE_CLOSE,0)>75)
    {
     OrderCloseBy(order_id, karşıt_id);
     dönüş(0);
    }

 
Uv.profi, söyle bana, komut dosyasını araç çubuğundan çalıştırmak mümkün mü? Şimdi, yazılı komut dosyasının ya gezginden çalıştırılması ya da belirtilen tuş kombinasyonunun kullanılması gerekir (ki bu nedense her seferinde çalışır). Soru şudur - örneğin, " Grafik Araçları " panelinden bir simgeye yeni bir işlev atamak ve araç çubuğundan bir komut dosyası çalıştırmak mümkün müdür? Belki başka seçenekler vardır?
 

Tünaydın.

OrderSend() işlevinin orijinal kodunu nerede görebileceğimi söyleyebilir misiniz?

şimdiden teşekkürler.

 
kon12 :
Uv.profi, söyle bana, komut dosyasını araç çubuğundan çalıştırmak mümkün mü? Şimdi, yazılı komut dosyasının ya gezginden çalıştırılması ya da belirtilen tuş kombinasyonunun kullanılması gerekir (ki bu nedense her seferinde çalışır). Soru - örneğin, "grafik araçlar" panelinden bir simgeye yeni bir işlev atamak ve araç çubuğundan bir komut dosyası çalıştırmak mümkün müdür? Belki başka seçenekler vardır?

Hayır, ancak bir Label nesnesini sürükleme örneğini kullanabilirsiniz ...

İndirin , yenisiyle terminale çıkarın, ayarlarda dll'lerin içe aktarılmasına izin verin. terminal , Experts'e eklenmiş , başlatılacak yeniden başlatma komut dosyasının adını girin. terminal veya derleme.

Expert Advisor uygular - grafikte bir nesneyi sürüklerken belirtilen grafiğe adına göre bir komut dosyası yükler.

      ServiceLoadScript( WindowHandle ( Symbol (), Period ()), "ZZ_All_Quotings 4.10425" , /*<---- Имя загружаемого скрипта.*/   false);
Dosyalar:
trade_1.mq4  2 kb
 

Tünaydın!!

Lütfen bana söyle. Kanalın arkasına bekleyen iki tane yerleştirerek kanalın dökümü üzerinde çalışan bir Uzman Danışman yazıyorum. Yani ertelenenlerden biri tetiklendiğinde diğeri silinmelidir. Kodda nasıl uygulanır?

 
Parn25 :

Tünaydın!!

Lütfen bana söyle. Kanalın arkasına bekleyen iki tane yerleştirerek kanalın dökümü üzerinde çalışan bir Uzman Danışman yazıyorum. Dolayısıyla ertelenenlerden biri tetiklendiğinde diğeri silinmelidir. Kodda nasıl uygulanır?


Bir seçenek olarak, uygun olabilir - baykuşun kendisi henüz çalışma mantığının benzer bir versiyonunu yapmamıştır - danışman yalnızca bir piyasa emrine izin veriyorsa (önceden verilen 2 bekleyen emirden), ardından izleyin (izleyin) (sihirle) emrinizin (piyasanın) piyasada bulunması, ardından, göründüğü anda, bekleyeni silin . Herşey. Bekleyen birini silmek için Google aramasına bakın, şunun gibi bir arama dizisi: "site siliniyor:mql4.com siparişleri".
 

Merhaba!

EA'yı test cihazında çalıştırıyorum. Sunucu dört hanelidir. Günlük, alım veya satım emri verirken,

2011.10.23 15:27:26 2010.12.16 06:16 test_sovetnik GBPUSD,H1: açık #1 1.5551 sl'de 0.10 GBPUSD satın: 1.4551 tp: 1.5586 tamam

Ama 1.55512 fiyatla açılıyor!!! Beş basamak. Ayrıca, gecikmeler dört haneye göre yerleştirilir ve ayrıca dört haneye göre çalışır. Ancak OP_SELL ve OP_BUY - yalnızca beş basamakla açılır!

NormalizeDouble(Sor, Rakamlar);

Hiç bir şey yardımcı olmaz! Bu sorunu nasıl çözeceğimi söyle?

Elbette, son işareti görmezden gelebilirsiniz. Hata çökmez, ancak deneyin saflığı için tüm işlemlerin dört basamakla sonuçlandırılmasına ihtiyacım var.

 
ZZZEROXXX :
Danışmanı, örneğin standart Hareketli Ortalamaları, standart olmayan bir zaman diliminde çalıştırmak için bir komut dosyasına dönüştürmek için nasıl düzeltmeniz gerektiğini söyleyin.


YUKARI. Özetle bir danışmanı bir senaryoya dönüştürme ilkesi için minnettar olurum.