MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 1228

 
Alexey Belyakov :

Eklendi. Değilim. Gruplar halinde açılır. Büyü - yok sayar



Kod yazarken mantığını Rusça'ya çevirin. İlk olarak, seçilen sipariş bir piyasa emri değilse, daha sonra bir sonraki iterasyona, enstrüman eurobuck değilse bir sonraki iterasyona ve sihir eşit değilse, karşılaştırmaların yapıldığı belirli bir döngüye sahipsiniz. senin sihrin, sonra bir sonraki yinelemeye. ve koşul karşılanırsa, daha sonra. Döngünün sonunda, sonuna kadar tamamlanan döngü sayısını sayarsınız. Döngü sona erer ve program koşullara göre sipariş açmaya başlar. Koşullardan birinin her zaman doğru olduğu göz önüne alındığında, bir emir açılır. Ve bu her kene üzerinde.

 
Valeriy Yastremskiy :

Kod yazarken mantığını Rusça'ya çevirin. İlk olarak,seçilen sipariş bir piyasa emri değilse, daha sonra bir sonraki iterasyona, enstrüman eurobuck değilse bir sonraki iterasyona ve sihir eşit değilse, karşılaştırmaların yapıldığı belirli bir döngüye sahipsiniz. senin sihrin, sonra bir sonraki yinelemeye. ve koşul karşılanırsa, daha sonra. Döngünün sonunda, sonuna kadar tamamlanan döngü sayısını sayarsınız. Döngü sona erer ve program koşullara göre sipariş açmaya başlar. Koşullardan birinin her zaman doğru olduğu göz önüne alındığında, bir emir açılır. Ve bu her kene üzerinde.

Anladım. Ancak bu durumda: if(OrderMagicNumber() == MagicNumber)continue; Verilen siparişler Magic tarafından verilen siparişler olarak alınır. Yani, Eurobucks için manuel olarak verilen bir sipariş göz ardı edilmeli ve bir sihirbazla başka bir uzman açılmalıdır.

OrdersTotal() - bu enfeksiyon, sihirbazla yapılan herhangi bir manipülasyona son verir.
 
Alexey Belyakov :

Anladım. Ancak bu durumda: if(OrderMagicNumber() == MagicNumber)continue; Verilen siparişler Magic tarafından verilen siparişler olarak alınır. Yani, Eurobucks için manuel olarak verilen bir sipariş göz ardı edilmeli ve bir sihirbazla başka bir uzman açılmalıdır.

OrdersTotal() - bu enfeksiyon, sihirbazla yapılan herhangi bir manipülasyona son verir.

Kod yukarıdan aşağıya doğru yürütülür. döngü kurallarına göre bir döngüde. Döngüden sonra sipariş verirsiniz. if(OrderMagicNumber() == MagicNumber)devam; Döngü gövdesinin yürütülmesini keser ve döngünün yeni bir yinelemesini başlatır. Ve hepsi bu. Döngü sona erecek ve sipariş başlayacak. İşte böyle yazdın. Ve toplamsipariş sayısının bununla hiçbir ilgisi yok. Sihriniz ve enstrümanınız ile herhangi bir emir verilmemişse, o zaman bir emir verin diye şart koymak istiyorsanız, kod farklı olmalıdır.

Sipariş numaralarına göre döngü yapın. Büyümüzde ve enstrümanımızda bir emir varsa, dönüş baştan bir çıkıştır. Veya siparişinizin bulunduğu bir bayrak ve ontiklerin başında veya bayrağa göre kontrol etmeye başlayın.

Ve bir danışman komut dosyası, gösterge oluşturmak için bir şablondan bir danışman oluşturmak daha iyidir. Ana kod alanları daha doğru olacaktır.

 datetime some_time= TimeCurrent ();
//extern string Symbol3 = ""; //Инструмент (""текущий по умолчанию)
extern int P= 1 ;           //Таймфрейм
extern int MagicNumber = 100500 ;


int start()
{

int send;
                                     
double SL= 200 ;                                   
double TP= 200 ;                       
double Lots= 1 ;       

for ( int i = OrdersTotal (); i >= 0 ; i--) 
{
       OrderSelect (i, SELECT_BY_POS, MODE_TRADES);
       if (OrderSymbol() == "EURUSD" && OrderMagicNumber() == MagicNumber) return ( 0 );
}
          

             
if ((Close[ 0 ]>High[ 1 ])&&(n== 0 ))
{
send= OrderSend ( "EURUSD" ,OP_BUY,Lots,Ask, 3 ,Bid-SL* Point ,Bid+TP* Point ,MagicNumber);
}

if ((Close[ 0 ]<Low[ 1 ])&&(n== 0 ))  
{
send= OrderSend ( "EURUSD" ,OP_SELL,Lots,Bid, 3 ,Ask+SL* Point ,Ask-TP* Point ,MagicNumber);
}

return ( 0 );
}
 
Valeriy Yastremskiy :

Kod yukarıdan aşağıya doğru yürütülür. döngü kurallarına göre bir döngüde. Döngüden sonra sipariş verirsiniz. if(OrderMagicNumber() == MagicNumber)devam; Döngü gövdesinin yürütülmesini keser ve döngünün yeni bir yinelemesini başlatır. Ve hepsi bu. Döngü sona erecek ve sipariş başlayacak. İşte böyle yazdın. Ve toplamsipariş sayısının bununla hiçbir ilgisi yok. Sihir ve enstrümanınızla emir verilmemişse, sipariş verin diye bir şart koymak istiyorsanız, kod farklı olmalıdır.

Sipariş numaralarına göre döngü yapın. Büyümüzde ve enstrümanımızda bir emir varsa, dönüş baştan bir çıkıştır. Veya siparişinizin bulunduğu bir bayrak ve ontiklerin başında veya bayrağa göre kontrol etmeye başlayın.

Ve bir danışman komut dosyası, gösterge oluşturmak için bir şablondan bir danışman oluşturmak daha iyidir. Ana kod alanları daha doğru olacaktır.

 for ( int i = OrdersTotal (); i >= 0 ; i--) 
{
       OrderSelect (i, SELECT_BY_POS, MODE_TRADES);
       if (OrderSymbol() == "EURUSD" && OrderMagicNumber() == MagicNumber) return ( 0 );
}

Bunun bir çözüm olmadığını anlıyorum, ancak hangi yönde çalışmalı?

Zaten birkaç destyakov varintov denedim. Ya bir sipariş açar ya da kesintisiz, tuevukuchu.

Bu arada, OrderSekect'i yeniden sıralayın - bool tipi bir değişken ayarlanmalıdır, aksi takdirde yemin eder

 
Alexey Belyakov :

Bunun bir çözüm olmadığını anlıyorum, ancak hangi yönde çalışmalı?

Zaten birkaç destyakov varintov denedim. Ya bir sipariş açar ya da kesintisiz, tuevukuchu.

Bu arada, OrderSekect'i yeniden sıralayın - bool tipi bir değişken ayarlanmalıdır, aksi takdirde yemin eder

Evet, yemin etmeliyim ki, hiçbir yere dönmüyor

 for ( int i = OrdersTotal (); i >= 0 ; i--) 
{
     bool sel = OrderSelect (i, SELECT_BY_POS, MODE_TRADES);
       if (OrderSymbol() == "EURUSD" && OrderMagicNumber() == MagicNumber) return ( 0 );
}

Yapmak istediğin algoritmayı yazsan iyi olur. yani neye ihtiyaç olduğu belli değil.

 
Alexey Belyakov :

Bunun bir çözüm olmadığını anlıyorum, ancak hangi yönde çalışmalı?

Zaten birkaç destyakov varintov denedim. Ya bir sipariş açar ya da kesintisiz, tuevukuchu.

Bu arada, OrderSekect'i yeniden sıralayın - bool tipi bir değişken ayarlanmalıdır, aksi takdirde yemin eder

return (0) yerine anlam devam etmeli

 

İyi ve bilgili insanlar! MT5 EA'da Zarflar göstergesinin uygulanmasına yardımcı olun. EA'nın kendisi her onay işaretini işlemelidir (boşluk yok). Birkaç seçenek denedim, belgelere baktım, oradaki seçeneği beğendim, öyle görünüyor, ancak OnCalculate işleyicisi için. Henüz standart kitaplığı karıştırmayı denemedim ... Genel olarak, bu benim ilk uygulamam:

 input int        Indicatorperiod         = 3 ;
input double     EnvelopesDeviation      = 0.07 ;
int     handle;                                           //--- переменная для хранения хэндла индикатора iEnvelopes
double upperEnv[ 3 ], lowerEnv[ 3 ];                         // динамические массивы для хранения численных значений Emvelopes
double local_envelopesupper, local_envelopeslower;       // в эти переменные пытаюсь получить значения верхней и нижней линии индикатора
...

int OnInit ()
...
handle= iEnvelopes ( _Symbol , _Period ,Indicatorperiod, 0 , MODE_LWMA , PRICE_OPEN ,EnvelopesDeviation);
...

void OnTick ()
...
//--- Объявляем структуру, которая будут использоваться
   MqlRates mrate[ 3 ];           // Будет содержать цены, объемы и спред для каждого бара
   ArraySetAsSeries (mrate, true ); 

       //--- Получить исторические данные последних 3-х баров
       if ( CopyRates ( _Symbol , _Period , 0 , 3 ,mrate)!= 3 )
        {
         Alert ( "Ошибка копирования исторических данных - ошибка:" , GetLastError (), "!!" );
         return ;
        }

       //--- Используя хэндлы индикаторов, копируем новые значения индикаторных буферов в массивы
       if ( CopyBuffer (handle, 0 , 0 , 3 ,upperEnv)< 2 || CopyBuffer (handle, 1 , 0 , 3 ,lowerEnv)< 2 )
        {
         Alert ( "Ошибка копирования буферов индикатора Envelopes - номер ошибки:" , GetLastError (), "!!" );
         return ;
        }
...
local_envelopesupper = upperEnv[ 1 ];
local_envelopeslower = lowerEnv[ 1 ];
...

Görsel test cihazında şunu alıyorum:


Bana neyin yanlış olduğunu ve nasıl daha iyi yapılacağını söyle?
Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Некорректное отображение индикатора
 
Valeriy Yastremskiy :

Evet, yemin etmeliyim, hiçbir yere dönmüyor

Yapmak istediğin algoritmayı yazsan iyi olur. yani neye ihtiyaç olduğu belli değil.

Kod ilk mesajda. Çok basit: önceki yüksek/düşük seviyeyi kırın - bir anlaşma açın. Bu danışman tarafından açılan emirlerin, manuel olarak veya başka bir danışman tarafından açılan diğer emirlerle kesişmemesi, yani danışmanın bağımsız çalışması gereklidir.

Bütün internet karıştırdı. Tema oldukça hackneyed, ancak birçok varyasyon var. Bu kadar basit bir şey ve hiçbir yerde bulunamadı.

 
Alexey Belyakov :

Kod ilk mesajda. Çok basit: önceki yüksek / düşük seviyeyi kırın - bir anlaşma açın. Bu danışman tarafından açılan emirlerin, manuel olarak veya başka bir danışman tarafından açılan diğer emirlerle kesişmemesi, yani danışmanın bağımsız çalışabilmesi için gereklidir.

Bütün internet karıştırdı. Tema oldukça hackneyed, ancak birçok varyasyon var. Bu kadar basit bir şey ve hiçbir yerde bulunamadı.

Danışmanın çalışmalarını adım adım tam olarak tanımlayın. İlk adım, seçilen enstrüman üzerinde sihrimizle emir olup olmadığını kontrol etmektir. Varsa işi bitiririz, yoksa sipariş veririz. Sipariş verdikten sonra, ne? Bunun gibi bir şey
 
Maxim Kuznetsov :

return (0) yerine anlam devam etmeli

Orada, eğer eşitse, o zaman daha ileri gitmeyiz ve bitirmiyoruz.. Sevmiyorum, eşit değilse, o zaman daha ileri gidiyoruz. Anlamak daha zor.