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

 

Merhaba. Çaydanlığın bunu anlamasına yardımcı olun: Bekleyen siparişleri dakikaya kadar verebilecek bir danışman var. ve maks. önceki mum. Mum yönünde açılıyor.

İhtiyaç:

- açılma yönünü değiştirin, yani. bekleyen satın alma değişikliği - bekleyen satış

- Min. ve maks. önceki mum yapmak min. ve önceki günün salınımı

- Her şeyi olduğu gibi bırakın, yani. emir silme, parti parametreleri, stop-loss, sihirli sayı

Tüm eylemlerim, test cihazında 130 hatasına yol açıyor veya hiç derlenmiyor. Herhangi bir tavsiye için teşekkürler.

Benim müdahalem olmadan çalışma kodu aşağıdadır.

harici çift Parti = 0.01;
harici int StopLoss = 0;
harici int TakeProfit = 0;
harici int Büyü = 618;

int Yukarı_çubuklar = 0;
int Down_bars = 0;

çift StopLoss_new = 0;
çift TakeProfit_new = 0;

//+------------------------------------------- --------------------+
//| uzman başlatma işlevi |
//+------------------------------------------- --------------------+
int init()
{
//----

//----
dönüş(0);
}
//+------------------------------------------- --------------------+
//| uzman sıfırlama işlevi |
//+------------------------------------------- --------------------+
int tanım()
{
//----

//----
dönüş(0);
}
//+------------------------------------------- --------------------+
//| uzman başlatma işlevi |
//+------------------------------------------- --------------------+
int başlangıç()
{
//----

for(int cnt=0;cnt<OrdersTotal();cnt++)
{
if (OrderSelect(cnt,SELECT_BY_POS, MODE_TRADES)>0)
{
Eğer (
(OrderType() == OP_BUYSTOP || OrderType() == OP_SELLSTOP)
&& OrderMagicNumber() == Sihir
&& OrderSymbol() == Sembol()
&& OrderComment() != DoubleToStr(Bars,0)
)
{
Yorum("okkk");
OrderDelete(OrderTicket());
}
}
}

StopLoss_new = StopLoss;
TakeProfit_new = TakeProfit;

if (Up_bars != Barlar)
{
if (Yüksek[1]-Ask >= MarketInfo(Symbol(),MODE_STOPLEVEL)*Puan)
{
if (StopLoss_new != 0) StopLoss_new = NormalizeDouble(Yüksek[1]-StopLoss*Point,Rakamlar);
if (TakeProfit_new != 0) TakeProfit_new = NormalizeDouble(Yüksek[1]+TakeProfit*Puan,Rakamlar);
if (OrderSend(Symbol(),OP_BUYSTOP,Lot,NormalizeDouble(High[1],Digits),10,StopLoss_new,TakeProfit_new,DoubleToStr(Bars,0),Magic,0,Green) < 0)
{
uyku(1000);
Yeniler();
}
başka
{
up_bars = çubuklar;
}
}
}

StopLoss_new = StopLoss;
TakeProfit_new = TakeProfit;

if (Down_bars != Çubuklar)
{
if (Teklif-Düşük[1] >= MarketInfo(Symbol(),MODE_STOPLEVEL)*Puan)
{
if (StopLoss_new != 0) StopLoss_new = NormalizeDouble(Düşük[1]+StopLoss*Puan,Rakamlar);
if (TakeProfit_new != 0) TakeProfit_new = NormalizeDouble(Düşük[1]-TakeProfit*Puan,Rakamlar);
if (OrderSend(Symbol(),OP_SELLSTOP,Lot,NormalizeDouble(Low[1],Digits),10,StopLoss_new,TakeProfit_new,DoubleToStr(Bars,0),Magic,0,Green) < 0)
{
uyku(1000);
Yeniler();
}
başka
{
down_bars = çubuklar;
}
}
}


//----
dönüş(0);
}
//+------------------------------------------- --------------------+

 
delf :

Merhaba. Çaydanlığın anlamasına yardım edin:

"Herhangi bir acemi sorusu" ile "EA'yı tamamen yeniden yapın"ı karıştırdınız mı?
 
LazarevDenis :

kaptan bariz ... ve hepsi aynı, birine söyle

Öneririm - bu ifadeyi kelimelerle yazın. Ve yanlış yazdığını anlayacaksın.

not.
Hatayı nerede arayacağınız sizin için çok açıksa, neden soruyorsunuz?

 
delf :


Hata 130 ise. Dur ve al'ı gözden geçirin.
 
LazarevDenis :

lütfen yardım edin, sipariş, yüksek ile orderopenprice arasındaki mesafeden 4 kat daha fazla bir mesafede kapanmalıdır

nerede batırdım?

tüm siparişler açılıştan 3 pip kapatır


Formülünüzün sonucunu hesaplamak için bir hesap makinesi kullanmayı denediniz mi? Değilse, o zaman say, çünkü saçmalıyorum. Belki de tüm koşulları bilmediğim için.
 

Tek bir hata - nasıl düzelteceğimi bilmiyorum. Köpek nerede gömülü?

' Symbol ' - başlatma bekleniyor C:\Program Files\MetaTrader Finam\experts\1.mq4 (8, 13)

'Sembol - başlatma bekleniyor C:\Program Files\MetaTrader Finam\experts\1.mq4 (8, 13)

 extern double lot= 0.1 ;
extern double tp= 0 ;
extern double sl= 0 ;
int Real_Order=- 1 ;     // Пока рыночных нет

string Symb= Symbol ;                         // Финанс. инструмент

int start()     // Спец. функция start()


{                                
   OrderSend ( Symbol (),OP_BUY, 0.1 ,Ask, 0 ,Bid-sl* Point ,Ask+tp* Point ); 
   if ( IsDemo ()) PlaySound ( "alert.wav" );
   
       for ( int i= 1 ; i<= OrdersTotal (); i++)       //Цикл по всем ордерам,..
     {                                         //отражённым в терминале
       if ( OrderSelect (i- 1 ,SELECT_BY_POS)==true) //Если есть следующий
        {  
               //--------------------------------------------------------------                                   
         if ( OrderSymbol ()!= Symb) continue ;     // Не наш фин.инструм.
         int Tip= OrderType ();                   // Тип ордера
         if (Real_Order> 1 ) continue ;                   //отложник ордер  
         //------------------------------------------------------ 4 --
         double Price= OrderOpenPrice ();         // Цена ордера
         if 
             NormalizeDouble (tp,sl, Digits )       // Выбор самого близкого орд       
           {         
            Real_Order=Tip;                     // Есть рыночный ордер
             int Ticket= OrderTicket ();           // Номер ордера
             double Lot= OrderLots ();             // Количество лотов
           }
        }                                       //Конец анализа ордера
     }                                           //Конец перебора орд.
     //---------------------------------------------------------------------+
     while (true)                                   // Цикл закрытия орд.
     {
       if (Real_Order==- 1 )                       // Если рыночных нет
        {
         Alert ( "По " ,Symb, " рыночных ордеров нет" );
         break ;                                 // Выход из цикла закр        
        }
       //--------------------------------------------------------- 7 --
       switch (Real_Order)                         // По типу ордера
        {
         case 0 : double Price_Cls=Bid;           // Ордер Buy
             string Text= "Buy " ;                 // Текст для Buy
             break ;                               // Из switch
         case 1 : Price_Cls=Ask;                 // Ордер Sell
            Text= "Sell " ;                       // Текст для Sell
        }
       Alert ( "Попытка закрыть " ,Text, " " ,Ticket, ". Ожидание ответа.." );
       bool Ans= OrderClose (Ticket,Lot,Price_Cls, 2 ); // Закрытие ордера
       //--------------------------------------------------------- 8 --
       if (Ans==true)                             // Получилось :)
        {
         Alert ( "Закрыт ордер " ,Text, " " ,Ticket);
         break ;                                 // Выход из цикла закр
        }    
       //--------------------------------------------------------- 9 --
       int Error= GetLastError ();                 // Не получилось :(
       switch (Error)                             // Преодолимые ошибки
        {
         case 135 : Alert ( "Цена изменилась. Пробуем ещё раз.." );
             RefreshRates ();                     // Обновим данные
             continue ;                           // На след. итерацию
         case 136 : Alert ( "Нет цен. Ждём новый тик.." );
             while ( RefreshRates ()==false)         // До нового тика
               Sleep ( 1 );                         // Задержка в цикле
             continue ;                           // На след. итерацию
         case 146 : Alert ( "Подсистема торговли занята. Пробуем ещё.." );
             Sleep ( 500 );                         // Простое решение
             RefreshRates ();                     // Обновим данные
             continue ;                           // На след. итерацию
        }
       switch (Error)                             // Критические ошибки
        {
         case 2 : Alert ( "Общая ошибка." );
             break ;                               // Выход из switch
         case 5 : Alert ( "Старая версия клиентского терминала." );
             break ;                               // Выход из switch
         case 64 : Alert ( "Счет заблокирован." );
             break ;                               // Выход из switch
         case 133 : Alert ( "Торговля запрещена" );
             break ;                               // Выход из switch
         default : Alert ( "Возникла ошибка " ,Error); //Другие варианты   
        }
       break ;                                     // Выход из цикла закр
     }  
 
   
   return ;                                   // Выход из start()
  }
 

alex12 , belirli bir şey belirtin, örneğin

 string Symb= "EURUSD" ;                         // Финанс. инструмент
 
alex12 :

Tek bir hata - nasıl düzelteceğimi bilmiyorum. Köpek nerede gömülü?

'Symbol' - başlatma bekleniyor C:\Program Files\MetaTrader Finam\experts\1.mq4 (8, 13)

'Sembol - başlatma bekleniyor C:\Program Files\MetaTrader Finam\experts\1.mq4 (8, 13)

Sen:

 string Symb= Symbol ;                         // Финанс. инструмен

Ve ihtiyacınız olan:

 string Symb= Symbol() ;                         // Финанс. инструмент
Genel olarak , hata mesajına çift tıklayabilirsiniz ve imleç, derleme hatasının meydana geldiği belirtilen (bu arada) yere hareket edecektir, yani burada: (8, 13)

Bundan sonra, diğer hatalar düşecek ... :)

Yukarıdaki satırı start() fonksiyonunun başına taşıyın

bu yeni başlayanlar için - sonra hataların geri kalanıyla ilgilenin ...

 

Merhaba.

Adamların yardıma ihtiyacı var. durumu tarif ediyorum.

Şu anda fiyat 1.4100 (örneğin) Açıklığı 1.4090'dan 1.4110'a kadar olan (artı 1.4100'den eksi 10 puan) önceki çubuğu bulmam gerekiyor - bu uygun.

Ama sol ve sağ açık daha küçüktür. örneğin, program 1.4105 açıklığa sahip bir bar buldu - bize uygun.

Daha sonra program bu çubuğu solundaki çubukla ve sağındaki çubukla karşılaştırmalı ve eğer daha küçüklerse bu çubuğun uygun olduğunu söylemelidir.

 

Artem , işin şakası şu ki, aşağıda böyle bir satır var:

 if ( OrderSymbol ()!= Symb) continue ;     // Не наш фин.инструм.

Yani önerdiğiniz yol çok mantıklı değil - eğer alex12'nin ne istediğini doğru anladıysam.

Neden: