[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 ...

[Silindi]  

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.