[UYARI, KONU KAPALI!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde. - sayfa 832

 
Vinin :

Bir dahaki sefere ne değişecek?
Aynısı. Bir pozisyon kapatılır - bekleyen bir emir verilir, vb. Son değeri döndüren bir fonksiyon (örn. OrderCloseTime()) mevcuttur. Her tik ile, son kapatılan pozisyonun kapanış saatinin değerini alıyorum (1. pozisyon diyelim). Bir sonraki pozisyonu (2 numaralı pozisyon) yeni bir tik ile kapatırken, bu (2 numaralı pozisyonun) kapanış zamanını alıyorum. OrderCloseTime() değeri öncekine göre değişti. Vb. Değişkenin nasıl ve ne kadar değiştiği umurumda değil. Değişkeni değiştirme gerçeği benim için önemlidir. Mantıksal bir işlem gibidir: son kapatılan konumun OrderCloseTime() değeri sondan bir öncekinin OrderCloseTime() değerinden büyükse, falan falan. Ayrıca - son kapatılan pozisyonun OrderClosePrice() değeri, sondan bir önceki pozisyonun OrderClosePrice() değerine eşit değilse, BLA-BLA-BLA yapın. Yoksa böyle bir karşılaştırma yok mu?
 
İşte ortaya çıkan soru. Diyelim ki danışmanda, gösterge (örneğin, CCI aldım) aşağıdan yukarıya belirli bir seviyeyi (kırmızı çizgi) geçtiğinde bir satın alma sinyali ve yukarıdan aşağıya ne zaman sırasıyla bir satış sinyali göründüğünü varsayalım. A çubuğunun oluşumu sırasında bir siparişin yalnızca bir kez açılabileceğinden nasıl emin olabilirim? Onlar. Diyelim ki gösterge, A çubuğunu oluştururken seviyeyi (kırmızı çizgi) birkaç kez geçiyor, sonra aşağı, sonra yukarı. Dediğim gibi, siparişin sadece bir kez açıldığından emin olmanız gerekiyor.

Aynı zamanda, D çubuğunda bir satış sinyali alındığında (grafikteki durum 2), A çubuğunda açılan emrin kapanmaması ve hiç etkilenmemesi gerekir.

Onlar. açıldıktan sonra siparişler hiçbir şekilde danışman tarafından kontrol edilmez.


Şimdiden teşekkürler.

 

Lütfen Demark Sequence kodunun bir parçasını Expert Advisor'a eklememe yardım edin https://www.mql5.com/ru/code/7372

böyle çalışmıyor:

sayı=0:

for(i=barlar; i>=0; i--)
{
if ((iClose(NULL,PERIOD_M5,i+1)<iClose(NULL,PERIOD_M5,i+4) && num!=0 )) {
sayı++;


if ((iClose(NULL,PERIOD_M5,i+1)<iClose(NULL,PERIOD_M5,i+4))
satın almak.......

eğer (sayı==9)
kapat........

 
Vinin :


1. Birinci türden siparişlerin sayısını sayın

2. İkinci tipteki siparişlerin sayısını sayın

3. Sonuçları karşılaştırın


Sevgili Vinin. Çok teşekkürler!
 
Forrim :
İşte ortaya çıkan soru. Diyelim ki danışmanda, gösterge (örneğin, CCI aldım) aşağıdan yukarıya belirli bir seviyeyi (kırmızı çizgi) geçtiğinde bir satın alma sinyali ve yukarıdan aşağıya ne zaman sırasıyla bir satış sinyali göründüğünü varsayalım. A çubuğunun oluşumu sırasında bir siparişin yalnızca bir kez açılabileceğinden nasıl emin olabilirim? Onlar. Diyelim ki gösterge, A çubuğunu oluştururken seviyeyi (kırmızı çizgi) birkaç kez geçiyor, sonra aşağı, sonra yukarı. Dediğim gibi, siparişin sadece bir kez açıldığından emin olmanız gerekiyor.

Aynı zamanda, D çubuğunda bir satış sinyali alındığında (grafikteki durum 2), A çubuğunda açılan emrin kapanmaması ve hiç etkilenmemesi gerekir.

Onlar. açıldıktan sonra siparişler hiçbir şekilde danışman tarafından kontrol edilmez.


Şimdiden teşekkürler.

Genel olarak, CCİ o kadar çılgınca atlar ki, Bar sona erdikten ve yenisi açıldıktan sonra kontrol etmek daha iyidir.

Mevcut olan için çok önemliyse, o zaman her kavşakta, mumun global bir değişkendeki açılış saatini hatırlamanız ve ardından zamanın farklı olup olmadığını kontrol etmeniz gerekir (evet ise, bir sipariş açılır) veya aynıdır (=> sipariş açılmaz).

 
Forrim :
İşte ortaya çıkan soru. Diyelim ki danışmanda, gösterge (örneğin, CCI aldım) aşağıdan yukarıya belirli bir seviyeyi (kırmızı çizgi) geçtiğinde bir satın alma sinyali ve yukarıdan aşağıya ne zaman sırasıyla bir satış sinyali göründüğünü varsayalım. A çubuğunun oluşumu sırasında bir siparişin yalnızca bir kez açılabileceğinden nasıl emin olabilirim? Onlar. Diyelim ki gösterge, A çubuğunu oluştururken seviyeyi (kırmızı çizgi) birkaç kez geçiyor, sonra aşağı, sonra yukarı. Dediğim gibi, siparişin sadece bir kez açıldığından emin olmanız gerekiyor.

Aynı zamanda, D çubuğunda bir satış sinyali alındığında (grafikteki durum 2), A çubuğunda açılan emrin kapanmaması ve hiç etkilenmemesi gerekir.

Onlar. açıldıktan sonra siparişler hiçbir şekilde danışman tarafından kontrol edilmez.


Şimdiden teşekkürler.

Bu tür bir pozisyon zaten açıksa, tekrar açmayın.
 
//--------------------------------------------------------------- 1 --
                                   // Численные значения для М15
extern double StopLoss   = 20 ;       // SL для открываемого ордера
extern double TakeProfit = 20 ;       // ТР для открываемого ордера
extern double Step_Sar= 0.02 ;       // Шаг Sar
extern double Maximum_Sar= 0.2 ;     // Максимум Sar
extern double Lot= 0.01 ;             // Жестко заданное колич. лотов
bool Work=true;                     // Эксперт будет работать.
//--------------------------------------------------------------- 2 --
int start()
  { 
   int    
   Total,                           // Количество ордеров в окне 

   Ticket;                           // Номер ордера
   
   double
   Sar_1 ,                           // Значен. Sar текущее
   Sar_0 ,                           // Значение Sar предыдущей свечки      
   Price,                           // Цена ордера
   SL,                               // SL ордера 
   TP;                               // TP ордера
   
   bool
   Ans  =false,                     // Ответ сервера после закрытия
   Cls_B=false,                     // Критерий для закрытия  Buy
   Cls_S=false,                     // Критерий для закрытия  Sell
   Opn_B=false,                     // Критерий для открытия  Buy
   Opn_S=false;                     // Критерий для открытия  Sell
   
//--------------------------------------------------------------- 3 --   
   // Учёт ордеров   

   Total= 0 ;                                     // Количество ордеров
   for ( int i= 1 ; i<= OrdersTotal (); i++)           // Цикл перебора ордер
     {
       if ( OrderSelect (i- 1 ,SELECT_BY_POS)==true) // Если есть следующий
        {                                       // Анализ ордеров:
         if (OrderSymbol()!= Symbol ()) continue ;       // Не наш фин. инструм
         if (OrderType()> 1 )                     // Попался отложенный
           {
             Alert ( "Обнаружен отложенный ордер. Эксперт не работает." );
             return ;                             // Выход из start()
           }
         Total++;                               // Счётчик рыночн. орд
         if (Total> 1 )                           // Не более одного орд
           {
             Alert ( "Несколько рыночных ордеров. Эксперт не работает." );
             return ;                             // Выход из start()
           }

   
     
       
        
    
         
         Price =OrderOpenPrice();               // Цена выбранн. орд.
         SL    =OrderStopLoss();                 // SL выбранного орд.
         TP    =OrderTakeProfit();               // TP выбранного орд.
         Lot   =OrderLots();                     // Количество лотов
         }
         }
   
//--------------------------------------------------------------- 6 --
   // Торговые критерии
   Sar_1= iSAR ( NULL , 0 , 0.02 , 0.2 , 1 );           // Sar_1
   Sar_0= iSAR ( NULL , 0 , 0.02 , 0.2 , 0 );           // Sar_0
 
   if (Sar_0 > Price && Sar_1 < Price)           // если Sar меняет положение
     {
      Opn_B=true;                               // Критерий откр. Buy             
     }  
   if (Sar_0 < Price && Sar_1 > Price)           // если Sar меняет положение
     {                                          
      Opn_S=true;                               // Критерий откр. Sell                                   
     }   
//--------------------------------------------------------------- 7 --
  
     {
       if (Opn_B==true)         
        {                                       // критерий откр. Buy
         RefreshRates();                         // Обновление данных
         SL=( 20 +Ask-Bid)*Bid;                 // Вычисление SL откр.
         TP= 20 *Bid;                           // Вычисление TP откр.
         Alert ( "Попытка открыть Buy. Ожидание ответа.." );
         Ticket= OrderSend ( Symbol (),OP_BUY,Lot,Ask, 0 ,SL,TP); //Открытие Buy                         
        }
         if (Fun_Error( GetLastError ())== 1 )       // Обработка ошибок
                                   
         return ;                                 // Выход из start()
        
        
       if (Opn_S==true)                           // критерий откр. Sell
      
        {                                       // критерий откр. Sell
         RefreshRates();                         // Обновление данных
         SL=( 20 +Ask-Bid)*Ask;                 // Вычисление SL откр.
         TP= 20 *Ask;                           // Вычисление TP откр.
         Alert ( "Попытка открыть Sell. Ожидание ответа.." );
         Ticket= OrderSend ( Symbol (),OP_SELL,Lot,Bid, 0 ,SL,TP); //Открытие Sel
         
         return ;                                 // Выход из start()
        }
        
       if (Fun_Error( GetLastError ())== 1 )       // Обработка ошибок
                      
         return ;                                 // Выход из start()
        
     }
//--------------------------------------------------------------- 9 --
   return ;                                       // Выход из start()
  }
//-------------------------------------------------------------- 10 --
int Fun_Error( int Error)                         // Ф-ия обработ ошибок
  {
   switch (Error)
     {                                           // Преодолимые ошибки            
       case    4 : Alert ( "Торговый сервер занят. Пробуем ещё раз.." );
         Sleep ( 3000 );                           // Простое решение
         return ( 1 );                             // Выход из функции
       case 135 : Alert ( "Цена изменилась. Пробуем ещё раз.." );
         RefreshRates();                         // Обновим данные
         return ( 1 );                             // Выход из функции
       case 136 : Alert ( "Нет цен. Ждём новый тик.." );
         while (RefreshRates()==false)           // До нового тика
             Sleep ( 1 );                           // Задержка в цикле
         return ( 1 );                             // Выход из функции
       case 137 : Alert ( "Брокер занят. Пробуем ещё раз.." );
         Sleep ( 3000 );                           // Простое решение
         return ( 1 );                             // Выход из функции
       case 146 : Alert ( "Подсистема торговли занята. Пробуем ещё.." );
         Sleep ( 500 );                             // Простое решение
         return ( 1 );                             // Выход из функции
         // Критические ошибки
       case    2 : Alert ( "Общая ошибка." );
         return ( 0 );                             // Выход из функции
       case    5 : Alert ( "Старая версия терминала." );
         Work=false;                             // Больше не работать
         return ( 0 );                             // Выход из функции
       case 64 : Alert ( "Счет заблокирован." );
         Work=false;                             // Больше не работать
         return ( 0 );                             // Выход из функции
       case 133 : Alert ( "Торговля запрещена." );
         return ( 0 );                             // Выход из функции
       case 134 : Alert ( "Недостаточно денег для совершения операции." );
         return ( 0 );                             // Выход из функции
       default : Alert ( "Возникла ошибка " ,Error); // Другие варианты   
         return ( 0 );                             // Выход из функции
     }
  }
//-------------------------------------------------------------- 11 --

Temel bir danışman, Parabolik SAR göstergesinin konumu fiyat tablosuna göre değiştiğinde pozisyon açmalıdır, M15, SL ve TP üzerinde yapılan çalışmalar, açılan pozisyon için her zaman sabittir.

EA, mevcut ve önceki mumların gösterge konumlarını karşılaştırır.

Derlerken, hiçbir hata ve açıklama yoktur, "sonuçlar" "grafik" "rapor" sekmelerinde test edildiğinde boş, günlükte bu: "resim"

Bugün kodlamanın 2. günü, daha önce hiç yapmadım, mql ile ilgili kitap okudum, internette sorunumu aradım. çıkmazdayım lütfen yardım edin


 

THC , bunu dene




Dosyalar:
0000001_1.mq4  3 kb
 
Techno :

THC , bunu dene




Çok teşekkür ederim, kodda böyle bir verimlilik ve bu tür değişiklikler beklemiyordum.

Lütfen temel mql dışında programlama hakkında daha fazla kitap önerin

 
THC :

Çok teşekkür ederim, kodda böyle bir verimlilik ve bu tür değişiklikler beklemiyordum.

Lütfen temel mql dışında programlama hakkında daha fazla kitap önerin

Ben sadece temel olanı okuyorum, tam anlama zamanla geliyor, sadece daha fazla yazma alıştırması gerekiyor