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

 
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--)                                            // цикл для проверки ордеров
{
int af= OrderSelect (i, SELECT_BY_POS,MODE_TRADES);                                 // Шаг 1: OrderSelect Выбираем ордер (SELECT_BY_POS - по порядковому номеру), (MODE_TRADES -из отложенных и открытых)

if ((OrderSymbol() == "EURUSD" ) && (OrderMagicNumber() == MagicNumber)) return ( 0 ); // Шаг 2: Если символ EURUSD отсутствует,И если ордер присутствует , и ни один из ордеров НЕ содержит магикномер, то выходим из цикла.( выходим -значит откр. позицию) 
                                                                                    (если какое-либо условие из двух указанных не совпадает, то выходим) 
}
          

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

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

return ( 0 );
}

Kullanılabilirlik için bir tür periyodik anket olduğunu anlıyorum. (EURUSD var mı? ve belirtilen Magic(ler) ile bir emir var mı?) Bunlardan biri yoksa, bir pozisyon açın . Yalnızca her iki koşul da eşleşirse doğrulama için gönderilir.

Ve sonra 2. Adımda sorulur. Diyelim ki manuel olarak açılan bir siparişimiz var. O zaman birinci koşulun altına düşeriz (aynı sembole sahibiz) ve bu düzen sihir içermediği için ikinci koşula girmeyiz. Ve koşullardan biri uyuşmuyorsa, kod bir sipariş açmalıdır. Aslında, sadece bunu yapıyor. Ama bir sonraki tikte, üçüncü sırayı, dördüncü sırayı ve beşinci sırayı açar....

Neden üçüncü bir sipariş açıyor?

Ancak her iki koşula da toplamda düşen iki sipariş var. Bir keşif değil, başka bir kontrol (dönmeye atla (0)) olmalı.!

Совершение сделок - Торговые операции - Справка по MetaTrader 5
Совершение сделок - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 
Herkese iyi geceler! Grafikte düz bir çizgi çizecek (fotoğraf eklenmiş) mql5'te bir kod yazıp bu düz çizginin tüm koordinatlarını bir dosyaya yazmanın mümkün olup olmadığını söyleyebilir misiniz? uzman (robot) tarafından bu düz çizginin çizelge ile dökümünün (geçiş) izlenmesinden sonra. Düz
 
GlushkoV_V_V :
Herkese iyi geceler! Grafikte düz bir çizgi çizecek (fotoğraf eklenmiş) mql5'te bir kod yazıp bu düz çizginin tüm koordinatlarını bir dosyaya yazmanın mümkün olup olmadığını söyleyebilir misiniz? uzman (robot) tarafından bu düz çizginin çizelge ile dökümünün (geçiş) izlenmesinden sonra.

Her şey belgelerde .

Документация по MQL5: Графические объекты / ObjectCreate
Документация по MQL5: Графические объекты / ObjectCreate
  • www.mql5.com
[in]  Номер подокна графика. 0 означает главное окно графика. Указанное подокно должно существовать, в противном случае функция возвращает false. Возвращает true при успешной постановке команды в очередь указанного графика, иначе false. Если объект был уже создан ранее, то производится попытка изменить его координаты. При вызове ObjectCreate...
 
Сергей Таболин :

Her şey belgelerde .

Bahşiş için teşekkürler ve belki de ücretsiz olarak değil, böyle bir şeyi toplamaya yardımcı olabilirsiniz.

 
GlushkoV_V_V :

Bahşiş için teşekkürler ve belki de ücretsiz olarak değil, böyle bir şeyi toplamaya yardımcı olabilirsiniz.

Ücretsiz değil - bu sizin için burada )))

Торговые приложения для MetaTrader 5 на заказ
Торговые приложения для MetaTrader 5 на заказ
  • www.mql5.com
Убрать из советника второй индикатор заменить другим,изменить условие открытие ордера .Условие сделки покупка: НМА линия вверх второй индикатор столбик гистограмы выше нуля (второй индикатор пересечение нуля точка входа) по закрытой свече если нма и второй индикатор не изменили показания совершается покупка для продаже наоборот.Изменить...
 
Çok teşekkür ederim, ama benim için Çince gibi, kodda nasıl uygulanacağı belli değil
 
Alexey Belyakov :

Kullanılabilirlik için bir tür periyodik anket olduğunu anlıyorum. (EURUSD var mı? ve belirtilen Magic(ler) ile bir emir var mı?) Bunlardan biri yoksa, bir pozisyon açın . Yalnızca her iki koşul da eşleşirse doğrulama için gönderilir.

Ve sonra 2. Adımda sorulur. Diyelim ki manuel olarak açılan bir siparişimiz var. O zaman birinci koşulun altına düşeriz (aynı sembole sahibiz) ve bu düzen sihir içermediği için ikinci koşula girmeyiz. Ve koşullardan biri uyuşmuyorsa, kod bir sipariş açmalıdır. Aslında, sadece bunu yapıyor. Ama bir sonraki tikte, üçüncü sırayı, dördüncü sırayı ve beşinci sırayı açar....

Neden üçüncü bir sipariş açıyor?

Ancak her iki koşula da toplamda düşen iki sipariş var. Bir keşif değil, başka bir kontrol (dönmeye atla (0)) olmalı.!

== - eşitse != - eşit değilse. Continuo - döngü yinelemesinin sonu ve döngünün yeni yinelemesinin başlangıcı. Break - döngünün sonu ve döngüyü takip eden operatöre geçiş, dönüş - fonksiyonun sonu, sizin durumunuzda Onstart ve yeni bir onay bekliyor. Ve sihrinizle bir emir açıksa, işlevi tamamlamalı ve yeni bir onay beklemeye gitmelidir.

Soru şu ki, mevcut pencerede emirleri açmak istiyorsanız, o zaman enstrümanı neden açıkça kaydettiriyorsunuz veya emirleri başka bir enstrümanın penceresinden mi açmak istiyorsunuz? Ayrıca kaç sipariş açmak istediğiniz de belli değil. Kodunuzun mantığına göre sadece bir sipariş açılabilir ve ancak kapatıldıktan sonra ikincisi açılacaktır. Bir sihriniz ve bir açık pencere aracınız var. Ayrıca, bir emir açma koşulları Eurobucks için değil, Cari Enstrüman için kontrol edilir.

 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--)                                             // цикл для проверки ордеров
{
bool af= OrderSelect (i, SELECT_BY_POS,MODE_TRADES);     // OrderSelect возвращает тип bool                             
                                               // Шаг 1: OrderSelect Выбираем ордер 
                                   //(SELECT_BY_POS - по порядковому номеру), (MODE_TRADES -из отложенных и открытых)

if ((OrderSymbol() == Symbol ()) && (OrderMagicNumber() == MagicNumber)) return ( 0 ); // Шаг 2: Если символ Выбранного ордера 
                                        // равен EURUSD (заменено на текущий инструмент открытого окна) ,
                                       // И если магик Выбранного ордера равен магик то выходим из функции Онстарт .
// Если же наш ордер не будет выбран из ордеров терминала, то цикл закончится и начнется выставление ордеров. 
                                                                                   
}
          

             
if ((Close[ 0 ]>High[ 1 ])) // клоз и хай здесь для текущего окна и инструмента . 
{
send= OrderSend ( Symbol (),OP_BUY,Lots,Ask, 3 ,Bid-SL* Point ,Bid+TP* Point ,MagicNumber); // так же здесь цены аск и бид тоже для текущего инструмента
}

if ((Close[ 0 ]<Low[ 1 ]))  
{
send= OrderSend ( Symbol (),OP_SELL,Lots,Bid, 3 ,Ask+SL* Point ,Ask-TP* Point ,MagicNumber); // и поинт кстати тоже.
}

return ( 0 );
}
 
Valeriy Yastremskiy :

== - eşitse != - eşit değilse. Continuo - döngü yinelemesinin sonu ve döngünün yeni yinelemesinin başlangıcı. Break - döngünün sonu ve döngüyü takip eden operatöre geçiş, dönüş - fonksiyonun sonu, sizin durumunuzda Onstart ve yeni bir onay bekliyor. Ve sihrinizle bir emir açıksa, işlevi tamamlamalı ve yeni bir onay beklemeye gitmelidir.

Soru şu ki, mevcut pencerede emirleri açmak istiyorsanız, o zaman enstrümanı neden açıkça kaydettiriyorsunuz veya emirleri başka bir enstrümanın penceresinden mi açmak istiyorsunuz? Ayrıca kaç sipariş açmak istediğiniz de belli değil. Kodunuzun mantığına göre sadece bir sipariş açılabilir ve ancak kapatıldıktan sonra ikincisi açılacaktır. Bir sihriniz ve bir açık pencere aracınız var. Ayrıca, bir emir açma koşulları Eurobucks için değil, Cari Enstrüman için kontrol edilir.

- Evet, mevcut pencerede açmak istiyorum;

- Bir arama emri. Bir sonraki sipariş, bir önceki sipariş kapanmadan açılmaz.

"Ayrıca, bir emir açma koşulları Eurobucks için değil, Mevcut Enstrüman için kontrol edilir ." - o zamanlar ?

((OrderSymbol() == "EURUSD" )  ???
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Приказы на проведение торговых операций оформляются ордерами. Каждый ордер имеет множество свойств для чтения, информацию по ним можно получать с помощью функций Идентификатор позиции, который ставится на ордере при его исполнении. Каждый исполненный ордер порождает сделку, которая открывает новую или изменяет уже существующую позицию...
 
Alexey Belyakov :

- Evet, mevcut pencerede açmak istiyorum;

- Bir arama emri. Bir sonraki sipariş, bir önceki sipariş kapanmadan açılmaz.

"Ayrıca, bir emir açma koşulları Eurobucks için değil, Mevcut Enstrüman için kontrol edilir ." - o zamanlar ?

Ve o zaman, örneğin, eurobucks için değil, europounds için açık bir pencereniz var, seçilen siparişin sembolünü eurobucks ile karşılaştırıyorsunuz, eğer doğruysa, eurobucks'ta bir emir var ve sihrimiz varsa, o zaman geri dönün Onstart işlevinden ve değilse, eurobaks'a bir sipariş veriyoruz, ancak europound için yakın, yüksek, talep, teklifiniz olacak. Bu enstrümanlar için teklif ve talep farklı olduğu için emir açarken bir hata olacaktır. Ve Symbol(), geçerli pencerenin sembolünü döndürür ve hiçbir hata oluşmaz.

Ve meta düzenleyiciden şablonu kullanın, sol üstte bir Oluştur düğmesi var. onstart işlevi hala kullanılmaktadır, ancak bu doğru değildir, ancak onstart komut dosyaları içindir. Doğru desen.

 //+------------------------------------------------------------------+
//|                                                    forumtest.mq4 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                                  https://qstr.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link        "https://qstr.ru"
#property version    "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---
   
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//---
   
  }
//+------------------------------------------------------------------+

Doğru kod. Siparişe yapılan bir yorumu kaçırdınız ve kodunuzdaki sihir dikkate alınmadı. Açılış satırına yönelik uyarılarda, bir sayının bir dizgeye örtük tip dönüşümüne dikkat edin!!!

 //+------------------------------------------------------------------+
//|                                                    forumtest.mq4 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                                  https://qstr.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link        "https://qstr.ru"
#property version    "1.00"
#property strict

datetime some_time= TimeCurrent ();
//extern string Symbol3 = ""; //Инструмент (""текущий по умолчанию)
extern int P= 1 ;           //Таймфрейм
extern int MagicNumber = 100500 ;   // Установили магик
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---
   
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//---
   int send;
                                     
double SL= 200 ;                                   
double TP= 200 ;                       
double Lots= 1 ;       

for ( int i = OrdersTotal (); i >= 0 ; i--)                                             // цикл для проверки ордеров
{
bool af= OrderSelect (i, SELECT_BY_POS,MODE_TRADES);     // OrderSelect возвращает тип bool                           
                                               // Шаг 1: OrderSelect Выбираем ордер 
                                   //(SELECT_BY_POS - по порядковому номеру), (MODE_TRADES -из отложенных и открытых)

if ((OrderSymbol() == Symbol ()) && (OrderMagicNumber() == MagicNumber)) return ; // Шаг 2: Если символ Выбранного ордера 
                                         //равен EURUSD (заменено на текущий инструмент открытого окна) ,
                                       // И если магик Выбранного ордера равен магик то выходим из функции Онстарт.
// Если же наш ордер не будет выбран из ордеров терминала, то цикл закончится и начнется выставление ордеров. 
                                                                                   
}
          

             
if ((Close[ 0 ]>High[ 1 ])) // клоз и хай здесь для текущего окна и инструмента. 
{
send= OrderSend ( Symbol (),OP_BUY,Lots,Ask, 3 ,Bid-SL* Point ,Bid+TP* Point , "My order" ,MagicNumber, 0 , clrGreen ); // так же здесь цены аск и бид тоже для текущего инструмента

}

if ((Close[ 0 ]<Low[ 1 ]))  
{
send= OrderSend ( Symbol (),OP_SELL,Lots,Bid, 3 ,Ask+SL* Point ,Ask-TP* Point , "My order" ,MagicNumber, 0 , clrGreen ); // и поинт кстати тоже.
}

return ;
  }
//+------------------------------------------------------------------+
 
Valeriy Yastremskiy :

örneğinde çok hata var

 for ( int i = OrdersTotal (); i >= 0 ; i--)  

olmalı:

 for ( int i = OrdersTotal () - 1 ; i >= 0 ; i--)  

buradaki fiyatlar normalize edilmemiştir OrderSend (Symbol(),OP_BUY,Lots,Ask,3, Bid-SL*Point,Bid+TP*Point, "My order",MagicNumber,0,clrGreen);

burada mantık hiç açık değil, koşul yanlışsa neden OnTick'ten () çıkılıyor?

 if ((OrderSymbol() == Symbol ()) && (OrderMagicNumber() == MagicNumber)) return ;

muhtemelen siparişler arasında sıralama döngüsüne devam etmeniz ve sadece kaç sipariş saymanız gerekir

IMHO veya arama yaparak veya KB'de "Yalnızca KimIV'ten yararlı işlevler" içeren bir konu bulun, siparişleri sayma ve yeni siparişler verme konusunda nasıl danışmanlar yaptıklarını görün, örneğiniz mantıkta çok basittir ve gelecekte değiştirmek zor olacaktır. diğer görevler için ... iyi, belki takip ediyor, vidalamak isteyecek