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

 
WindUP :
Teşekkürler, ancak en az bir nesnel örnek verebilirsiniz. Üstten görünüm tabiri caizse. Ve sonra tamamen acemiyim ve konuda olduğu gibi 2 gün :-)

muhtemelen benzer bir şey

 //+------------------------------------------------------------------+
//|                                                    maxLimits.mq5 |
//|                                  Copyright 2021, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property script_show_inputs
#include <Trade\Trade.mqh>
//---
CTrade m_trade; // trading object
//---
sinput uint    maxLimits      = 1 ;     // Кол-во Позиции Открыть в одну сторону
sinput double InpLots        = 0.01 ; // Lots
//---
sinput int     Inpcopiedrates = 2 ;     // какой бар
sinput double Inplow         = 100 ;   // отступить от low
//---
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
//---
   const string symbol= NULL ;
   double price= 0.0 ;
   const double tp= 0.0 ;
   const string comment= "" ;
//--- check symbol
   string symbol_name=(symbol== NULL ) ? Symbol () : symbol;
//--- check price
   if (price== 0.0 )
      price= SymbolInfoDouble (symbol_name, SYMBOL_ASK );
//---
   MqlRates rates[];
   ArraySetAsSeries (rates, true );
   int copied= CopyRates ( Symbol (), 0 , 0 , 10 ,rates);
   double sl=rates[Inpcopiedrates].low-Inplow/ 100 ;
//---
   for ( uint x= 0 ; x<maxLimits; x++)
     {
       //--- open position
       //if(m_trade.Buy(InpLots,symbol_name,price,sl,tp,comment))
       if (m_trade.PositionOpen( Symbol (), ORDER_TYPE_BUY ,InpLots,price,sl,tp))
         printf ( "Position by %s to be opened" , Symbol ());
       else
        {
         printf ( "Error opening BUY position by %s : '%s'" , Symbol (),m_trade.ResultComment());
         printf ( "Open parameters : price=%f,SL=%f,TP=%f" ,price,sl,tp);
        }
     }
  }
//+------------------------------------------------------------------+
 
SanAlex :

Burada da öğrenmeye çalışıyorum - bir şeyler yolunda gidiyor gibi görünüyor

Merhaba. Soryan, ekran görüntüsünde başarılı olduğunu görüyorum ama burada önceki mumun verilerini kopyalama işlevi bu kodun neresinde göremedim [1] ?




Lütfen bana aptallar için basitten karmaşığa MQL 5 programlama kurslarını, daha fazla sonuç almak ve daha az zaman kaybetmek için nereden ve hangileriyle başlamanın daha iyi olduğunu söyler misiniz? Minnettar olacağım :-)

 
WindUP :

Merhaba. Soryan, ekran görüntüsünde başarılı olduğunu görüyorum ama burada önceki mumun verilerini kopyalama işlevi bu kodun neresinde göremedim [1] ?




Lütfen bana aptallar için basitten karmaşığa MQL 5 programlama kurslarını, daha fazla sonuç almak ve daha az zaman kaybetmek için nereden ve hangileriyle başlamanın daha iyi olduğunu söyler misiniz? Minnettar olacağım :-)

Bir arkadaşınızın size geldiğini ve sizden "İnternette nasıl çalışacağınızı öğretmenizi" istediğini hayal edin. Ne öğrenmen gerektiğini hayal etmek zor mu? Programlama öğretmek işte bu kadar zor. Bir sorun var - bir çözüm var. Ama aynen böyle ... herhangi bir dili öğrenebilirsiniz, temel bilgiler herkes için aynıdır. Programlama, kod yazmaktan çok problem belirlemek, çözüm algoritması yazmak ve ancak ondan sonra kod yazmak değildir. Ve son aşama, hata ayıklama ve sonucu kontrol etme.

SanAlrx kodunda, yalnızca ilk mumun OHLC'sini almak için belirli bir görev varsa, neden bu tür kopyalanmış veri stokları yapıldığını anlamıyorum.

 int copied= CopyRates ( Symbol (), 0 , 0 , 10 ,rates);

ve neden akımın değerlerini kopyalayın, yeni açılan mum. Ama... bu onun kararı ve onun hamamböcekleri.

 
WindUP :

Merhaba. Soryan, ekran görüntüsünde başarılı olduğunu görüyorum ama burada önceki mumun verilerini kopyalama işlevi bu kodun neresinde göremedim [1] ?




Lütfen bana aptallar için basitten karmaşığa MQL 5 programlama kurslarını, daha fazla sonuç almak ve daha az zaman kaybetmek için nereden ve hangileriyle başlamanın daha iyi olduğunu söyler misiniz? Minnettar olacağım :-)

Kendim öğreniyorum - örneğin, https://www.mql5.com/ru/docs/series/copyrates belgelerine gittim, bir komut dosyası örneği var, bilgisayarıma kaydediyorum ve okumaya başlıyorum ve yazarak ayrıntılı olarak ayrıştırın.

Ve bu fonksiyon - rastgele ve bulundu.

 //---
   MqlRates rates[];
   ArraySetAsSeries (rates, true );
   int copied= CopyRates ( Symbol (), 0 , 0 , 10 ,rates);
   double sl =rates[Inpcopiedrates]. low -Inplow/ 100 ;

bu "SL" SATIN AL içindir

SATIŞ için Böyle lazım

   double sl =rates[Inpcopiedrates]. high +Inphigh/ 100 ;

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Burada sadece sayıyı yazdım - böylece 10 bara kadar çıkabilir. Ama buna ihtiyacın yok - orada 1 (bir) ihtiyacın var

   int copied= CopyRates ( Symbol (), 0 , 0 , 10 ,rates);
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyRates
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyRates
  • www.mql5.com
CopyRates - Доступ к таймсериям и индикаторам - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
WindUP :

Merhaba. Soryan, ekran görüntüsünde başarılı olduğunu görüyorum ama burada önceki mumun verilerini kopyalama işlevi bu kodun neresinde göremedim [1] ?




Lütfen bana aptallar için basitten karmaşığa MQL 5 programlama kurslarını, daha fazla sonuç almak ve daha az zaman kaybetmek için nereden ve hangileriyle başlamanın daha iyi olduğunu söyler misiniz? Minnettar olacağım :-)

işte iyi bir örnek - şimdi sayfaya gittim ve burada komut dosyası nasıl çalıştığını size daha iyi anlatacak. https://www.mql5.com/ru/docs/constants/objectconstants/enum_anchorpoint

Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Способы привязки объектов
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Способы привязки объектов
  • www.mql5.com
Способы привязки объектов - Константы объектов - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
SanAlex :

Kendim öğreniyorum - örneğin, https://www.mql5.com/ru/docs/series/copyrates belgelerine gittim, bir komut dosyası örneği var, bilgisayarıma kaydediyorum ve okumaya başlıyorum ve yazarak ayrıntılı olarak ayrıştırın.

Ve bu fonksiyon - rastgele ve bulundu.

bu "SL" SATIN AL içindir

SATIŞ için Böyle lazım

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Burada sadece sayıyı yazdım - böylece 10 bara kadar çıkabilir. Ama buna ihtiyacın yok - orada 1 (bir) ihtiyacın var

Burada AL ve SAT için SL açılır ve ayarlanır

 //+------------------------------------------------------------------+
//|                                                    maxLimits.mq5 |
//|                                  Copyright 2021, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property script_show_inputs
#include <Trade\Trade.mqh>
//---
CTrade m_trade; // trading object
//---
sinput uint    maxLimits      = 1 ;     // Кол-во Позиции Открыть в одну сторону
sinput double InpLots        = 0.01 ; // Lots
//---
sinput double Inplowhigh     = 100 ;   // отступить low high
//---
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
//---
   OnStartBuy();
   OnStartSell();
  }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStartBuy()
  {
//---
   const string symbol= NULL ;
   double price= 0.0 ;
   const double tp= 0.0 ;
   const string comment= "" ;
//--- check symbol
   string symbol_name=(symbol== NULL ) ? Symbol () : symbol;
//--- check price
   if (price== 0.0 )
      price= SymbolInfoDouble (symbol_name, SYMBOL_ASK );
//---
   MqlRates rates[];
   ArraySetAsSeries (rates, true );
   int copied= CopyRates ( Symbol (), 0 , 0 , 2 ,rates);
   if (copied<= 0 )
     {
       Print ( "Не удалось получить исторические данные. Error = " , GetLastError ());
       return ;
     }
   double sl=rates[ 1 ].low-Inplowhigh/ 100 ;
//---
   for ( uint x= 0 ; x<maxLimits; x++)
     {
       //--- open position
       //if(m_trade.Buy(InpLots,symbol_name,price,sl,tp,comment))
       if (m_trade.PositionOpen( Symbol (), ORDER_TYPE_BUY ,InpLots,price,sl,tp))
         printf ( "Position by %s to be opened" , Symbol ());
       else
        {
         printf ( "Error opening BUY position by %s : '%s'" , Symbol (),m_trade.ResultComment());
         printf ( "Open parameters : price=%f,SL=%f,TP=%f" ,price,sl,tp);
        }
     }
  }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStartSell()
  {
//---
   const string symbol= NULL ;
   double price= 0.0 ;
   const double tp= 0.0 ;
   const string comment= "" ;
//--- check symbol
   string symbol_name=(symbol== NULL ) ? Symbol () : symbol;
//--- check price
   if (price== 0.0 )
      price= SymbolInfoDouble (symbol_name, SYMBOL_BID );
//---
   MqlRates rates[];
   ArraySetAsSeries (rates, true );
   int copied= CopyRates ( Symbol (), 0 , 0 , 2 ,rates);
   if (copied<= 0 )
     {
       Print ( "Не удалось получить исторические данные. Error = " , GetLastError ());
       return ;
     }
   double sl=rates[ 1 ].high+Inplowhigh/ 100 ;
//---
   for ( uint x= 0 ; x<maxLimits; x++)
     {
       //--- open position
       //if(m_trade.Buy(InpLots,symbol_name,price,sl,tp,comment))
       if (m_trade.PositionOpen( Symbol (), ORDER_TYPE_SELL ,InpLots,price,sl,tp))
         printf ( "Position by %s to be opened" , Symbol ());
       else
        {
         printf ( "Error opening SELL position by %s : '%s'" , Symbol (),m_trade.ResultComment());
         printf ( "Open parameters : price=%f,SL=%f,TP=%f" ,price,sl,tp);
        }
     }
  }
//+------------------------------------------------------------------+

enstantane fotoğraf

 

Merhaba.

Söyle bana, kafamı kırdım.

iCustom aracılığıyla bir gösterge kaydettim ve bir sorunla karşılaştım, göstergede seçenekli bir metin menüsü var, açılıyor ve orada birkaç öğe yazılıyor, bence anlaşılabilir)

Peki bunu menüme nasıl kaydedebilirim?

harici int HIT = 0; dönmez, görüntülenmeyi durdurur, parametresiz olarak görüntülenmesini sağlarım.

belki ENUM aracılığıyla, hangisini seçmeli ya da belki başka bir şey?

Şimdiden teşekkürler.

Dosyalar:
 
Сергей :

Merhaba.

Söyle bana, kafamı kırdım.

iCustom aracılığıyla bir gösterge kaydettim ve bir sorunla karşılaştım, göstergede seçenekli bir metin menüsü var, açılıyor ve orada birkaç öğe yazılıyor, bence anlaşılabilir)

Peki bunu menüme nasıl kaydedebilirim?

harici int HIT = 0; dönmez, görüntülenmeyi durdurur, parametresiz olarak görüntülenmesini sağlarım.

belki ENUM aracılığıyla, hangisini seçmeli ya da belki başka bir şey?

Şimdiden teşekkürler.

Boş bir dize "" veya boşluk " " koyun

 

Bu yüzden ayarları değiştirmek için bir şekilde kaydettirmek istedim.

Her çift için ayrı bir eşyam var ve onu nasıl seçebilirim?

Ve bu olmadan, menü alakalı değil, ekranda sadece benzer bir örnek var.

 
Сергей :

Bu yüzden ayarları değiştirmek için bir şekilde kaydettirmek istedim.

Her çift için ayrı bir eşyam var ve onu nasıl seçebilirim?

Ve bu olmadan, menü alakalı değil, ekranda sadece benzer bir örnek var.

Peki, dikkatsizlik için üzgünüm. Gösterge bir numaralandırmaya sahiptir. Expert Advisor'da ise giriş parametrelerinde değişken tipi olarak bu numaralandırmanın adı belirtilmelidir.

Yine de, denemedim ... ve bu numaralandırmayı EA'da tekrarlamanız veya değişken türünü ENUM_BASE_CORNER olarak ayarlamanız gerekebilir.