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

 
splxgf :
Bir sipariş açmaya çalışmadan önce ilk seçeneği yerleştirmek daha iyidir (OrderSend)
Çok teşekkürler! Her şey çalışıyor :)
 
kolyango :

Tüm bu koşullar birbiri ardına hemen gelmeyebilir (belki bir veya iki veya üç saat içinde), bu nedenle gösterge değeri 1,0000'e ulaşır ulaşmaz bu koşulun artık her tikte kontrol edilmediğinden emin olmanız gerekir, ancak bekleyin. bir çubuk düşüşle kapanır ve bundan sonra, bu 2 koşul her tikte kontrol edilmedi, ancak gösterge değeri 0,9980'den küçük veya ona eşit olana kadar bekleyin. Tüm koşullar karşılandığında, 400p stop loss ile 0.1 lot satmak için bir piyasa emri açın. ve 400p kar elde edin.

Genel olarak her şey yolunda ama göstergenin döndürdüğü değerlere çok dikkat ederim.

 bool Val_max=false, Cl_dn=false, Val_min=false; 
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   int
   i, j, total,
   cnt,
   OrderBuy,
   OrderSell,
   Magic,
   Ticket,                                       // Номер ордера
   Total= 0 ,                                     // Количество ордеров в окне
   Tip=- 1 ;                                       // Тип выбран. ордера (B=0,S=1)      
   double
   Open_0,
   ask,
   bid,
   Price,                                       // Цена выбранного ордера
   SL,                                           // SL выбранного ордера
   TP,                                           // TP выбранного ордера
   Lot;                                         // Колич. лотов в выбран.ордере
   Open_0=Open[ 0 ];                             // Цена откр. формирующегося бара
   ask=Ask;                                     // Текущая цена покупки
   bid=Bid;                                     // Текущая цена продажи
   string
   Symb;                                         // Название финанс. инструмента
   Symb= Symbol ();                               // Название фин.инстр.
double Value_max= 1.0000 ;
double Value_min= 0.9980 ;
double Open_1= Open[ 1 ];
double Close_1= Close[ 1 ];
//----

//--------------------------------------------------------------- 4 --

double Val= iCustom ( NULL , 0 , "HMR MULTI Indicator" , 0 , 0 );   
if (Val >= Value_max) Val_max=true;                   // 
if (Open_1 > Close_1 && Val_max==true) Cl_dn=true;
if (Val <= Value_min && Cl_dn==true) Val_min=true;
if (Val_max==true && Cl_dn==true && Val_min==true)
  {
   for (j = 0 ; j < OrdersTotal (); j++)
    {
     OrderSelect (j, SELECT_BY_POS, MODE_TRADES);
     if ( OrderSymbol () == Symbol ())
      {
       if ( OrderType () == OP_SELL) return ( 0 );
      }
    }

   OrderSend ( Symbol (),OP_SELL, 0.1 , NormalizeDouble (Bid, Digits ), 2 ,Bid+ 400 * Point ,Bid- 400 * Point , "" , 3 , Red );   // Открытие SELL
   Val_max=false; Cl_dn=false; Val_min=false;
  }

//----
   return ( 0 );
  }
 
splxgf :

Genel olarak her şey yolunda ama göstergenin döndürdüğü değerlere çok dikkat ederim.


Gösterge değerini uyar aracılığıyla gerçek zamanlı modda denedim, mesaj normal şekilde görüntülendi:

 double Val= iCustom ( NULL , 0 , "HMR MULTI Indicator" , 0 , 0 );   
if (Val >= Value_max)
{
Alert ( "Значение индикатора >= 1.0000" );
}
Değer 1.0000'e ulaştığında, her tikte bir mesaj görüntülendi: "Gösterge değeri >= 1.0000"
 
kolyango :


Göstergenin değerini Alert aracılığıyla gerçek zamanlı modda denedim, mesaj normal şekilde görüntülendi:

Ve o zaman test cihazının sevmediği şey, uyarılar eklemeniz ve günlüğe bakmanız gerekir.
 
splxgf :
Ve o zaman test cihazının sevmediği şey, uyarılar eklemeniz ve günlüğe bakmanız gerekir.

Peki kod doğru mu?
 

Ne anlama geliyor?

2011.12.06 01:07:55 HMR MULTI Göstergesi EURUSD,M15: kaldırıldı

2011.12.06 01:07:57 TestGenerator: eşleşmeyen veri hatası (2011.12.01'de 603 ses sınırı 00:00 aşıldı)

2011.12.06 01:07:57 2011.12.01 00:00 HMR MULTI Göstergesi EURUSD,M15: ObjectCreate işlevi için bilinmeyen alt pencere numarası -1


 
kolyango :

Ne anlama geliyor?

2011.12.06 01:07:55 HMR MULTI Göstergesi EURUSD,M15: kaldırıldı

2011.12.06 01:07:57 TestGenerator: eşleşmeyen veri hatası (2011.12.01'de 603 ses sınırı 00:00 aşıldı)

2011.12.06 01:07:57 2011.12.01 00:00 HMR MULTI Göstergesi EURUSD,M15: ObjectCreate işlevi için bilinmeyen alt pencere numarası -1


İki hata var gibi görünüyor:
1. MT4'ün İnternet bağlantısını kesmeniz ve ardından geçmiş verileri içe aktarmanız gerekebilir.
2. Kodu kontrol etmek gereklidir.

 
chief2000 :
İki hata var gibi görünüyor:
1. MT4'ün İnternet bağlantısını kesmeniz ve ardından geçmiş verileri içe aktarmanız gerekebilir.
2. Kodu kontrol etmek gereklidir.

... gösterge.

 int start(){
   double Val= iCustom ( NULL , 0 , "HMR MULTI Indicator" , 0 , 0 );   
   Alert (Val);
}

boş bir danışmanla "halk dürtme" yöntemini deneyin,

ObjectCreate'in kendi alt penceresini bulduğunu gösteren göstergeyi kontrol edin (veya TEST EDİYORSA VEYA OPTİMİZASYON YAPIYORSANIZ neden çizin)

 if ( IsTesting ()|| IsOptimization ())флаг_Канады_не_рисовать_obj=true;          //проверяем надо ли рисовать (в ините ему место через статик переменную)
if (!флаг_Канады_не_рисовать_obj){                                           //запрет отрисовки объектов ели оптимизация или тестирование
ObjectCreate (........................);
}
 
granit77 :
Diğer bir deyişle, parametreleri geçmeden, o zaman:

Cevaplar için teşekkürler!
 

Tünaydın!

"Instrument" (_OrderSymbol) parametresi ile EA'nın bir dosyaya tekrarlar yazmasını nasıl engelleyeceğimi söyleyin. Bir dizide tekrarların nasıl kaldırıldığını forumda gördüm https://forum.mql4.com/en/5814 ama benim durumuma nasıl uygulayacağımı bulamadım. Ve tekrarlarla, bir döngüde bile, bir dosyaya 200 özdeş satırı damgalamaya başlar.

 void TimeStr6() { 
   int i,handle,_ordertype;
   double _openprice,_orderLots,_OrderProfit;
   string _orderspread,_orderbalance,_OrderSymbol,_orderOpenTime,_orderOpenTime1;
   string tekTime= TimeToStr (CurTime(),TIME_DATE)+ "_" ;
   string path=tekTime+ "Оптимальный.csv" ;
//---------------------------
    handle= FileOpen (path, FILE_READ | FILE_WRITE );
     if (handle> 0 ){
       FileWrite (handle, "Дата" , "Время" , "Инструмент" , "Баланс оптимальный" ); 
       _orderOpenTime= TimeToStr ( OrderOpenTime (),TIME_DATE);
       _orderOpenTime1= TimeToStr ( OrderOpenTime (),TIME_SECONDS);
       _OrderSymbol=SymbolMax[nnnn];
       _orderbalance= DoubleToStr (StartBalance, 0 );
       FileSeek (handle, 0 , SEEK_END );
       FileWrite (handle,_orderOpenTime,_orderOpenTime1,_OrderSymbol,_orderbalance);
       FileClose (handle);
     }
   return ;
}